提供: Minecraft Modding Wiki
移動先: 案内検索
(ページの置換「 このページは投稿・編集の練習用です。<br /> 自由に変更して頂いて構いませんが、不定期に内容は削除されますのでメモ代わ...」)
3行目: 3行目:
 
このページは投稿・編集の練習用です。<br />
 
このページは投稿・編集の練習用です。<br />
 
自由に変更して頂いて構いませんが、不定期に内容は削除されますのでメモ代わりには使用しないで下さい。<br />
 
自由に変更して頂いて構いませんが、不定期に内容は削除されますのでメモ代わりには使用しないで下さい。<br />
 +
 +
 +
==1.6のカスタムツール追加==
 +
 +
ここでのカスタムツールというのは、たとえばつるはしなら丸石や石、かまどなどを素早く壊すことができるが、'''そのように素早く壊せるブロックを自分で指定した道具類'''とする。<br />今回は、石、丸石、苔石、丸石フェンス、かまど、木材、原木、作業台のみ対応させる。
 +
 +
===ソースコード===
 +
 +
*SampleCustomToolCore.java
 +
 +
<source lang = java>
 +
package mods.customtoolsample;
 +
 +
import net.minecraft.item.EnumToolMaterial;
 +
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 = "CustomTool", name = "CustomTool", version = "1.0")
 +
public class SampleCustomToolCore
 +
{
 +
public static Item customTool;
 +
/* アイテムID */
 +
public static int customToolID = 27400;
 +
 +
@EventHandler
 +
public void Init(FMLInitializationEvent event)
 +
{
 +
/* 全言語での表示名登録 */
 +
LanguageRegistry.addName(customTool, "Custom Tool");
 +
/* ja_JP(日本語)での表示名登録 */
 +
LanguageRegistry.instance().addNameForObject(customTool, "ja_JP", "カスタムツール");
 +
}
 +
 +
@EventHandler
 +
public void PreInit(FMLPreInitializationEvent event)
 +
{
 +
/* インスタンスの代入 */
 +
customTool = new ItemCustomTool(customToolID, EnumToolMaterial.IRON);
 +
/* アイテム登録 */
 +
GameRegistry.registerItem(customTool, "Custom Tool");
 +
}
 +
}
 +
</source>
 +
 +
*ItemCustomTool.java
 +
<source lang = java>
 +
package mods.customtoolsample;
 +
 +
import net.minecraft.block.Block;
 +
import net.minecraft.block.material.Material;
 +
import net.minecraft.item.EnumToolMaterial;
 +
import net.minecraft.item.ItemStack;
 +
import net.minecraft.item.ItemTool;
 +
 +
public class ItemCustomTool extends ItemTool
 +
{
 +
public static final Block[] blocksEffectiveAgainst = new Block[] {Block.stone, Block.cobblestone, Block.cobblestoneMossy, Block.cobblestoneWall, Block.furnace, Block.planks, Block.wood, Block.workbench};
 +
 +
public ItemCustomTool(int par1, EnumToolMaterial par2EnumToolMaterial)
 +
{
 +
/* ItemID, 攻撃力(これが素材によってまた加算されます), 素材, 上で定義した素早く壊せるブロックの配列 */
 +
super(par1, 2.0F, par2EnumToolMaterial, blocksEffectiveAgainst);
 +
}
 +
 +
/* おもに石など、素手で掘るとドロップしないブロックを掘るときにもしtrueが帰っていて、なおかつblocksEffectiveAgainstにそのブロックが入っていたらそのブロックが素早く掘れるようになります */
 +
 +
public boolean canHarvestBlock(Block par1Block)
 +
{
 +
return true; //詳しい使い方はItemPickaxeを参照
 +
}
 +
 +
/ * ブロック破壊したときの破壊速度のベース。剣の場合は1.5Fを返している(1.5倍?)
 +
public float getStrVsBlock(ItemStack par1ItemStack, Block par2Block)
 +
{
 +
return 1.0F; //通常は1.0F(一倍)です。
 +
}
 +
}
 +
</source>
 +
==解説==
 +
===SampleCustomToolsCore.java===
 +
*[[1.6のツール類追加]]
 +
こちらの''SamplePickaxeCore.java''を参照してください。
 +
===ItemCustomTool.java===
 +
<source lang = java>
 +
public static final Block[] blocksEffectiveAgainst = new Block[] {... ... ...};
 +
</source>
 +
こちらに対応しているブロックを入れているようです。ItemPickaxeやItemAxeでも同じように代入しています。
 +
<source lang = java>
 +
