1.6の骨粉処理

提供: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引かれる処理をしている。

チュートリアル
個人用ツール