/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(meta 0,flag 2),再用 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,非玩家执行会抛异常。