如何在玩家退出Minecraft多人服务器前将其击杀?
解决玩家退出前击杀并掉落物品的问题
你之前的方法失效的核心原因是:minecraft.custom:minecraft.leave_game这个计分板统计项是在玩家完全退出服务器后才会记录数值变化,只有当玩家下次登录时,服务器才能读取到这个分数并执行击杀命令,所以无法实现退出前击杀的需求。
要在玩家退出瞬间完成击杀并让物品掉落,必须借助Datapack的事件监听系统,因为它能在玩家退出的触发阶段执行命令,具体步骤如下:
步骤1:创建Datapack基础结构
在服务器的world/datapacks目录下新建一个名为kill_on_leave的文件夹,然后在其中创建pack.mcmeta文件,填入以下内容(注意pack_format要对应你的Minecraft版本,版本对应关系见文末):
{ "pack": { "pack_format": 10, "description": "击杀退出的玩家以掉落物品" } }
步骤2:编写击杀函数
在kill_on_leave文件夹内创建路径data/kill_on_leave/functions,并在其中新建kill_player.mcfunction文件,内容为:
# 击杀当前触发事件的玩家 execute as @s run kill @s
步骤3:绑定玩家离开事件
在kill_on_leave文件夹内创建路径data/minecraft/tags/functions,并在其中新建player_left_game.json文件,内容为:
{ "values": [ "kill_on_leave:kill_player" ] }
步骤4:加载Datapack
进入服务器控制台或游戏内,执行命令:
/reload
完成以上操作后,当玩家退出服务器时,minecraft:player_left_game事件会被触发,自动执行击杀函数,玩家的物品会直接掉落在退出时的位置,供其他玩家拾取。
版本对应pack_format参考
- 1.17-1.18.1: 7
- 1.18.2: 8
- 1.19-1.19.3: 9
- 1.19.4-1.20.x: 10
内容的提问来源于stack exchange,提问作者Ezert Aracksam
相关产品推荐
相关产品推荐

