add IPipeConnection support for pluggables, add coloring with dyes for lapis and daizuli pipes
This commit is contained in:
parent
f2a3010fca
commit
c78e48ecb5
4 changed files with 35 additions and 6 deletions
|
@ -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 {
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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,12 +83,20 @@ public class PipeItemsDaizuli extends Pipe<PipeTransportItems> implements ISeria
|
|||
|
||||
@Override
|
||||
public boolean blockActivated(EntityPlayer player) {
|
||||
if (player.isSneaking()) {
|
||||
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)) {
|
||||
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;
|
||||
}
|
||||
|
||||
return logic.blockActivated(player);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue