提供: Minecraft Modding Wiki
移動先: 案内検索
(ソースコード)
(ソースコード)
33行目: 33行目:
 
public void preInit(FMLPreInitializationEvent event)
 
public void preInit(FMLPreInitializationEvent event)
 
{
 
{
sampleItem = new Item(sampleItemID);
+
sampleItem = new sampleItem(sampleItemID);
 
GameRegistry.registerItem(sampleItem, "sampleItem");
 
GameRegistry.registerItem(sampleItem, "sampleItem");
 
}
 
}

2014年2月17日 (月) 10:52時点における版

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

アイテムの追加

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

ソースコード

  • 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", name="SampleItemCore", version="1.0")
public class SampleItemCore
{
	public static Item sampleItem;
	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 sampleItem(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"です。
ドメイン名は全て小文字にしなければいけません。