見出し画像

マイクラのコマンドで半日かけてかっこいい斬撃を放つ剣を作った

まあまあ疲れたー

それで作った剣は
向いた方向に切れる剣です。
もっといい方法もあるかもですがコマンド紹介もします。

あと環境はJAVAのvar1.19.2です。たぶん1.19.3でもOK。

まずスコアボードを使い人参棒の右クリックを検知、
その後その剣(人参棒)となるアイテムについてる
narizou_item:zanngekiha_kenn
というアイテムタグを持ってるアイテムを利き手に持ってたら
zangekiha_moto1とnarizou_timeというtagが
付いた透明なアマスタを自分の場所にsummonします。
そしてzangekiha_moto1
execute as @e[tag=zangekiha_moto1,tag=!zangeki_tama_summon] at @s
をつけた状態で
functionを実行します。
functionの中身は↓


execute unless entity @s[scores={narizou_time=1..}] run scoreboard players operation @s player_number = @p player_number

execute at @p anchored eyes positioned ~ ~1 ~ unless entity @s[scores={narizou_time=1..}] run tp @s ^ ^ ^5

execute as @s[scores={narizou_time=5}] at @a if score @p player_number = @s player_number positioned ^ ^ ^5 facing entity @s feet positioned as @s run tp @s ^ ^ ^5 ~ ~

tag @s[scores={narizou_time=5..}] add zangeki_tama_summon


まずスコアのnarizou_timeはnarizou_timeというtagがついてるやつに
毎tick+1し続けられるスコアです。
1行目
事前につけておいたプレイヤーごとに違う数値を持ったスコアボード「player_number」をzangekiha_moto1から一番近くのプレイヤーのplayer_numberと同じにします


2行目は近くのプレイヤーの視点の先に行くコマンドです

3行目は時間を空けてからプレイヤーナンバーが同じプレイヤーの向いている方向の5ブロック先の反対の方向を向くコマンドです

4行目は3行目の後にtagのzangeki_tama_summonをつけるコマンドです
zangeki_tama_summonがつくと上で説明した通りexecuteにzangeki_tama_summonを除外するようにしていたので
このfunctionはもう実行されません

そして次に
execute as @e[tag=zangekiha_moto1,tag=zangeki_tama_summon] at @s
をつけた状態で別のfunctionを実行します
その内容は↓


scoreboard players add @s for 1

summon armor_stand ~ ~ ~ {NoGravity:1b,Silent:1b,Invulnerable:1b,Small:1b,Marker:1b,Invisible:1b,Tags:["zangekiha","narizou_time"]}

scoreboard players operation @e[sort=nearest,limit=1,tag=zangekiha] player_number = @s player_number

tp ^ ^ ^-1

execute as @s[scores={for=..20}] at @s run function narizou:buki/sword/zangekiha/tama_moto_tama_summon

kill @s


まず1行目でforというスコアを1増やします
次に2行目で発射される弾となるアマスタを召喚します
3行目で召喚した奴と自分のplayer_numberを同じにします
4行目で1つ後ろに下がります
5行目でforが20以下だったらこのtick内でもういちど同じ処理を行います
そして6行目で5行目が終わったら自分を消します。

そして最後に弾のfunctionを紹介します


execute at @a if score @s player_number = @p player_number positioned as @p run tp @s ~ ~ ~ ~ ~

execute as @s[scores={narizou_time=1..}] run tp ^ ^ ^1

#execute as @s[scores={narizou_time=1..}] run particle dust 0.894 1 0.776 1 ~ ~ ~ 0 0 0 0 1

execute as @s[scores={narizou_time=1..}] run particle sweep_attack ~ ~ ~ 0 0 0 0 1


kill @s[scores={narizou_time=50..}]


1行目以外は基礎の弾を飛ばすコマンドなので説明は省きます
1行目は自分と同じplayer_numberのプレイヤーを探して、
そいつの向きを向くコマンドです。

つかれたー
初めてのこういう感じの投稿だったのでうまく説明できてないかも
しれません…
まあこれで終わりです。
最後まで見てくれてありがとうございました!

よろしければサポートお願いします!いただいたサポートは、活動費として使わせていただきます。あと私がめっっっっちゃ喜びます。