实体操作

两条会真正修改世界状态的实体指令,外加一条栈追踪开关。

基本信息

指令 实现类 权限等级 破坏性
/opis_kill CommandKill 3 杀死指定实体 ID
/opis_killall CommandKillAll 3 按名字批量杀死
/opis_enttrace CommandEntityCreate 3 仅切换日志,无世界改动

注册位置:modOpis.java:221、:222、:224。前两条被 CommandHelp 列出,/opis_enttrace 未被列出(CommandHelp.java:25-28)。

功能

/opis_kill <dim> <eid>

CommandKill.java:32-56,参数必须恰好 2 个,否则静默返回:

  1. Integer.valueOf(astring[0]) 取维度号,Integer.valueOf(astring[1]) 取实体 ID
  2. DimensionManager.getWorld(dim) 取世界;为 null 时回复 Cannot find dim %d in world 并返回
  3. world.getEntityByID(eid) 取实体;为 null 时回复 Cannot find entity %d in dim %d 并返回
  4. 找到则 entity.setDead(),回复 Killed entity %d in dim %d

注意 astring[0] / astring[1] 的解析不在 try/catch 内,传入非数字会抛出 NumberFormatException。

/opis_killall <name…>

CommandKillAll.java:31-49,参数至少 1 个:

  1. StringUtils.join(astring, " ").toLowerCase() 拼成小写搜索名(多词会以空格连接)
  2. EntityManager.INSTANCE.killAll(searchname) 返回被杀数量
  3. 返回 -1 时回复 Seriously ? I can't, seriously, I can't. I should remove you from the OP list ! —— 这是代码里的自我保护分支
  4. 正常情况回复 Killed %d entities of type %s

同一功能在面板内也有对应封包 Message.COMMAND_KILLALL 与 Message.COMMAND_KILLALL_BYCACHEID(后者先用 StringCache 把整数 ID 换回名字),服务端处理在 ServerMessageHandler.java:216-221。两条封包构造时 accessLevel 都是 PRIVILEGED(Message.java:57-58)。

面板还提供按类批量清理的封包,服务端实现在 ServerMessageHandler.java:228-239,覆盖 EntityMob(敌对生物)与 EntityItem(掉落物)两类,支持单维度与全维度:

封包 作用域 目标类
COMMAND_KILL_HOSTILES_DIM 单维度 EntityMob
COMMAND_KILL_HOSTILES_ALL 所有维度 EntityMob
COMMAND_KILL_STACKS_DIM 单维度 EntityItem
COMMAND_KILL_STACKS_ALL 所有维度 EntityItem
COMMAND_PURGE_CHUNKS_DIM 单维度 ChunkManager.purgeChunks
COMMAND_PURGE_CHUNKS_ALL 所有维度 ChunkManager.purgeChunks

这些封包没有对应的 /opis_* 指令,只能从 Swing 面板触发。

/opis_enttrace [full]

见 timing-queries,只切换 OpisServerEventHandler 的两个布尔日志开关,不改动世界。

数值

数值名 值
/opis_kill 参数个数 必须为 2
/opis_killall 参数个数 至少 1
/opis_killall 名称处理 toLowerCase(),多词以单空格连接
三条指令的权限等级 3

交互

触发 行为
/opis_kill 0 123 杀死主世界实体 123
/opis_kill 0 静默无响应
/opis_kill abc 123 抛 NumberFormatException,无友好提示
/opis_killall zombie 杀死所有名字含 zombie 的实体
/opis_killall Zombie Pigman 匹配小写化后的 zombie pigman
/opis_killall <被保护的名字> 回复带威胁语气的拒绝消息

相关条目