MSMP 实体

MSMP 实体

通过提供获取和设置实体数据的附加功能来扩展Minecraft服务器管理协议(MSMP)。

基础库

MSMP 实体

一个服务端 Fabric 模组,通过提供获取和设置实体数据的额外功能,扩展了 Minecraft 服务器管理协议 (MSMP)。

本模组专为工具、仪表盘、自动化系统、外部监控工具以及需要结构化访问实体信息且不依赖命令解析或 RCON 漏洞的集成而设计。

安装

  1. 下载模组 .jar 文件并放入服务器 mods/ 文件夹。
  2. 在 server.properties 中启用管理服务器:
    management-server-enabled=true
    
  3. 启动服务器。默认情况下,管理服务器会监听 localhost:25576。

配置

首次启动时,模组会在 <服务器根目录>/config/msmp/entity/config.yml 生成配置文件,您可以在其中调整使用阈值/间隔轮询的跟踪事件的通知系统:

# MSMP 实体的主配置文件。

# 位置相关设置。
position:
  # 通知设置。
  notification:
    # 订阅实体位置变化检查之间的服务器刻数。
    # 数值越小,检查越频繁,可能产生更多通知,但会增加服务器负载。
    # @默认值: 20
    interval-ticks: 20
    # 实体必须移动的最小距离(以方块为单位),才会触发位置变化通知。
    # 设置为 0.0 将触发任何移动的通知。
    # @默认值: 1.0
    block-delta: 1.0
# 旋转相关设置。
rotation:
  # 通知设置。
  notification:
    # 订阅实体旋转变化检查之间的服务器刻数。
    # 数值越小,检查越频繁,可能产生更多通知,但会增加服务器负载。
    # @默认值: 20
    interval-ticks: 20
    # 实体必须旋转的最小偏航角或俯仰角变化(以度为单位),才会触发旋转变化通知。
    # 设置为 0.0 将触发任何旋转变化的通知。
    # @默认值: 10.0
    rotation-delta: 10.0

更小的间隔值意味着更频繁的检查(以及可能更多的通知),代价是略微增加服务器负载。将 delta 设置为 0.0 会触发任何变化的通知,无论变化多么微小。

RPC 方法

该模组目前提供以下 MSMP RPC 方法。所有这些方法也可以通过标准 MSMP 端点 rpc.discover 自动发现。

方法 描述
entity:dimension 返回任何加载实体的当前维度,或通过名称返回玩家
entity:dimension/set 将任何加载实体传送到指定维度,保持其当前位置和旋转
entity:dimension/changed 返回维度变化事件的所有跟踪实体列表
entity:dimension/changed/add 将实体添加到维度变化通知跟踪器
entity:dimension/changed/clear 清除维度变化事件的所有实体
entity:dimension/changed/remove 从维度变化通知跟踪器中移除实体
entity:health 返回任何 LivingEntity 的当前生命值和最大生命值
entity:health/set 部分更新任何 LivingEntity 的生命值和/或最大生命值
entity:health/changed 返回生命值变化事件的所有跟踪实体列表
entity:health/changed/add 将实体添加到生命值变化通知跟踪器
entity:health/changed/remove 从生命值变化通知跟踪器中移除实体
entity:items 以原版 NBT 格式返回在线玩家的所有占有物品栏槽位
entity:items/set 使用差异方法部分更新在线玩家的物品栏
entity:items/changed 返回物品变化事件的所有跟踪实体列表
entity:items/changed/add 将玩家添加到物品变化通知跟踪器
entity:items/changed/remove 从物品变化通知跟踪器中移除实体
entity:position 返回任何加载实体的当前位置
entity:position/set 将任何加载实体传送至其当前维度内的指定位置
entity:position/changed 返回位置变化事件的所有跟踪实体列表
entity:position/changed/add 将实体添加到位置变化通知跟踪器
entity:position/changed/remove 从位置变化通知跟踪器中移除实体
entity:rotation 返回任何加载实体的当前旋转,或通过名称返回玩家
entity:rotation/set 设置任何加载实体的旋转,保持其位置和维度
entity:rotation/changed 返回旋转变化事件的所有跟踪实体列表
entity:rotation/changed/add 将实体添加到旋转变化通知跟踪器
entity:rotation/changed/remove 从旋转变化通知跟踪器中移除实体
entity:saturation 返回在线玩家的当前饥饿值和饱和度
entity:saturation/set 部分更新在线玩家的饥饿值和/或饱和度
entity:saturation/changed 返回饱和度变化事件的所有跟踪实体列表
entity:saturation/changed/add 将玩家添加到饱和度变化通知跟踪器
entity:saturation/changed/remove 从饱和度变化通知跟踪器中移除实体
entity:uuid 通过名称返回在线玩家的 UUID

RPC 通知

该模组还提供以下 MSMP RPC 通知,客户端可以订阅:

方法 描述
entity:notification/dimension/changed 当跟踪实体改变维度时触发
entity:notification/health/changed 当跟踪的 LivingEntity 生命值变化时触发
entity:notification/items/changed 当跟踪的玩家物品栏或装备变化时触发
entity:notification/position/changed 当跟踪实体移动至少 blockDelta 个方块时触发
entity:notification/rotation/changed 当跟踪实体旋转至少 rotationDelta 度时触发
entity:notification/saturation/changed 当跟踪的玩家饥饿值或饱和度变化时触发

如果您需要更多用于其他用途的方法或通知,请提交问题

许可证

LGPL-3.0