iMoonDay
本帖最后由 iMoonDay 于 2023-1-23 00:08 编辑

在制作数据包的过程中遇到的predicates问题:我写了一个判断玩家主手物品nbt的predicates,json格式是这样的
  1. {
  2.         "condition": "minecraft:entity_properties",
  3.         "entity": "this",
  4.         "predicate": {
  5.                 "equipment": {
  6.                         "mainhand": {
  7.                                 "nbt": "{xxx:{xxx: 1b}}"
  8.                         }
  9.                 }
  10.         }
  11. }
复制代码

然后我用 /execute if predicate xxx:mainhand/xxx 来测试这个predicates,显示测试通过了,但是我按Q把他丢出去之后再次用前面的指令测试这个predicates它仍然显示测试通过,根据这个predicates来执行的指令也在正常工作,但是此时我是空手状态,问题就是它为什么还能判断我主手nbt是一样的呢?然后我把物品栏切到其他格子进行测试就变成了测试失败,但是我再切回最开始那个格子又变成测试通过了,而且仍然是空手状态。
不知道这是predicates的判定bug还是我的数据包出bug了?

已自行解决:通过添加判断主手是否为空气暂时解决这个问题,代码如下
  1. [{
  2.         "condition": "minecraft:entity_properties",
  3.         "entity": "this",
  4.         "predicate": {
  5.                 "equipment": {
  6.                         "mainhand": {
  7.                                 "nbt": "{xxx:{xxx: 1b}}"
  8.                         }
  9.                 }
  10.         }
  11. },{
  12.         "condition": "minecraft:inverted",
  13.         "term": {
  14.                 "condition": "minecraft:entity_properties",
  15.                 "entity": "this",
  16.                 "predicate": {
  17.                         "equipment": {
  18.                                 "mainhand": {
  19.                                         "items": [
  20.                                                 "air"
  21.                                         ]
  22.                                 }
  23.                         }
  24.                 }
  25.         }
  26. }]
复制代码




第一页 上一页 下一页 最后一页