初めに
プログラミングをしていて、必ずと言っていいほどに出てくる変数。
もちろん、あのMinecraftのコマンドを使う言語、mcfunctionにも出てきます。
その変数の名づけ方...適当につけてる人は居ませんか?今回はそういう方々に向けた、
変数の名づけ方を変えてみると、さらによくなる! かもしれない...
というものです。
ちなみに、これからこの記事では、変数 = スコア or ストレージとさせてもらいます。
スコアとストレージの名づけだけじゃなくTagの名づけも少し話します。
この記事のターゲット
データパック、コマンド中級者
変数って何? と思われた方へ
こちらの記事に書かれているので、見てみてください。
本題
とりあえず、どのような書き方をしているか、見てもらいましょう。
scoreboard objectives add reizo.Test dummy
え~...この、reizo.Testの、reizoの部分...僕の名前、reizou_00から取っております。
決してナルシストとかじゃないです。ハイ、いや...わざわざ自分の名前使ってるからそうかも知れませんが...
本題に戻りましょうか。
なぜこのようなことをするかと言うと...
例えば、
#> データパックA
scoreboard objectives add CoolTime dummy
こんなスコアを自分のデータパックで作ったとしましょう。
で、これは武器を使ったときに1tickずづ、0からスコアが1ずつ上がり、スコアが150になるまで武器が使えない。そして、150になったらスコアは上がらないし、0になる... とします。
まぁ、上のコメントに書いてある通り、とりあえず、この自分が作ったデータパックは、
データパックAという名前にしときます。
では、もう一つのほかのデータパックを見てみましょう。
#> データパックB
scoreboard objectives add CoolTime dummy
さて...こちらのデータパック、データパックBと名付けますか。
データパックAと同じ名前のスコアがありますね。
とりあえず、このデータパックでの、このスコアの役割を解説します。
これは、金リンゴを食べたときに、スコアを120にsetし、1tickにスコアを1ずづ減らし、スコアが0になるまで金リンゴを食べられない、そして、0になったら、もうスコアは下がらない... とします。
さて、お気づきの方もいるでしょうが...この二つのデータパックを一つのワールドに入れ、データパックAで作られた武器を使用し、まだスコアが150になってない間のうちに、金リンゴを食べるとします。
するとどうでしょうか?
さっきまでデータパックAの影響で増えていたスコアが急に120にsetされ、増えも減りもしなくなります。
要するに...バグります。
こういう風に...スコアの名前がかぶると、絶対におかしくなります。
これを防ぐために、あまりかぶらなそうな自分の名前からとった、reizoを付けています。
データパックを作るときに、誰にもかぶらないようにする名前空間を作りますよね。
先述したようなバグが起こってしまうから、データパックの名前空間は、他の名前空間とかぶらないようにするんです。
これは要するにスコアの名前空間です。
なので、(名前空間).(役割) と書くことで他のスコア名とかぶらないようにしているんです。
ちなみにこれはEntityにつける、Tagにも言えることなので、
(名前空間).(役割)
のようなものにしましょう。
まぁ...たまたまかぶることもあるでしょうが、これをすれば、確実に、 スコア名、Tag名の名前がかぶる確率は減り、原因不明のバグが起きる確率も減るでしょう。
実は、dataコマンドを使うストレージには常に名前空間が存在しています。
data modify storage (名前空間):(役割) Num set value 1
このように、:(コロン) で区切っていますね。
ちなみに...スコア名とかTag名に :(コロン) を使うとエラーを吐きやがるので、代わりに、.(ピリオド) で区切っているわけですね。
終わりに
最後まで読んでいただき、ありがとうございます。
Qiitaで...というか、このような記事を書くこと自体初めてなので、おかしな点とか、分かりにくい点があったと思います。すいません...
この記事が、今、この時でも、 後からでも、 いつか。 あなたの役に立つ時が来ることを願っております。