From c78e48ecb55ae6e6bee0a8c6fa3935e2b2c3e6dd Mon Sep 17 00:00:00 2001 From: asiekierka Date: Thu, 18 Dec 2014 17:15:41 +0100 Subject: [PATCH] add IPipeConnection support for pluggables, add coloring with dyes for lapis and daizuli pipes --- .../api/transport/IPipeContainer.java | 1 - .../buildcraft/transport/TileGenericPipe.java | 17 ++++++++++++++++- .../transport/pipes/PipeItemsDaizuli.java | 17 +++++++++++++---- .../transport/pipes/PipeItemsLapis.java | 6 ++++++ 4 files changed, 35 insertions(+), 6 deletions(-) diff --git a/api/buildcraft/api/transport/IPipeContainer.java b/api/buildcraft/api/transport/IPipeContainer.java index b1c0e79a..36299d1e 100644 --- a/api/buildcraft/api/transport/IPipeContainer.java +++ b/api/buildcraft/api/transport/IPipeContainer.java @@ -12,7 +12,6 @@ import net.minecraft.block.Block; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -import buildcraft.api.transport.pluggable.IPipePluggableContainer; import buildcraft.api.transport.pluggable.PipePluggable; public interface IPipeContainer extends IInjectable { diff --git a/common/buildcraft/transport/TileGenericPipe.java b/common/buildcraft/transport/TileGenericPipe.java index 54ab9861..a1f071d6 100644 --- a/common/buildcraft/transport/TileGenericPipe.java +++ b/common/buildcraft/transport/TileGenericPipe.java @@ -766,7 +766,22 @@ public class TileGenericPipe extends TileEntity implements IFluidHandler, protected boolean hasBlockingPluggable(ForgeDirection side) { PipePluggable pluggable = getPipePluggable(side); - return pluggable != null && pluggable.isBlocking(this, side); + if (pluggable == null) { + return false; + } + + if (pluggable instanceof IPipeConnection) { + IPipe pipe = getNeighborPipe(side); + if (pipe != null) { + IPipeConnection.ConnectOverride override = ((IPipeConnection) pluggable).overridePipeConnection(pipe.getTile().getPipeType(), side); + if (override == IPipeConnection.ConnectOverride.CONNECT) { + return true; + } else if (override == IPipeConnection.ConnectOverride.DISCONNECT) { + return false; + } + } + } + return pluggable.isBlocking(this, side); } private void computeConnections() { diff --git a/common/buildcraft/transport/pipes/PipeItemsDaizuli.java b/common/buildcraft/transport/pipes/PipeItemsDaizuli.java index fd34c246..0fe2dfc4 100644 --- a/common/buildcraft/transport/pipes/PipeItemsDaizuli.java +++ b/common/buildcraft/transport/pipes/PipeItemsDaizuli.java @@ -27,6 +27,7 @@ import buildcraft.api.core.IIconProvider; import buildcraft.api.statements.IActionInternal; import buildcraft.api.tools.IToolWrench; import buildcraft.api.core.ISerializable; +import buildcraft.core.utils.ColorUtils; import buildcraft.transport.Pipe; import buildcraft.transport.PipeIconProvider; import buildcraft.transport.PipeTransportItems; @@ -82,10 +83,18 @@ public class PipeItemsDaizuli extends Pipe implements ISeria @Override public boolean blockActivated(EntityPlayer player) { - Item equipped = player.getCurrentEquippedItem() != null ? player.getCurrentEquippedItem().getItem() : null; - if (player.isSneaking() && equipped instanceof IToolWrench && ((IToolWrench) equipped).canWrench(player, container.xCoord, container.yCoord, container.zCoord)) { - setColor(getColor().getNext()); - ((IToolWrench) equipped).wrenchUsed(player, container.xCoord, container.yCoord, container.zCoord); + if (player.isSneaking()) { + Item equipped = player.getCurrentEquippedItem() != null ? player.getCurrentEquippedItem().getItem() : null; + if (equipped instanceof IToolWrench && ((IToolWrench) equipped).canWrench(player, container.xCoord, container.yCoord, container.zCoord)) { + setColor(getColor().getNext()); + ((IToolWrench) equipped).wrenchUsed(player, container.xCoord, container.yCoord, container.zCoord); + return true; + } + } + + int color = ColorUtils.getColorIDFromDye(player.getCurrentEquippedItem()); + if (color >= 0 && color < 16) { + setColor(EnumColor.fromId(15 - color)); return true; } diff --git a/common/buildcraft/transport/pipes/PipeItemsLapis.java b/common/buildcraft/transport/pipes/PipeItemsLapis.java index 8749a563..8f5a31ea 100644 --- a/common/buildcraft/transport/pipes/PipeItemsLapis.java +++ b/common/buildcraft/transport/pipes/PipeItemsLapis.java @@ -22,6 +22,7 @@ import buildcraft.api.core.EnumColor; import buildcraft.api.core.IIconProvider; import buildcraft.api.statements.IActionInternal; import buildcraft.api.tools.IToolWrench; +import buildcraft.core.utils.ColorUtils; import buildcraft.transport.Pipe; import buildcraft.transport.PipeIconProvider; import buildcraft.transport.PipeTransportItems; @@ -63,6 +64,11 @@ public class PipeItemsLapis extends Pipe { ((IToolWrench) equipped).wrenchUsed(player, container.xCoord, container.yCoord, container.zCoord); return true; + } else { + int color = ColorUtils.getColorIDFromDye(player.getCurrentEquippedItem()); + if (color >= 0 && color < 16) { + setColor(EnumColor.fromId(15 - color)); + } } return false;