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

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

骨粉処理の追加

あくまで、骨粉を使った時の処理のサンプルである。
ブロックの追加、植物の追加等は行って無いので、各自で登録する必要がある

ソースコード

  • SampleBonemealCore.java
package mods.bonemealsample;

import net.minecraft.block.Block;
import net.minecraftforge.common.MinecraftForge;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;

@Mod(modid = "SampleBoneMealCore", name = "SampleBoneMealCore", version = "1.0")
public class SampleBonemealCore
{
	public static Block samplePlant;
	
		/* 各種処理 */


	@EventHandler
	public void preInit(FMLPreInitializationEvent event)
	{
		MinecraftForge.EVENT_BUS.register(new BonemealEventHandler());
	}
	
}
  • BonemealEventHandler.java
package mods.bonemealsample;

import net.minecraftforge.event.Event.Result;
import net.minecraftforge.event.ForgeSubscribe;
import net.minecraftforge.event.entity.player.BonemealEvent;

public class BonemealEventHandler
{
	@ForgeSubscribe
	public void useBoneMeal(BonemealEvent event)
	{
		if(event.world.getBlockId(event.X, event.Y, event.Z) == SampleBonemealCore.samplePlant.blockID)
		{
			if(((BlockSamplePlant)SampleBonemealCore.samplePlant).fertilize(event.world, event.X, event.Y, event.Z))
			{
				//成功したことを知らせる
				event.setResult(Result.ALLOW);
			}
		}
	}

}
  • BlockSamplePlant.java
package mods.bonemealsample;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.world.World;

public class BlockSamplePlant extends Block
{

	public BlockSamplePlant(int par1, Material par2Material)
	{
		super(par1, par2Material);
		/* 各種処理 */
	}
	
		/* 各種処理 */

	public boolean fertilize(World world, int x, int y, int z)
	{
		//骨粉が使われた時の処理
		return true;
	}

}

解説

BonemealEventHandler.java

if(event.world.getBlockId(event.X, event.Y, event.Z) == SampleBonemealCore.samplePlant.blockID)
{
	if(((BlockSamplePlant)SampleBonemealCore.samplePlant).fertilize(event.world, event.X, event.Y, event.Z))
	{
		//成功したことを知らせる
		event.setResult(Result.ALLOW);
	}
}

ブロックIDが一致した場合のみ、呼ぶように処理している。
また、読んだあと、trueが帰ってきた場合のみResultを送って、骨粉が1引かれる処理をしている。