提供: Minecraft Modding Wiki
移動先: 案内検索

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 編集中の文章
2行目: 2行目:
  
 
==無機能アイテムの追加==
 
==無機能アイテムの追加==
<p>
+
 何の機能も無いアイテムを追加する. これはアイテムを追加するための基礎であり, ここで使われるメソッドはこれ以降のチュートリアルにも頻出する.
何の機能も無いアイテムを追加する. これはアイテムを追加するための基礎であり, ここで使われるメソッドはこれ以降のチュートリアルにも頻出する.
 
</p>
 
  
 
===ソースコード===
 
===ソースコード===
69行目: 67行目:
  
 
==解説==
 
==解説==
===ItemSampleCoreクラス===
+
===ItemSampleCore===
 +
====package, import====
 
<source lang = "java">
 
<source lang = "java">
 
package mods.itemsample;
 
package mods.itemsample;
</source>
 
<blockquote>
 
このModのパッケージを指定する. このパッケージは実際のフォルダ階層と同じでなければならない. したがってこのファイルはmcroot/src/common/mods/itemsampleフォルダに置かなければならない.
 
</blockquote>
 
  
 
<source lang = "java">
 
 
import net.minecraft.src.*;
 
import net.minecraft.src.*;
</source>
 
<blockquote>
 
net.minecraft.src以下を全てインポートする. ItemやBlockなど既存のクラスを利用するのに必要.
 
</blockquote>
 
  
 
<source lang = "java">
 
 
import cpw.mods.fml.common.Mod;
 
import cpw.mods.fml.common.Mod;
 
import cpw.mods.fml.common.network.NetworkMod;
 
import cpw.mods.fml.common.network.NetworkMod;
</source>
 
<blockquote>
 
2つのアノテーションを使うためにインポートする. 2つのアノテーションについては[[新しいコーディング記法とUniversal_Modding]]を参照.
 
</blockquote>
 
  
 
<source lang = "java">
 
 
import cpw.mods.fml.common.event.FMLInitializationEvent;
 
import cpw.mods.fml.common.event.FMLInitializationEvent;
</source>
 
<blockquote>
 
FMLInitializationEventというクラスを利用するためにインポートする. ModLoaderにおけるloadメソッドに相当する.
 
</blockquote>
 
 
  
<source lang = "java">
 
 
import cpw.mods.fml.common.registry.GameRegistry;
 
import cpw.mods.fml.common.registry.GameRegistry;
 
import cpw.mods.fml.common.registry.LanguageRegistry;
 
import cpw.mods.fml.common.registry.LanguageRegistry;
 
</source>
 
</source>
<blockquote>
+
;*package mods.itemsample;
FMLのAPIを利用するためにインポートする.
+
:このModのパッケージを指定する. このパッケージは実際のフォルダ階層と同じでなければならない. したがってこのファイルはmcroot/src/common/mods/itemsampleフォルダに置かなければならない.
</blockquote>
+
 
 +
;*import net.minecraft.src.*;
 +
:net.minecraft.src以下を全てインポートする. ItemやBlockなど既存のクラスを利用するのに必要.
 +
 
 +
;*import cpw.mods.fml.common.Mod;
 +
;*import cpw.mods.fml.common.network.NetworkMod;
 +
:2つのアノテーションを使うためにインポートする. 2つのアノテーションについては[[新しいコーディング記法とUniversal_Modding]]を参照.
 +
 
 +
;*import cpw.mods.fml.common.event.FMLInitializationEvent;
 +
:FMLInitializationEventというクラスを利用するためにインポートする. ModLoaderにおけるloadメソッドに相当する.
 +
 
 +
;*import cpw.mods.fml.common.registry.GameRegistry;
 +
;*import cpw.mods.fml.common.registry.LanguageRegistry;
 +
:FMLのAPIを利用するためにインポートする.
  
 
====@Mod, @NetworkMod====
 
====@Mod, @NetworkMod====
123行目: 111行目:
 
)
 
)
 
