数据命令增强版

数据命令增强版

存储玩家, 拼接, 掠夺实体, 玩家与数据操作

游戏机制

Data Command Plus

此模组扩展了 /data 命令和 /loot 命令的功能
仅在服务端必需,客户端需要它才能获得完整的语法帮助!

命令语法完全契合原版语法。参见 Minecraft Wiki 上的 Commands/data
始终下载最新版本以获取所有功能

与 NeoForge/Forge 一起使用

请遵循以下说明: Sinytra Connector 和 Forgified Fabric API。
请注意该移植并不完美,可能会导致游戏崩溃。
如果确实崩溃了,应向 Sinytra Connector 模组开发者报告!

/data 命令的压缩语法树

  • … get (block <targetPos>|entity <target>|storage <target>|storageplayer <player>) [<path>] [<scale>]
  • … merge (block <targetPos>|entity <target>|storage <target>|storageplayer <player>) <nbt>
  • … modify (block <targetPos>|entity <target>|storage <target>|storageplayer <player>) <targetPath> (append|insert <index>|merge|prepend|set| operation)
    • … from (block <sourcePos>|entity <source>|storage <source>|storageplayer <player>) [<sourcePath>]
    • … concat (block <sourcePos>|entity <source>|storage <source>|storageplayer <player>) [<sourcePath>]
    • … string (block <sourcePos>|entity <source>|storage <source>|storageplayer <player>) [<sourcePath>] [<start>] [<end>]
    • … <(operation 之一: =, +=, -=, *=, /=, %=, ^=, <, >)> <double value>
    • … value <value>
  • … remove (block <targetPos>|entity <target>|storage <target>|storageplayer <player>) <path>

/Loot 命令的压缩语法树

/loot <TARGET> <SOURCE>
其中
<TARGET> 为:
  • give | insert | spawn | replace <targetPos>
  • insert entity <to entity> inventory <from entity>
<SOURCE> 为:
  • fish | loot | kill | mine
  • inventory <entity> [MaxSlots]
<entity> 的类型为:player、cart、boat、villager、horse/donkey/llama、item、其他生物实体
[MaxSlots] 是可选的,将返回最多 n 个槽位(从 1 开始计数),(-n) 负数将返回最后 n 个槽位
装备顺序:盔甲从脚到头、主手、副手、身体、鞍。

示例,将一个箱子矿车中的物品栏压缩到另一个中:
/loot insert entity @e[limit=1,type=chest_minecart,tag=1] inventory @e[limit=1,type=chest_minecart,tag=2]

功能可能性

连接(Concatenate)

  • 字符串 old + 字符串 new
  • 字符串列表
  • 任意数组
  • 多个 Nbt 值(由 nbt 选择器选择)
  • Nbt 复合标签(仅顶层)作为带转义引号的字符串("key":"value")
  • 返回结果:连接的元素数量

给定的路径将被新字符串替换
附注:如果给定路径是字符串并且连接了一个字符串,则结果是这两个字符串的连接

数学运算

  • 对目标值执行数学运算,目标可以是任意数字类型,当类型不是数字时将抛出错误并将 success 设为 0
  • ^= 代表幂运算,也可用于计算根
  • 目标路径的 数字类型 不会改变
  • 如需命令语法帮助,请在客户端安装此模组
  • 返回结果和 success:成功时非零

Storageplayer

  • 将每个玩家的数据存储在其自己的文件 /players/<UUID>_pds.dat 中
  • 仅对玩家有效,任何其他实体会返回错误
  • !存储在 storageplayer 中的数据不会与客户端同步,它完全是服务端的!

Loot ... inventory ...

  • 将实体的物品栏掉落物放入容器(适用于玩家、矿车、船、商人、马、物品以及所有生物实体)
  • 现在可以insert到双箱子中(比常规 loot 命令更胜一筹)……
  • 返回结果:返回的槽位数
/execute as @e[type=item] run loot insert ~ ~-0.1 ~ inventory @s(将尝试把世界中所有掉落物品的副本插入到你脚下的物品栏中)
Loot ... inventory ... 的示例可在 数据包 Fafik77 Lib/inventory_manager 中找到

Delete Kill 命令

为回应 So I Added WAY Too Many Slimes to Minecraft -by Fundy
/deletekill <entities>
删除选定的实体,不掉落战利品,不触发事件,直接消失
附注:对史莱姆效果极佳