我正在编写我的第一个 Minecraft 数据包,一开始一切都运行良好。经过一段时间的编码后,刻度文件似乎完全停止工作。我检查了tick.json 文件,它看起来与load.json 完全相同,只是第三行使用“test:tick”而不是“test:load”,这应该是正确的。不知何故,load.mcfunction仍然有效,因为我可以看到我所做的tellraw命令在每次重新加载时仍然弹出。另外,如果我稍微更改一下 load.mcfunctcion 文件,我可以看到结果在我的世界方面运行良好。
这是我的代码:
tick.json 文件:
{
"values": [
"test:tick"
]
}
加载.json文件:
{
"values": [
"test:load"
]
}
加载.mc函数文件:
tellraw @a {"text": "Hello there","italic": true,"color":"#5544FF"}
scoreboard players reset tick
scoreboard objectives add tick dummy {"text":"CurrentTick", "bold": true}
scoreboard objectives setdisplay sidebar tick
scoreboard players set tick tick 0
tick.mc函数文件:
execute at @a run summon sheep
#Trident Lightning
execute at @e[type=trident, nbt={OnGround:0b}] run summon lightning_bolt
#Arrow TNT
execute at @e[type=arrow,nbt={pickup:1b,inGround:0b}] run summon tnt ~ ~ ~ {Fuse:100}
kill @e[type=arrow,nbt={inGround:1b}]
#Egg Leaf Bridge, also can destroy stuff, dropping loot
execute at @e[type=egg] run setblock ~ ~-2 ~ oak_leaves destroy
#Snowballs damage players in an AOE
execute at @e[type=snowball] run damage @e[distance=..3] 2
#Ticks
scoreboard players add tick tick 1
VSCode 中的文件布局截图:
我根本没有模组,也没有其他数据包。这是 1.20.1 的单人世界。
好吧,所以在数据包中,当函数中有错误时,它们就会从地球表面消失,并且您无法运行它们。您的错误是
execute at @e[type=snowball] run damage @e[distance=..3] 2
末尾的 @e[distance=..3]
伤害命令仅允许一个目标,而在该行中您允许多个目标。解决此问题的一种方法是执行 @e[distance=..3, limit=1]