很多地图都会有一些特定的交互物品方式,最常见的有丢弃物品侦测和右键侦测
特此说明:这里我使用的物品名称为繁体中字译名
这篇专栏教学的是最常见的右键侦测
右键侦测,其目的就是记录你使用物品的次数统计,大多数地图制作者用用到的右键侦测的物品有:胡萝卜钓竿,地图,雪球,鸡蛋,终界珍珠,烟花火箭,飞溅 水瓶等
这里用到的是1.16新加入的扭曲蕈菇钓竿
无论是侦测丢弃的物品还是右键·,都需要用到一个scoreboard.
那如何做到右键侦测呢?
这里我们不再用到普通的准则(如:"dummy","health","deathcount"等),这里我们需要用到复合准则
指令如下
scoreboard objectives add rc_tut Minecraft.used:minecraft.warped_fungus_on_a_stick
这样右键侦测的准备工作就完成了,但单独靠上面的还不够,我们需要做到的是让玩家右键物品,它会触发一个事件,这里我们让他触发后向大家say hi,<player_id>,这时,我们就需要用到指令包了(当然指令方块也可,但很麻烦,我不喜欢.w.)
创建指令包这里不会说明
来到资料夹内部,可以看到已经有创建好的mcfunction档,这些是我常用到的格式
loaded-用于重载世界后自动加载
main-用于指令包重复执行,1秒会执行20次
scoreboard-用于重载世界后自动加载(主要用于建立scoreboard)
empty-这是一个空白的mcfunction档,主要用来快速创建一个新的mcfunction档
打码部分防破梗=w="
这里我们需要做到指令包不断侦测我们的右键次数,故需要用到main档(使用编辑软体:visual studio code)
我们要做到的是:当有玩家右键了一个物品,就会执行say.mcfuction
指令如下
execute as @a[scores={rc_tut=1..}] at @s run function rc:say
这里不用if score @s rc_tut matches 1.. 的原因是这样做执行者是伺服器而不是玩家自己,而as的作用改变命令的执行者,at的作用是改变命令的执行位置.
接下来我们创建一个叫做say的mcfunction档,这里我们让say.mcfunction执行后会say hi,@a 同时清除掉自己rc_tut的使用次数(不清除会导致say hi,@a 一直洗板)
指令如下
say hi,@a
scoreboard players reset @s rc
这两条指令不可以调换执行顺序,否则会出现分数正常清除了但还未执行say hi,@a的bug
当然还未结束,你一定不希望别人随便拿一根扭曲蕈菇钓竿就执行一个事件吧,这时就可以给自己一根带有自订NBT标签的扭曲蕈钓竿,这里我们用{rc:1},然后侦测玩家手上是否有带有这个NBT标签就可以了
give @s warped_fungus_on_a_stick{rc:1}
我们可以在原有的基础上进行修改
execute if entity @s[nbt={SelectedItem:{tag:{rc:1}}}] run say hi,@a
如果需要给它一个不同的材质,可以用{CustomModelData:<value>}解决,这里不做赘述
那右键侦测的教学就到这里,评论区会附上指令包下载的载点,如果不会可以在评论区留言,我会尽量解决=w="也别忘了素质三连
本文禁止转载!!!!!
Ps:写指令包一定要记得多保存,否则哪天出来什么问题不关我的事=w="同时,如果你使用的软体可以开启自动保存也可以开启来,这样就省去了不停按Ctrl S的步骤XD