箱人間のおたわむれ

名称は箱です。7割マイクラ記事残りは雑記なブログです。

【JAVA版1.19.2マイクラ】凸凹鯖にワープアイテムを追加したくて四苦八苦

こんばんわ、タソギンです。

 

突然ですが、タソギンは思いました。

 

「拠点に一瞬で戻れるアイテムって便利じゃね?」

 

と・・・。

 

どんなゲームでも拠点にしている場所に戻れるシステムって

大抵、あるものですよね。

RPGならスクロールとか宝珠とか。

凸凹鯖にはそういうのがありません。

管理者はTPできるけど、それ以外の人は遠出したら

戻るのが大変。

もちろん、死んでもアイテムを持ったままの設定なので

あまり必要なさそうなんですけどね・・・。

 

でもやっぱり・・・

 

試してみたいですよね!

 

というわけで

コマンドブロックで設定しました。

プラグインとかModとかあればもっと手軽なんでしょうけど

Realmsにそんな便利システムは追加できません!

 

いつものように一から作るほかありません。

コマンド知識レベルがミジンコなので優秀な先駆者様らのコードを参考にします。

 

では、調べていきましょう。

 

・・・

 

【統合版のやり方】【統合版では!】【統合版の~】

 

統合版の情報ばかりじゃないか!!

 

相変わらずでした。

仕方ないので統合版を参考にしてみました。

 

鍵となるのは『execute』コマンド。

こいつを使うと元からあるアイテムの動作に対してコマンドを実行させる

ことのできるものです。

調べてみると『雪玉ワープ』なるものを見つけました。

雪玉を投げるとワープするそうです。

 

その内容を打ち込んでみました。

========================

execute @a[type=snowball]  tp <座標>

========================

意味としては

@すべてのエンティティ[エンティティの種類 は 雪玉]  テレポート <座標>

雪玉を右クリックで投げると指定座標にテレポートする

そんな感じです。

 

結果は反応しません。

参考にしていたサイトの内容をそのままコピーしたものでも

反応しません。

 

反応しないのです。

それもそのはず。

統合版とJava版ではコマンドの書き方が違うのですから。

ひたすら調べていたらJava版では追加で構文が必要であることわかりました。

========================

execute as @a[type=snowball] run tp <座標>

========================

赤文字が足りない構文。

こちらをサブコマンドというそうです。

面倒ですが、これがあるおかげでコマンドを複数つなげて

発動させることができるようです。

 

とりあえず成功しました。

しかし、ここで問題があります。

ワールド内で手に入れた雪玉がすべてこの効果を持ってしまいます。

なので、名前を変更して対応しようとしました

しかし、ミジンコレベルの私ではどうやって名前を変更したアイテムを

認識させるのか分かりません。

これを調べるのに、とんでもない時間を要しました。

 

1週間後。

めっちゃ複雑になっちまうじゃねぇか!!

 

ダメでした。

私の脳みそではミドリムシに勝てませんでした。

 

なので作戦変更です。

そや、ドロップしたら発動にしよう!

 

参考にしたものがこの方式でした。

今回は『scoreboard』を使用します。

アドベンチャーや脱出系の配布ワールドで使われている

スコアボードコマンド。

execute』と組み合わせて使えるようなので手間は増えました。

結果は成功です。

 

画像の左にある紫ブロックから一つずつ入れ込みます。

というわけで作ったものが以下のものです。

========紫のブロック==========

/scoreboard objectives add ddd minecraft.dropped:minecraft.petrified_oak_slab "ワープ板"

========================

設定は、リピート・無条件・常時

 

========水色のブロック1==========

/execute as @p[scores={ddd=1..}] run tp <座標>

==========================

設定は、チェーン・無条件・常時

 

========水色のブロック2==========

/scoreboard players set @a[scores={ddd=1..}] ddd 0

==========================

設定は、チェーン・無条件・常時

 

これら三つのコマンドブロックで何をしているかというと

1番目で表を作り、名前はddd”ワープ板”という名前の石化したオークのハーフブロックを落としたらカウントする

というもの。

『ddd』は適当な名前なのでどんな内容でも構いません。

また、石化したオークのハーフブロックにしているのには理由があります。

最後に説明します。

 

2番目ではチェーンブロックを使用しているので1番目を認識すると起動します。

@もっとも近いプレイヤーの{dddスコアが1以上}なら

指定した座標へテレポートする。

 

3番目も2番目を認識すると起動します。

こちらは増えたdddスコアをリセットするものです。

@aですべてのプレイヤーを対象にしています。

これをセットしていないと永遠とワープし続けます。

 

本来であれば、使ったアイテムが消えるようにKillコマンドを

チェーンでつなげるのですが2つほど問題があり作っていません。

設定をミスると永遠とKILLされ続け鯖に入れなくなることや

名前を変更したアイテムを認識してくれないことなどがあります。

ちょうどいい構文が見つからなかったのです。

むしろ教えてほしいくらい・・・。

 

そして、これらを完成させた以上は帰ってくる場所を作らねば

なんかそういう台座です。

 

適当ですがこんなものです。

次に、これを他の住民が手に入れられるようにします。

オリジナルの村人を配置しました。

現在もまだ竹が見つかっていないため、建築促進も視野に足場を売ってもらう

ようにしました。そこにワープ板を設置。

捨てるとワープするというもの。

これでいつでもワープできますね。

 

で、先ほどの石化したオークのハーフブロックにした理由は3つ。

1つ目は対象のアイテムの名前を変更してしまえば同様の効果を得られてしまう。

2つ目はこのアイテムはクリエイティブでのみ出せるアイテムであること。

3つ目は、変更名を認識させることが出来なかったこと。

 

そう、これもまた未完成のコマンド装置なのです・・・。

〇〇という名前の〇〇アイテムだけを認識する。

これが理想でしたがうまくいかない。

そして力尽きました。

 

「動いたから許して・・・」

 

そうして諦めました。

またやる気がでたら改善してみようと思います。

いつになることやら。

というわけで、今回はここまでとします。

 

それではさようなら~。