/loot 指令
基本信息
| 属性 | 值 |
|---|---|
| 指令名 | loot |
| 权限等级 | 2(getRequiredPermissionLevel() 返回 2,CommandChestLoot.java:28-30) |
| 注册时机 | FMLServerStartingEvent,TooMuchLoot.java:75 |
| 用法串 | /loot <reload|generate|reset|spawnDebugChest [tag, x, y, z]>(CommandChestLoot.java:34) |
前置条件:TooMuchLoot.failed 为真时 serverStarting 直接 return(TooMuchLoot.java:73),
指令不会被注册。failed 只在 preInit 反射取 ChestGenHooks.chestInfo / contents 字段失败时置位
(TooMuchLoot.java:50-68)。
子命令
| 参数 | 作用 | 源码 |
|---|---|---|
reload |
先 restoreCachedLootTable() 再 loadFiles(lootFolder) |
CommandChestLoot.java:40-43 |
generate |
把当前 ChestGenHooks 全部导出为 XML 到 config/TooMuchLoot/loot/generated/ |
CommandChestLoot.java:44-45 |
generate <category> |
只导出指定 chest-gen 分类 | CommandChestLoot.java:50-52 |
reset |
只回滚到启动时缓存的原版战利品表,不重新加载 XML | CommandChestLoot.java:46-48 |
spawnDebugChest <tag> <x> <y> <z> |
在指定坐标生成一个装了 tag 分类战利品的箱子 |
CommandChestLoot.java:55-74 |
spawnDebugChest 的判定
- 目标格必须是空气,且下方一格有实心顶面,否则什么都不做(
CommandChestLoot.java:66-67) - 放置
Blocks.chest(meta0,flag2),再用WeightedRandomChestContent.generateChestContents填充,堆叠数取ChestGenHooks.getCount(tag, random)(CommandChestLoot.java:60-61、68-72) x/y/z支持~相对坐标,经func_110666_a/func_110665_a解析;y会被限制在0..0范围传入(CommandChestLoot.java:62-64)
注意
processCommand 只判断 args.length 为 1 / 2 / 5 三种情况,其余长度静默失败(无任何报错输出)。
spawnDebugChest 要求 getCommandSenderAsPlayer,非玩家执行会抛异常。