</source>
 
</source>
<blockquote>
 
 
@Modで'''他のMODと重複しない文字列のmodid'''とModの名前, バージョンを明記する.
 
@Modで'''他のMODと重複しない文字列のmodid'''とModの名前, バージョンを明記する.
 
@NetworkModでクライアントとサーバーに関する設定を行う. 今回は2つだけ.
 
@NetworkModでクライアントとサーバーに関する設定を行う. 今回は2つだけ.
</blockquote>
 
  
 
====ItemSampleCoreクラス====
 
====ItemSampleCoreクラス====
152行目: 138行目:
 
}
 
}
 
</source>
 
</source>
<blockquote>
 
 
クラス名は'''ItemSampleCore'''. ModLoaderと異なりどんなクラス名でもよいが, ファイル名と同じでなければならない.
 
クラス名は'''ItemSampleCore'''. ModLoaderと異なりどんなクラス名でもよいが, ファイル名と同じでなければならない.
</blockquote>
 
  
 +
----
  
<source lang = "java">
+
;<source lang = "java">
 
public static Item itemSample;
 
public static Item itemSample;
 
</source>
 
</source>
<blockquote>
+
:新しいアイテムの宣言. '''public static'''とはこのインスタンスがどこからでも, いつでも参照できるということ. ここらへんはJavaの参考書なりサイトなりで確認.
新しいアイテムの宣言. '''public static'''とはこのインスタンスがどこからでも, いつでも参照できるということ. ここらへんはJavaの参考書なりサイトなりで確認.
+
<br/>
</blockquote>
 
 
 
  
 
<source lang = "java">
 
<source lang = "java">
 
@Mod.Init
 
@Mod.Init
 
</source>
 
</source>
<blockquote>
+
:@Modの内部アノテーション, Initを利用する. このアノテーションが付与され, 引数に'''FMLInitialzaitonEvent'''を持つメソッドはFMLによって読み込まれるメソッドになる. この時'''メソッド名は自由'''. ModLoader Moddingにおけるload()に相当する.
@Modの内部アノテーション, Initを利用する. このアノテーションが付与され, 引数に'''FMLInitialzaitonEvent'''を持つメソッドはFMLによって読み込まれるメソッドになる. この時'''メソッド名は自由'''. ModLoader Moddingにおけるload()に相当する.
+
<br/>
</blockquote>
 
 
 
  
 
<source lang = "java">
 
<source lang = "java">
 
itemSample = (new ItemSample(4000 - 256)).setIconCoord(11, 0).setItemName("itemSample").setCreativeTab(CreativeTabs.tabMaterials);
 
itemSample = (new ItemSample(4000 - 256)).setIconCoord(11, 0).setItemName("itemSample").setCreativeTab(CreativeTabs.tabMaterials);
 
</source>
 
</source>
<blockquote>
+
:Itemを継承したItemSampleクラスのインスタンスを生成する. ItemSampleの引数はアイテムIDで, -256しているのはMinecraft側の仕様の都合.
Itemを継承したItemSampleクラスのインスタンスを生成する. ItemSampleの引数はアイテムIDで, -256しているのはMinecraft側の仕様の都合.
+
:new以外はItemSampleのコンストラクタでやってもよいが, 今回はこちら側で利用.
new以外はItemSampleのコンストラクタでやってもよいが, 今回はこちら側で利用.
+
:*setIconCoord
*setIconCoord
 
 
:アイテムのアイコンを指定するメソッド. この場合gui/items.pngの右上から横方向に11, 縦方向に0番目のアイコンを使う, という意味
 
:アイテムのアイコンを指定するメソッド. この場合gui/items.pngの右上から横方向に11, 縦方向に0番目のアイコンを使う, という意味
*setItemName
+
 
 +
:*setItemName
 
:アイテムの'''内部名'''を明記するメソッド. これを行わないと表示名が適用できない.
 
:アイテムの'''内部名'''を明記するメソッド. これを行わないと表示名が適用できない.
*setCreativeTab
+
 
 +
