Merge branch 'BCPlug'

This commit is contained in:
Krapht 2013-05-09 16:25:41 +02:00
commit a40e7c5365
10 changed files with 275 additions and 96 deletions

View file

@ -72,6 +72,7 @@ item.PipeLiquidsVoid=Void Waterproof Pipe
item.PipeItemsSandstone=Sandstone Transport Pipe item.PipeItemsSandstone=Sandstone Transport Pipe
item.PipeLiquidsSandstone=Sandstone Waterproof Pipe item.PipeLiquidsSandstone=Sandstone Waterproof Pipe
item.Facade=Facade item.Facade=Facade
item.PipePlug=Pipe Plug
tile.miningWellBlock=Mining Well tile.miningWellBlock=Mining Well
tile.plainPipeBlock=Mining Pipe tile.plainPipeBlock=Mining Pipe
tile.autoWorkbenchBlock=Autocrafting Table tile.autoWorkbenchBlock=Autocrafting Table

View file

@ -37,6 +37,7 @@ import buildcraft.transport.GuiHandler;
import buildcraft.transport.ItemFacade; import buildcraft.transport.ItemFacade;
import buildcraft.transport.ItemGate; import buildcraft.transport.ItemGate;
import buildcraft.transport.ItemPipe; import buildcraft.transport.ItemPipe;
import buildcraft.transport.ItemPlug;
import buildcraft.transport.Pipe; import buildcraft.transport.Pipe;
import buildcraft.transport.PipeIconProvider; import buildcraft.transport.PipeIconProvider;
import buildcraft.transport.PipeTriggerProvider; import buildcraft.transport.PipeTriggerProvider;
@ -139,6 +140,7 @@ public class BuildCraftTransport {
public static Item pipePowerGold; public static Item pipePowerGold;
public static Item facadeItem; public static Item facadeItem;
public static Item plugItem;
// public static Item pipeItemsStipes; // public static Item pipeItemsStipes;
public static Item pipeStructureCobblestone; public static Item pipeStructureCobblestone;
@ -351,6 +353,11 @@ public class BuildCraftTransport {
Property pipeFacadeId = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_ITEM, "pipeFacade.id", DefaultProps.PIPE_FACADE_ID); Property pipeFacadeId = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_ITEM, "pipeFacade.id", DefaultProps.PIPE_FACADE_ID);
facadeItem = new ItemFacade(pipeFacadeId.getInt()); facadeItem = new ItemFacade(pipeFacadeId.getInt());
facadeItem.setUnlocalizedName("pipeFacade"); facadeItem.setUnlocalizedName("pipeFacade");
Property pipePlugId = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_ITEM, "pipePlug.id", DefaultProps.PIPE_PLUG_ID);
plugItem = new ItemPlug(pipePlugId.getInt());
plugItem.setUnlocalizedName("pipePlug");
AssemblyRecipe.assemblyRecipes.add(new AssemblyRecipe(new ItemStack[] {new ItemStack(pipeStructureCobblestone)}, 1000, new ItemStack(plugItem, 8)));
} finally { } finally {
BuildCraftCore.mainConfiguration.save(); BuildCraftCore.mainConfiguration.save();

View file

@ -54,6 +54,7 @@ public class DefaultProps {
// Moving to safer id range // Moving to safer id range
public static int GATE_AUTARCHIC_ID = 19140; public static int GATE_AUTARCHIC_ID = 19140;
public static int PIPE_FACADE_ID = 19141; public static int PIPE_FACADE_ID = 19141;
public static int PIPE_PLUG_ID = 19142;
public static int PIPE_ITEMS_WOOD_ID = 19160; public static int PIPE_ITEMS_WOOD_ID = 19160;
public static int PIPE_ITEMS_COBBLESTONE_ID = 19161; public static int PIPE_ITEMS_COBBLESTONE_ID = 19161;

View file

@ -0,0 +1,70 @@
package buildcraft.transport;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection;
import buildcraft.core.CreativeTabBuildCraft;
import buildcraft.core.ItemBuildCraft;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class ItemPlug extends ItemBuildCraft {
public ItemPlug(int i) {
super(i);
setCreativeTab(CreativeTabBuildCraft.tabBuildCraft);
}
@Override
public String getUnlocalizedName(ItemStack itemstack) {
return "item.PipePlug";
}
@Override
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World worldObj, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
if (worldObj.isRemote)
return false;
TileEntity tile = worldObj.getBlockTileEntity(x, y, z);
if (!(tile instanceof TileGenericPipe))
return false;
TileGenericPipe pipeTile = (TileGenericPipe) tile;
if (player.isSneaking()) { // Strip plug
if (!pipeTile.hasPlug(ForgeDirection.VALID_DIRECTIONS[side]))
return false;
pipeTile.removeAndDropPlug(ForgeDirection.VALID_DIRECTIONS[side]);
return true;
} else {
if (((TileGenericPipe) tile).addPlug(ForgeDirection.VALID_DIRECTIONS[side])){
if (!player.capabilities.isCreativeMode) {
stack.stackSize--;
}
return true;
}
return false;
}
}
@Override
public boolean shouldPassSneakingClickToBlock(World worldObj, int x, int y, int z ) {
return true;
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister par1IconRegister)
{
// NOOP
}
@Override
@SideOnly(Side.CLIENT)
public int getSpriteNumber()
{
return 0;
}
}

View file

@ -461,6 +461,9 @@ public abstract class Pipe implements IPipe, IDropControlInventory {
if (container.hasFacade(direction)) { if (container.hasFacade(direction)) {
container.dropFacade(direction); container.dropFacade(direction);
} }
if (container.hasPlug(direction)){
container.removeAndDropPlug(direction);
}
} }
if (broadcastRedstone) { if (broadcastRedstone) {

View file

@ -21,6 +21,7 @@ public class PipeRenderState implements IClientState {
public final ConnectionMatrix pipeConnectionMatrix = new ConnectionMatrix(); public final ConnectionMatrix pipeConnectionMatrix = new ConnectionMatrix();
public final TextureMatrix textureMatrix = new TextureMatrix(); public final TextureMatrix textureMatrix = new TextureMatrix();
public final WireMatrix wireMatrix = new WireMatrix(); public final WireMatrix wireMatrix = new WireMatrix();
public final ConnectionMatrix plugMatrix = new ConnectionMatrix();
public final FacadeMatrix facadeMatrix = new FacadeMatrix(); public final FacadeMatrix facadeMatrix = new FacadeMatrix();
@ -63,7 +64,7 @@ public class PipeRenderState implements IClientState {
} }
public boolean isDirty() { public boolean isDirty() {
return dirty || pipeConnectionMatrix.isDirty() || textureMatrix.isDirty() || wireMatrix.isDirty() || facadeMatrix.isDirty(); return dirty || pipeConnectionMatrix.isDirty() || textureMatrix.isDirty() || wireMatrix.isDirty() || facadeMatrix.isDirty() || plugMatrix.isDirty();
} }
@Override @Override
@ -74,6 +75,7 @@ public class PipeRenderState implements IClientState {
textureMatrix.writeData(data); textureMatrix.writeData(data);
wireMatrix.writeData(data); wireMatrix.writeData(data);
facadeMatrix.writeData(data); facadeMatrix.writeData(data);
plugMatrix.writeData(data);
} }
@Override @Override
@ -84,5 +86,6 @@ public class PipeRenderState implements IClientState {
textureMatrix.readData(data); textureMatrix.readData(data);
wireMatrix.readData(data); wireMatrix.readData(data);
facadeMatrix.readData(data); facadeMatrix.readData(data);
plugMatrix.readData(data);
} }
} }

