最新版 |
編集中の文章 |
3行目: |
3行目: |
| | | |
| ==はじめに== | | ==はじめに== |
− | MinecraftのMOD作成チュートリアルにようこそ!私達ModderはMinecraftに対してたくさんの制御ができますが、それにはたくさんのコードに圧倒されます。しかし、新しいブロックや機能をMinecraftに追加するのは非常に自由な経験です。もし、あなたにとってゲームの一部分が不満であるとすれば、変えてしまえばいいのです!もし、もっとたくさんのコンテンツが欲しいなら、追加すればいいのです!これらのチュートリアルは簡単にMOD開発を始めるためにほとんどのmodderたちに便利であろう基本的なMODづくりの概念を教えるためのものです。
| + | MinecraftのMOD作成にようこそ!私達ModderはMinecraftに対してたくさんの制御ができますが、それにはたくさんのコードに圧倒されます。しかし、新しいブロックや機能をMinecraftに追加するのは非常に自由な経験です。もし、ゲームの一部分があなたが嫌いであるとすれば、変えればいいのです!もし、もっとたくさんのコンテンツが欲しいなら、追加すればいいのです!これらのチュートリアルは簡単にMOD開発を始めるためにほとんどのmodderたちに便利であろう基本的なMODづくりの概念を教えるためのものです。 |
| | | |
| ==終着点== | | ==終着点== |
− | *どのようにマインクラフトのコードを編集すればいいのか理解する。 | + | *どのようにMinecraftのコードを編集すればいいのか理解する。 |
| *Eclipseでどのようにパッケージやクラスを作ればいいのか理解する。 | | *Eclipseでどのようにパッケージやクラスを作ればいいのか理解する。 |
| *MinecraftのMODのために例文集として理解し使えるようにする。 | | *MinecraftのMODのために例文集として理解し使えるようにする。 |
24行目: |
24行目: |
| | | |
| ===EclipseでForgeプロジェクトを開く=== | | ===EclipseでForgeプロジェクトを開く=== |
− | このチュートリアルではあなたがEclipseを使っていることが前提です。Eclipse以外でも、NetBeansやEmacs,Vimなどでも行うことができます。しかし、MinecraftのMODプログラマーはEclipseで始めることによって、かなりの恩恵をうけることができます。
| + | このチュートリアルではあなたがEclipseを使っているとして行います。Eclipse以外でも、NetBeansやEmacs,Vimなどでも行うことができます。しかし、MinecraftのMODプログラマーはEclipseで始めることによって、かなりの恩恵をうけることができます。 |
− | もし、まだ準備していないのならば、Eclipseをダウンロードして下さい。残念なことにも、たくさんのファイルを含みますので、多くのシステムメモリが要求されることをご了承ください。しかし、どれだけシステムリソースをくおうとも、Eclipseは素晴らしいJavaのツールを提供してくれます。あなたが最初にEclipseを開くときは、Eclipseはワークスペースを訪ねてくるでしょう。それを、'''/forge/mcp/eclipse'''にすることをご理解ください。
| + | もしあなたが、準備していないのならば、Eclipseをダウンロードして下さい。不幸なことにも、たくさんのファイルを含みますので、多くのシステムメモリが要求されることにご了承ください。しかし、どれだけシステムリソースをくおうとも、Eclipseは素晴らしいJavaのツールを提供してくれます。あなたが、最初にEclipseを開くときは、Eclipseはワークスペースを訪ねてくるでしょう。それを、'''/forge/mcp/eclipse'''にすることをご理解ください。 |
| | | |
| ''間違ったワークスペースを設定してしまった際、違うワークスペースをすでにEclipseで用いている場合、ファイル→ワークスペースの切り替え→その他から切り替えることが可能です。'' | | ''間違ったワークスペースを設定してしまった際、違うワークスペースをすでにEclipseで用いている場合、ファイル→ワークスペースの切り替え→その他から切り替えることが可能です。'' |
101行目: |
101行目: |
| | | |
| ForgeにこのクラスがBaseModクラスであることを伝えます。3つのパラメータを持ちます。 | | ForgeにこのクラスがBaseModクラスであることを伝えます。3つのパラメータを持ちます。 |
− |
| |
| *modid | | *modid |
| | | |
111行目: |
110行目: |
| | | |
| *version | | *version |
− |
| |
| MODのバージョンを指します。好きなバージョンの書式を用いて構いません。 | | MODのバージョンを指します。好きなバージョンの書式を用いて構いません。 |
| | | |
133行目: |
131行目: |
| | | |
| *clientSide | | *clientSide |
− |
| |
| クライアントの実装されている完全修飾名を含みます | | クライアントの実装されている完全修飾名を含みます |
− |
| |
| *serverSide | | *serverSide |
− |
| |
| サーバーの実装されている完全修飾名を含みます | | サーバーの実装されている完全修飾名を含みます |
| | | |
151行目: |
146行目: |
| | | |
| 他のMODと一緒に働くために提供されています。例えば、初期のブロックidを他のmodに使われていないidに変更したりします。 | | 他のMODと一緒に働くために提供されています。例えば、初期のブロックidを他のmodに使われていないidに変更したりします。 |
− |
| |
− | ==Proxyクラス==
| |
− |
| |
− | ===前置き===
| |
− |
| |
− | Minecraftはシングルプレイモードであっても、クライアントとサーバーのセットアップを使います。クライアントがワールドをレンダリングする一方で、サーバーがワールドの状態をメンテナンスします。そのため、特別なことをしない限り、クライアントとサーバーが同時に動くこととなります。片方のサイドで動くコードのための2つのアノテーションが存在するのです。
| |
− |
| |
− | @SidedProxyアノテーションは、サーバー側にクライアント側とは違うコンストラクタを呼ばせたいときに利用します。両方とも同じ型か、フィールドを継承している必要があります。また、それらのクラスの名前は、文字列として渡されます。baseModないでは、このアノテーションは以下のように利用されています。
| |
− | <source lang="java">
| |
− | @SidedProxy(clientSide="tutorial.generic.client.ClientProxy", serverSide="tutorial.generic.CommonProxy")
| |
− | public static CommonProxy proxy;
| |
− | </source>
| |
− |
| |
− | いつ、どこでプロキシがインスタンス化されるかはわかりませんが、tutorial.generic.CommonProxyがサーバーサイドでは呼ばれ、tutorial.generic.ClientProxyがクライアントサイドでは呼ばれることになります。
| |
− |
| |
− | ==作り方==
| |
− |
| |
− | 最初に、サーバーサイドのプロキシを見てみましょう。上のコードを見る限り、このクラスはtutorial.generic.CommonProxyに見つかります。CommonProxyクラスをそのパッケージに作ってください。そして以下の例を書いて下さい。
| |
− |
| |
− | <source lang="java">
| |
− | package tutorial.generic;
| |
− |
| |
− | public class CommonProxy {
| |
− | public static String ITEMS_PNG = "/tutorial/generic/items.png";
| |
− | public static String BLOCK_PNG = "/tutorial/generic/block.png";
| |
− |
| |
− | // Client stuff
| |
− | public void registerRenderers() {
| |
− | // Nothing here as the server doesn't render graphics!
| |
− | }
| |
− | }
| |
− | </source>
| |
− |
| |
− | クライアントサイドのプロキシでは、tutorial.generic.client.ClientProxyにあります。同様にクラスを作ってください。また、以下のコードを利用してください。
| |
− | <source lang="java">
| |
− | package tutorial.generic.client;
| |
− |
| |
− | import net.minecraftforge.client.MinecraftForgeClient;
| |
− | import tutorial.generic.CommonProxy;
| |
− |
| |
− | public class ClientProxy extends CommonProxy {
| |
− |
| |
− | @Override
| |
− | public void registerRenderers() {
| |
− | MinecraftForgeClient.preloadTexture(ITEMS_PNG);
| |
− | MinecraftForgeClient.preloadTexture(BLOCK_PNG);
| |
− | }
| |
− |
| |
− | }
| |
− | </source>
| |
− |
| |
− | これらの中の、フィールドやregisterRenderメソッドの説明は、[[Icons and Textures]]で見つかります。今では、これらのイメージは存在しません。
| |
− |
| |
− | ==以上で終わりです==
| |
− |
| |
− | 以上のことをすれば、パッケージエクスプローラーは以下のようになっているはずです。
| |
− |
| |
− | *Minecraft
| |
− | **src
| |
− | ***tutorial.generic
| |
− | ****Generic
| |
− | ****CommonProxy
| |
− | ***tutorial.generic.client
| |
− | ****ClientProxy
| |
− |
| |
− | 以上で、あなたのコンテンツをForgeを用いて追加する準備が完了しました。
| |
− |
| |
− | ==次に何をしましょう?==
| |
− |
| |
− | *[[Crafting and Smelting]] -新しいアイテムを使う最も優しい方法のチュートリアルです。
| |
− | *[[Basic items]]-基本的なアイテム作成
| |
− | *[[Basic blocks]]-基本的なブロックの作成
| |