提供: Minecraft Modding Wiki
ModderKina (トーク | 投稿記録) (こーしん。Server側は実際使わないしForgeのJavadocにもないけど解説なので書いとく。) |
|||
1行目: | 1行目: | ||
− | |||
− | |||
==プロキシシステム== | ==プロキシシステム== | ||
− | プロキシシステムはデザインパターンにおけるproxyパターン(または, wrapperパターン) | + | プロキシシステムはデザインパターンにおけるproxyパターン(または, wrapperパターン)をシステムとして実装したものである。<br> |
− | + | SidedProxyにおいては、サーバー側とクライアント側とで異なる処理を共通のインタフェースで行うといった用途に用いる。<br> | |
− | + | この機構によって、クライアント・サーバーに存在しないクラスを読み込んでクラッシュすると言った事態をかんたんに回避できる。 | |
− | |||
===@SidedProxyアノテーション=== | ===@SidedProxyアノテーション=== | ||
+ | この例ではClientProxyをclientパッケージ下、ServerProxyをserverパッケージ下においている。 | ||
<source lang = "java"> | <source lang = "java"> | ||
− | @SidedProxy(clientSide = "パッケージ名.client.ClientProxy", serverSide = "パッケージ名. | + | @SidedProxy(clientSide = "パッケージ名.client.ClientProxy", serverSide = "パッケージ名.server.ServerProxy") |
public static CommonProxy proxy; | public static CommonProxy proxy; | ||
</source> | </source> | ||
28行目: | 26行目: | ||
</source> | </source> | ||
− | @ | + | *ServerProxy |
+ | <source lang = "java"> | ||
+ | @SideOnly(Side.SERVER) | ||
+ | public class ServerProxy extends CommonProxy | ||
+ | { | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | @SidedProxyを付与したフィールドは起動時(具体的には各ModのFMLConstructionEvent前)に、対応したプロキシで初期化される。<br> | ||
+ | 保持するフィールドを@Modの付与されたクラスに置かない場合は、modidの記述も必須である。 | ||
==プロキシシステムは必ず必要かどうか== | ==プロキシシステムは必ず必要かどうか== | ||
− | プロキシシステムは''' | + | プロキシシステムは'''必ずしも必要ではない'''。ただし、利用しない場合はSideの判定を挟む箇所が多く出てくるため、よほどの小規模ModかSMP対応を投げ打つのでない限り利用すべきである。 |
− | |||
− | |||
− |
2017年2月19日 (日) 18:27時点における版
プロキシシステム
プロキシシステムはデザインパターンにおけるproxyパターン(または, wrapperパターン)をシステムとして実装したものである。
SidedProxyにおいては、サーバー側とクライアント側とで異なる処理を共通のインタフェースで行うといった用途に用いる。
この機構によって、クライアント・サーバーに存在しないクラスを読み込んでクラッシュすると言った事態をかんたんに回避できる。
@SidedProxyアノテーション
この例ではClientProxyをclientパッケージ下、ServerProxyをserverパッケージ下においている。
@SidedProxy(clientSide = "パッケージ名.client.ClientProxy", serverSide = "パッケージ名.server.ServerProxy") public static CommonProxy proxy;
- CommonProxy
public class CommonProxy { }
- ClientProxy
@SideOnly(Side.CLIENT) public class ClientProxy extends CommonProxy { }
- ServerProxy
@SideOnly(Side.SERVER) public class ServerProxy extends CommonProxy { }
@SidedProxyを付与したフィールドは起動時(具体的には各ModのFMLConstructionEvent前)に、対応したプロキシで初期化される。
保持するフィールドを@Modの付与されたクラスに置かない場合は、modidの記述も必須である。
プロキシシステムは必ず必要かどうか
プロキシシステムは必ずしも必要ではない。ただし、利用しない場合はSideの判定を挟む箇所が多く出てくるため、よほどの小規模ModかSMP対応を投げ打つのでない限り利用すべきである。