:*setCreativeTab
 
:クリエイティブモードでのインベントリタブのどこに追加するかを決めるメソッド. CreativeTabs.tabMaterialsは右下の素材タブに追加.
 
:クリエイティブモードでのインベントリタブのどこに追加するかを決めるメソッド. CreativeTabs.tabMaterialsは右下の素材タブに追加.
</blockquote>
+
<br/>
  
 
<source lang = "java">
 
<source lang = "java">
191行目: 173行目:
 
LanguageRegistry.instance().addNameForObject(itemSample, "ja_JP", "サンプルアイテム");
 
LanguageRegistry.instance().addNameForObject(itemSample, "ja_JP", "サンプルアイテム");
 
</source>
 
</source>
<blockquote>
+
:アイテムに名前をつけるメソッド. addNameは英語名をつけるメソッド. addNameForObjectは二番目の引数で指定した言語の名前をつけるメソッド, 今回は日本語.
アイテムに名前をつけるメソッド. addNameは英語名をつけるメソッド. addNameForObjectは二番目の引数で指定した言語の名前をつけるメソッド, 今回は日本語.
+
:前者と違い後者にはinstance()というメソッドが使われているが, これはaddNameがstaticなメソッドであるのに対し, addNameForObjectがそうでないからである. :LanguageRegistryのコードを読むと違いがわかるだろう.
前者と違い後者にはinstance()というメソッドが使われているが, これはaddNameがstaticなメソッドであるのに対し, addNameForObjectがそうでないからである. :LanguageRegistryのコードを読むと違いがわかるだろう.
+
<br/>
</blockquote>
 
 
 
  
 
<source lang = "java">
 
<source lang = "java">
205行目: 185行目:
 
});
 
});
 
</source>
 
</source>
<blockquote>
+
:レシピを追加するメソッドである. shapelessRecipe, すなわち形のないレシピである. 作業台などでクラフトする際, 特定の形にしなくも, 素材さえ揃っていれば作成できる場合はこのメソッドを使う. 今回は土ブロックから新しく追加したアイテムを作成できるようにする.
レシピを追加するメソッドである. shapelessRecipe, すなわち形のないレシピである. 作業台などでクラフトする際, 特定の形にしなくも, 素材さえ揃っていれば作成できる場合はこのメソッドを使う. 今回は土ブロックから新しく追加したアイテムを作成できるようにする.
+
:このメソッドの引数は(作成したいアイテム, 素材)である.
このメソッドの引数は(作成したいアイテム, 素材)である.
 
</blockquote>
 
  
 
===ItemSampleクラス===
 
===ItemSampleクラス===
220行目: 198行目:
 
}
 
}
 
</source>
 
</source>
<blockquote>
+
:Itemクラスを継承したItemSampleクラスを作る. コンストラクタではsuperクラス(=Itemクラス)のコンストラクタに引数itemIdを渡しているだけ. このようにsuperクラス(親クラスとも)のメソッドを派生クラス(子クラス)で利用することは多々ある.
Itemクラスを継承したItemSampleクラスを作る. コンストラクタではsuperクラス(=Itemクラス)のコンストラクタに引数itemIdを渡しているだけ. このようにsuperクラス(親クラスとも)のメソッドを派生クラス(子クラス)で利用することは多々ある.
 
</blockquote>
 
  
 
==実際の挙動==
 
==実際の挙動==
<p>
 
 
上記のコードをコンパイルし, 実行するとクリエイティブの素材タブの最後にアイテムが追加される. しかし右クリックしても食べられないし, 左クリックしても素手と同じ扱いである.
 
上記のコードをコンパイルし, 実行するとクリエイティブの素材タブの最後にアイテムが追加される. しかし右クリックしても食べられないし, 左クリックしても素手と同じ扱いである.
</p>
 

Minecraft Modding Wikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMinecraft Modding Wiki:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)

このページで使用されているテンプレート: