提供: Minecraft Modding Wiki
移動先: 案内検索
43行目: 43行目:
 
===ソースの場所===
 
===ソースの場所===
 
あなたが作ったパッケージやクラスは、/forge/mcp/src/Minecraft内に見つけることが可能です。
 
あなたが作ったパッケージやクラスは、/forge/mcp/src/Minecraft内に見つけることが可能です。
 +
 +
==Basic Mod Class==
 +
BaseMODクラスはForgeがロードするクラスです。他のクラスはBaseMODがForgeに登録することによって動作します。このため、BaseMODクラスはあなたのMODの名前と同じ名前にすることを提案します。それ故に、GenericMODを作成するこのチュートリアルでは、このクラスはGenericと名付けられています。
 +
 +
一つ前のセクションで、私たちは空のクラスを作りました。Eclipseが何を自動生成しても、以下のように置き換えてください。
 +
 +
<source lang="java">
 +
package tutorial.generic;
 +
 +
import cpw.mods.fml.common.Mod;
 +
import cpw.mods.fml.common.Mod.Init;
 +
import cpw.mods.fml.common.Mod.Instance;
 +
import cpw.mods.fml.common.Mod.PostInit;
 +
import cpw.mods.fml.common.Mod.PreInit;
 +
import cpw.mods.fml.common.SidedProxy;
 +
import cpw.mods.fml.common.event.FMLInitializationEvent;
 +
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
 +
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
 +
import cpw.mods.fml.common.network.NetworkMod;
 +
 +
@Mod(modid="Generic", name="Generic", version="0.0.0")
 +
@NetworkMod(clientSideRequired=true, serverSideRequired=false)
 +
public class Generic {
 +
 +
        /**Forgeが使うあなたのMODのインスタンスです。**/
 +
        @Instance("Generic")
 +
        public static Generic instance;
 +
       
 +
        // どこにクライアントとサーバーの'proxy'コードが有るか示します。
 +
        @SidedProxy(clientSide="tutorial.generic.client.ClientProxy", serverSide="tutorial.generic.CommonProxy")
 +
        public static CommonProxy proxy;
 +
       
 +
        @PreInit
 +
        public void preInit(FMLPreInitializationEvent event) {
 +
                // Stub Method
 +
        }
 +
       
 +
        @Init
 +
        public void load(FMLInitializationEvent event) {
 +
                proxy.registerRenderers();
 +
        }
 +
       
 +
        @PostInit
 +
        public void postInit(FMLPostInitializationEvent event) {
 +
                // Stub Method
 +
        }
 +
}
 +
</source>

2013年2月22日 (金) 19:40時点における版

このページはForge wiki内の[BascicModdingTutorials]の翻訳記事です。多くが意訳で、雑な翻訳であること、見やすさに応じて太字などは独自に変えられている場合がありますのでご注意ください。

Havvy's Minecraft Forge Tutorials(Basic Modding)

はじめに

MinecraftのMOD作成にようこそ!私達ModderはMinecraftに対してたくさんの制御ができますが、それにはたくさんのコードに圧倒されます。しかし、新しいブロックや機能をMinecraftに追加するのは非常に自由な経験です。もし、ゲームの一部分があなたが嫌いであるとすれば、変えればいいのです!もし、もっとたくさんのコンテンツが欲しいなら、追加すればいいのです!これらのチュートリアルは簡単にMOD開発を始めるためにほとんどのmodderたちに便利であろう基本的なMODづくりの概念を教えるためのものです。

終着点

  • どのようにMinecraftのコードを編集すればいいのか理解する。
  • Eclipseでどのようにパッケージやクラスを作ればいいのか理解する。
  • MinecraftのMODのために例文集として理解し使えるようにする。

前提知識

  • Forgeの開発環境をインストールし終わっていること。
  • Javaでどのようにプログラムをするか理解していること。(もししていないなら、Javaを学ぶことから始めてください)MODを作成している間にわかってくるかもしれませんが、Minecraftのコミュニケーションチャンネルでは、Javaのヘルプを求めないでください。Javaを学ぶための本やオンラインのチュートリアルがたくさんネット上には存在します。

クレジット

このチュートリアルは、[Wuppy(注 英語)]の3番目、4番目のチュートリアルをよりわかりやすくしたものです。Wuppyのチュートリアルはコードこそあるものの、なぜそのコードで十分なのか解説していません。これらのチュートリアルはWuppyのチュートリアルと類似しております。

Generic modのソースは、リソースを含んだ状態で[GitHub]で見つけることが可能です。もし、GitHubのソースが動かないならば、バグのあるファイルを保存してしまったのでしょう。もし、ソースとwikiのソースが同期していないとすれば、バグのあるファイルを保存してしまったのでしょう。

Generic ModはHavvyによって作られたものです。そのため、あなたが質問があり、リアルタイムに返答を望むのであれば、Havvyを[MinecraftForge IRC Channel]で見つけることができるでしょう。彼は殆どの場合フレンドリーですが、基本的なJavaの質問をすれば、Javaを学んでくるように言うでしょう。

