作为一个生存服务器管理员,我一直对刷物品的bug头疼,想想自己的服务器神奇满天飞,金苹果当饭吃,就特别苦恼。(其实可能是有点酸,因为自己以前和小伙伴们玩租赁服的时候可不是靠刷东西发展的。还有就是服务器因为刷物品bug,挂刷的物品也被广为流传,造成服务器崩溃,卡顿。再加上小学生进来就伸手,然后拿刷来的神器守出生点。)
很多租赁腐竹选择彻底禁用活塞,红石等。但这会降低每一个玩家的乐趣,相信每一个腐竹都会因此而困扰。
所以这里给出一个防止活塞刷物品的方案,可以保留活塞和红石等等,虽然可能还有其他刷物品bug,但也可以做到一定防止。
1,用execute检测方块然后执行fill命令
execute指令有个格式是:
/execute <目标> <命令执行位置> detect <检测方块位置> <检测方块ID及其数据值> <执行的命令>
所以可以用这个命令来让一个玩家检测到附近的方块后以这位玩家的身份来执行命令,但是因为坐标参考系不同,所以要用到双重execute。
比如:/execute @a ~ ~ ~ execute @s ~ ~ ~ detect ^ ^ ^1 piston 0 fill ~5 ~5 ~5 ~-5 ~-5 ~-5 air 0 replace chest
这条指令的内容是,让所有玩家自己检测以自己为坐标原点检测在x轴上位置为-1的位置是否有一个活塞,若有,则以自己为坐标原点构建一个自己在中心的正方体,然后这个正方体内所以箱子替换为空气。(说实话,我自己看了有时候都难看懂)。简单来说,如果你前面(有时不是前面)有一个活塞,那么你附近的箱子就会变成空气。
有点指令基础的人应该可以看懂。
但是这个指令有个缺陷,就是它非常严格,就是被检测的方块数据值是必须填写的,而这个就会非常麻烦,比如要检测2种方块(活塞和粘性活塞),这两种方块各有6个数据值,还要清除5种方块(箱子,陷阱箱子,熔炉,发射器,投掷器),再延长一下检测距离(增加一个^2 ^ ^)的坐标,这样算下来就会有2x6x5x2=120个命令方块,实在不值得。
∴以上是废话。
2,使用execute testforblock fill指令(正文)
这里要用到多个命令方块,第一个需要循环开启然后接上比较器,比较器后面需要一个循环开启的红石控制命令方块,然后再接上多个连锁循环开启命令方块。这里给出两种方案,一种是检测活塞清箱子,一种是检测箱子清活塞,第一种可能会造成正常玩家的财产损失,所以选择第二种。
就是这个亚子
如图所示:
1:第一个命令方块加上指令并使方块为循环无条件保持开启:
/execute @a ~ ~ ~ testforblock ^ ^ ^1 chest
内容:让每个玩家检测自己前面是否有一个箱子
2:第二个命令方块为循环无条件红石控制
/execute @a ~ ~ ~ fill ~5 ~5 ~5 ~-5 ~-5 ~-5 air 0 replace piston
内容:把以自己为中心的边长为10的正方形空间内的活塞替换为空气
3:第三个命令方块为连锁无条件保持开启
/execute @a ~ ~ ~ fill ~5 ~5 ~5 ~-5 ~-5 ~-5 air 0 replace sticky_piston
内容:不用我解释了吧
4:上同
/execute @r ~ ~ ~ fill ~5 ~5 ~5 ~-5 ~-5 ~-5 air 0 replace redstone
内容:我觉得你们应该能看懂。
一个刷物品机基础模型
在我靠近箱子后,活塞消失了
当然我们也不能只检测箱子,把箱子替换成熔炉等等都可以达到这个效果,因此我们需要加入更多检测条件。
就是这样,可以添加十个检测条件,或者更多
检测条件就是上述步骤的第一项,这个我提供一个模板,然后分别加入每个命令方块中。
/execute @a ~ ~ ~ testforblock ^ ^ ^<方块在你前面几格?> <检测方块ID>
<方块在你前面几格?>这个建议设置为1与2
<检测方块ID>建议检测:箱子,发射器,投掷器,熔炉,陷阱箱,高炉等等
附加:
箱子:chest 发射器:dispenser 投掷器:dropper 熔炉:furnace 陷阱箱:trapped_chest 高炉:blast_furnace
如果要添加上面所有检测条件,那么就需要12个检测条件方块,上图显示的是10个。
注:已经进行了3人测试,唯一的不足就是如果有一个人达成检测条件,其他的人都会因此被清除自己附近的活塞,但是这种情况发生的几率小所以可以忽略,或者可以把上述命令中的5改为3或2,缩小清除范围。
以上就是茶磨带给你们的防止刷物品指令,喜欢的话点个关注吧!