命令
基本信息
| 属性 | 值 |
|---|---|
| 所在包 | vazkii.botania.common.core.command(3 个类) |
| 基类 | cpw.mods.fml.common.command.CommandBase |
| 注册位置 | CommonProxy.serverStarting(FMLServerStartingEvent),CommonProxy.java:223-228 |
| 已注册命令 | 3 个(其中 1 个条件注册) |
功能
Botania 提供 3 条服务端命令,全部通过 event.registerServerCommand(...) 注册(CommonProxy.java:224-227):
event.registerServerCommand(new CommandShare());
event.registerServerCommand(new CommandOpen());
if(Botania.gardenOfGlassLoaded)
event.registerServerCommand(new CommandSkyblockSpread());
botania-skyblock-spread 只在加载 Garden of Glass 时注册,是本次核查中唯一的条件注册命令。
数值
| 命令类 | 命令名 | 用法 | 权限等级 | 条件 |
|---|---|---|---|---|
CommandShare |
botania-share |
<entry> |
0 | 无 |
CommandOpen |
botania-open |
<entry> |
0 | 无 |
CommandSkyblockSpread |
botania-skyblock-spread |
<player> [<range>] |
2 | 需 gardenOfGlassLoaded |
来源:各类的 getCommandName() / getCommandUsage() / getRequiredPermissionLevel() 返回值,以及 CommonProxy.java:224-227 的注册语句。
| 命令 | 权限等级 | 发送者限制 |
|---|---|---|
botania-share |
0 | — |
botania-open |
0 | canCommandSenderUseCommand 要求 sender instanceof EntityPlayer |
botania-skyblock-spread |
2(OP) | — |
交互
/botania-share <entry>
把百科条目的分享文本广播到全服(CommandShare.processCommand)。它读取本地化字符串 botaniamisc.shareMsg,并替换三个占位符:
| 占位符 | 来源 |
|---|---|
%name% |
sender.getCommandSenderName() |
%entry% |
args[0](条目的本地化键) |
%entryname% |
StatCollector.translateToLocal(args[0]) |
替换后经 IChatComponent.Serializer.func_150699_a(json) 解析为 JSON 聊天组件,再由 MinecraftServer.getServer().getConfigurationManager().sendChatMsg(component) 广播。
/botania-open <entry>
让玩家手中的 Lexica Botania 跳转到指定条目(CommandOpen.processCommand):
- 要求
sender instanceof EntityPlayer - 取
player.getCurrentEquippedItem() - 若物品是
ItemLexicon,调用ItemLexicon.setForcedPage(stack, args[0])与ItemLexicon.setQueueTicks(stack, 5) - 否则回复
botaniamisc.noLexicon(红色,EnumChatFormatting.RED)
队列长度为 5 tick。
/botania-skyblock-spread <player> [<range>]
把玩家传送到附近的随机空地(CommandSkyblockSpread.processCommand),随后 SkyblockWorldEvents.spawnPlayer(player, x, spawn.posY, z, true)。
| 参数 | 值 | 来源 |
|---|---|---|
maxAllowed |
1 000 000 | CommandSkyblockSpread.java:40 |
minAllowed |
250 | :41 |
minDist |
100(与出生点的最小平面距离) | :42 |
maxrange 默认 |
200 000 | :44 |
校验:范围超过 1000000 抛 botaniamisc.skyblockRangeTooHigh,低于 250 抛 botaniamisc.skyblockRangeTooLow。
选址算法以世界出生点为中心,在 ±maxrange/2 内随机取 (x, z),循环重试直到 MathHelper.pointDistancePlane(x, z, spawn.posX, spawn.posZ) >= 100。
相关条目
- Lexica Botania -
/botania-open与/botania-share操作的对象 - 模组集成 -
botania-skyblock-spread依赖 Garden of Glass