スクリプトを書く際につかているエディタやソフト、スクリプトを書くときにやっておくべきことなどの前提部分のお話をします。
ー使用しているソフトー
スクリプトの作成/編集にはVSCodeというエディタを使用しています。昔は普通にテキストエディタで編集していましたが、VSCodeなどのエディタは補完やコード整理、高機能な置換など機能が豊富なので、何かしらエディタを導入することをおすすめします。VSCode以外だとSublime TextやAtomなどがあるようです(自分は使ったことありませが・・・)。
Javaのデコンパイラです。純正RTMはソースコードが配布されていないため、RTMの関数や変数、クラスを確認するためにデコンパイルして確認しています。
・MCP Mapping Viewer
Minecraft本体に実装されている関数/変数は難読化処理が施されているため、スクリプトから処理を呼び出す際は難読化後の関数名/変数名を指定する必要があります。その難読化の前と後の名前を調べるためのツールです。このツールを出しているところのモノは現在、正常に動作しないので、Kaiz氏による修正版を使用することをおすすめします。
現在ホームページにアクセスできないため、アーカイブサイトからダウンロードしてください。
JD-GUIやMCP Mapping Viewerの使い方はこちらで解説します
ー各バージョンのコードの互換性ー
・RTM1.7.10.4x⇔KaizPatch (どちらもMC1.7.10)
KaizPatchはRTM2.4.xからの移植やRTM1.7.10.4xの改良が多数盛り込まれているため、RTM本体に由来する関数や変数の処理は部分的に互換性のないものがあります(基本的には互換性のある処理のほうが多いです)。
・RTM1.7.10.4x⇔RTM2.4.x (MC1.7.10とMC1.12.2)
そもそもMinecraft1.7.10→1.12の時点で大部分が変更されているため、基本的に互換性は半分程度と考えたほうが良いです。場合によっては大規模な改修が必要になります。これが1.12非対応のパックがある原因ですね・・・
・RTM2.4.x⇔fixRTM (どちらもMC1.12.2)
自身が経験したところでは差分処理は書いたことがないのでほとんど互換性があると考えて良いと思います。
これらを踏まえてバージョン互換を考えてコードを書く際には
RTM1.7.10.4x、KaizPatch、RTM2.4.xの3バージョンを意識して書くようにする必要があります。
ーデバッグログの表示設定ー
スクリプトを制作する上で不具合やバグ、クラッシュは切っても切れない関係で、1からスクリプトを書く場合は8割ぐらい1度はクラッシュすると考えて良いと思います。クラッシュする場合はクラッシュレポートから原因を特定することができるのですが、中にはクラッシュしないで不具合を起こしたり、意図しない動作をするものもあります。そういったモノの原因を特定するためにはデバッグログとログを出力する関数を実行して地道に探していくしかありません。
実際のログ出力は次回のスクリプト解説で詳細を説明しますが、ログを見るための設定が必要なのでここで説明します。
ランチャーを起動して「設定」→「Minecraft: Java Editionの起動時に出力ログを開く」にチェックを入れることで、ログが開くのでそこから確認することができるようになります。
ーRTMで動くJavascriptの規格ー
Javascriptにはいくつかの規格があり、RTMで使用されるスクリプトはES5(ECMAScript 5)という規格で動作します。ネットでJavascriptについて調べると、多くはブラウザ向けかつES6で追加された関数などがよく引っかかるため、注意が必要です。例えばアロー関数やクラス構文、letやconstなどはES5にはないため、エラーの原因になります。