
精准控制参数。想避开自己只杀怪物的话,得用/kill @e[type=!player],这个感叹号表示“排除玩家”,但你也会发现它把村民和动物也留下来了。更精确的方法是/kill @e[type=minecraft:zombie]只杀僵尸,或者用@e[type=!minecraft:player,type=!minecraft:villager]来排除村民。我通常在服务器维护时用/kill @e[type=!player],然后手动补杀几个漏网的恼人生物。另外注意,在高版本里@e默认不包含掉落物和经验球,但含箭和雪球,如果你只想清怪物就能用/kill @e[type=!player,type=!minecraft:item]这样双重排除。
服务器应用场景。作为服务器管理员,清除指令是日常必备工具。当服务器出现刷怪塔崩溃导致几千只僵尸卡在虚空里,或者玩家恶作剧放了一堆苦力怕在出生点,直接/kill @e[type=!player]能一秒解决问题。但你要小心,如果服务器里有宠物狗或者鹦鹉,这个指令也会把它们一起杀死,很多玩家会因此发火。所以我通常先用/tag @e[type=minecraft:wolf] add pet,然后/kill @e[type=!player,tag=!pet]来保护宠物。还有一种场景是刷物品漏洞,有人用指令生成大量掉落物卡服务器,这时/kill @e[type=minecraft:item]就是救星,而且不会伤到其他生物。
常见错误与避免。新手最容易犯的错误就是在生存模式下输入/kill @e,结果自己也被秒杀,然后背包里的钻石全爆出来。更惨的是有些模组服里,清除指令会杀掉NPC和任务关键角色,导致主线卡死。我建议每次使用前先在聊天框输一次/kill @e[limit=1]测试一下,或者直接用测试指令/tellraw @a {"text":"即将清除所有生物"}提醒全服玩家。另一个坑是命令方块里的循环清除,如果不小心设置了无条件且高频触发,整个服务器会陷入无限杀怪循环,所有玩家无法操作只能重启。正确做法是在命令方块里加上延迟和条件检测。
不同版本差异。Java版和基岩版的清除指令有很大区别,基岩版里/kill指令不能直接加type参数,必须用/execute作为前缀。比如基岩版清除所有怪物需要执行/execute @e[type=zombie] ~ ~ ~ kill @s,这比Java版繁琐很多。而且基岩版的@e不支持英文冒号后的命名空间,直接写type=zombie就行。老版本如1.12及以下没有@e筛选功能,只能靠循环命令方块逐个生物种类清除,效率极低。我玩1.7.10的时候曾写过一个复杂的红石电路配合发信器,才勉强实现区域清怪,后来升级到1.13简直感动到流泪。
玩家间的趣事。有一次我在朋友的小生存服里偷偷用了一次/kill @e,把所有人的马和狗全杀了,结果被一群人追着骂了三天。后来我学会在清除前先备份玩家数据,或者用/scoreboard临时存一下宠物分数。还有一次服务器里有个熊孩子建了个无限刷铁傀儡的机器,导致几十个铁傀儡挤在村庄里卡顿,我直接一个/kill @e[type=minecraft:iron_golem]世界瞬间就流畅了,大家还发消息感谢我。其实清除指令不是万能的,它就像一把手术刀,用得好能救场,用不好就是灾难。玩到后期你自然会发现,与其直接清除不如先尝试控制生物生成,比如调整难度或者用/gamerule doMobSpawning false,这才是治本的方法。
相关文章