北方熬夜 发表于 5 天前

[1.19+]在基岩版用指令方块实现枪械效果

本帖最后由 北方熬夜 于 2025-7-2 17:16 编辑

首先,这套指令搬运自油管,并非本人原创,只是搬运过来并解释
此外版本不一定只限于1.19+,我并没有去测试所有的版本,感兴趣可以其他低版本试试看?可以告诉我

通过这些指令方块,能将原版的金锄头变成沙漠之鹰,当蹲下时会消耗一块燧石,并发射出子弹,有弹道,子弹速度和音效,并可以自定义穿墙效果。
我们将它分为三列,咱们从左到右称作第一,二,三列,并挨个从下往上讲
第一列,用于检测玩家是否符合开枪条件
第一列第一个循环方块,检测玩家是否手持金锄头,并且按下潜行,如果符合要求,就给该玩家添加一个fire标签execute as @a at @s positioned ~~1.6~ unless entity @s run tag @s add fire第一列第二个,当检测玩家不是潜行状态,就去除fire标签execute as @a at @s positioned ~~1.6~ if entity @s run tag @s remove fire第一列第三个,这个是当玩家不再潜行,就去除shot标签,这个shot标签后面会讲到execute as @a at @s positioned ~~1.6~ if entity @s run tag @s remove shot
第二列,用于处理玩家开枪逻辑
第二列第一个,给玩家头顶生成一个船,条件是有fire标签,背包中有燧石的玩家,并且没有shot标签execute as @a at @s positioned ~~51.5~ run summon boat ^^^1.5 ~~第二列第二个,这个会在刚刚生成船的位置给船打上一个标签deagleexecute as @a at @s positioned ~~51.5~ positioned ^^^1.5 run tag @e add deagle第二列第三个,播放开枪音效,execute as @a at @s run playsound random.explode @a ~~~ 1 2第二列第四个,消耗一块燧石作为弹药clear @a flint 0 1第二列第五个,屏幕抖动效果camerashake add @a 1 0.15第二列第六个,添加shot标签,意思玩家的子弹已经打出了,只有取消潜行状态才能重置
第三列,用于处理子弹的行为
第三列第一个,给刚刚生成的带有标签的船再添加一个landed标签,用于区分子弹是否还在飞行tag @e add landed第三列第二个,用tp改变船的位置,模拟子弹向前移动execute as @e at @s run tp @s ^^^0.6第三列第三个,标记船的下方50格的位置,当触碰到方块的时候就将landed标签移除,如果方块是空气或者短草丛,就不会移除execute as @e at @s positioned ~~-50~ unless block ~~~ air unless block ~~~ short_grass run tag @s remove landed第三列第四个,还是标记船的下方50格的位置,对这个地方的实体造成伤害,设置伤害来源是手持金锄头的人execute as @e at @s positioned ~~-50~ run damage @e 20 entity_attack entity @p第三列第五个,在船的下方50格的位置添加烟雾粒子效果模拟弹道execute at @e positioned ~~-50~ run particle minecraft:balloon_gas_particle下面重复第二到第五个步骤,这样可以减少一点性能损耗,这里是重复了两次
最后一个,删除没有landed标签,但是有deagle标签的实体,也就是清除被标记为停止飞行的子弹kill @e
或许可以用于冈易的租赁服?但是经过测试,冈易手机版的优化像shit,同时存在两发子弹服务器就吃不消了,如果有优化方案,希望大家能不吝赐教,不过电脑的基岩版还是可以的,一直连发都很流畅。
非常巧妙的设计方式,想不到在有众多阉割的基岩版中也能实现枪械的效果。







页: [1]
查看完整版本: [1.19+]在基岩版用指令方块实现枪械效果