View file

@ -13,6 +13,7 @@ import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.io.IOException; import java.io.IOException;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.logging.Level;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
@ -51,7 +52,6 @@ import buildcraft.transport.Gate.GateKind;
import buildcraft.transport.network.PipeRenderStatePacket; import buildcraft.transport.network.PipeRenderStatePacket;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import java.util.logging.Level;
public class TileGenericPipe extends TileEntity implements IPowerReceptor, ITankContainer, IPipeEntry, IPipeTile, IOverrideDefaultTriggers, ITileBufferHolder, public class TileGenericPipe extends TileEntity implements IPowerReceptor, ITankContainer, IPipeEntry, IPipeTile, IOverrideDefaultTriggers, ITileBufferHolder,
IPipeConnection, IDropControlInventory, IPipeRenderState, ISyncedTile, ISolidSideTile { IPipeConnection, IDropControlInventory, IPipeRenderState, ISyncedTile, ISolidSideTile {
@ -91,6 +91,7 @@ public class TileGenericPipe extends TileEntity implements IPowerReceptor, ITank
private int[] facadeBlocks = new int[ForgeDirection.VALID_DIRECTIONS.length]; private int[] facadeBlocks = new int[ForgeDirection.VALID_DIRECTIONS.length];
private int[] facadeMeta = new int[ForgeDirection.VALID_DIRECTIONS.length]; private int[] facadeMeta = new int[ForgeDirection.VALID_DIRECTIONS.length];
private boolean[] plugs = new boolean[ForgeDirection.VALID_DIRECTIONS.length];
public TileGenericPipe() { public TileGenericPipe() {
@ -110,6 +111,7 @@ public class TileGenericPipe extends TileEntity implements IPowerReceptor, ITank
for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) { for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) {
nbttagcompound.setInteger("facadeBlocks[" + i + "]", facadeBlocks[i]); nbttagcompound.setInteger("facadeBlocks[" + i + "]", facadeBlocks[i]);
nbttagcompound.setInteger("facadeMeta[" + i + "]", facadeMeta[i]); nbttagcompound.setInteger("facadeMeta[" + i + "]", facadeMeta[i]);
nbttagcompound.setBoolean("plug[" + i + "]", plugs[i]);
} }
} }
@ -131,6 +133,7 @@ public class TileGenericPipe extends TileEntity implements IPowerReceptor, ITank
for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) { for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) {
facadeBlocks[i] = nbttagcompound.getInteger("facadeBlocks[" + i + "]"); facadeBlocks[i] = nbttagcompound.getInteger("facadeBlocks[" + i + "]");
facadeMeta[i] = nbttagcompound.getInteger("facadeMeta[" + i + "]"); facadeMeta[i] = nbttagcompound.getInteger("facadeMeta[" + i + "]");
plugs[i] = nbttagcompound.getBoolean("plug[" + i + "]");
} }
} }
@ -250,11 +253,15 @@ public class TileGenericPipe extends TileEntity implements IPowerReceptor, ITank
renderState.facadeMatrix.setFacade(direction, blockId, this.facadeMeta[direction.ordinal()]); renderState.facadeMatrix.setFacade(direction, blockId, this.facadeMeta[direction.ordinal()]);
} }
//Plugs
for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS){
renderState.plugMatrix.setConnected(direction, plugs[direction.ordinal()]);
}
if (renderState.isDirty()) { if (renderState.isDirty()) {
worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
renderState.clean(); renderState.clean();
} }
} }
public void initialize(Pipe pipe) { public void initialize(Pipe pipe) {
@ -470,11 +477,14 @@ public class TileGenericPipe extends TileEntity implements IPowerReceptor, ITank
protected boolean arePipesConnected(TileEntity with, ForgeDirection side) { protected boolean arePipesConnected(TileEntity with, ForgeDirection side) {
Pipe pipe1 = pipe; Pipe pipe1 = pipe;
if (hasPlug(side)) return false;
if (!BlockGenericPipe.isValid(pipe1)) if (!BlockGenericPipe.isValid(pipe1))
return false; return false;
if (with instanceof TileGenericPipe) { if (with instanceof TileGenericPipe) {
if (((TileGenericPipe)with).hasPlug(side.getOpposite())) return false;
Pipe pipe2 = ((TileGenericPipe) with).pipe; Pipe pipe2 = ((TileGenericPipe) with).pipe;
if (!BlockGenericPipe.isValid(pipe2)) if (!BlockGenericPipe.isValid(pipe2))
@ -685,4 +695,28 @@ public class TileGenericPipe extends TileEntity implements IPowerReceptor, ITank
} }
return false; return false;
} }
public boolean hasPlug(ForgeDirection forgeDirection) {
return plugs[forgeDirection.ordinal()];
}
public void removeAndDropPlug(ForgeDirection forgeDirection) {
if (!hasPlug(forgeDirection)) return;
plugs[forgeDirection.ordinal()] = false;
Utils.dropItems(worldObj, new ItemStack(BuildCraftTransport.plugItem), this.xCoord, this.yCoord, this.zCoord);
worldObj.notifyBlockChange(this.xCoord, this.yCoord, this.zCoord, worldObj.getBlockId(this.xCoord, this.yCoord, this.zCoord));
scheduleNeighborChange(); //To force recalculation of connections
scheduleRenderUpdate();
}
public boolean addPlug(ForgeDirection forgeDirection) {
if (hasPlug(forgeDirection)) return false;
plugs[forgeDirection.ordinal()] = true;
worldObj.notifyBlockChange(this.xCoord, this.yCoord, this.zCoord, worldObj.getBlockId(this.xCoord, this.yCoord, this.zCoord));
scheduleNeighborChange(); //To force recalculation of connections
scheduleRenderUpdate();
return true;
}
} }

