add IPipeConnection support for pluggables, add coloring with dyes for lapis and daizuli pipes

This commit is contained in:
asiekierka 2014-12-18 17:15:41 +01:00
parent f2a3010fca
commit c78e48ecb5
4 changed files with 35 additions and 6 deletions

View file

@ -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 {

View file

@ -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() {

View file

@ -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<PipeTransportItems> 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;
}

View file

@ -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<PipeTransportItems> {
((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;