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