super(par1, 2.0F, par2EnumToolMaterial, blocksEffectiveAgainst);
 +
</source>
 +
*par1 = ItemID
 +
*2.0F = そのツールが持つ攻撃力。'''ItemAxeの場合は3.0F(ハート1.5個分)'''
 +
*par2EnumToolMaterial = EnumToolMaterial型のものを投げてあげましょう。詳しくは*[[1.6のツール類追加]]
 +
 EnumToolMaterial.IRONのようにしてもよいでしょう。(この場合鉄のツルハシと同じ耐久度・早さで採掘できるようになります)
 +
*blocksEffectiveAgainst = 先ほどのcanHarvestBlockなどに関係してきます。対応したブロックを代入してあります。

2013年12月9日 (月) 19:20時点における版


このページは投稿・編集の練習用です。
自由に変更して頂いて構いませんが、不定期に内容は削除されますのでメモ代わりには使用しないで下さい。


1.6のカスタムツール追加

ここでのカスタムツールというのは、たとえばつるはしなら丸石や石、かまどなどを素早く壊すことができるが、そのように素早く壊せるブロックを自分で指定した道具類とする。
今回は、石、丸石、苔石、丸石フェンス、かまど、木材、原木、作業台のみ対応させる。

ソースコード

  • SampleCustomToolCore.java
package mods.customtoolsample;

import net.minecraft.item.EnumToolMaterial;
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 = "CustomTool", name = "CustomTool", version = "1.0")
public class SampleCustomToolCore
{
	public static Item customTool;
	/* アイテムID */
	public static int customToolID = 27400;

	@EventHandler
	public void Init(FMLInitializationEvent event)
	{
		/* 全言語での表示名登録 */
		LanguageRegistry.addName(customTool, "Custom Tool");
		/* ja_JP(日本語)での表示名登録 */
		LanguageRegistry.instance().addNameForObject(customTool, "ja_JP", "カスタムツール");
	}

	@EventHandler
	public void PreInit(FMLPreInitializationEvent event)
	{
		/* インスタンスの代入 */
		customTool = new ItemCustomTool(customToolID, EnumToolMaterial.IRON);
		/* アイテム登録 */
		GameRegistry.registerItem(customTool, "Custom Tool");
	}
}
  • ItemCustomTool.java
package mods.customtoolsample;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.item.EnumToolMaterial;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemTool;

public class ItemCustomTool extends ItemTool
{
	public static final Block[] blocksEffectiveAgainst = new Block[] {Block.stone, Block.cobblestone, Block.cobblestoneMossy, Block.cobblestoneWall, Block.furnace, Block.planks, Block.wood, Block.workbench};

	public ItemCustomTool(int par1, EnumToolMaterial par2EnumToolMaterial)
	{
		/* ItemID, 攻撃力(これが素材によってまた加算されます), 素材, 上で定義した素早く壊せるブロックの配列 */
		super(par1, 2.0F, par2EnumToolMaterial, blocksEffectiveAgainst);
	}

	/* おもに石など、素手で掘るとドロップしないブロックを掘るときにもしtrueが帰っていて、なおかつblocksEffectiveAgainstにそのブロックが入っていたらそのブロックが素早く掘れるようになります */

	public boolean canHarvestBlock(Block par1Block)
	{
		return true; //詳しい使い方はItemPickaxeを参照
	}

	/ * ブロック破壊したときの破壊速度のベース。剣の場合は1.5Fを返している(1.5倍?)
	public float getStrVsBlock(ItemStack par1ItemStack, Block par2Block)
	{
		return 1.0F; //通常は1.0F(一倍)です。
	}
}

解説

SampleCustomToolsCore.java

こちらのSamplePickaxeCore.javaを参照してください。

ItemCustomTool.java

public static final Block[] blocksEffectiveAgainst = new Block[] {... ... ...};

こちらに対応しているブロックを入れているようです。ItemPickaxeやItemAxeでも同じように代入しています。

super(par1, 2.0F, par2EnumToolMaterial, blocksEffectiveAgainst);
  • par1 = ItemID
  • 2.0F = そのツールが持つ攻撃力。ItemAxeの場合は3.0F(ハート1.5個分)
  • par2EnumToolMaterial = EnumToolMaterial型のものを投げてあげましょう。詳しくは*1.6のツール類追加

 EnumToolMaterial.IRONのようにしてもよいでしょう。(この場合鉄のツルハシと同じ耐久度・早さで採掘できるようになります)

  • blocksEffectiveAgainst = 先ほどのcanHarvestBlockなどに関係してきます。対応したブロックを代入してあります。