View file

@ -5,6 +5,7 @@ import buildcraft.BuildCraftTransport;
import buildcraft.transport.render.FacadeItemRenderer; import buildcraft.transport.render.FacadeItemRenderer;
import buildcraft.transport.render.PipeItemRenderer; import buildcraft.transport.render.PipeItemRenderer;
import buildcraft.transport.render.PipeWorldRenderer; import buildcraft.transport.render.PipeWorldRenderer;
import buildcraft.transport.render.PlugItemRenderer;
import buildcraft.transport.render.RenderPipe; import buildcraft.transport.render.RenderPipe;
import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.client.registry.ClientRegistry;
import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.client.registry.RenderingRegistry;
@ -13,6 +14,7 @@ public class TransportProxyClient extends TransportProxy {
public final static PipeItemRenderer pipeItemRenderer = new PipeItemRenderer(); public final static PipeItemRenderer pipeItemRenderer = new PipeItemRenderer();
public final static PipeWorldRenderer pipeWorldRenderer = new PipeWorldRenderer(); public final static PipeWorldRenderer pipeWorldRenderer = new PipeWorldRenderer();
public final static FacadeItemRenderer facadeItemRenderer = new FacadeItemRenderer(); public final static FacadeItemRenderer facadeItemRenderer = new FacadeItemRenderer();
public final static PlugItemRenderer plugItemRenderer = new PlugItemRenderer();
@Override @Override
public void registerTileEntities() { public void registerTileEntities() {
@ -53,6 +55,7 @@ public class TransportProxyClient extends TransportProxy {
MinecraftForgeClient.registerItemRenderer(BuildCraftTransport.pipeLiquidsSandstone.itemID, pipeItemRenderer); MinecraftForgeClient.registerItemRenderer(BuildCraftTransport.pipeLiquidsSandstone.itemID, pipeItemRenderer);
MinecraftForgeClient.registerItemRenderer(BuildCraftTransport.facadeItem.itemID, facadeItemRenderer); MinecraftForgeClient.registerItemRenderer(BuildCraftTransport.facadeItem.itemID, facadeItemRenderer);
MinecraftForgeClient.registerItemRenderer(BuildCraftTransport.plugItem.itemID, plugItemRenderer);
TransportProxy.pipeModel = RenderingRegistry.getNextAvailableRenderId(); TransportProxy.pipeModel = RenderingRegistry.getNextAvailableRenderId();
RenderingRegistry.registerBlockHandler(pipeWorldRenderer); RenderingRegistry.registerBlockHandler(pipeWorldRenderer);

View file

@ -162,6 +162,7 @@ public class PipeWorldRenderer implements ISimpleBlockRenderingHandler {
} }
pipeFacadeRenderer(renderblocks, block, state, x, y, z); pipeFacadeRenderer(renderblocks, block, state, x, y, z);
pipePlugRenderer(renderblocks, block, state, x, y, z);
} }
@ -252,100 +253,59 @@ public class PipeWorldRenderer implements ISimpleBlockRenderingHandler {
renderblocks.renderStandardBlock(block, x, y, z); renderblocks.renderStandardBlock(block, x, y, z);
} }
} }
}
/** WHOLE BUNCH OF OLD (WORKING) RENDER CODE, WILL CLEAN UP LATER **/ private void pipePlugRenderer(RenderBlocks renderblocks, Block block, PipeRenderState state, int x, int y, int z) {
float zFightOffset = 1F / 4096F;
// if (state.facadeMatrix.isConnected(ForgeDirection.WEST)){ float[][] zeroState = new float[3][2];
// MinecraftForgeClient.bindTexture(state.facadeMatrix.getTextureFile(ForgeDirection.WEST)); // X START - END
// state.currentTextureIndex = state.facadeMatrix.getTextureIndex(ForgeDirection.WEST); zeroState[0][0] = 0.25F + zFightOffset;
// block.setBlockBounds(0.0F - zFightOffset, 0.0F, 0.0F, facadeThickness, 1.0F, 1F); zeroState[0][1] = 0.75F - zFightOffset;
// renderblocks.renderStandardBlock(block, x, y, z); // Y START - END
// } zeroState[1][0] = 0.125F;
// zeroState[1][1] = 0.25F;
// if (state.facadeMatrix.isConnected(ForgeDirection.EAST)){ // Z START - END
// MinecraftForgeClient.bindTexture(state.facadeMatrix.getTextureFile(ForgeDirection.EAST)); zeroState[2][0] = 0.25F + zFightOffset;
// state.currentTextureIndex = state.facadeMatrix.getTextureIndex(ForgeDirection.EAST); zeroState[2][1] = 0.75F - zFightOffset;
// block.setBlockBounds(1F-facadeThickness, 0.0F, 0.0F, 1.0F + zFightOffset, 1.0F, 1F);
// renderblocks.renderStandardBlock(block, x, y, z); state.currentTexture = BuildCraftTransport.instance.pipeIconProvider.getIcon(PipeIconProvider.PipeStructureCobblestone); // Structure Pipe
// }
// for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) {
// if (state.plugMatrix.isConnected(direction)) {
// if (state.facadeMatrix.isConnected(ForgeDirection.DOWN)){ float[][] rotated = deepClone(zeroState);
// MinecraftForgeClient.bindTexture(state.facadeMatrix.getTextureFile(ForgeDirection.DOWN)); transform(rotated, direction);
// state.currentTextureIndex = state.facadeMatrix.getTextureIndex(ForgeDirection.DOWN);
// block.setBlockBounds(0.0F, 0.0F - zFightOffset, 0.0F, 1.0F, facadeThickness, 1F); block.setBlockBounds(rotated[0][0], rotated[1][0], rotated[2][0], rotated[0][1], rotated[1][1], rotated[2][1]);
// renderblocks.renderStandardBlock(block, x, y, z); renderblocks.setRenderBoundsFromBlock(block);
// } renderblocks.renderStandardBlock(block, x, y, z);
// }
// if (state.facadeMatrix.isConnected(ForgeDirection.UP)){ }
// MinecraftForgeClient.bindTexture(state.facadeMatrix.getTextureFile(ForgeDirection.UP));
// state.currentTextureIndex = state.facadeMatrix.getTextureIndex(ForgeDirection.UP); // X START - END
// zeroState[0][0] = 0.25F + 0.125F/2 + zFightOffset;
// if (state.pipeConnectionMatrix.isConnected(ForgeDirection.UP)){ zeroState[0][1] = 0.75F - 0.125F/2 + zFightOffset;
// block.setBlockBounds(0.0F, 1F-facadeThickness, 0.0F, 1.0F - Utils.pipeMaxPos, 1.0F + zFightOffset / 2 , 1F); // Y START - END
// renderblocks.renderStandardBlock(block, x, y, z); zeroState[1][0] = 0.25F;
// zeroState[1][1] = 0.25F + 0.125F;
// block.setBlockBounds(0.0F, 1F-facadeThickness, 0.0F, 1.0F, 1.0F + zFightOffset , 1F - Utils.pipeMaxPos); // Z START - END
// renderblocks.renderStandardBlock(block, x, y, z); zeroState[2][0] = 0.25F + 0.125F/2;
// zeroState[2][1] = 0.75F - 0.125F/2;
// block.setBlockBounds(0.0F + Utils.pipeMaxPos, 1F-facadeThickness, 0.0F, 1.0F, 1.0F + zFightOffset / 2 , 1F);
// renderblocks.renderStandardBlock(block, x, y, z); state.currentTexture = BuildCraftTransport.instance.pipeIconProvider.getIcon(PipeIconProvider.PipeStructureCobblestone); // Structure Pipe
//
// block.setBlockBounds(0.0F, 1F-facadeThickness, 0.0F + Utils.pipeMaxPos, 1.0F, 1.0F + zFightOffset , 1F); for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) {
// renderblocks.renderStandardBlock(block, x, y, z); if (state.plugMatrix.isConnected(direction)) {
// } else { float[][] rotated = deepClone(zeroState);
// block.setBlockBounds(0.0F, 1F-facadeThickness, 0.0F, 1.0F, 1.0F + zFightOffset , 1F); transform(rotated, direction);
// renderblocks.renderStandardBlock(block, x, y, z);
// } block.setBlockBounds(rotated[0][0], rotated[1][0], rotated[2][0], rotated[0][1], rotated[1][1], rotated[2][1]);
// } renderblocks.setRenderBoundsFromBlock(block);
// renderblocks.renderStandardBlock(block, x, y, z);
// if (state.facadeMatrix.isConnected(ForgeDirection.NORTH)){ }
// MinecraftForgeClient.bindTexture(state.facadeMatrix.getTextureFile(ForgeDirection.NORTH)); }
// state.currentTextureIndex = state.facadeMatrix.getTextureIndex(ForgeDirection.NORTH);
// block.setBlockBounds(0.0F, 0.0F, 0.0F - zFightOffset, 1.0F, 1F, facadeThickness);
// renderblocks.renderStandardBlock(block, x, y, z);
// }
//
//
// if (state.facadeMatrix.isConnected(ForgeDirection.SOUTH)){
// MinecraftForgeClient.bindTexture(state.facadeMatrix.getTextureFile(ForgeDirection.SOUTH));
// state.currentTextureIndex = state.facadeMatrix.getTextureIndex(ForgeDirection.SOUTH);
// block.setBlockBounds(0.0F, 0.0F, 1F-facadeThickness, 1.0F, 1F, 1.0F + zFightOffset);
// renderblocks.renderStandardBlock(block, x, y, z);
// }
//
// MinecraftForgeClient.bindTexture(DefaultProps.TEXTURE_BLOCKS);
// state.currentTextureIndex = 7 * 16 + 13; // Structure Pipe
//
// if (state.facadeMatrix.isConnected(ForgeDirection.WEST) && !state.pipeConnectionMatrix.isConnected(ForgeDirection.WEST)){
// block.setBlockBounds(0 + facadeThickness, Utils.pipeMinPos, Utils.pipeMinPos, Utils.pipeMinPos, Utils.pipeMaxPos, Utils.pipeMaxPos);
// renderblocks.renderStandardBlock(block, x, y, z);
// }
//
// if (state.facadeMatrix.isConnected(ForgeDirection.EAST) && !state.pipeConnectionMatrix.isConnected(ForgeDirection.EAST)){
// block.setBlockBounds(Utils.pipeMaxPos, Utils.pipeMinPos, Utils.pipeMinPos, 1F - facadeThickness, Utils.pipeMaxPos, Utils.pipeMaxPos);
// renderblocks.renderStandardBlock(block, x, y, z);
// }
//
// if (state.facadeMatrix.isConnected(ForgeDirection.DOWN) && !state.pipeConnectionMatrix.isConnected(ForgeDirection.DOWN)){
// block.setBlockBounds(Utils.pipeMinPos, 0 + facadeThickness, Utils.pipeMinPos, Utils.pipeMaxPos, Utils.pipeMinPos, Utils.pipeMaxPos);
// renderblocks.renderStandardBlock(block, x, y, z);
// }
//
// if (state.facadeMatrix.isConnected(ForgeDirection.UP) && !state.pipeConnectionMatrix.isConnected(ForgeDirection.UP)){
// block.setBlockBounds(Utils.pipeMinPos, Utils.pipeMaxPos, Utils.pipeMinPos, Utils.pipeMaxPos, 1F - facadeThickness, Utils.pipeMaxPos);
// renderblocks.renderStandardBlock(block, x, y, z);
// }
//
// if (state.facadeMatrix.isConnected(ForgeDirection.NORTH) && !state.pipeConnectionMatrix.isConnected(ForgeDirection.NORTH)){
// block.setBlockBounds(Utils.pipeMinPos, Utils.pipeMinPos, 0 + facadeThickness, Utils.pipeMaxPos, Utils.pipeMaxPos, Utils.pipeMinPos);
// renderblocks.renderStandardBlock(block, x, y, z);
// }
//
// if (state.facadeMatrix.isConnected(ForgeDirection.SOUTH) && !state.pipeConnectionMatrix.isConnected(ForgeDirection.SOUTH)){
// block.setBlockBounds(Utils.pipeMinPos, Utils.pipeMinPos, Utils.pipeMaxPos, Utils.pipeMaxPos, Utils.pipeMaxPos, 1F - facadeThickness);
// renderblocks.renderStandardBlock(block, x, y, z);
// }
} }
private void pipeWireRender(RenderBlocks renderblocks, Block block, PipeRenderState state, float cx, float cy, float cz, IPipe.WireColor color, int x, private void pipeWireRender(RenderBlocks renderblocks, Block block, PipeRenderState state, float cx, float cy, float cz, IPipe.WireColor color, int x,
@ -518,7 +478,7 @@ public class PipeWorldRenderer implements ISimpleBlockRenderingHandler {
} }
private boolean shouldRenderNormalPipeSide(PipeRenderState state, ForgeDirection direction){ private boolean shouldRenderNormalPipeSide(PipeRenderState state, ForgeDirection direction){
return !state.pipeConnectionMatrix.isConnected(direction) && state.facadeMatrix.getFacadeBlockId(direction) == 0; return !state.pipeConnectionMatrix.isConnected(direction) && state.facadeMatrix.getFacadeBlockId(direction) == 0 && !state.plugMatrix.isConnected(direction);
} }
@Override @Override

View file

@ -0,0 +1,97 @@
package buildcraft.transport.render;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Icon;
import net.minecraftforge.client.IItemRenderer;
import org.lwjgl.opengl.GL11;
import buildcraft.BuildCraftTransport;
import buildcraft.transport.PipeIconProvider;
public class PlugItemRenderer implements IItemRenderer{
private void renderPlugItem(RenderBlocks render, ItemStack item, float translateX, float translateY, float translateZ) {
// Render StructurePipe
Block block = BuildCraftTransport.genericPipeBlock;
Tessellator tessellator = Tessellator.instance;
block = BuildCraftTransport.genericPipeBlock;
Icon textureID = BuildCraftTransport.instance.pipeIconProvider.getIcon(PipeIconProvider.PipeStructureCobblestone); // Structure pipe
block.setBlockBounds(0.25F, 0.25F, 0.25F, 0.75F, 0.375F, 0.75F);
block.setBlockBoundsForItemRender();
render.setRenderBoundsFromBlock(block);
GL11.glTranslatef(translateX, translateY, translateZ + 0.25F);
tessellator.startDrawingQuads();
tessellator.setNormal(0.0F, -0F, 0.0F);
render.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, textureID);
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setNormal(0.0F, 1.0F, 0.0F);
render.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, textureID);
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setNormal(0.0F, 0.0F, -1F);
render.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, textureID);
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setNormal(0.0F, 0.0F, 1.0F);
render.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, textureID);
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setNormal(-1F, 0.0F, 0.0F);
render.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, textureID);
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setNormal(1.0F, 0.0F, 0.0F);
render.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, textureID);
tessellator.draw();
}
@Override
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
switch (type) {
case ENTITY:
return true;
case EQUIPPED:
return true;
case INVENTORY:
return true;
default:
return false;
}
}
@Override
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
return true;
}
@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
switch (type) {
case ENTITY:
GL11.glScalef(0.50F, 0.50F, 0.50F);
renderPlugItem((RenderBlocks) data[0], item, -0.6F, 0f, -0.6F);
break;
case EQUIPPED:
renderPlugItem((RenderBlocks) data[0], item, 0F, 0F, 0f);
break;
case INVENTORY:
GL11.glScalef(1.1F, 1.1F, 1.1F);
renderPlugItem((RenderBlocks) data[0], item, -0.3f, -0.35f, -0.7f);
break;
default:
}
}
}