Minecraft本体
データパック
ついにデータパックが正式実装。
1.12では不完全だったが、いよいよ使えるものになった。
ディレクトリ階層もすこし変更されているので注意が必要。
BlockID、ItemIDの平坦化
要は、metaだとかdamageだとか言われていたものが削除された。
羊毛は色それぞれが別ブロックとなり、ツールのダメージはNBTに保存されるようになった。
Stateの16上限もなくなっているので、ある程度自由になったと言えるかも。
IDの無限化はまだ夢幻。 無事1.13.2で解決
水、溶岩の挙動に手が入った
水源を特定のブロックが保持できるようになった。
インターフェースによる処理なので、Modであっても実装は容易だろう。
水の流れに関する複雑な処理はBlock
ではなくFluid
(1.13にて追加)が担うようだ。
実装だけ読んだ限りだと、溶岩を保持するのも可能……かもしれない?
タグの概念
バニラでは、Block
とItem
とFluid
に用いられている模様。
レシピの材料判定などの幅広い部分で要素を包括的に扱うための仕組み。
Jsonで自由にいじることができる。要はJson版鉱石辞書。
精錬レシピがJson化された
同時に精錬レシピがIRecipe
傘下入り。
まぁある意味では扱いやすくなったとも言えるかも……?
Item
、Block
のコンストラクタの変更
ビルダーパターンが採用され、setHardnessとか言ったプロパティ的なものは初期化時に全部指定して固定化されるようになった。
IItemProvider
Block
とItem
を一緒くたに扱えるようになった。
色んな所でいちいちItemStack
にしなきゃいけなくてめんどくさかったのが解消する。
コマンドの実装が一新された
構文解析のためにいろいろやっている。
コードの見通しも良くなったため、複雑な構文も比較的容易に追加できるようになった。
ツールのTierがインターフェースで管理されるようになった
前まではいろいろ分散したりしていたのが、インターフェースにまとめられた。
BlockstateのPropertyが共通化された
これまでは同じ内容を表すものであっても個別に宣言されていたが、統一された。
ある程度包括的にブロックを扱えるようになった。
VoxelShape
当たり判定は前までAxisAlignedBB
のリストで扱われていたが、VoxelShape
を使うようになった。
リソースパック ver.4
Jsonモデル
パスの省略部分が変更された。
ある程度一括で置換できる部分なのでそう影響はないはず……。
言語ファイル
これまでJavaのproperties形式であったが、Json形式に変更された。
コメント機能が無いのが大きな違いといえば違いだが、未割り当てキーの使用等で対処可能。
MinecraftForge
2019/02/24現在。
大体方向性ははっきりしているだろうというところに絞っているが、まだまだ変更が見込まれる部分なので実際のコードを見てほしい。
闇深でレガシーなコードを整理するために大規模な改修が行われ、多くの部分が影響を受けることになる。
Modの認識方法の変更
これまでModアノテーションで指定してきたことはMETA-INF/mods.tomlに移動した。
ModアノテーションはエントリクラスをFMLに示すための純粋なマーカーとなるようだ。
CoremodもJSから認識するようになるとか。
Config
刷新され、独自フォーマットではなくtoml形式が用いられるようになった。
ロードセーブまわりの仕様も変わり、よりConfigGUIなどのオンゲームでの変更に強いものとなった。
書き方の作法も当然様変わりしている。
ファイル形式を自由にしようとしている形跡があるが、どうなるかは不明。
LifecycleEvent
これまでEventHandler
アノテーションを用いていたEvent群が再編された。
それに伴いEventHandler
アノテーションは削除された。
代わりにコンストラクタで、FMLJavaModLoadingContextを通じて取得したEventBusにメソッドを登録していく。
FMLCommonSetupEvent
FML(Client|DedicatedServer)SetupEvent
InterModEnqueueEvent
InterModProcessEvent
の順で呼び出される。アイテムやブロックの登録イベントはこれらより前に発火される。
並列に処理されるようになったため、Modのロード順などの概念はなくなった。
SetupEvent時点でブロック等は登録されている はず なため、連携する上では問題ない。
GameRegistry
findRegistryというメソッド以外は削除された。
登録処理は主にイベントを通じてアクセスすることになる。
Forge Service Provider Interfaces
Side
がDist
というものに変わった。
OnlyIn
アノテーション
SideOnly
アノテーションの代わり。
DistExecutor
SidedProxy
の代替。
ラムダ式等を用いてよりモダンに蔵鯖の分岐処理をかけるようになる。
OreDictionary
タグに機能が移行した。
クラスは削除され、もはや使用することはできない。
ForgeGradle
version3.xとなり、環境構築手順が変わった。