# HybridServerAPI **Repository Path**: lapin_boy/hybrid-server-api ## Basic Information - **Project Name**: HybridServerAPI - **Description**: bukkit + forge混合端api, 增加对宝可梦模组支持 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-02-25 - **Last Updated**: 2025-12-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # API使用指南 ## Minecraft文字颜色 你可以使用HexUtils类来将16进制颜色代码转换为Minecraft颜色代码。或将&符号转换为Minecraft颜色代码。 ```java public void test() { HexUtils.colorify("�FFE0我EAAEA的 D55F5世&#EB00FF界"); //Minecraft1.16+ HexUtils.legacyColorify("&3我&2的&4世&6界"); //Minecraft1.16- } ``` 本api还支持渐变文字与彩虹文字 使用方法 ```java public void test() { HexUtils.colorify("我是彩虹"); //标签可以填入过度速度比如 } ``` ## 命令注册 本api提供一个无需在plugin.yml中注册的命令注册器, 比如注册一个test指令 ```java public void test() { CommandProcessor.registerCommand(this) .setName("test") //指令名 .setDescription("Test command") //指令描述 .setPermission("test.permission") //指令权限 .setPermissionMessage(HexUtils.legacyColorify("&cYou do not have permission to use this command")) //无权限提示 .setUsage("/test") //当执行器返回false时显示的用法 .setAliases(Collections.singletonList("t")) //指令别名 .setExecutor((sender, command, label, args) -> { //指令执行器 sender.sendMessage(HexUtils.legacyColorify("&aTest command executed!")); return true; }) .build(); } ``` ## 事件订阅器 HybridAPI为基于Bukkit的提供了一个动态事件订阅器,无需实现Listener接口 您可以使用一行简单的代码来订阅事件 ### ForgeEventListenerProcessor 类 此类用于处理带有 `@ForgeEventListener` 注解的监听器方法。 #### 方法 ##### `register(Object listener, EventBus eventBus)` 此方法用于注册带有 `@ForgeEventListener` 注解的监听器对象。此方法已过时,建议使用带有 `Plugin` 参数的方法。 参数: - `listener`:带有 `@ForgeEventListener` 注解的监听器对象 - `eventBus`:事件总线,例如 `MinecraftForge.EVENT_BUS` ##### `register(Plugin plugin, Object listener, EventBus eventBus)` 此方法用于注册带有 `@ForgeEventListener` 注解的监听器对象,并将其关联到特定的插件。 参数: - `plugin`:插件 - `listener`:带有 `@ForgeEventListener` 注解的监听器对象 - `eventBus`:事件总线,例如 `MinecraftForge.EVENT_BUS` ##### `unregister(Object listener)` 此方法用于取消注册指定的监听器。 参数: - `listener`:监听器对象 ##### `unregisterAll()` 此方法用于取消注册所有已注册的监听器。 ##### `unregisterAll(Plugin plugin)` 此方法用于取消注册指定插件的所有监听器。 参数: - `plugin`:插件 ## 随机选择器 随机选择器它可以帮助你快速实现一些随机功能,并且支持权重功能 一个简单的随机选择器使用方法 ```java public void test() { RandomSelector randomSelector = RandomSelector.uniform(Arrays.asList("a", "b", "c")); String pick = randomSelector.pick(); System.out.println(pick); } ``` 带有权重的随机选择器使用方法,你需要在你的对象里面实现Weighted接口 实现接口的类: ```java public class RandomString implements Weighted { private final String value; private final double weight; public RandomString(String value, double weight) { this.value = value; this.weight = weight; } @Override public double getWeight() { return 0; } } ``` 使用方法: ```java public void test() { List randomStrings = new ArrayList<>(); RandomSelector randomSelector = RandomSelector.weighted(randomStrings); RandomString pick = randomSelector.pick(); System.out.println(pick.getValue() + " " + pick.getWeight()); } ``` ## 菜单构建器 菜单构建器它可以帮助你快速实现构建一个菜单 一个简单的菜单构建器使用方法 ```java public void createMenu(Player player) { //菜单必须提供标题,大小和按钮 String title = "测试菜单"; int size = 9; List