001 package net.minecraftforge.liquids; 002 003 import net.minecraft.tileentity.TileEntity; 004 import net.minecraft.world.World; 005 import net.minecraftforge.common.MinecraftForge; 006 import net.minecraftforge.event.Event; 007 008 public class LiquidEvent extends Event { 009 public final LiquidStack liquid; 010 public final int x; 011 public final int y; 012 public final int z; 013 public final World world; 014 015 public LiquidEvent(LiquidStack liquid, World world, int x, int y, int z) 016 { 017 this.liquid = liquid; 018 this.world = world; 019 this.x = x; 020 this.y = y; 021 this.z = z; 022 } 023 024 /** 025 * Mods should fire this event when they move liquids around (pipe networks etc) 026 * 027 * @author cpw 028 * 029 */ 030 public static class LiquidMotionEvent extends LiquidEvent 031 { 032 public LiquidMotionEvent(LiquidStack liquid, World world, int x, int y, int z) 033 { 034 super(liquid, world, x, y, z); 035 } 036 } 037 038 /** 039 * Mods should fire this event when a liquid is {@link ILiquidTank#fill(LiquidStack, boolean)} their tank implementation. 040 * {@link LiquidTank} does. 041 * 042 * @author cpw 043 * 044 */ 045 public static class LiquidFillingEvent extends LiquidEvent 046 { 047 public final ILiquidTank tank; 048 049 public LiquidFillingEvent(LiquidStack liquid, World world, int x, int y, int z, ILiquidTank tank) 050 { 051 super(liquid, world, x, y, z); 052 this.tank = tank; 053 } 054 } 055 056 /** 057 * Mods should fire this event when a liquid is {@link ILiquidTank#drain(int, boolean)} from their tank. 058 * @author cpw 059 * 060 */ 061 public static class LiquidDrainingEvent extends LiquidEvent 062 { 063 public final ILiquidTank tank; 064 065 public LiquidDrainingEvent(LiquidStack liquid, World world, int x, int y, int z, ILiquidTank tank) 066 { 067 super(liquid, world, x, y, z); 068 this.tank = tank; 069 } 070 } 071 072 073 /** 074 * Mods should fire this event when a liquid "spills", for example, if a block containing liquid is broken. 075 * 076 * @author cpw 077 * 078 */ 079 public static class LiquidSpilledEvent extends LiquidEvent 080 { 081 public LiquidSpilledEvent(LiquidStack liquid, World world, int x, int y, int z) 082 { 083 super(liquid, world, x, y, z); 084 } 085 } 086 087 /** 088 * A handy shortcut for firing the various liquid events 089 * 090 * @param event 091 */ 092 public static final void fireEvent(LiquidEvent event) 093 { 094 MinecraftForge.EVENT_BUS.post(event); 095 } 096 }