实体操作
两条会真正修改世界状态的实体指令,外加一条栈追踪开关。
基本信息
| 指令 | 实现类 | 权限等级 | 破坏性 |
|---|---|---|---|
/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 个,否则静默返回:
Integer.valueOf(astring[0])取维度号,Integer.valueOf(astring[1])取实体 IDDimensionManager.getWorld(dim)取世界;为 null 时回复Cannot find dim %d in world并返回world.getEntityByID(eid)取实体;为 null 时回复Cannot find entity %d in dim %d并返回- 找到则
entity.setDead(),回复Killed entity %d in dim %d
注意 astring[0] / astring[1] 的解析不在 try/catch 内,传入非数字会抛出 NumberFormatException。
/opis_killall <name…>
CommandKillAll.java:31-49,参数至少 1 个:
StringUtils.join(astring, " ").toLowerCase()拼成小写搜索名(多词会以空格连接)EntityManager.INSTANCE.killAll(searchname)返回被杀数量- 返回 -1 时回复
Seriously ? I can't, seriously, I can't. I should remove you from the OP list !—— 这是代码里的自我保护分支 - 正常情况回复
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 <被保护的名字> |
回复带威胁语气的拒绝消息 |
相关条目
- timing-queries - 只读排名查询,与本组的破坏性操作相对
- access-control - 权限等级 3 与 PRIVILEGED 名单的关系
- extension-api - 面板侧触发上述封包的 Java 接口