最新版 |
編集中の文章 |
1行目: |
1行目: |
| ModLoaderMPとは、マインクラフトのSMP(マルチのこと)に対応させるためのMOD作成・導入補助用のMODです。<br /> | | ModLoaderMPとは、マインクラフトのSMP(マルチのこと)に対応させるためのMOD作成・導入補助用のMODです。<br /> |
| 基本は、ModLoaderに付随して+α機能が付いていると認識されたほうがいいかもしれません。<br /> | | 基本は、ModLoaderに付随して+α機能が付いていると認識されたほうがいいかもしれません。<br /> |
− | 前提Modの導入方法は割愛します。<br/>
| |
| | | |
− | '''※別製作者のSSPMODをSMPにする場合はきちんと製作者のライセンスを見てからやってください。
| |
− | コレすごく大事'''
| |
| | | |
| ※前提としてModLodaerとMCPの利用が可能なこととします。<br /> | | ※前提としてModLodaerとMCPの利用が可能なこととします。<br /> |
| | | |
− | ※1.2.3からは「元々ModLoaderMpを開発されていたSDK氏が復活しています。」<br />
| + | <br /> |
− | また、MinecraftForge側もSDK氏作成のModLoaderMPを参照しているため<br />
| |
− | 1.2.3はSDK氏のModLoaderMPを推奨します。(以前のバージョンは除きます)<br />
| |
| | | |
− | <br /> | + | Step1<br /> |
− | =環境構築=
| + | MCPフォルダの「Jar」フォルダにminecraft_sever.jarをコピー<br /> |
− | ==事前準備==
| + | minecraft_server.jarにModLoaderMP(Server版)を導入します。<br /> |
− | 1.MCPフォルダの「Jar」フォルダにminecraft_sever.jarをコピーする。<br />
| + | また、同「Jar」フォルダにクライアント側の「bin」「resources」フォルダをコピーしておきます。<br /> |
− | 2.minecraft_server.jarにModLoaderMP(Server版)を導入する。<br />
| + | このクライアント側のminecraft.jarには必ずクライアント用ModLoader、ModLoaderMPを導入しておきます。<br /> |
− | 3.同「Jar」フォルダにクライアント側の「bin」「resources」フォルダをコピーする。<br />
| |
− | 4.のクライアント側のminecraft.jarには必ずクライアント用ModLoader、ModLoaderMPを導入しておきます。<br />
| |
| <br /> | | <br /> |
| | | |
− | ==エラーの修正==
| + | Step2<br /> |
− | MCPの「decompile.bat」を実行します。<br />
| + | ここまで出来たらMCPの「decompile.bat」を動かしましょう。<br /> |
− | エラーが発生しますが、Decompileには成功しています。<br/>
| + | エラーがでますが気にしない。<br /> |
− | このままコンパイルするとエラーが発生しますので<br/>
| + | このままではリコンパイルする際にエラーを吐き出すので、以下/minecraft_server/net/minecraft/serverの<br /> |
− | MCPROOT/src/minecraft_server/net/minecraft/serverのMinecraftServer.javaを編集します。<br />
| + | MinecraftServer.javaソースを編集します。<br /> |
− | ====SDK ModLoaderMP v3の場合====
| + | <br /> |
− | 517行目をコメントアウト<br />
| |
− | 534行目から553行目までをコメントアウト<br />
| |
− | 行数がずれている場合があるので、対象ソースの一部を記載しておきます。
| |
− | run()メソッドの
| |
− | <source lang="java">
| |
− | finally
| |
− | {
| |
− | System.exit(0);
| |
− | }/*
| |
| | | |
− | break MISSING_BLOCK_LABEL_350;
| + | Ver1.2.3<br /> |
− | }
| + | 515行目から551行目までをコメントアウトの後<br /> |
− | | + | <pre> |
− | try
| + | } |
− | {
| + | </pre> |
− | stopServer();
| + | を追加<br /> |
− | serverStopped = true;
| |
− | }
| |
− | catch (Throwable throwable)
| |
− | {
| |
− | throwable.printStackTrace();
| |
− | }
| |
− | finally
| |
− | {
| |
− | System.exit(0);
| |
− | }
| |
− | | |
− | break MISSING_BLOCK_LABEL_350;
| |
− | Exception exception2;
| |
− | exception2;
| |
− | | |
− | try
| |
− | {
| |
− | stopServer();
| |
− | serverStopped = true;
| |
− | }
| |
− | catch (Throwable throwable3)
| |
− | {
| |
− | throwable3.printStackTrace();
| |
− | }
| |
− | finally
| |
− | {
| |
− | System.exit(0);
| |
− | }
| |
− | | |
− | | |
− | throw exception2;
| |
− | */
| |
− | }
| |
− | }
| |
− | </source>
| |
− | コメントアウトしてある部分が対象です。
| |
− | | |
− | ===Flan ModLoaderMPの場合===
| |
− | '''Ver1.2.5の場合:519~555行目をコメントアウト'''<br />
| |
− | Ver1.2.3の場合:515~551行目をコメントアウト<br />
| |
− | Ver1.1.0の場合:400~431行目をコメントアウト<br />
| |
− | Ver1.0.1の場合:406~437行目をコメントアウト<br />
| |
− | Ver1.8.1の場合:344~375行目をコメントアウト<br />
| |
| <br /> | | <br /> |
− | 末尾に
| + | Ver1.1の場合 400~431行目をコメントアウト<br /> |
| + | Ver1.01の場合 406~437行目をコメントアウト<br /> |
| + | Ver1.8.1の場合 344~375行目をコメントアウト<br /> |
| + | 他バージョンでも<br /> |
| <pre> | | <pre> |
− | }
| + | } |
| </pre> | | </pre> |
− | を入れる。
| + | を入れるのを忘れないように。<br /> |
− | | + | <br /> |
− | =実際のソースの変更部分=
| + | Step3<br /> |
− | | + | ①共通<br /> |
− | ==共通==
| + | Entity系コンテンツで、worldObjを呼び出している場合<br /> |
− | 1.worldObj使用時にMCPのMappingデータによります。<br />
| + | MCPのバージョンとか、CSVファイルによりますがエラーが出ている可能性があります。<br /> |
− | 対象項目としては
| + | 対象項目としては<br /> |
| <pre> | | <pre> |
− | world.isRemote ←この部分(1.2.3時点では共通項目のはず。) | + | world.isRemote ←この部分(1.2.3時点では共通項目です) |
| </pre> | | </pre> |
− | | + | 古いデータの場合以下のように直します。 |
− | 古いデータの場合以下のように直さないとエラーになるはずです。
| |
| <pre> | | <pre> |
| world.multiplayerWorld //ClientSide | | world.multiplayerWorld //ClientSide |
| world.singleplayerWorld //ServerSide | | world.singleplayerWorld //ServerSide |
| </pre> | | </pre> |
| + | <br /> |
| | | |
− | 2.ModLoaderを継承参照している定義ModLoaderMpに修正します。<br />
| + | また、ModLoaderを継承参照している定義ModLoaderMpに修正します。<br /> |
| | | |
− | <source lang="java"> | + | <pre> |
− | public class mod_*** extends BaseMod
| + | public class mod_*** extends BaseMod |
− | </source> | + | </pre> |
| + | <br /> |
| + | これを<br /> |
| | | |
− | これを<br/>
| + | <pre> |
| + | public class mod_*** extends BaseModMp |
| + | </pre> |
| + | <br /> |
| + | に修正する。<br /> |
| + | ②アイテムを追加する場合<br /> |
| + | 基本はmod_***に定義されているはずですが、loadメソッド内に以下も付け加えます。<br /> |
| + | Client側:<br /> |
| | | |
− | <source lang="java"> | + | <pre> |
− | public class mod_*** extends BaseModMp
| + | ModLoaderMp.registerNetClientHandlerEntity(Entity***.clas, netID); |
− | </source> | + | </pre> |
− | に修正する。<br />
| |
| | | |
− | ==Block,Itemを追加する場合==
| + | Server側:<br /> |
− | 自作Entity.classを使用してBlock,Itemを追加している場合、
| |
− | 以下の記述部分を付け加えます。<br />
| |
− | ※既存EntityのClassファイルを参照する場合は必要ありません。<br />
| |
− | Client側:<br />
| |
− | <source lang="java">
| |
− | ModLoaderMp.registerNetClientHandlerEntity(Entity***.clas, netID);
| |
− | </source>
| |
| | | |
− | Server側:<br />
| + | <pre> |
| + | ModLoaderMp.registerEntityTrackerEntry(Entity***.class, netID); |
| + | ModLoaderMp.registerEntityTracker(Entity***.class, 160, 5); |
| + | </pre> |
| | | |
− | <source lang="java">
| + | ※netIDは0~256の中で指定すること。<br /> |
− | ModLoaderMp.registerEntityTrackerEntry(Entity***.class, netID);
| + | <br /> |
− | ModLoaderMp.registerEntityTracker(Entity***.class, 160, 5);
| + | ②Guiを追加してる場合<br /> |
− | </source>
| + | ③Modを追加する場合<br /> |
− | | + | <br /> |
− | ※netIDは0~256の中で指定することとし、Client・Serverで共通であること。<br />
| + | Step4<br /> |
− | ※ModLoaderMp.registerEntityTrackerは更新頻度を調整してます。<br/>
| + | まず、Server側にModel,Render系のclassは必要ありません。<br /> |
− | 160は任意(だったはず。)5はticksを表しています。<br/>
| + | 描画するわけじゃないので<br /> |
− | | |
− | ==Guiを追加する場合==
| |
− | ※そこまで詳しくないので詳しい人お願いします。<br />
| |
− | SMPのGUIを作るためにはGUIを呼び出すコードをServerに設定し<br />
| |
− | Client側に処理するメソッドを設定します。<br />
| |
− | | |
− | 1.Server側に設定処理を追加します。<br />
| |
− | 大体の場合、Entity,TileEntity,BlockGUI設定場所に設定しているはず。
| |
− | | |
− | <source lang="java">
| |
− | ModLoader.OpenGUI(player, guiID, inventory, container);
| |
− | </source>
| |
− | | |
− | player:GUIを開こうとしているPlayer<br />
| |
− | guiID:対象GUIのID<br />
| |
− | inventory:編集対象のinventory<br />
| |
− | container:使用しているSlotのインターフェイス<br />
| |
− | | |
− | 2.Client側に設定処理を追加します。<br />
| |
− | 大体の場合mod_***
| |
− | <source lang="java">
| |
− | ModLoaderMp.registerGUI(this, guiID);
| |
− | </source>
| |
− | また、メソッドを追加します。
| |
− | <source lang="java">
| |
− | public GuiScreen HandleGUI(int inventoryType)
| |
− | {
| |
− | if(inventoryType == guiID)
| |
− | return new Gui***(args);
| |
− | else return null;
| |
− | }
| |
− | </source>
| |
− | Gui***には追加GuiのClass名を指定してください。<br />
| |
− | argsはGUIの引数の場所<br />
| |
− | ModLoader.getMinecraftinstance().thePlayer ←これ使うと楽かもしれない。<br />
| |
− | | |
− | ==Mobを追加する場合==
| |
− | ※そこまで詳しくないので詳しい人お願いします。<br />
| |
− | 以下1または2をClientとServer両方に追加します。(EntityIDは一緒にすること)<br />
| |
− | | |
− | 1.以下行を追加します。
| |
− | <source lang="java">
| |
− | ModLoader.registerEntityID(Entity***.class, "EntityName", ModLoader.getUniqueEntiityID());
| |
− | </source>
| |
− | Entity***:対象MobのEntityのclassファイルを指定<br />
| |
− | "EntityName":対象Mobの名前<br />
| |
− | ModLoader.getUniqueEntityID:空いてるEntityIDから取得する<br />
| |
− | | |
− | 2.上記よりこっちのがオススメかもしれません。
| |
− | <source lang="java">
| |
− | ModLoader.registerEntityID(Entity***.class, "EntityName", ID);
| |
− | </source>
| |
− | ID部分はClient,Server共に同じEntityIDを指定して下さい。<br />
| |
− | ※EntityIDは0~128までです。<br />
| |
− | | |
− | ==リコンパイル・検証作業==
| |
− | 1.Server側にModel,Render系のclassは必要ありません。描画するわけじゃないので<br />
| |
| また、ModLoader.addNameやAddRenderも必要ありません。表示させるわけじゃないですので。<br /> | | また、ModLoader.addNameやAddRenderも必要ありません。表示させるわけじゃないですので。<br /> |
− | | + | ここまで出来て文法エラーがない場合、リコンパイルして実行してみましょう。<br /> |
− | 2.ここまで出来て文法エラーがない場合、リコンパイルして実行してみましょう。<br />
| |
| あとは調整するのみです。<br /> | | あとは調整するのみです。<br /> |
| | | |
| 参考資料:http://www.minecraftforum.net/topic/352121-smp-mods-modloadermp-modding-310511/ <br /> | | 参考資料:http://www.minecraftforum.net/topic/352121-smp-mods-modloadermp-modding-310511/ <br /> |
− |
| |
− | <comments />
| |
− | ----
| |
− | * Ver1.2.5のコメントアウト部分を追加、太字表示、以前のバージョンの表記にばらつきがあったのを編集しました --[[利用者:@空|@空]] 2012年6月1日 (金) 19:42 (JST)
| |
− | ----
| |
− | * ↓ミス。末尾に「 } 」を入れるようです --[[特別:投稿記録/114.158.39.109|114.158.39.109]] 2012年4月13日 (金) 00:18 (JST)
| |
− | ----
| |
− | * 1.2.5 v1 でMinecraftServer.javaは520-555をコメントアウト、末尾に}] --[[特別:投稿記録/114.158.39.109|114.158.39.109]] 2012年4月13日 (金) 00:15 (JST)
| |
− | ----
| |
− | * ↓修正ありがとうございました。 とても分かりやすくなりました! --[[特別:投稿記録/59.156.113.141|59.156.113.141]] 2012年3月22日 (木) 17:38 (JST)
| |
− | ----
| |
− | * 一度decompileに失敗(厳密に言うとdecompileは成功している)してから~の部分、間違ってる文章に編集されていたので、修正しておきました。 --[[利用者:Nagisawa|Nagisawa]] 2012年3月22日 (木) 16:36 (JST)
| |
− | ----
| |
− | * ↓親階層からに修正しておきますた。後コメントアウト対象がわかりやすいよう一応一部ソースをコピーしておきました。 --[[利用者:Nagisawa|Nagisawa]] 2012年3月22日 (木) 16:24 (JST)
| |
− | ----
| |
− | * ↓誤爆。『また、/MCPフォルダ/serc/minecraft_server...と親階層を明記・・・』のsercはsrcです。 すみません。 --[[特別:投稿記録/59.156.113.141|59.156.113.141]] 2012年3月22日 (木) 16:12 (JST)
| |
− | ----
| |
− | * エラー修正の項目に「/minecraft_server/net/minecraft/serverのMinecraftServer.java」とありますが、これは一度decompileに失敗(厳密に言うとdecompileは成功している)してからじゃないと出現しません。また、/MCPフォルダ/serc/minecraft_server...と親階層を明記したほうがわかりやすいと思います。 --[[特別:投稿記録/59.156.113.141|59.156.113.141]] 2012年3月22日 (木) 16:11 (JST)
| |
− | ----
| |
− | * SDK ModLoaderMP v3 を導入したはずですが、コメントアウトした箇所が違います。それぞれの2行上(515, 523-551)をコメントアウトしました。 行がずれることがあるようですね --[[特別:投稿記録/59.156.113.141|59.156.113.141]] 2012年3月22日 (木) 16:09 (JST)
| |
− | ----
| |
− | * Midoriliさん>SDK氏と言われるとGun'sMOD系と勘違いしました。すみません。 --[[利用者:Nagisawa|Nagisawa]] 2012年3月19日 (月) 11:14 (JST)
| |
− | ----
| |
− | * Nagisawaさん>すみません。どのModLoaderMPでの話かわからない、という意味で書いたのですが・・・。とりあえず自分の環境でのSDK ModLoaderMPv3の導入方法を記述しました。 --[[利用者:Midorili|Midorili]] 2012年3月19日 (月) 06:20 (JST)
| |
− | ----
| |
− | * Midoriliさん>えっと、勘違いされると困るのですが、最低限部分の変更なのでそのとおりにやってもエラーが出るものは出ます。 --[[利用者:Nagisawa|Nagisawa]] 2012年3月18日 (日) 23:49 (JST)
| |
− | ----
| |
− | * ModLoaderMPのページの通りにエラーの修正を行いましたがエラーが修正されませんでした。導入したのはSDK氏作のv3です。 --[[利用者:Midorili|Midorili]] 2012年3月18日 (日) 23:38 (JST)
| |