我想要写一个隔一段时间讲有意愿(Willing)的村民转化为准备繁殖的村民(InLove)
打算使用函数实现
timer.mcfunction
scoreboard objectives add timer dummy
scoreboard players add @s timer 1
function sheng if @s[score_timer_min=2400]
scoreboard players reset @s[score_timer_min=2400] timer
sheng.mcfunction
execute as @e[type=villager,nbt={Willing:1b}] run data merge entity @s {InLove:600}
随后我要把这两个文件放在哪里,怎样才能触发?
(如果内容有错,也请指出)
版本1.13.2
打算使用函数实现
timer.mcfunction
scoreboard objectives add timer dummy
scoreboard players add @s timer 1
function sheng if @s[score_timer_min=2400]
scoreboard players reset @s[score_timer_min=2400] timer
sheng.mcfunction
execute as @e[type=villager,nbt={Willing:1b}] run data merge entity @s {InLove:600}
随后我要把这两个文件放在哪里,怎样才能触发?
(如果内容有错,也请指出)
版本1.13.2
我还以为是数学。。
本帖最后由 ⊙v⊙ 于 2019-3-10 02:31 编辑
先是存放位置,存放在这个位置下
.minecraft\saves\<存档名字>\datapacks\<数据包名字>\data\<命名空间>\functions
命名空间英文字母小写,这里假设你的命名空间为test,那么
.minecraft\saves\<存档名字>\datapacks\<数据包名字>\data\test\functions\timer.mcfunction
.minecraft\saves\<存档名字>\datapacks\<数据包名字>\data\test\functions\sheng.mcfunction
复制代码而这个只需要执行一次,你自己在聊天框里执行一次就好
复制代码
复制代码
游戏里执行以下
execute as @e[type=minecraft:villager] run function test:timer
先是存放位置,存放在这个位置下
.minecraft\saves\<存档名字>\datapacks\<数据包名字>\data\<命名空间>\functions
命名空间英文字母小写,这里假设你的命名空间为test,那么
.minecraft\saves\<存档名字>\datapacks\<数据包名字>\data\test\functions\timer.mcfunction
.minecraft\saves\<存档名字>\datapacks\<数据包名字>\data\test\functions\sheng.mcfunction
- #run once
- scoreboard objectives add timer dummy
- #test:timer
- #(?)@s > @e[type=minecraft:villager]
- #(?)@s > @e[type=minecraft:villager,nbt={Willing:1b}]
- scoreboard players add @s timer 1
- execute if score @s timer matches 2400.. run function test:sheng
- #test:sheng
- execute if entity @s[nbt={Willing:1b}] run data merge entity @s {InLove:600}
- scoreboard players reset @s timer
游戏里执行以下
execute as @e[type=minecraft:villager] run function test:timer
将这俩放入数据包中。
[存档名称/datapacks/data/命名空间/functions/]
举个例子:[New_World/datapacks/data/villager_breeding/functions/]
放进[functions]文件夹里就行了
然后再创建一个函数,随便命名,比如[loop.mcfunction],里面写上
execute as @e[type=villager] run function timer
然后在[New_World/datapacks/data/villager_breeding/tags/functions/]创建一个文件,命名为[tick.json]
里面这样写
复制代码
另外你的命令中
[function sheng if @s[score_timer_min=2400]]
是错误的,这是1.12的格式
应该改为
execute if entity @s[scores={timer=2400..}] run function villager_breeding:sheng
这里的villager_breeding是命名空间名称,如果不用这个名字的话可以改掉
[存档名称/datapacks/data/命名空间/functions/]
举个例子:[New_World/datapacks/data/villager_breeding/functions/]
放进[functions]文件夹里就行了
然后再创建一个函数,随便命名,比如[loop.mcfunction],里面写上
execute as @e[type=villager] run function timer
然后在[New_World/datapacks/data/villager_breeding/tags/functions/]创建一个文件,命名为[tick.json]
里面这样写
- {
- "values":[
- "villager_breeding"
- ]
- }
另外你的命令中
[function sheng if @s[score_timer_min=2400]]
是错误的,这是1.12的格式
应该改为
execute if entity @s[scores={timer=2400..}] run function villager_breeding:sheng
这里的villager_breeding是命名空间名称,如果不用这个名字的话可以改掉
我也以为是数学。。