Player Events
当玩家死亡并离开或加入服务器时发送可配置的消息/命令
玩家事件
注意:此模组仅限服务端使用,在客户端上无法运行
这是一个 Fabric 模组,当玩家触发某些事件(如死亡、加入服务器、击杀其他玩家等)时,它会执行并发送可配置的命令和消息。
自 2.2.0 版本起,数据包可以通过相应的函数标签 #player_events:<事件> 定义在事件发生时执行的函数。
配置文件位于配置目录(config/player_events.json),内容如下:
{
"death": {
"actions": [
"${player} 刚刚死了!"
],
"broadcast_to_everyone": true,
"pick_message_randomly": false
},
"first_join": {
"actions": [
"欢迎来到服务器 ${player}!记得阅读规则"
],
"broadcast_to_everyone": false,
"pick_message_randomly": false
},
"join": {
"actions": [
"欢迎 ${player}",
"/say 你好 ${player}"
],
"broadcast_to_everyone": true,
"pick_message_randomly": false
},
"kill_entity": {
"actions": [
"${player} 杀死了 ${killedEntity}"
],
"broadcast_to_everyone": true,
"pick_message_randomly": false
},
"kill_player": {
"actions": [
"${player} 杀死了 ${killedPlayer}",
"F ${killedPlayer}"
],
"broadcast_to_everyone": true,
"pick_message_randomly": true
},
"leave": {
"actions": [
"再见 ${player}!",
"/say 希望很快再见到你 ${player}"
],
"broadcast_to_everyone": true,
"pick_message_randomly": false
},
"custom_commands": [
{
"command": "/plugins",
"actions": [
"嘿!我们不用插件"
],
"broadcast_to_everyone": false,
"pick_message_randomly": false
},
{
"command": "/spawn",
"actions": [
"/tp ${player} 0 64 0 0 0"
],
"broadcast_to_everyone": true,
"pick_message_randomly": false
}
]
}
在 JSON 文件中,你可以在每个 <事件> 对象的 actions 数组下声明在该事件发生时将要发送和/或执行的内容。你也可以通过将 broadcast_to_everyone 设置为 false,让这些消息仅发送给玩家,但这不适用于像 leave 这样的事件(因为该玩家已经不在服务器上了)。
自 2.2.0 版本起,你可以通过将 pick_message_randomly 设置为 true,为某个事件随机发送一条已定义的消息。
每个事件都有一个 ${player} 令牌,该令牌的每个实例都会被替换为触发事件的玩家。其他事件还有额外的工作方式相同的令牌。
大多数(如果不是全部)令牌都具有可以通过类似 ${player.name} 的方式访问的属性。
以下是所有属性的列表:
display实体的显示名称,即你在玩家列表/聊天中看到的名称。示例:“[蓝色队伍] Tom421”uuid实体的 UUIDxyz实体坐标- 更多功能敬请期待™
同样支持 颜色代码!
使用 /pe reload 或 /player_events reload 来重新加载模组配置。
你可以使用 /pe test <事件> 或 /player_events test <事件> 来测试特定事件的操作,或使用 /pe test * 来测试所有事件。
2.2.0 版本支持的事件
death- 在玩家死亡时执行。first_join- 在玩家首次加入时执行。join- 在玩家加入时执行。kill_entity- 在玩家杀死一个实体时执行。额外令牌:${killedEntity}- 被杀的实体。
kill_player- 在玩家杀死另一名玩家时执行。额外令牌:${killedPlayer}- 被杀的玩家。
leave- 在玩家离开时执行。custom_commands- 通过使用已定义的命令触发的自定义事件。注意:此事件不支持数据包函数
此外,你可以创建简单命令(如果你需要更复杂的命令,这个模组可能不适合你)或监听现有命令。
故障排除
如果在初始化服务器或操作应执行时遇到错误,以下是如何解决的步骤。
- “配置文件中的 JSON 语法无效”:这很可能是因为命令中包含未转义的双引号。解决方法如下:
- 检查下面一行的异常信息。它会准确指出错误位置。
- 使用反斜杠转义操作中的任何双引号,例如
"->\"
- “无效的转义序列”
这是因为转义序列(如
\n或\u)未正确转义。要修复此问题,只需在转义序列的反斜杠前再加一个反斜杠,例如\n->\\n或\\u->\\\\u
开发
此部分面向希望使用模组 API 的模组开发者。
编译
- 克隆或下载仓库
- 在命令提示符中运行
gradlew build来编译模组。(如果你只需要 API 文件, 可以改为运行gradlew api:build)。你可以在<仓库>/build/libs和<仓库>/api/build/libs下找到编译好的.jar文件
API
将 API 添加到你的模组依赖中
将以下片段添加到你的 build.gradle:
repositories {
maven {
url 'https://maven.bymartrixx.me'
}
}
dependencies {
// 使用 gradle.properties 中的版本
modImplementation "me.bymartrixx.player-events:api:${project.player_events_api_version}"
// 直接设置版本(将 2.1.3 替换为最新的可用版本)
modImplementation "me.bymartrixx.player-events:api:2.1.3"
}
如果你没有直接在 build.gradle 文件中设置版本,请将以下片段添加到你的 gradle.properties:
# 将 2.1.3 替换为最新的可用版本
player_events_api_version = 2.1.3
此外,如果你希望你的模组依赖此 API,请将以下片段添加到你的 fabric.mod.json:
{
"depends": {
"player_events_api": ">=2.0.0"
}
}
事件
death-me.bymartrixx.playerevents.api.event.PlayerDeathCallback.EVENTfirst_join-me.bymartrixx.playerevents.api.event.PlayerFirstJoinCallback.EVENTjoin-me.bymartrixx.playerevents.api.event.PlayerJoinCallback.EVENTkill_entity-me.bymartrixx.playerevents.api.event.PlayerKillEntityCallback.EVENTkill_player-me.bymartrixx.playerevents.api.event.PlayerKillPlayerCallback.EVENTleave-me.bymartrixx.playerevents.api.event.PlayerLeaveCallback.EVENT- 命令执行 -
me.bymartrixx.playerevents.api.event.CommandExecutionCallback.EVENT
注意
io.github.bymartrixx.playerevents.api 包已在 2.2.0 版本中移除。
使用事件
示例代码片段
public class FooMod implements DedicatedServerModInitializer {
public void onInitializeServer() {
PlayerDeathCallback.EVENT.register((player, source) -> {
// 执行某些操作
});
PlayerKillEntityCallback.EVENT.register((player, killedEntity) -> {
// 执行某些操作
});
}
}
正在加载版本记录…

正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。