24行目: | 24行目: | ||
515行目から551行目までをコメントアウトの後<br /> | 515行目から551行目までをコメントアウトの後<br /> | ||
<pre> | <pre> | ||
− | + | } | |
</pre> | </pre> | ||
を追加<br /> | を追加<br /> | ||
32行目: | 32行目: | ||
Ver1.8.1の場合 344~375行目をコメントアウト<br /> | Ver1.8.1の場合 344~375行目をコメントアウト<br /> | ||
他バージョンでも<br /> | 他バージョンでも<br /> | ||
− | + | <pre> | |
} | } | ||
− | + | </pre> | |
を入れるのを忘れないように。<br /> | を入れるのを忘れないように。<br /> | ||
<br /> | <br /> | ||
42行目: | 42行目: | ||
MCPのバージョンとか、CSVファイルによりますがエラーが出ている可能性があります。<br /> | MCPのバージョンとか、CSVファイルによりますがエラーが出ている可能性があります。<br /> | ||
対象項目としては<br /> | 対象項目としては<br /> | ||
− | + | <pre> | |
world.isRemote ←この部分(1.2.3時点では共通項目です) | world.isRemote ←この部分(1.2.3時点では共通項目です) | ||
− | + | </pre> | |
古いデータの場合以下のように直します。 | 古いデータの場合以下のように直します。 | ||
− | + | <pre> | |
world.multiplayerWorld //ClientSide | world.multiplayerWorld //ClientSide | ||
world.singleplayerWorld //ServerSide | world.singleplayerWorld //ServerSide | ||
− | + | </pre> | |
<br /> | <br /> | ||
また、ModLoaderを継承参照している定義ModLoaderMpに修正します。<br /> | また、ModLoaderを継承参照している定義ModLoaderMpに修正します。<br /> | ||
− | + | <pre> | |
public class mod_*** extends BaseMod | public class mod_*** extends BaseMod | ||
− | + | </pre> | |
これを<br /> | これを<br /> | ||
− | + | <pre> | |
public class mod_*** extends BaseModMp | public class mod_*** extends BaseModMp | ||
− | + | </pre> | |
に修正する。<br /> | に修正する。<br /> | ||
67行目: | 67行目: | ||
基本はmod_***に定義されているはずですが、loadメソッド内に以下も付け加えます。<br /> | 基本はmod_***に定義されているはずですが、loadメソッド内に以下も付け加えます。<br /> | ||
Client側:<br /> | Client側:<br /> | ||
− | + | <pre> | |
ModLoaderMp.registerNetClientHandlerEntity(Entity***.clas, netID); | ModLoaderMp.registerNetClientHandlerEntity(Entity***.clas, netID); | ||
− | + | </pre> | |
Server側:<br /> | Server側:<br /> | ||
− | + | <pre> | |
ModLoaderMp.registerEntityTrackerEntry(Entity***.class, netID); | ModLoaderMp.registerEntityTrackerEntry(Entity***.class, netID); | ||
ModLoaderMp.registerEntityTracker(Entity***.class, 160, 5); | ModLoaderMp.registerEntityTracker(Entity***.class, 160, 5); | ||
− | + | </pre> | |
※netIDは0~256の中で指定すること。<br /> | ※netIDは0~256の中で指定すること。<br /> |
2012年3月14日 (水) 10:11時点における版
ModLoaderMPとは、マインクラフトのSMP(マルチのこと)に対応させるためのMOD作成・導入補助用のMODです。
基本は、ModLoaderに付随して+α機能が付いていると認識されたほうがいいかもしれません。
※前提としてModLodaerとMCPの利用が可能なこととします。
Step1
MCPフォルダの「Jar」フォルダにminecraft_sever.jarをコピー
minecraft_server.jarにModLoaderMP(Server版)を導入します。
また、同「Jar」フォルダにクライアント側の「bin」「resources」フォルダをコピーしておきます。
このクライアント側のminecraft.jarには必ずクライアント用ModLoader、ModLoaderMPを導入しておきます。
Step2
ここまで出来たらMCPの「decompile.bat」を動かしましょう。
エラーがでますが気にしない。
このままではリコンパイルする際にエラーを吐き出すので、以下/minecraft_server/net/minecraft/serverの
MinecraftServer.javaソースを編集します。
Ver1.2.3
515行目から551行目までをコメントアウトの後
}
を追加
Ver1.1の場合 400~431行目をコメントアウト
Ver1.01の場合 406~437行目をコメントアウト
Ver1.8.1の場合 344~375行目をコメントアウト
他バージョンでも
}
を入れるのを忘れないように。
Step3
①共通
Entity系コンテンツで、worldObjを呼び出している場合
MCPのバージョンとか、CSVファイルによりますがエラーが出ている可能性があります。
対象項目としては
world.isRemote ←この部分(1.2.3時点では共通項目です)
古いデータの場合以下のように直します。
world.multiplayerWorld //ClientSide world.singleplayerWorld //ServerSide
また、ModLoaderを継承参照している定義ModLoaderMpに修正します。
public class mod_*** extends BaseMod
これを
public class mod_*** extends BaseModMp
に修正する。
②アイテムを追加する場合
基本はmod_***に定義されているはずですが、loadメソッド内に以下も付け加えます。
Client側:
ModLoaderMp.registerNetClientHandlerEntity(Entity***.clas, netID);
Server側:
ModLoaderMp.registerEntityTrackerEntry(Entity***.class, netID); ModLoaderMp.registerEntityTracker(Entity***.class, 160, 5);
※netIDは0~256の中で指定すること。
②Guiを追加してる場合
③Modを追加する場合
Step4
まず、Server側にModel,Render系のclassは必要ありません。
描画するわけじゃないので
また、ModLoader.addNameやAddRenderも必要ありません。表示させるわけじゃないですので。
ここまで出来て文法エラーがない場合、リコンパイルして実行してみましょう。
あとは調整するのみです。
参考資料:http://www.minecraftforum.net/topic/352121-smp-mods-modloadermp-modding-310511/