diff --git a/api/buildcraft/api/pipes/IPipeContainer.java b/api/buildcraft/api/pipes/IPipeContainer.java index bba1b103..a6b2b37b 100644 --- a/api/buildcraft/api/pipes/IPipeContainer.java +++ b/api/buildcraft/api/pipes/IPipeContainer.java @@ -46,4 +46,7 @@ public interface IPipeContainer extends IInjectable { IPipe getNeighborPipe(ForgeDirection dir); IPipe getPipe(); + + PipePluggable getPipePluggable(ForgeDirection direction); + boolean hasPipePluggable(ForgeDirection direction); } diff --git a/api/buildcraft/api/pipes/IPipePluggableRenderer.java b/api/buildcraft/api/pipes/IPipePluggableRenderer.java index d48ee799..9216fddb 100644 --- a/api/buildcraft/api/pipes/IPipePluggableRenderer.java +++ b/api/buildcraft/api/pipes/IPipePluggableRenderer.java @@ -6,6 +6,6 @@ import buildcraft.api.core.render.ITextureStates; public interface IPipePluggableRenderer { void renderPluggable(RenderBlocks renderblocks, IPipe pipe, ForgeDirection side, - IPipePluggable pipePluggable, ITextureStates blockStateMachine, + PipePluggable pipePluggable, ITextureStates blockStateMachine, int x, int y, int z); } diff --git a/api/buildcraft/api/pipes/PipeManager.java b/api/buildcraft/api/pipes/PipeManager.java index 8f388c44..ec02614e 100755 --- a/api/buildcraft/api/pipes/PipeManager.java +++ b/api/buildcraft/api/pipes/PipeManager.java @@ -20,11 +20,11 @@ public abstract class PipeManager { public static List stripesHandlers = new ArrayList(); public static List extractionHandlers = new ArrayList(); - public static ArrayList> pipePluggables = new ArrayList>(); - private static Map> pipePluggableNames = - new HashMap>(); - private static Map, String> pipePluggableByNames = - new HashMap, String>(); + public static ArrayList> pipePluggables = new ArrayList>(); + private static Map> pipePluggableNames = + new HashMap>(); + private static Map, String> pipePluggableByNames = + new HashMap, String>(); public static void registerExtractionHandler(IExtractionHandler handler) { extractionHandlers.add(handler); @@ -34,7 +34,7 @@ public abstract class PipeManager { stripesHandlers.add(handler); } - public static void registerPipePluggable(Class pluggable, String name) { + public static void registerPipePluggable(Class pluggable, String name) { pipePluggables.add(pluggable); pipePluggableNames.put(name, pluggable); pipePluggableByNames.put(pluggable, name); @@ -70,7 +70,7 @@ public abstract class PipeManager { return pipePluggableNames.get(pluggableName); } - public static String getPluggableName(Class aClass) { + public static String getPluggableName(Class aClass) { return pipePluggableByNames.get(aClass); } } diff --git a/api/buildcraft/api/pipes/IPipePluggable.java b/api/buildcraft/api/pipes/PipePluggable.java similarity index 52% rename from api/buildcraft/api/pipes/IPipePluggable.java rename to api/buildcraft/api/pipes/PipePluggable.java index 09597fb2..e4aa7d18 100755 --- a/api/buildcraft/api/pipes/IPipePluggable.java +++ b/api/buildcraft/api/pipes/PipePluggable.java @@ -22,21 +22,33 @@ import buildcraft.api.core.ISerializable; * An IPipePluggable MUST have an empty constructor for client-side * rendering! */ -public interface IPipePluggable extends INBTStoreable, ISerializable { - ItemStack[] getDropItems(IPipeContainer pipe); +public abstract class PipePluggable implements INBTStoreable, ISerializable { + public abstract ItemStack[] getDropItems(IPipeContainer pipe); - void onAttachedPipe(IPipeContainer pipe, ForgeDirection direction); + public void update(IPipeContainer pipe, ForgeDirection direction) { - void onDetachedPipe(IPipeContainer pipe, ForgeDirection direction); + } - boolean isBlocking(IPipeContainer pipe, ForgeDirection direction); + public void onAttachedPipe(IPipeContainer pipe, ForgeDirection direction) { + validate(pipe, direction); + } - void invalidate(); + public void onDetachedPipe(IPipeContainer pipe, ForgeDirection direction) { + invalidate(); + } - void validate(IPipeContainer pipe, ForgeDirection direction); + public abstract boolean isBlocking(IPipeContainer pipe, ForgeDirection direction); - AxisAlignedBB getBoundingBox(ForgeDirection side); + public void invalidate() { + + } + + public void validate(IPipeContainer pipe, ForgeDirection direction) { + + } + + public abstract AxisAlignedBB getBoundingBox(ForgeDirection side); @SideOnly(Side.CLIENT) - IPipePluggableRenderer getRenderer(); + public abstract IPipePluggableRenderer getRenderer(); } diff --git a/common/buildcraft/transport/BlockGenericPipe.java b/common/buildcraft/transport/BlockGenericPipe.java index e9e2c118..cd2fc740 100644 --- a/common/buildcraft/transport/BlockGenericPipe.java +++ b/common/buildcraft/transport/BlockGenericPipe.java @@ -52,7 +52,7 @@ import buildcraft.api.events.PipePlacedEvent; import buildcraft.api.events.RobotPlacementEvent; import buildcraft.api.gates.GateExpansions; import buildcraft.api.gates.IGateExpansion; -import buildcraft.api.pipes.IPipePluggable; +import buildcraft.api.pipes.PipePluggable; import buildcraft.api.robots.EntityRobotBase; import buildcraft.api.tools.IToolWrench; import buildcraft.api.pipes.PipeWire; @@ -513,7 +513,7 @@ public class BlockGenericPipe extends BlockBuildCraft { switch (rayTraceResult.hitPart) { case Pluggable: { Pipe pipe = getPipe(world, x, y, z); - IPipePluggable pluggable = pipe.container.getPipePluggable(rayTraceResult.sideHit); + PipePluggable pluggable = pipe.container.getPipePluggable(rayTraceResult.sideHit); if (pluggable instanceof FacadePluggable) { ForgeDirection dir = ForgeDirection .getOrientation(target.sideHit); diff --git a/common/buildcraft/transport/FacadePluggable.java b/common/buildcraft/transport/FacadePluggable.java index af03808a..a8ce2abf 100644 --- a/common/buildcraft/transport/FacadePluggable.java +++ b/common/buildcraft/transport/FacadePluggable.java @@ -7,11 +7,11 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.Constants; import net.minecraftforge.common.util.ForgeDirection; import buildcraft.api.pipes.IPipeContainer; -import buildcraft.api.pipes.IPipePluggable; import buildcraft.api.pipes.IPipePluggableRenderer; +import buildcraft.api.pipes.PipePluggable; import buildcraft.core.utils.MatrixTranformations; -public class FacadePluggable implements IPipePluggable { +public class FacadePluggable extends PipePluggable { public ItemFacade.FacadeState[] states; public FacadePluggable(ItemFacade.FacadeState[] states) { @@ -40,36 +40,11 @@ public class FacadePluggable implements IPipePluggable { return states == null ? null : new ItemStack[] { ItemFacade.getFacade(states) }; } - @Override - public void update(IPipeContainer pipe, ForgeDirection direction) { - - } - - @Override - public void onAttachedPipe(IPipeContainer pipe, ForgeDirection direction) { - - } - - @Override - public void onDetachedPipe(IPipeContainer pipe, ForgeDirection direction) { - - } - @Override public boolean isBlocking(IPipeContainer pipe, ForgeDirection direction) { return false; } - @Override - public void invalidate() { - - } - - @Override - public void validate(IPipeContainer pipe, ForgeDirection direction) { - - } - @Override public AxisAlignedBB getBoundingBox(ForgeDirection side) { float[][] bounds = new float[3][2]; diff --git a/common/buildcraft/transport/ItemFacade.java b/common/buildcraft/transport/ItemFacade.java index ce8f8a8c..34f78eb0 100644 --- a/common/buildcraft/transport/ItemFacade.java +++ b/common/buildcraft/transport/ItemFacade.java @@ -37,7 +37,6 @@ import buildcraft.api.core.Position; import buildcraft.api.facades.FacadeType; import buildcraft.api.facades.IFacadeItem; import buildcraft.api.recipes.BuildcraftRecipeRegistry; -import buildcraft.api.pipes.IPipePluggable; import buildcraft.api.pipes.IPipeContainer; import buildcraft.api.pipes.PipeWire; import buildcraft.core.BlockSpring; diff --git a/common/buildcraft/transport/ItemGateCopier.java b/common/buildcraft/transport/ItemGateCopier.java index e91f78c8..7ce75666 100644 --- a/common/buildcraft/transport/ItemGateCopier.java +++ b/common/buildcraft/transport/ItemGateCopier.java @@ -11,7 +11,7 @@ import net.minecraft.util.IIcon; import net.minecraft.world.World; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import buildcraft.api.pipes.IPipePluggable; +import buildcraft.api.pipes.PipePluggable; import buildcraft.core.ItemBuildCraft; import buildcraft.core.utils.NBTUtils; import buildcraft.transport.BlockGenericPipe.Part; @@ -56,7 +56,7 @@ public class ItemGateCopier extends ItemBuildCraft { RaytraceResult rayTraceResult = ((BlockGenericPipe) block).doRayTrace(world, x, y, z, player); if (rayTraceResult != null && rayTraceResult.boundingBox != null && rayTraceResult.hitPart == Part.Pluggable) { - IPipePluggable pluggable = ((TileGenericPipe) tile).getPipePluggable(rayTraceResult.sideHit); + PipePluggable pluggable = ((TileGenericPipe) tile).getPipePluggable(rayTraceResult.sideHit); if (pluggable instanceof GatePluggable) { gate = ((TileGenericPipe) tile).pipe.gates[rayTraceResult.sideHit.ordinal()]; } diff --git a/common/buildcraft/transport/ItemPlug.java b/common/buildcraft/transport/ItemPlug.java index 701ebbd9..c7b735f2 100755 --- a/common/buildcraft/transport/ItemPlug.java +++ b/common/buildcraft/transport/ItemPlug.java @@ -20,7 +20,6 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraftforge.common.util.ForgeDirection; import buildcraft.BuildCraftTransport; -import buildcraft.api.pipes.IPipePluggable; import buildcraft.api.pipes.IPipeContainer; import buildcraft.core.ItemBuildCraft; diff --git a/common/buildcraft/transport/ItemRobotStation.java b/common/buildcraft/transport/ItemRobotStation.java index ed75a1fa..c54c4ea4 100755 --- a/common/buildcraft/transport/ItemRobotStation.java +++ b/common/buildcraft/transport/ItemRobotStation.java @@ -20,7 +20,6 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraftforge.common.util.ForgeDirection; import buildcraft.BuildCraftTransport; -import buildcraft.api.pipes.IPipePluggable; import buildcraft.api.pipes.IPipeContainer; import buildcraft.core.CreativeTabBuildCraft; import buildcraft.core.ItemBuildCraft; diff --git a/common/buildcraft/transport/PipeEventBus.java b/common/buildcraft/transport/PipeEventBus.java index 058725c6..ec1e2fc7 100644 --- a/common/buildcraft/transport/PipeEventBus.java +++ b/common/buildcraft/transport/PipeEventBus.java @@ -52,12 +52,14 @@ public class PipeEventBus { Map> methods = new HashMap>(); for (Method m: handler.getClass().getDeclaredMethods()) { - Class[] parameters = m.getParameterTypes(); - if (parameters.length == 1 && PipeEvent.class.isAssignableFrom(parameters[0])) { - Class eventType = (Class) parameters[0]; - List eventHandlerList = getHandlerList(eventType); - eventHandlerList.add(new EventHandler(m, handler)); - methods.put(m, eventType); + if ("eventHandler".equals(m.getName())) { + Class[] parameters = m.getParameterTypes(); + if (parameters.length == 1 && PipeEvent.class.isAssignableFrom(parameters[0])) { + Class eventType = (Class) parameters[0]; + List eventHandlerList = getHandlerList(eventType); + eventHandlerList.add(new EventHandler(m, handler)); + methods.put(m, eventType); + } } } diff --git a/common/buildcraft/transport/PipePluggableState.java b/common/buildcraft/transport/PipePluggableState.java index 9e2fe3ee..81cb65c7 100644 --- a/common/buildcraft/transport/PipePluggableState.java +++ b/common/buildcraft/transport/PipePluggableState.java @@ -4,23 +4,23 @@ import io.netty.buffer.ByteBuf; import net.minecraftforge.common.util.ForgeDirection; import buildcraft.api.core.ISerializable; import buildcraft.api.pipes.IPipe; -import buildcraft.api.pipes.IPipePluggable; import buildcraft.api.pipes.PipeManager; +import buildcraft.api.pipes.PipePluggable; import buildcraft.transport.utils.ConnectionMatrix; public class PipePluggableState implements ISerializable { - private IPipePluggable[] pluggables = new IPipePluggable[6]; + private PipePluggable[] pluggables = new PipePluggable[6]; private ConnectionMatrix pluggableMatrix = new ConnectionMatrix(); public PipePluggableState() { } - public IPipePluggable[] getPluggables() { + public PipePluggable[] getPluggables() { return pluggables; } - public void setPluggables(IPipePluggable[] pluggables) { + public void setPluggables(PipePluggable[] pluggables) { this.pluggables = pluggables; this.pluggableMatrix.clean(); for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { @@ -31,7 +31,7 @@ public class PipePluggableState implements ISerializable { @Override public void writeData(ByteBuf data) { this.pluggableMatrix.writeData(data); - for (IPipePluggable p : pluggables) { + for (PipePluggable p : pluggables) { if (p != null) { data.writeShort(PipeManager.pipePluggables.indexOf(p.getClass())); p.writeData(data); @@ -45,7 +45,7 @@ public class PipePluggableState implements ISerializable { for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { if (this.pluggableMatrix.isConnected(dir)) { try { - IPipePluggable p = PipeManager.pipePluggables.get(data.readUnsignedShort()).newInstance(); + PipePluggable p = PipeManager.pipePluggables.get(data.readUnsignedShort()).newInstance(); p.readData(data); pluggables[dir.ordinal()] = p; } catch(Exception e) { diff --git a/common/buildcraft/transport/PlugPluggable.java b/common/buildcraft/transport/PlugPluggable.java index 5238c38b..7ac61c73 100644 --- a/common/buildcraft/transport/PlugPluggable.java +++ b/common/buildcraft/transport/PlugPluggable.java @@ -10,16 +10,16 @@ import buildcraft.BuildCraftTransport; import buildcraft.api.core.render.ITextureStates; import buildcraft.api.pipes.IPipe; import buildcraft.api.pipes.IPipeContainer; -import buildcraft.api.pipes.IPipePluggable; import buildcraft.api.pipes.IPipePluggableRenderer; +import buildcraft.api.pipes.PipePluggable; import buildcraft.core.utils.MatrixTranformations; -public class PlugPluggable implements IPipePluggable { +public class PlugPluggable extends PipePluggable { public class PlugPluggableRenderer implements IPipePluggableRenderer { private float zFightOffset = 1 / 4096.0F; @Override - public void renderPluggable(RenderBlocks renderblocks, IPipe pipe, ForgeDirection side, IPipePluggable pipePluggable, ITextureStates blockStateMachine, int x, int y, int z) { + public void renderPluggable(RenderBlocks renderblocks, IPipe pipe, ForgeDirection side, PipePluggable pipePluggable, ITextureStates blockStateMachine, int x, int y, int z) { float[][] zeroState = new float[3][2]; // X START - END @@ -78,36 +78,11 @@ public class PlugPluggable implements IPipePluggable { return new ItemStack[] { new ItemStack(BuildCraftTransport.plugItem) }; } - @Override - public void update(IPipeContainer pipe, ForgeDirection direction) { - - } - - @Override - public void onAttachedPipe(IPipeContainer pipe, ForgeDirection direction) { - - } - - @Override - public void onDetachedPipe(IPipeContainer pipe, ForgeDirection direction) { - - } - @Override public boolean isBlocking(IPipeContainer pipe, ForgeDirection direction) { return true; } - @Override - public void invalidate() { - - } - - @Override - public void validate(IPipeContainer pipe, ForgeDirection direction) { - - } - @Override public AxisAlignedBB getBoundingBox(ForgeDirection side) { float[][] bounds = new float[3][2]; diff --git a/common/buildcraft/transport/RobotStationPluggable.java b/common/buildcraft/transport/RobotStationPluggable.java index 550e2562..18a159f1 100644 --- a/common/buildcraft/transport/RobotStationPluggable.java +++ b/common/buildcraft/transport/RobotStationPluggable.java @@ -1,6 +1,5 @@ package buildcraft.transport; -import java.awt.*; import io.netty.buffer.ByteBuf; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.item.ItemStack; @@ -11,8 +10,8 @@ import buildcraft.BuildCraftTransport; import buildcraft.api.core.render.ITextureStates; import buildcraft.api.pipes.IPipe; import buildcraft.api.pipes.IPipeContainer; -import buildcraft.api.pipes.IPipePluggable; import buildcraft.api.pipes.IPipePluggableRenderer; +import buildcraft.api.pipes.PipePluggable; import buildcraft.core.robots.DockingStation; import buildcraft.core.robots.RobotRegistry; import buildcraft.core.utils.MatrixTranformations; @@ -20,7 +19,7 @@ import buildcraft.core.utils.MatrixTranformations; /** * Created by asie on 12/15/14. */ -public class RobotStationPluggable implements IPipePluggable { +public class RobotStationPluggable extends PipePluggable { public class RobotStationPluggableRenderer implements IPipePluggableRenderer { private float zFightOffset = 1 / 4096.0F; @@ -66,7 +65,7 @@ public class RobotStationPluggable implements IPipePluggable { } @Override - public void renderPluggable(RenderBlocks renderblocks, IPipe pipe, ForgeDirection side, IPipePluggable pipePluggable, ITextureStates blockStateMachine, int x, int y, int z) { + public void renderPluggable(RenderBlocks renderblocks, IPipe pipe, ForgeDirection side, PipePluggable pipePluggable, ITextureStates blockStateMachine, int x, int y, int z) { RobotStationState state = ((RobotStationPluggable) pipePluggable).renderState; //float width = 0.075F; @@ -165,21 +164,6 @@ public class RobotStationPluggable implements IPipePluggable { return new ItemStack[] { new ItemStack(BuildCraftTransport.robotStationItem) }; } - @Override - public void update(IPipeContainer pipe, ForgeDirection direction) { - - } - - @Override - public void onAttachedPipe(IPipeContainer pipe, ForgeDirection direction) { - validate(pipe, direction); - } - - @Override - public void onDetachedPipe(IPipeContainer pipe, ForgeDirection direction) { - invalidate(); - } - public DockingStation getStation() { return station; } diff --git a/common/buildcraft/transport/TileGenericPipe.java b/common/buildcraft/transport/TileGenericPipe.java index 19e1ecab..e8aa41c9 100644 --- a/common/buildcraft/transport/TileGenericPipe.java +++ b/common/buildcraft/transport/TileGenericPipe.java @@ -39,9 +39,9 @@ import buildcraft.api.core.Position; import buildcraft.api.gates.IGateExpansion; import buildcraft.api.pipes.IPipe; import buildcraft.api.pipes.IPipeConnection; -import buildcraft.api.pipes.IPipePluggable; import buildcraft.api.pipes.IPipeContainer; import buildcraft.api.pipes.PipeManager; +import buildcraft.api.pipes.PipePluggable; import buildcraft.api.pipes.PipeWire; import buildcraft.core.DefaultProps; import buildcraft.core.IDropControlInventory; @@ -100,11 +100,11 @@ public class TileGenericPipe extends TileEntity implements IFluidHandler, } public static class SideProperties { - IPipePluggable[] pluggables = new IPipePluggable[ForgeDirection.VALID_DIRECTIONS.length]; + PipePluggable[] pluggables = new PipePluggable[ForgeDirection.VALID_DIRECTIONS.length]; public void writeToNBT(NBTTagCompound nbt) { for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) { - IPipePluggable pluggable = pluggables[i]; + PipePluggable pluggable = pluggables[i]; final String key = "pluggable[" + i + "]"; if (pluggable == null) { nbt.removeTag(key); @@ -141,11 +141,11 @@ public class TileGenericPipe extends TileEntity implements IFluidHandler, } else { pluggableClass = PipeManager.getPluggableByName(pluggableData.getString("pluggableName")); } - if (!IPipePluggable.class.isAssignableFrom(pluggableClass)) { + if (!PipePluggable.class.isAssignableFrom(pluggableClass)) { BCLog.logger.warn("Wrong pluggable class: " + pluggableClass); continue; } - IPipePluggable pluggable = (IPipePluggable) pluggableClass.newInstance(); + PipePluggable pluggable = (PipePluggable) pluggableClass.newInstance(); pluggable.readFromNBT(pluggableData); pluggables[i] = pluggable; } catch (Exception e) { @@ -156,7 +156,7 @@ public class TileGenericPipe extends TileEntity implements IFluidHandler, // Migration code for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) { - IPipePluggable pluggable = null; + PipePluggable pluggable = null; if (nbt.hasKey("facadeState[" + i + "]")) { pluggable = new FacadePluggable(FacadeState.readArray(nbt.getTagList("facadeState[" + i + "]", Constants.NBT.TAG_COMPOUND))); } else { @@ -203,7 +203,7 @@ public class TileGenericPipe extends TileEntity implements IFluidHandler, } public void rotateLeft() { - IPipePluggable[] newPluggables = new IPipePluggable[ForgeDirection.VALID_DIRECTIONS.length]; + PipePluggable[] newPluggables = new PipePluggable[ForgeDirection.VALID_DIRECTIONS.length]; for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { newPluggables[dir.getRotation(ForgeDirection.UP).ordinal()] = pluggables[dir.ordinal()]; } @@ -212,7 +212,7 @@ public class TileGenericPipe extends TileEntity implements IFluidHandler, public boolean dropItem(TileGenericPipe pipe, ForgeDirection direction) { boolean result = false; - IPipePluggable pluggable = pluggables[direction.ordinal()]; + PipePluggable pluggable = pluggables[direction.ordinal()]; if (pluggable != null) { pluggable.onDetachedPipe(pipe, direction); ItemStack[] stacks = pluggable.getDropItems(pipe); @@ -229,7 +229,7 @@ public class TileGenericPipe extends TileEntity implements IFluidHandler, } public void invalidate() { - for (IPipePluggable p : pluggables) { + for (PipePluggable p : pluggables) { if (p != null) { p.invalidate(); } @@ -238,7 +238,7 @@ public class TileGenericPipe extends TileEntity implements IFluidHandler, public void validate(TileGenericPipe pipe) { for (ForgeDirection d : ForgeDirection.VALID_DIRECTIONS) { - IPipePluggable p = pluggables[d.ordinal()]; + PipePluggable p = pluggables[d.ordinal()]; if (p != null) { p.validate(pipe, d); @@ -376,7 +376,7 @@ public class TileGenericPipe extends TileEntity implements IFluidHandler, pipe.updateEntity(); for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) { - IPipePluggable p = getPipePluggable(direction); + PipePluggable p = getPipePluggable(direction); if (p != null) { p.update(this, direction); } @@ -501,7 +501,7 @@ public class TileGenericPipe extends TileEntity implements IFluidHandler, // Facades for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) { - IPipePluggable pluggable = sideProperties.pluggables[direction.ordinal()]; + PipePluggable pluggable = sideProperties.pluggables[direction.ordinal()]; if (!(pluggable instanceof FacadePluggable)) { renderState.facadeMatrix.setFacade(direction, null, 0, true); continue; @@ -772,7 +772,7 @@ public class TileGenericPipe extends TileEntity implements IFluidHandler, } protected boolean hasBlockingPluggable(ForgeDirection side) { - IPipePluggable pluggable = getPipePluggable(side); + PipePluggable pluggable = getPipePluggable(side); return pluggable != null && pluggable.isBlocking(this, side); } @@ -907,7 +907,7 @@ public class TileGenericPipe extends TileEntity implements IFluidHandler, } } - public boolean setPluggable(ForgeDirection direction, IPipePluggable pluggable) { + public boolean setPluggable(ForgeDirection direction, PipePluggable pluggable) { if (worldObj != null && worldObj.isRemote || pluggable == null) { return false; } @@ -934,13 +934,13 @@ public class TileGenericPipe extends TileEntity implements IFluidHandler, } public ItemStack getFacade(ForgeDirection direction) { - IPipePluggable pluggable = sideProperties.pluggables[direction.ordinal()]; + PipePluggable pluggable = sideProperties.pluggables[direction.ordinal()]; return pluggable instanceof FacadePluggable ? ItemFacade.getFacade(((FacadePluggable) pluggable).states) : null; } public DockingStation getStation(ForgeDirection direction) { - IPipePluggable pluggable = sideProperties.pluggables[direction.ordinal()]; + PipePluggable pluggable = sideProperties.pluggables[direction.ordinal()]; return pluggable instanceof RobotStationPluggable ? ((RobotStationPluggable) pluggable).getStation() : null; } @@ -1008,7 +1008,7 @@ public class TileGenericPipe extends TileEntity implements IFluidHandler, } case 2: { for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) { - final IPipePluggable pluggable = getPipePluggable(ForgeDirection.getOrientation(i)); + final PipePluggable pluggable = getPipePluggable(ForgeDirection.getOrientation(i)); if (pluggable != null && pluggable instanceof GatePluggable) { final GatePluggable gatePluggable = (GatePluggable) pluggable; Gate gate = pipe.gates[i]; @@ -1078,7 +1078,7 @@ public class TileGenericPipe extends TileEntity implements IFluidHandler, } @Override - public IPipePluggable getPipePluggable(ForgeDirection side) { + public PipePluggable getPipePluggable(ForgeDirection side) { if (side == null || side == ForgeDirection.UNKNOWN) { return null; } diff --git a/common/buildcraft/transport/gates/GatePluggable.java b/common/buildcraft/transport/gates/GatePluggable.java index 6ee509a3..29877651 100644 --- a/common/buildcraft/transport/gates/GatePluggable.java +++ b/common/buildcraft/transport/gates/GatePluggable.java @@ -12,14 +12,14 @@ import net.minecraftforge.common.util.ForgeDirection; import buildcraft.api.gates.GateExpansions; import buildcraft.api.gates.IGateExpansion; import buildcraft.api.pipes.IPipeContainer; -import buildcraft.api.pipes.IPipePluggable; import buildcraft.api.pipes.IPipePluggableRenderer; +import buildcraft.api.pipes.PipePluggable; import buildcraft.core.CoreConstants; import buildcraft.core.utils.MatrixTranformations; import buildcraft.transport.Gate; import buildcraft.transport.TileGenericPipe; -public class GatePluggable implements IPipePluggable { +public class GatePluggable extends PipePluggable { public GateDefinition.GateMaterial material; public GateDefinition.GateLogic logic; public IGateExpansion[] expansions; @@ -93,11 +93,6 @@ public class GatePluggable implements IPipePluggable { return new ItemStack[] { gate }; } - @Override - public void update(IPipeContainer pipe, ForgeDirection direction) { - - } - @Override public void onAttachedPipe(IPipeContainer pipe, ForgeDirection direction) { TileGenericPipe pipeReal = (TileGenericPipe) pipe; @@ -154,16 +149,6 @@ public class GatePluggable implements IPipePluggable { return true; } - @Override - public void invalidate() { - - } - - @Override - public void validate(IPipeContainer pipe, ForgeDirection direction) { - - } - @Override public AxisAlignedBB getBoundingBox(ForgeDirection side) { float min = CoreConstants.PIPE_MIN_POS + 0.05F; diff --git a/common/buildcraft/transport/gates/GatePluggableRender.java b/common/buildcraft/transport/gates/GatePluggableRender.java deleted file mode 100644 index 17fdd2c2..00000000 --- a/common/buildcraft/transport/gates/GatePluggableRender.java +++ /dev/null @@ -1,15 +0,0 @@ -package buildcraft.transport.gates; - -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraftforge.common.util.ForgeDirection; -import buildcraft.api.core.render.ITextureStates; -import buildcraft.api.pipes.IPipe; -import buildcraft.api.pipes.IPipePluggable; -import buildcraft.api.pipes.IPipePluggableRenderer; - -public class GatePluggableRender implements IPipePluggableRenderer { - @Override - public void renderPluggable(RenderBlocks renderblocks, IPipe pipe, ForgeDirection side, IPipePluggable pipePluggable, ITextureStates blockStateMachine, int x, int y, int z) { - - } -} diff --git a/common/buildcraft/transport/gates/ItemGate.java b/common/buildcraft/transport/gates/ItemGate.java index add751f0..322dcbda 100755 --- a/common/buildcraft/transport/gates/ItemGate.java +++ b/common/buildcraft/transport/gates/ItemGate.java @@ -33,7 +33,6 @@ import buildcraft.api.gates.GateExpansions; import buildcraft.api.gates.IGateExpansion; import buildcraft.api.pipes.IPipePluggableRenderer; import buildcraft.api.statements.StatementManager; -import buildcraft.api.pipes.IPipePluggable; import buildcraft.api.pipes.IPipeContainer; import buildcraft.core.ItemBuildCraft; import buildcraft.core.inventory.InvUtils; diff --git a/common/buildcraft/transport/pipes/PipeFluidsDiamond.java b/common/buildcraft/transport/pipes/PipeFluidsDiamond.java index 6e224da9..a68e77d6 100644 --- a/common/buildcraft/transport/pipes/PipeFluidsDiamond.java +++ b/common/buildcraft/transport/pipes/PipeFluidsDiamond.java @@ -8,6 +8,8 @@ */ package buildcraft.transport.pipes; +import java.util.ArrayList; +import java.util.List; import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; @@ -31,6 +33,7 @@ import buildcraft.transport.IDiamondPipe; import buildcraft.transport.Pipe; import buildcraft.transport.PipeIconProvider; import buildcraft.transport.PipeTransportFluids; +import buildcraft.transport.pipes.events.PipeEventFluid; public class PipeFluidsDiamond extends Pipe implements IDiamondPipe { @@ -124,22 +127,13 @@ public class PipeFluidsDiamond extends Pipe implements IDia return true; } - @Override - public boolean outputOpen(ForgeDirection to) { - if (!super.outputOpen(to)) { - return false; - } + public void eventHandler(PipeEventFluid.FindDest event) { + Fluid fluidInTank = event.fluidStack.getFluid(); + List removedDestinations = new ArrayList(); - // get center tank, from which outputs are checked; ignore if has no fluid - FluidTankInfo[] tanks = transport.getTankInfo(ForgeDirection.UNKNOWN); - if (tanks == null || tanks[0] == null || tanks[0].fluid == null || tanks[0].fluid.amount == 0) { - return true; - } - - Fluid fluidInTank = tanks[0].fluid.getFluid(); boolean[] validFilter = new boolean[6]; boolean isFiltered = false; - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + for (ForgeDirection dir : event.destinations) { if (container.isPipeConnected(dir) && filters.filteredDirections[dir.ordinal()]) { for (int slot = dir.ordinal() * 9; slot < dir.ordinal() * 9 + 9; ++slot) { if (filters.fluids[slot] != null && filters.fluids[slot].getID() == fluidInTank.getID()) { @@ -150,18 +144,25 @@ public class PipeFluidsDiamond extends Pipe implements IDia } } } - // the direction is filtered and liquids match - if (filters.filteredDirections[to.ordinal()] && validFilter[to.ordinal()]) { - return true; + + for (ForgeDirection to : event.destinations) { + // the direction is filtered and liquids match + if (filters.filteredDirections[to.ordinal()] && validFilter[to.ordinal()]) { + continue; + } + + // we haven't found a filter for this liquid and the direction is free + if (!isFiltered && !filters.filteredDirections[to.ordinal()]) { + continue; + } + + // we have a filter for the liquid, but not a valid direction + removedDestinations.add(to); } - // we haven't found a filter for this liquid and the direction is free - if (!isFiltered && !filters.filteredDirections[to.ordinal()]) { - return true; + for (ForgeDirection dir : removedDestinations) { + event.destinations.remove(dir); } - - // we have a filter for the liquid, but not a valid direction - return false; } /* SAVING & LOADING */ diff --git a/common/buildcraft/transport/render/PipeRendererWorld.java b/common/buildcraft/transport/render/PipeRendererWorld.java index 45a39547..f0e61b82 100644 --- a/common/buildcraft/transport/render/PipeRendererWorld.java +++ b/common/buildcraft/transport/render/PipeRendererWorld.java @@ -17,8 +17,8 @@ import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import net.minecraftforge.common.util.ForgeDirection; import buildcraft.api.core.IIconProvider; import buildcraft.api.core.render.ITextureStates; -import buildcraft.api.pipes.IPipePluggable; import buildcraft.api.pipes.IPipePluggableRenderer; +import buildcraft.api.pipes.PipePluggable; import buildcraft.core.CoreConstants; import buildcraft.core.utils.ColorUtils; import buildcraft.transport.PipeIconProvider; @@ -113,7 +113,7 @@ public class PipeRendererWorld implements ISimpleBlockRenderingHandler { if (renderPass == 0) { for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { if (tile.hasPipePluggable(dir)) { - IPipePluggable p = tile.getPipePluggable(dir); + PipePluggable p = tile.getPipePluggable(dir); IPipePluggableRenderer r = p.getRenderer(); if (r != null) { r.renderPluggable(renderblocks, tile.getPipe(), dir, p, fakeBlock, x, y, z);