提供: Minecraft Modding Wiki
この記事は"Minecraft Forge4.3x"を前提MODとしています。 |
プロキシシステム
プロキシシステムはデザインパターンにおけるproxyパターン(または, wrapperパターン)をシステムとして実装したものである. 具体的には, 以下の一文で示される
- サーバー側, クライアント側で異なる処理を, 共通のインタフェースで行う
基本的にはクライアント側でのみ必要な処理を共通のインタフェースで行うが, サーバー側とクライアント側で異なる処理を共通のインタフェースで行いたい場合も利用する.
@SidedProxyアノテーション
@SidedProxy(clientSide = "パッケージ名.client.ClientProxy", serverSide = "パッケージ名.CommonProxy") public static CommonProxy proxy;
- CommonProxy
public class CommonProxy { }
- ClientProxy
@SideOnly(Side.CLIENT) public class ClientProxy extends CommonProxy { }
@SidedProxyアノテーションは実行される側によって生成するインスタンスを変えるアノテーションである. clientSideがクライアント側, serverSideがサーバー側である. 余談だが, bukkitSideが存在し, 将来的にbukkitにまでコードの統一化が行われることが示唆されている.
プロキシシステムは必ず必要かどうか
プロキシシステムは必ずしも必要とは限らない. 例えば単なるブロックの追加でも, 既存のテクスチャの色違いであったり, 同じテクスチャで明るさを持っているだけ, などの場合はプロキシシステムをわざわざ利用する必要はない. 必要とされるのはあくまでサーバーとクライアントで異なる処理を行う場合である.
諸注意
上記の例はクライアント側のみ, パッケージに階層clientを追加している. これはあくまで明示的にクライアントのみの処理はパッケージの階層を追加しているだけで, 実際はclientパッケージを作る必要性はない. ただし, チュートリアルで作成するModは明示的に階層を分けているので注意すること.