提供: Minecraft Modding Wiki
2015年12月11日 (金) 23:09時点におけるA.K. (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

この記事は"Minecraft Forge Universal 9.10.0.xxx~"を前提MODとしています。

Wood pickaxe.png
初心者向けのチュートリアルです。
C item.png
Itemに関係のあるチュートリアルです。

簡単なアイテムの追加方法

アイテムの追加[編集]

簡単な無機能アイテムの追加

ソースコード[編集]

  • SampleItemCore.java
package mods.itemsample;

import net.minecraft.item.Item;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;

@Mod(modid=SampleItemCore.MOD_ID, name="SampleItemCore", version="1.0")
public class SampleItemCore
{
        /** MODIDの文字列。ベタ書きでも良いけど、いろいろ使うこともあるので。  */
        public static final String MOD_ID = "sampleitemcore";
        /** 追加したいItemクラスのインスタンス */
	public static Item sampleItem;
        /** ItemID変数。32000まで。 */
	public static int sampleItemID = 28520;
	
	@EventHandler
	public void init(FMLInitializationEvent event)
	{
		LanguageRegistry.addName(sampleItem, "Sample Item");
		LanguageRegistry.instance().addNameForObject(sampleItem, "ja_JP", "サンプル アイテム");
	}
	
	@EventHandler
	public void preInit(FMLPreInitializationEvent event)
	{
		sampleItem = new ItemSample(sampleItemID);
		GameRegistry.registerItem(sampleItem, "sampleItem");
	}
}
  • ItemSample.java
package mods.itemsample;

import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;

public class ItemSample extends Item
{

	public ItemSample(int par1)
	{
		super(par1);
		this.setCreativeTab(CreativeTabs.tabMaterials);	//クリエイティブのタブ
		this.setUnlocalizedName("SampleItem");	//システム名の登録
		this.setTextureName("samplemod:sample_item");	//テクスチャの指定
		this.setMaxStackSize(64);	//スタックできる量
	}

	/*
	 * 以下おまけ
	 * 特に機能がなければ消してください
	 */
	
	@Override
	public boolean onItemUse(ItemStack item, EntityPlayer player, World world, int x, int y, int z, int side, float disX, float disY, float disZ)
	{
		//アイテムをブロックに対して右クリックした時に呼ばれる
		return false;
	}

	@Override
	public ItemStack onItemRightClick(ItemStack item, World world, EntityPlayer player)
	{
		//アイテムを右クリック時に呼ばれる
		return item;
	}
}

解説[編集]

SampleItemCore.java[編集]

public static Item sampleItem;
public static int sampleItemID = 28520;

追加するアイテムを記憶しておく変数と、アイテムIDの変数を宣言。

LanguageRegistry.addName(sampleItem, "Sample Item");
LanguageRegistry.instance().addNameForObject(sampleItem, "ja_JP", "サンプル アイテム");

追加するアイテムの表示名を登録。
2つめの登録は、日本語名の登録。真ん中の引数で登録する言語を指定。

sampleItem = new ItemSample(sampleItemID);
GameRegistry.registerItem(sampleItem, "sampleItem");

変数に、新しくインスタンスを代入。
そして、新しくアイテムを登録している。
登録する際にアイテムIDが +256されるので、変数の値で登録したい時には、-256する必要がある。

sampleItem = new ItemSample(sampleItemID - 256);

ItemSample.java[編集]

this.setCreativeTab(CreativeTabs.tabMaterials);	//クリエイティブのタブ
this.setUnlocalizedName("SampleItem");	//システム名の登録
this.setTextureName("samplemod:sample_item");	//テクスチャの指定
this.setMaxStackSize(64);	//スタックできる量

システム名の登録をしないと、表示名の登録はできません。
テクスチャは、"assets/ドメイン名/textures/items/登録名"に置いたのが表示されます。
今回の場合は、"assets/samplemod/textures/items/sample_item.png"です。
ドメイン名は全て小文字にしなければいけません。