Just $ A sandbox

プログラミングと計算機科学とかわいさ

minecraft 1.11 MOD開発メモ

1.11準拠のMOD開発に関するメモ
詳しいことは自力で調べてね的なスタンス

概要

  • proxyを用意して、common proxy側にMOD本体の処理、client proxyに描画関係の処理をかくようにする
  • ゲーム内のオブジェクトの管理はすべてナントカregistryがやってくれてる だいたいのものはGameRegistry.registerで登録できるし、新しいレシピはGameRegistry.addRecipeで登録できる
  • あとforgeが色々イベントフック用の関数を用意してくれているらしいので、バニラのクラスを継承して頑張るよりイベントフックした方が早い場合もあるかも

block

  • ブロックとはワールド内に3Dの形で描画されるブロックのこと
  • 内部にTileEntityを持てるので、ブロックに対する操作とか特殊なデータを持ちたいとかはTEでやろう
  • インベントリに表示されるアイテムはitemblockというまた別のオブジェクトなので、itemblockも併せて登録しないとインベントリには表示されない
  • ブロックの見た目に関する設定はblockstate jsonで記述する
  • blockstate jsonからはblock model jsonを参照することができて、こちらではより細かい設定ができる 例えば面ごとに違うテクスチャを貼るとか、ブロック自体の高さを変えるとか
  • blockはpropertyを持つことができて、それをblockのmeta indexを通してデータをやり取りできるので、例えばユーザーの入力に応じて90度ずつ回転するみたいなことはpropertyでできる

TE

  • TileEntityはブロックにもたせてあれこれの処理をさせるためのクラス
  • 上で書いたpropertyでは物足りない人のために複雑な情報を処理したりデータを保存したりできる
  • データの保存はNBTを使う

TESR

  • TileEntitySpecialRenderer
  • ブロックの3Dデータを完全に特殊な方法で実装するための仕組み
  • mobとかこれでやってる 要は3Dモデルを自分で作りたい時とかに
  • MrCrayfish’s Model Creatorとか使うとよいかもしれない

GUI

  • GUIはTEから呼ぶ感じになる
  • ボタンをつけたりテキストを貼ったりアイテムを表示したりする
  • アイテムの出し入れをするインターフェイスはSlotと呼ばれ、Slotを配置しておくことでインベントリを実装したり取り出し専用のスロットを実装できる

参考