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

この記事は"ModLoader及びMinecraftForge"を前提MODとしています。

また、種子の追加を前提として理解していることとします。
参照先はこちら

ソース解説[編集]

mod_operationBonemealクラスを作成[編集]

package net.minecraft.src;

import java.util.*;

import net.minecraft.src.forge.MinecraftForge;

public class mod_operationBonemeal {

	public static int opBonemeal1;
	public static int opBonemeal2;
	public static int opBonemeal3;
	public static int opBonemeal4;
	public static int opBonemeal5;
	public static int opBonemeal6;
	public static int opBonemeal7;
	
	public static final Block opBlockCrop;
	public static final Item opItemCrop;
	
	public mod_operationBonemeal()
	{
	}
	
	public String getVersion()
	{
		return "1.2.3";
	}
	
	public void load()
	{
		ModLoader.addName(opBlockCrop, "Op Crop");
		opBlockCrop.blockIndexInTexture = ModLoader.addOverride("/terrain/png", "/op/opCrop.png");
		ModLoader.addName(opItemCrop, "Op");
		opItemCrop.iconIndex = ModLoader.addOverride("/gui/items.png", "/op/op.png");
		
		/*
		 * ここで、骨粉を使う処理を行うクラス名(ハンドラ名)を
		 * MinecraftForge.registerBonemealHandlerで呼び出す
		 */
		MinecraftForge.registerBonemealHandler(new OperatinBonemealHandler());
	}
	
	static
	{
		opBonemeal1 = ModLoader.addOverride("terrain.png", "/op/opCrop1.png");
		opBonemeal2 = ModLoader.addOverride("terrain.png", "/op/opCrop2.png");
		opBonemeal3 = ModLoader.addOverride("terrain.png", "/op/opCrop3.png");
		opBonemeal4 = ModLoader.addOverride("terrain.png", "/op/opCrop4.png");
		opBonemeal5 = ModLoader.addOverride("terrain.png", "/op/opCrop5.png");
		opBonemeal6 = ModLoader.addOverride("terrain.png", "/op/opCrop6.png");
		opBonemeal7 = ModLoader.addOverride("terrain.png", "/op/opCrop7.png");
		
		opBlockCrop = new opBlockCrop(100, 0).setBlockName("opCrop");
		opItemCrop = new ItemOpCrop(5000, mod_operationBonemeal.opBlockCrop.blockID, Block.dirt.blockID).setBlockName("op");
		
	}
}

色々書いていますが、基本は種(Crop)を追加しているだけです。
目玉はこれだけです。

MinecraftForge.registerBonemealHandler(new OperatinBonemealHandler());

OperatinBonemealHandlerクラスを作成[編集]

package net.minecraft.src;

import net.minecraft.src.forge.IBonemealHandler;

public class OperatinBonemealHandler implements IBonemealHandler {

	@Override
	public boolean onUseBonemeal(World world, int blockID, int i, int j, int k)
	{
		if(!world.isRemote)
		{
			/*
			 * 成長させる対象のBlockクラス内にあるfertilizeメソッドを呼び出す。
			 */
			((BlockOpCrop)mod_operationBonemeal.opBlockCrop).fertilize(world, i, j, k);
		}
		return true;
	}

}

MinecraftForgeからIBonemealHandlerをインターフェイスとして繋げて
onUseBonemealメソッドを追加するだけです。
追加した種Blockクラスのメソッドにfertilizeを追加するのを忘れなければ問題ないはずです。


自分のコメントを追加
Minecraft Modding Wikiはすべてのコメントを歓迎します。匿名で投稿したくない場合は、アカウント作成またはログインしてください。無料です。