Eclipse

EclipseでForgeプロジェクトを開く

このチュートリアルではあなたがEclipseを使っているとして行います。Eclipse以外でも、NetBeansやEmacs,Vimなどでも行うことができます。しかし、MinecraftのMODプログラマーはEclipseで始めることによって、かなりの恩恵をうけることができます。 もしあなたが、準備していないのならば、Eclipseをダウンロードして下さい。不幸なことにも、たくさんのファイルを含みますので、多くのシステムメモリが要求されることにご了承ください。しかし、どれだけシステムリソースをくおうとも、Eclipseは素晴らしいJavaのツールを提供してくれます。あなたが、最初にEclipseを開くときは、Eclipseはワークスペースを訪ねてくるでしょう。それを、/forge/mcp/eclipseにすることをご理解ください。

間違ったワークスペースを設定してしまった際、違うワークスペースをすでにEclipseで用いている場合、ファイル→ワークスペースの切り替え→その他から切り替えることが可能です。

以上のことが完了したら、Eclipseは"Minecraft"プロジェクトがパッケージエクスプローラーによって開かれた状態で始まるでしょう。プロジェクトを見れば、"src"と名付けられたソースフォルダが見つかるはずです。それを開くと、とてもたくさんのMinecraftとMinecraft Forgeを構成するパッケージが見つかることでしょう。それらのクラスを変更する気がなくとも、Minecraftがどう動いているのかを理解するために自由にそれらのクラスを読んで構わないのです。

パッケージとクラスを作成する

Forgeを利用してMOD作成をすることは、新しいクラスの追加を用いて全てのMOD開発を行うことを意味します。あなたが、コアMODを作るか、相当良く出来た理由がない限り、他のクラスを編集する必要はありません。また、あなたが追加するクラスは、自分自身のパッケージ内に定義すべきです。 Eclipseでパッケージやクラスを作成するにあたって、パッケージエクスプローラーに含まれるものを右クリックすることにより、パッケージやクラスを追加することができます。パッケージであれば、srcディレクトリ、クラスであれば、所属するパッケージを右クリックして追加してください。パッケージエクスプローラーの要素を右クリックして、新規→パッケージ、もしくは新規→クラスを選ぶのです。

GenericMODの作成にあたっては、tutorial.genericをパッケージとして利用します。以下に示す方法で同様の環境を再現することが可能です。Minecraft/src内にtutorial.genericと名付けたパッケージを作成します。それが終われば、空のtutorial.genericパッケージが存在するはずです。次に、どのようなMODにおいても最初のクラスになるもの:Base MODファイルを作成しましょう。このクラスは、ForgeがMinecraftとあなたのMODを結びつけるためのフックを内包します。genericMODを作るためのこのチュートリアルでは、このクラスをGenericと名づけます。

tutorial.genericパッケージを右クリックし、新しいクラスを作ってください。出てくるダイアログの中で問題になるのは、ソースフォルダと、パッケージと名前だけです。ソースフォルダはMinecraft/srcで、パッケージはtutorial.generic、名前はGenericです。 ここまでの間に、Genericと名付けられたクラスがminecraft/src内に存在するtutorial.genericパッケージに存在するはずです。もしなっていないなら、もう一度トライしてください。

違う名前のパッケージネームを用いることもできます。実際に何かのMODを作る際には、パッケージネームとして、(あなたの名前).(あなたのMODの名前)または、(あなたの名前).minecraft.(あなたのMODの名前)とすることを名前の競合をしないためにも薦めます。

ソースの場所

あなたが作ったパッケージやクラスは、/forge/mcp/src/Minecraft内に見つけることが可能です。

Basic Mod Class

BaseMODクラスはForgeがロードするクラスです。他のクラスはBaseMODがForgeに登録することによって動作します。このため、BaseMODクラスはあなたのMODの名前と同じ名前にすることを提案します。それ故に、GenericMODを作成するこのチュートリアルでは、このクラスはGenericと名付けられています。

一つ前のセクションで、私たちは空のクラスを作りました。Eclipseが何を自動生成しても、以下のように置き換えてください。

package tutorial.generic;

import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.Mod.PostInit;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkMod;

@Mod(modid="Generic", name="Generic", version="0.0.0")
@NetworkMod(clientSideRequired=true, serverSideRequired=false)
public class Generic {

        /**Forgeが使うあなたのMODのインスタンスです。**/
        @Instance("Generic")
        public static Generic instance;
        
        // どこにクライアントとサーバーの'proxy'コードが有るか示します。
        @SidedProxy(clientSide="tutorial.generic.client.ClientProxy", serverSide="tutorial.generic.CommonProxy")
        public static CommonProxy proxy;
        
        @PreInit
        public void preInit(FMLPreInitializationEvent event) {
                // Stub Method
        }
        
        @Init
        public void load(FMLInitializationEvent event) {
                proxy.registerRenderers();
        }
        
        @PostInit
        public void postInit(FMLPostInitializationEvent event) {
                // Stub Method
        }
}