From d5829b0fed61c3bdbee89036eb0b339ea7e24524 Mon Sep 17 00:00:00 2001 From: Bernhard Bonigl Date: Wed, 6 Aug 2014 15:35:52 +0200 Subject: [PATCH] Fire a SmelteryCastEvent when a castingTable tries to cast something. Allows to deny the casting. --- .../library/event/SmelteryCastEvent.java | 20 +++++++++++++++++++ .../smeltery/logic/CastingTableLogic.java | 10 ++++++++++ 2 files changed, 30 insertions(+) create mode 100644 src/main/java/tconstruct/library/event/SmelteryCastEvent.java diff --git a/src/main/java/tconstruct/library/event/SmelteryCastEvent.java b/src/main/java/tconstruct/library/event/SmelteryCastEvent.java new file mode 100644 index 00000000000..21b6d90fc7b --- /dev/null +++ b/src/main/java/tconstruct/library/event/SmelteryCastEvent.java @@ -0,0 +1,20 @@ +package tconstruct.library.event; + +import cpw.mods.fml.common.eventhandler.Event; +import net.minecraftforge.fluids.FluidStack; +import tconstruct.library.crafting.CastingRecipe; + +/** + * Fires when somebody tries to pour a liquid into a metal cast. + * + * Set result to DENY to prevent casting. + */ +public class SmelteryCastEvent extends Event { + public final CastingRecipe recipe; + public final FluidStack fluid; + + public SmelteryCastEvent(CastingRecipe recipe, FluidStack fluid) { + this.recipe = recipe; + this.fluid = fluid; + } +} diff --git a/src/main/java/tconstruct/smeltery/logic/CastingTableLogic.java b/src/main/java/tconstruct/smeltery/logic/CastingTableLogic.java index 9dae22ebc1f..5b150b74beb 100644 --- a/src/main/java/tconstruct/smeltery/logic/CastingTableLogic.java +++ b/src/main/java/tconstruct/smeltery/logic/CastingTableLogic.java @@ -1,5 +1,6 @@ package tconstruct.smeltery.logic; +import cpw.mods.fml.common.eventhandler.Event; import mantle.blocks.abstracts.InventoryLogic; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -10,6 +11,7 @@ import net.minecraft.network.Packet; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidEvent; @@ -19,6 +21,7 @@ import net.minecraftforge.fluids.IFluidTank; import tconstruct.TConstruct; import tconstruct.library.crafting.CastingRecipe; +import tconstruct.library.event.SmelteryCastEvent; import tconstruct.library.util.IPattern; public class CastingTableLogic extends InventoryLogic implements IFluidTank, IFluidHandler, ISidedInventory @@ -120,6 +123,13 @@ public int fill (FluidStack resource, boolean doFill) CastingRecipe recipe = TConstruct.tableCasting.getCastingRecipe(resource, inventory[0]); if (recipe == null) return 0; + + SmelteryCastEvent event = new SmelteryCastEvent(recipe, resource); + MinecraftForge.EVENT_BUS.post(event); + + if(event.getResult() == Event.Result.DENY) + return 0; + this.capacity = updateCapacity(recipe.castingMetal.amount); if (inventory[1] == null)