雷霆嘎巴LT
本帖最后由 EmptyLava 于 2022-2-15 20:04 编辑

我有一个朋友,他不懂一下问题,没有金粒,我就来帮他发了。(他搞得是数据包)
例如我想要实现特殊nbt的铁剑命中敌人 敌人获得减速的效果,function写出来也实现了这一效果,但是我只会把全部相关指令设置为每tick执行的,实在是太占用性能了,有什么办法可以尽可能降低指令触发的频率,只检测到命中后才触发后续指令
反正就这类似的,我也搞不懂。
整理一下大概就是以下逻辑
数据包如何检测某个事件触发之后再执行之后的操作

名副其实
检查玩家攻击敌人时手持的物品是否包含特殊nbt即可
每tick循环是必要的
或者弄一个dummy虚拟变量,每当玩家造成伤害的时候检查手上物品
如果是就执行你所说的下一步命令

无敌三脚猫
在数据包的data\命名空间\advancements下面放个json,随便什么名字,英文名就行,然后这个json里面写
  1. {
  2.     "criteria": {
  3.         "asdfaesd": {
  4.             "trigger": "minecraft:player_hurt_entity",
  5.             "conditions": {
  6.                 "player": {
  7.                     "equipment": {
  8.                         "mainhand": {
  9.                             "item": "minecraft:iron_sword",
  10.                             "nbt": "{qwq:3}"
  11.                         }
  12.                     }
  13.                 },
  14.                 "entity": {
  15.                     "type": "minecraft:player"
  16.                 }
  17.             }
  18.         }
  19.     },
  20.     "rewards": {
  21.         "function": "命名空间:函数名"
  22.     }
  23. }
复制代码
,而那个要触发的函数,第一行要写advancement revoke @s only 命名空间:进度名,也就是把这个进度剥夺掉,这样才能接着触发,第二行再写真正起作用的指令
上面那种写法,是玩家拿着带有{qwq:3}标签的铁剑打别的玩家触发,触发成就的人,执行函数的人,都是拿剑的玩家,而下面这种写法,触发成就的人是被打的玩家
  1. {
  2.     "criteria": {
  3.         "qwewrwqrdes": {
  4.             "trigger": "minecraft:entity_hurt_player",
  5.             "conditions": {
  6.                 "damage": {
  7.                     "direct_entity": {
  8.                         "type": "minecraft:player",
  9.                         "equipment": {
  10.                             "mainhand": {
  11.                                 "item": "minecraft:iron_sword",
  12.                                 "nbt": "{qwq:3}"
  13.                             }
  14.                         }
  15.                     }
  16.                 }
  17.             }
  18.         }
  19.     },
  20.     "rewards": {
  21.         "function": "命名空间:函数名"
  22.     }
  23. }
复制代码
你可能想问这是怎么写出来的,看这边https://minecraft.fandom.com/zh/ ... N%E6%A0%BC%E5%BC%8F

模范菌
百度!啊!

雷霆嘎巴LT
模范菌 发表于 2022-2-15 11:40
百度!啊!

谁跟你讲什么都可以百度到的

模范菌
雷霆嘎巴LT 发表于 2022-2-15 11:56
谁跟你讲什么都可以百度到的

那就去学编程

雷霆嘎巴LT
模范菌 发表于 2022-2-15 13:14
那就去学编程

你有毒是不是,我还真有学,学C++,只不过早就不学了。而且数据包几乎跟编程没有任何关系,写数据包完全不需要编程基础,我也不需要你在这边指指点点,我好歹也是写过数据包教程的