我的世界1.9命令方块教程道具冷却补给系统制作
小编为大家带来了《我的世界》1.9命令方块教程道具冷却补给系统制作,这个东西非常得好,在pvp中和RPG类型的游戏地图可以为玩家带来不一样的游戏感受,有兴趣的玩家都来看看吧。
这个系统的核心只有两个字:穷举
没错……其实就是个苦力活儿,因为不同的道具的冷却时间不一样,所以要单独计算时间。
实现的功能就是,每种箭上限只有3支,当使用了以后,每10秒补给1支。
箭是其中的一个例子,其实基本上所有的道具都有类似的方法来制作冷却补给。
这里,主要给大家讲讲我的思路……我不知道有没有其他人发过类似的,但我没搜到,所以我按我自己的思路来做。
首先,要判断使用了箭的方法,毫无疑问需要使用记分板,这是第一步,也是变化最多的一步,为什么这么说呢?
因为有的道具是主动道具,需要你去“使用”它;而有的道具则是投掷型(按Q使用之类的),还有的是利用副手的位置等等
在做补给之前,你需要判断这个道具是如何使用的,例如我这里是,弓在副手,选中对应的箭拉弓即可,所以我选择了判断弓的使用
在贴指令之前,贴一下文中可能用到的简写和前缀:
默认不加前缀是CCB, Chain Command Block
icb前缀代表是ICB, Impulse Command Block
rcb前缀代表是RCB, Repeating Command Block
init前缀代表该指令只在激活OOC时执行一次
指令的话,肯定是添加记分板了,这里会把用到的记分板写出来
init:scoreboard objectives add bowUse stat.useItem.minecraft.bow 使用了弓
init:scoreboard objectives add arrowCoolDown1 dummy 属性箭1冷却
init:scoreboard players add @a arrowCoolDown1 0
复制代码
bowUse是用于判断玩家是否使用了弓(箭)
arrowCoolDown1是给属性箭1用的冷却时间记分板
当玩家使用了弓、选择了属性箭1号并且冷却时间不超过400刻(20秒)的时候,添加200刻(10秒)的冷却时间
rcb:scoreboard players add @ascore_bowUse_min=1,score_arrowCoolDown1=400] arrowCoolDown1 200 {SelectedItemSlot:1}
复制代码
在上图可以看见,属性箭1实际上位于2号快捷栏,在Inventory中,2号快捷栏的编号是1(0~8,以此类推)
注意到这里的“冷却时间不超过400刻”,为什么要这么设定呢?这个问题放到后面一些解答。
然后看下一条:
scoreboard players reset @a[tag=archer,score_bowUse_min=1] bowUse
复制代码
重置使用弓次数的记分板,这条没什么好说吧?不过注意的是执行顺序问题,就是这个需要放在比较后面来执行
接下来就是倒计时部分
scoreboard players remove @a[tag=archer,score_arrowCoolDown1_min=0] arrowCoolDown1 1
replaceitem entity @a[score_arrowCoolDown1_min=0,score_arrowCoolDown1=0] slot.hotbar.1 tipped_arrow 3 0 {相关NBT}
replaceitem entity @a[score_arrowCoolDown1_min=200,score_arrowCoolDown1=200] slot.hotbar.1 tipped_arrow 2 0 {相关NBT}
replaceitem entity @a[score_arrowCoolDown1_min=400,score_arrowCoolDown1=400] slot.hotbar.1 tipped_arrow 1 0 {相关NBT}
复制代码
解释一下每一条的意思,首先当冷却大于等于0的时候,会自动减1——所以,最后的数字会停留在-1
前面说了,每用一次该道具,冷却时间+200刻(10秒),而每10秒需要补一次,上限3支;
于是我们可以简单算出来,在倒计时到0的时候替换成3,在倒计时到200的时候替换成2,400的时候替换成1
超过400意味着什么?意味着此时这个槽位是空的,没有那个道具
那么问题来了,如果这个时候选中这个槽位使用弓,会怎么样?
很明显,冷却加10秒√
于是就需要设定,当冷却时间不超过400的时候使用弓,才能加冷却时间
以上就是“一个道具”要用到的指令
……当有多个道具的时候,就需要设定多个记分板(例如我这里有8种属性箭,所以是arrowCoolDown1,2,3,……,8)
简单来说,就是前面的指令*8
而我自己在写的时候,因为个人的一些强迫症,必须添加颜色黑科技以及防止扔道具误操作这样的系统,所以最后写出来的源指令就不短了,大概就是这个样子。
查看所有0条评论>>