xiaodan_979791
版本:1.14+
问题:
想做一个有序合成,但是数据包里做的有序合成不支持nbt
所以只能做一个无序合成,当然,不是数据包里的无序合成(数据包里的也不能加nbt)
我就想用指令做
给你们一个大概吧
把8个铁锭和一个黑曜石扔在同一个位置,最近的玩家会获得一个有tag的附魔铁锭
1.12.2版本做起来很简单
但是1.14+以后的指令我没怎么研究(懒)所以直接想问你们要了
还有
如果可以的话,麻烦再告诉我
如何把8个有tag的附魔铁锭和一个黑曜石扔在同一个地方,最近的玩家会获得一个有tag的金锭

【先解决第一个问题】


(=°ω°)丿
# 高频执行 minecraft:tick
## 以数量为 8 的普通铁锭的身份,检测当前位置附近是否存在一颗黑曜石,如果存在则运行函数 foo:example。
execute as @e[type=item,nbt={Item:{id:"minecraft:iron_ingot",Count:8b}}] at @s if entity @e[type=item,nbt={Item:{id:"minecraft:obsidian",Count:1b}},distance=..1] run function foo:example


# 函数 foo:example
## 移除自己和周围的黑曜石,并召唤附魔铁锭。
kill @s
kill @e[type=item,nbt={Item:{id:"minecraft:obsidian",Count:1b}},distance=..1,limit=1]
summon item ~ ~ ~ {Item:{id:"minecraft:iron_ingot",tag:{附魔铁锭的NBT},Count:1b}}}

xiaodan_979791
本帖最后由 xiaodan_979791 于 2020-11-21 12:53 编辑
(=°ω°)丿 发表于 2020-11-21 11:04
# 高频执行 minecraft:tick
## 以数量为 8 的普通铁锭的身份,检测当前位置附近是否存在一颗黑曜石,如果存 ...

能不能回答一下第二个问题qwq

LxAs
本帖最后由 Light² 于 2020-11-21 13:32 编辑
想做一个有序合成,但是数据包里做的有序合成不支持nbt

指令能做有序合成啊,检测发射器里面的物品,如果是对应物品的话就用data指令改方块数据,很简单的 也支持nbt

LxAs
xiaodan_979791 发表于 2020-11-21 11:44
能不能回答一下第二个问题qwq

只需要对沙发回答稍作修改即可

  1. # 高频执行 minecraft:tick
  2. ## 以数量为 8 的附魔铁锭的身份,检测当前位置附近是否存在一颗黑曜石,如果存在则运行函数 foo:example。
  3. execute as @e[type=item,nbt={Item:{id:"minecraft:iron_ingot",tag:{附魔铁锭的NBT},Count:8b}}] at @s if entity @e[type=item,nbt={Item:{id:"minecraft:obsidian",Count:1b}},distance=..1] run function foo:example

  4. # 函数 foo:example
  5. ## 移除自己和周围的黑曜石,并召唤附魔铁锭。
  6. kill @s
  7. kill @e[type=item,nbt={Item:{id:"minecraft:obsidian",Count:1b}},distance=..1,limit=1]
  8. summon item ~ ~ ~ {Item:{id:"minecraft:gold_ingot",tag:{附魔金锭的NBT},Count:1b}}}
复制代码

xiaodan_979791
Light² 发表于 2020-11-21 13:37
只需要对沙发回答稍作修改即可

第二个问题改不来啊
有tag的物品一扔到地上,是检测不到这个物品的tag

LxAs
xiaodan_979791 发表于 2020-11-21 16:20
第二个问题改不来啊
有tag的物品一扔到地上,是检测不到这个物品的tag

你物品什么附魔,什么tag?
我/give @s minecraft:iron_ingot{Tags:["1"]} 8
然后用上面的指令检测没问题
/execute as @e[type=item,nbt={Item:{id:"minecraft:iron_ingot",tag:{Tags:["1"]},Count:8b}}] at @s if entity @e[type=item,nbt={Item:{id:"minecraft:obsidian",Count:1b}},distance=..1] run function foo:example

xiaodan_979791
Light² 发表于 2020-11-21 16:33
你物品什么附魔,什么tag?
我/give @s minecraft:iron_ingot{Tags:["1"]} 8
然后用上面的指令检测没问题

/give @s minecraft:iron_ingot{suntie:1} 1

LxAs
xiaodan_979791 发表于 2020-11-21 16:47
/give @s minecraft:iron_ingot{suntie:1} 1

/give @s minecraft:iron_ingot{Tags:["suntie"]} 1
检测:
  1. /execute as @e[type=item,nbt={Item:{id:"minecraft:iron_ingot",tag:{Tags:["suntie"]},Count:8b}}] at @s if entity @e[type=item,nbt={Item:{id:"minecraft:obsidian",Count:1b}},distance=..1] run function foo:example
复制代码

xiaodan_979791
Light² 发表于 2020-11-21 17:01
/give @s minecraft:iron_ingot{Tags:["suntie"]} 1
检测:

问题是把带suntie标签的铁丢在地上,掉落物是没有标签的

LxAs
xiaodan_979791 发表于 2020-11-21 17:28
问题是把带suntie标签的铁丢在地上,掉落物是没有标签的

又开了一遍客户端,我很确定用给你的指令 获取的带标签铁锭没问题