勝手にハルコマを1.13に対応してて気づいたこととか思ったこととか、あと最近の天気とかの話
あついね(天気の話 終)
どうも皆様、クマです。
皆様は「ハルの総合コマンドエディタ」、通称「ハルコマ」はご存知でしょうか。
今回はそれを勝手に1.13に対応させる作業をした日記を書かせていただきます。
目次
どんな作業したの?
1.13にやっつけで移行するだけですので、しなければいけなかったのは
- いろいろなテキストのJSON化への対応
- GiveのアイテムID等の仕様変更やコマンド形式変更への対応
- Summonのエンティティ増加やNBT変更への対応
- Setblockのブロック状態の指定方法変更への対応
くらいでした。
どんなことに気づいた?
JSONへの対応
JSON、手書きは面倒ですよね。
ですので、JSON生成用のフォームを作ることにしました。
JSON生成のフォームは、かつてハルコマにあった/tellrawのフォームを参考にしたのでそこまで大変ではありませんでした。
つまり他の3つが大変だったのです…
Giveの対応
GiveコマンドでNBTを書く位置がIDの真後ろになりました。これはそこまで面倒な問題でもありませんでした。
皆様ご存知ですか?ハルコマのGiveやSetblockにはID補完機能が付いています。
この補完されるIDは外部ファイルで管理されているのですが、1.12までは「アイテムID+データ値」だったのが1.13で「アイテムIDのみ」になってしまったので、リストを0から作り直すことにしました。
IDリストがその辺に転がっていればいいのですが、そううまい話はありません。
ここで見つけたのが、ハルさんと最近メンバーにもなった棒氏のこの会話ツイートでした。
はい、
java -cp server.jar https://t.co/mAEeNvSrpo.Main –all
これで出力できます
— intsuc🍆 (@intsuc) June 16, 2018
これで出力したデータを、当然のようにゴリ押しなプログラムを組んでリスト形式にすることで、アイテムIDリストの問題は解決しました。
Summonの対応
1.13ではイルカなどが増えました。これはリストに追加するだけでしたのでそこまで苦ではありませんでした。
大変だったのが固有設定の対応です。
1.12から何故か名称や型が変わったNBTがあったり、ハルコマで未対応だった固有設定があったり…
特に、ロケット花火の固有設定が大変でした。
ロケット花火や花火の星は、『「色の組み合わせx2とパターン」の組み合わせ』という形のNBTを取っています。
これが面倒で、リストにリストを追加する形でなんとか対応することが出来ました。
Setblockの対応
ブロック状態を設定するのに、NBT以外にも「[]」(角括弧)でくくり、「=」でつないで表される方法も追加されました。
「これは対応しときたいな」と思ったのですが、どのブロックがどんな設定データを持つか、switch構文とかで記述してたら途方もありませんし、なにより面倒臭いです。
ですので、「ブロックIDリスト」を新規作成し、IDと一緒に設定データを書き、それを読み取って設定することができるようにしました。
これで一番大変だったのは、元データを上記の形式のリストにするプログラムを組むことでした…
さいごに
@もやん 既存のNBTの名称や型の変更はやめて(切望)
天気の話(本編)
最近めっちゃ晴れて死ぬほど暑かったり、逆にめっちゃ雨降ってびっちょびちょになったり、間を取るように微妙に雨降って晴れて蒸し焼きになりそうなほど蒸し暑かったり、地獄みたいな日々の天気ですね…。
これからどんどん夏真っ盛り!みたいな感じで、ますます太陽も照って暑くなりますが、熱中症には気をつけるようにしましょう!
P.S. The Unusual SkyBlock v13進捗はまあまあです
2 Comments
ハル@派遣社員
昔C#を教えたクマさんが、いつの間にか自分よりできるようになってて
わが子の成長を見守るようなうれしさと寂しさの親の気持ち
kazuki uehara
ハルコマ使い方分からなかったけど、再挑戦しようかなぁ