Andrew的数据包工具

数据包实用工具,如计算器和允许玩家数据修改等更多功能。

基础库

关于对各个 Minecraft 版本的支持

最近发生了很多变化,导致我很难用单个模组 jar 来支持多个版本,所以如果你需要支持某个版本,请在 GitHub 上提交一个 issue,我会创建一个支持你所需版本的分支。否则,我将只官方支持 Minecraft 的最新版本。

关于

Andrew's Datapack Utils 是一个 Fabric/NeoForge/Forge/Paper 模组,旨在为数据包(主要是数据包函数)创建实用的工具。它添加了一条包含大部分工具的命令,并允许使用 /data 和 /execute store 修改玩家数据,从而轻松操控玩家,并实现之前不可能实现的功能。

特性

  • 基础数学计算
    • 通过使用 /aputils calc <add|sub|mul|div|power|sqrt|...> 命令来使用。与 /execute store result 和函数宏配合使用效果很好。
  • 距离计算
    • /aputils calc distance <pos 1> <pos 2> 或 /aputils calc distance entities <selector1> <selector2>
    • 可以计算 2 个实体或 2 个方块之间的距离,对于实体使用 /aputils calc distance entities,对于方块使用 /aputils calc distance(注意没有 entities)
  • 编辑玩家数据
    • 通常情况下,你不能使用 /data 或 /execute store (result|success) entity 来更改玩家实体数据,它只会抛出错误 Unable to modify player data,并且不会改变任何东西。使用此模组,该限制被移除,允许轻松修改玩家实体数据。注意并非所有内容都可以修改,尝试更改某些值(例如 Motion 或 Pos)不会有任何效果。请改用其他命令,如 /aputils velocity 或 /tp 来更改这些。
    • 在 Paper 上不可用。
  • /aputils velocity <xyz> [add|set|multiply]
    • 允许你以正常方法无法实现的方式操控实体的速度,例如修改玩家的速度(使用玩家数据修改模组无法做到这一点,因为它不会向客户端发送速度更新数据包)
    • 需要权限等级 2,意味着你需要在单人世界开启作弊,或在服务器中拥有权限等级 2
  • /aputils attack_cooldown <player>
    • 输出所提供玩家的攻击冷却进度,如果使用 /execute store result 则以百分比形式输出。
  • /aputils despawn <entities> [force]
    • 使一个或多个实体消失。与 /kill 不同,因为这只是在你的世界中移除该实体/这些实体,而不触发任何类型的死亡事件,只是以实体正常消失的方式静默移除实体。
    • 如果未应用 force 且目标选择器在**命令运行的那一刻(而不是选择器是否允许玩家)**包含一个或多个玩家,则命令失败。
    • 需要权限等级 2,如果包含 force 则需要权限等级 4
  • /aputils check_damage <entity> [type]
    • 如果实体在命令运行的那一游戏刻受到了伤害,且未提供 type,则返回 true
    • 如果提供了 type,则当实体在该游戏刻受到了所提供类型的伤害时返回 true。
    • 在较旧的游戏版本上无法使用,测试过可用的最旧版本是 1.21.2
      • 如果所需的 mixin 未加载,此命令始终返回 0
  • /aputils pathfind <entity: selector> <xyz: Vec3d> [speed: double] 或 /aputils pathfind <entity: selector> entity <target: selector> [speed: double]
    • 使生物使用原版生物寻路寻找到某个位置。
    • 覆盖生物当前的路径(如果有)。
    • 有一个可选的 'speed' 参数,使生物在前往指定位置时以该速度移动。注意对于某些生物(如铁傀儡),它们的默认(1)速度就是它们的奔跑速度。并非所有生物都是如此,但有些是。
    • 如果未指定,默认为 1。
    • 如果指定的目标是实体,则生物将寻路到命令运行时该实体所在的位置。
    • 不影响海豚,但影响其他鱼类。原因我目前还不清楚,但海豚可能使用了与其他生物不同的寻路方法。
    • 目前不产生命令反馈,但它确实有效。
    • 生物有时会提前停止寻路到该位置。这是由于正常的生物 AI 行为。
  • /aputils target <entity> <target>
    • 强制生物将目标更改为指定的实体。
    • 诸如距离、游戏模式或已有目标/攻击者等条件均被忽略。
    • 仅适用于可以有目标的生物,因此被动型生物无法受影响。
    • 不影响末影龙,因为末影龙不是具有正常行为的生物。
    • 目前不产生命令反馈,但它确实有效。

数据包可以使用 /aputils heartbeat 来检测是否安装了此模组,它会始终向 /execute store result 输出 1。 数据包可以使用 /aputils version 来检测使用的是 NeoForge 版还是 Fabric 版的模组。如果使用的是 NeoForge 则返回 1,如果使用的是 Fabric 则返回 0。

已知问题

  • 每次运行 /aputils velocity 时,它都会将 "The new velocity is (x, y, z)" 打印到服务器控制台/游戏日志中,这可能会很烦人
    • 这是一个调试功能,被意外保留了下来,将在下次更新中禁用。

注意事项

这可以在未经我许可的情况下包含在任何整合包中。

如果你想将此移植到 Forge,请随意。

致开发者

任何贡献都将不胜感激!

趣闻

这是我在整个 Minecraft 开发历史中制作的第一个真正的模组。在此之前,我只为 Minecraft 制作过数据包。

关于正在开发中的 Paper 移植版

一直困扰我的是,我无法在像 Paper 这样基于插件的服务器软件上获得我某些数据包(如 Old Combat Datapack)的完整功能,因为 ADPU 不是插件,所以我决定自学 Paper,现在 ADPU 的 Paper 版本正式在开发中了!需要注意的是,玩家数据修改和伤害检测等功能将不可用,因为 Paper 上不存在 mixin,所以请做好心理准备。不过将会有变通方法,即正在开发中的 "aputils manipulate" 命令,它将在所有加载器上可用,并能够修改基于生命值和饥饿值的数值等。