Pulled the pipe world renderer out of core and put it in transport, also made the actual rendering a class of its own. Legacy world rendering not touched (quarry frames)
This commit is contained in:
parent
9758782f19
commit
eec4aa0323
8 changed files with 348 additions and 314 deletions
|
@ -0,0 +1,273 @@
|
|||
package net.minecraft.src.buildcraft.transport;
|
||||
|
||||
import net.minecraft.src.Block;
|
||||
import net.minecraft.src.IBlockAccess;
|
||||
import net.minecraft.src.RenderBlocks;
|
||||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraft.src.buildcraft.api.IPipe;
|
||||
import net.minecraft.src.buildcraft.api.Orientations;
|
||||
import net.minecraft.src.buildcraft.api.IPipe.DrawingState;
|
||||
import net.minecraft.src.buildcraft.core.DefaultProps;
|
||||
import net.minecraft.src.buildcraft.core.ITileBufferHolder;
|
||||
import net.minecraft.src.buildcraft.core.Utils;
|
||||
import net.minecraft.src.forge.MinecraftForgeClient;
|
||||
|
||||
public class PipeWorldRenderer {
|
||||
|
||||
public void pipeRender(RenderBlocks renderblocks, IBlockAccess iblockaccess, TileEntity tile, Block block, int l) {
|
||||
|
||||
ITileBufferHolder holder = (ITileBufferHolder) tile;
|
||||
|
||||
float minSize = Utils.pipeMinPos;
|
||||
float maxSize = Utils.pipeMaxPos;
|
||||
|
||||
IPipe pipe = ((TileGenericPipe)tile).pipe;
|
||||
|
||||
pipe.setDrawingState(DrawingState.DrawingPipe);
|
||||
|
||||
pipe.prepareTextureFor(Orientations.Unknown);
|
||||
block.setBlockBounds(minSize, minSize, minSize, maxSize, maxSize, maxSize);
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
|
||||
if (Utils.checkPipesConnections(tile, holder.getTile(Orientations.XNeg))) {
|
||||
pipe.prepareTextureFor(Orientations.XNeg);
|
||||
block.setBlockBounds(0.0F, minSize, minSize, minSize, maxSize, maxSize);
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
if (Utils.checkPipesConnections(tile, holder.getTile(Orientations.XPos))) {
|
||||
pipe.prepareTextureFor(Orientations.XPos);
|
||||
block.setBlockBounds(maxSize, minSize, minSize, 1.0F, maxSize, maxSize);
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
if (Utils.checkPipesConnections(tile, holder.getTile(Orientations.YNeg))) {
|
||||
pipe.prepareTextureFor(Orientations.YNeg);
|
||||
block.setBlockBounds(minSize, 0.0F, minSize, maxSize, minSize, maxSize);
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
if (Utils.checkPipesConnections(tile, holder.getTile(Orientations.YPos))) {
|
||||
pipe.prepareTextureFor(Orientations.YPos);
|
||||
block.setBlockBounds(minSize, maxSize, minSize, maxSize, 1.0F, maxSize);
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
if (Utils.checkPipesConnections(tile, holder.getTile(Orientations.ZNeg))) {
|
||||
pipe.prepareTextureFor(Orientations.ZNeg);
|
||||
block.setBlockBounds(minSize, minSize, 0.0F, maxSize, maxSize, minSize);
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
if (Utils.checkPipesConnections(tile, holder.getTile(Orientations.ZPos))) {
|
||||
pipe.prepareTextureFor(Orientations.ZPos);
|
||||
block.setBlockBounds(minSize, minSize, maxSize, maxSize, maxSize, 1.0F);
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
|
||||
pipe.prepareTextureFor(Orientations.Unknown);
|
||||
MinecraftForgeClient.bindTexture(DefaultProps.TEXTURE_BLOCKS);
|
||||
|
||||
if (pipe.isWired(IPipe.WireColor.Red)) {
|
||||
pipe.setDrawingState(DrawingState.DrawingRedWire);
|
||||
pipeRedstoneRender(renderblocks, iblockaccess, tile, pipe, block, l, Utils.pipeMinPos, Utils.pipeMaxPos,
|
||||
Utils.pipeMinPos, IPipe.WireColor.Red);
|
||||
}
|
||||
|
||||
if (pipe.isWired(IPipe.WireColor.Blue)) {
|
||||
pipe.setDrawingState(DrawingState.DrawingBlueWire);
|
||||
pipeRedstoneRender(renderblocks, iblockaccess, tile, pipe, block, l, Utils.pipeMaxPos, Utils.pipeMaxPos,
|
||||
Utils.pipeMaxPos, IPipe.WireColor.Blue);
|
||||
}
|
||||
|
||||
if (pipe.isWired(IPipe.WireColor.Green)) {
|
||||
pipe.setDrawingState(DrawingState.DrawingGreenWire);
|
||||
pipeRedstoneRender(renderblocks, iblockaccess, tile, pipe, block, l, Utils.pipeMaxPos, Utils.pipeMinPos,
|
||||
Utils.pipeMinPos, IPipe.WireColor.Green);
|
||||
}
|
||||
|
||||
if (pipe.isWired(IPipe.WireColor.Yellow)) {
|
||||
pipe.setDrawingState(DrawingState.DrawingYellowWire);
|
||||
pipeRedstoneRender(renderblocks, iblockaccess, tile, pipe, block, l, Utils.pipeMinPos, Utils.pipeMinPos,
|
||||
Utils.pipeMaxPos, IPipe.WireColor.Yellow);
|
||||
}
|
||||
|
||||
if (pipe.hasInterface())
|
||||
pipeInterfaceRender(renderblocks, iblockaccess, tile, pipe, block, l);
|
||||
}
|
||||
|
||||
private void pipeRedstoneRender(RenderBlocks renderblocks, IBlockAccess iblockaccess, TileEntity tile, IPipe pipe,
|
||||
Block block, int l, float cx, float cy, float cz, IPipe.WireColor color) {
|
||||
|
||||
ITileBufferHolder holder = (ITileBufferHolder) tile;
|
||||
|
||||
float minX = Utils.pipeMinPos;
|
||||
float minY = Utils.pipeMinPos;
|
||||
float minZ = Utils.pipeMinPos;
|
||||
|
||||
float maxX = Utils.pipeMaxPos;
|
||||
float maxY = Utils.pipeMaxPos;
|
||||
float maxZ = Utils.pipeMaxPos;
|
||||
|
||||
boolean foundX = false, foundY = false, foundZ = false;
|
||||
|
||||
if (isConnectedWiredPipe(pipe, holder.getTile(Orientations.XNeg), color)) {
|
||||
minX = 0;
|
||||
foundX = true;
|
||||
}
|
||||
|
||||
if (isConnectedWiredPipe(pipe, holder.getTile(Orientations.XPos), color)) {
|
||||
maxX = 1;
|
||||
foundX = true;
|
||||
}
|
||||
|
||||
if (isConnectedWiredPipe(pipe, holder.getTile(Orientations.YNeg), color)) {
|
||||
minY = 0;
|
||||
foundY = true;
|
||||
}
|
||||
|
||||
if (isConnectedWiredPipe(pipe, holder.getTile(Orientations.YPos), color)) {
|
||||
maxY = 1;
|
||||
foundY = true;
|
||||
}
|
||||
|
||||
if (isConnectedWiredPipe(pipe, holder.getTile(Orientations.ZNeg), color)) {
|
||||
minZ = 0;
|
||||
foundZ = true;
|
||||
}
|
||||
|
||||
if (isConnectedWiredPipe(pipe, holder.getTile(Orientations.ZPos), color)) {
|
||||
maxZ = 1;
|
||||
foundZ = true;
|
||||
}
|
||||
|
||||
boolean center = false;
|
||||
|
||||
if (minX == 0 && maxX != 1 && (foundY || foundZ))
|
||||
if (cx == Utils.pipeMinPos)
|
||||
maxX = Utils.pipeMinPos;
|
||||
else
|
||||
center = true;
|
||||
|
||||
if (minX != 0 && maxX == 1 && (foundY || foundZ))
|
||||
if (cx == Utils.pipeMaxPos)
|
||||
minX = Utils.pipeMaxPos;
|
||||
else
|
||||
center = true;
|
||||
|
||||
if (minY == 0 && maxY != 1 && (foundX || foundZ))
|
||||
if (cy == Utils.pipeMinPos)
|
||||
maxY = Utils.pipeMinPos;
|
||||
else
|
||||
center = true;
|
||||
|
||||
if (minY != 0 && maxY == 1 && (foundX || foundZ))
|
||||
if (cy == Utils.pipeMaxPos)
|
||||
minY = Utils.pipeMaxPos;
|
||||
else
|
||||
center = true;
|
||||
|
||||
if (minZ == 0 && maxZ != 1 && (foundX || foundY))
|
||||
if (cz == Utils.pipeMinPos)
|
||||
maxZ = Utils.pipeMinPos;
|
||||
else
|
||||
center = true;
|
||||
|
||||
if (minZ != 0 && maxZ == 1 && (foundX || foundY))
|
||||
if (cz == Utils.pipeMaxPos)
|
||||
minZ = Utils.pipeMaxPos;
|
||||
else
|
||||
center = true;
|
||||
|
||||
boolean found = foundX || foundY || foundZ;
|
||||
|
||||
// Z render
|
||||
|
||||
if (minZ != Utils.pipeMinPos || maxZ != Utils.pipeMaxPos || !found) {
|
||||
block.setBlockBounds(cx == Utils.pipeMinPos ? cx - 0.05F : cx, cy == Utils.pipeMinPos ? cy - 0.05F : cy, minZ,
|
||||
cx == Utils.pipeMinPos ? cx : cx + 0.05F, cy == Utils.pipeMinPos ? cy : cy + 0.05F, maxZ);
|
||||
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
// X render
|
||||
|
||||
if (minX != Utils.pipeMinPos || maxX != Utils.pipeMaxPos || !found) {
|
||||
block.setBlockBounds(minX, cy == Utils.pipeMinPos ? cy - 0.05F : cy, cz == Utils.pipeMinPos ? cz - 0.05F : cz, maxX,
|
||||
cy == Utils.pipeMinPos ? cy : cy + 0.05F, cz == Utils.pipeMinPos ? cz : cz + 0.05F);
|
||||
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
// Y render
|
||||
|
||||
if (minY != Utils.pipeMinPos || maxY != Utils.pipeMaxPos || !found) {
|
||||
block.setBlockBounds(cx == Utils.pipeMinPos ? cx - 0.05F : cx, minY, cz == Utils.pipeMinPos ? cz - 0.05F : cz,
|
||||
cx == Utils.pipeMinPos ? cx : cx + 0.05F, maxY, cz == Utils.pipeMinPos ? cz : cz + 0.05F);
|
||||
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
if (center || !found) {
|
||||
block.setBlockBounds(cx == Utils.pipeMinPos ? cx - 0.05F : cx, cy == Utils.pipeMinPos ? cy - 0.05F : cy,
|
||||
cz == Utils.pipeMinPos ? cz - 0.05F : cz, cx == Utils.pipeMinPos ? cx : cx + 0.05F,
|
||||
cy == Utils.pipeMinPos ? cy : cy + 0.05F, cz == Utils.pipeMinPos ? cz : cz + 0.05F);
|
||||
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private boolean isConnectedWiredPipe(IPipe pipe, TileEntity tile2, IPipe.WireColor color) {
|
||||
return pipe.isWireConnectedTo(tile2, color);
|
||||
}
|
||||
|
||||
private void pipeInterfaceRender(RenderBlocks renderblocks, IBlockAccess iblockaccess, TileEntity tile, IPipe pipe,
|
||||
Block block, int l) {
|
||||
|
||||
ITileBufferHolder holder = (ITileBufferHolder) tile;
|
||||
|
||||
pipe.setDrawingState(DrawingState.DrawingGate);
|
||||
|
||||
float min = Utils.pipeMinPos + 0.05F;
|
||||
float max = Utils.pipeMaxPos - 0.05F;
|
||||
|
||||
if (!Utils.checkPipesConnections(tile, holder.getTile(Orientations.XNeg))) {
|
||||
block.setBlockBounds(Utils.pipeMinPos - 0.10F, min, min, Utils.pipeMinPos, max, max);
|
||||
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
if (!Utils.checkPipesConnections(tile, holder.getTile(Orientations.XPos))) {
|
||||
block.setBlockBounds(Utils.pipeMaxPos, min, min, Utils.pipeMaxPos + 0.10F, max, max);
|
||||
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
if (!Utils.checkPipesConnections(tile, holder.getTile(Orientations.YNeg))) {
|
||||
block.setBlockBounds(min, Utils.pipeMinPos - 0.10F, min, max, Utils.pipeMinPos, max);
|
||||
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
if (!Utils.checkPipesConnections(tile, holder.getTile(Orientations.YPos))) {
|
||||
block.setBlockBounds(min, Utils.pipeMaxPos, min, max, Utils.pipeMaxPos + 0.10F, max);
|
||||
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
if (!Utils.checkPipesConnections(tile, holder.getTile(Orientations.ZNeg))) {
|
||||
block.setBlockBounds(min, min, Utils.pipeMinPos - 0.10F, max, max, Utils.pipeMinPos);
|
||||
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
if (!Utils.checkPipesConnections(tile, holder.getTile(Orientations.ZPos))) {
|
||||
block.setBlockBounds(min, min, Utils.pipeMaxPos, max, max, Utils.pipeMaxPos + 0.10F);
|
||||
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -136,16 +136,9 @@ public class mod_BuildCraftCore extends NetworkMod {
|
|||
tessellator.setColorOpaque_F(f, f, f);
|
||||
renderMarkerWithMeta(iblockaccess, block, i, j, k, iblockaccess.getBlockMetadata(i, j, k));
|
||||
|
||||
} else if (block.getRenderType() == BuildCraftCore.pipeModel) {
|
||||
} else if (block.getRenderType() == BuildCraftCore.legacyPipeModel) {
|
||||
|
||||
TileEntity tile = iblockaccess.getBlockTileEntity(i, j, k);
|
||||
|
||||
if (tile != null && tile instanceof IPipeTile && ((IPipeTile)tile).isInitialized()) {
|
||||
pipeRender(renderblocks, iblockaccess, tile, block, l);
|
||||
}
|
||||
else {
|
||||
legacyPipeRender(renderblocks, iblockaccess, i, j, k, block, l);
|
||||
}
|
||||
|
||||
} else if (block.getRenderType() == BuildCraftCore.oilModel)
|
||||
renderblocks.renderBlockFluids(block, i, j, k);
|
||||
|
@ -153,263 +146,6 @@ public class mod_BuildCraftCore extends NetworkMod {
|
|||
return true;
|
||||
}
|
||||
|
||||
private void pipeRender(RenderBlocks renderblocks, IBlockAccess iblockaccess, TileEntity tile, Block block, int l) {
|
||||
|
||||
ITileBufferHolder holder = (ITileBufferHolder) tile;
|
||||
|
||||
float minSize = Utils.pipeMinPos;
|
||||
float maxSize = Utils.pipeMaxPos;
|
||||
|
||||
IPipe pipe = ((TileGenericPipe)tile).pipe;
|
||||
|
||||
pipe.setDrawingState(DrawingState.DrawingPipe);
|
||||
|
||||
pipe.prepareTextureFor(Orientations.Unknown);
|
||||
block.setBlockBounds(minSize, minSize, minSize, maxSize, maxSize, maxSize);
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
|
||||
if (Utils.checkPipesConnections(tile, holder.getTile(Orientations.XNeg))) {
|
||||
pipe.prepareTextureFor(Orientations.XNeg);
|
||||
block.setBlockBounds(0.0F, minSize, minSize, minSize, maxSize, maxSize);
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
if (Utils.checkPipesConnections(tile, holder.getTile(Orientations.XPos))) {
|
||||
pipe.prepareTextureFor(Orientations.XPos);
|
||||
block.setBlockBounds(maxSize, minSize, minSize, 1.0F, maxSize, maxSize);
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
if (Utils.checkPipesConnections(tile, holder.getTile(Orientations.YNeg))) {
|
||||
pipe.prepareTextureFor(Orientations.YNeg);
|
||||
block.setBlockBounds(minSize, 0.0F, minSize, maxSize, minSize, maxSize);
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
if (Utils.checkPipesConnections(tile, holder.getTile(Orientations.YPos))) {
|
||||
pipe.prepareTextureFor(Orientations.YPos);
|
||||
block.setBlockBounds(minSize, maxSize, minSize, maxSize, 1.0F, maxSize);
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
if (Utils.checkPipesConnections(tile, holder.getTile(Orientations.ZNeg))) {
|
||||
pipe.prepareTextureFor(Orientations.ZNeg);
|
||||
block.setBlockBounds(minSize, minSize, 0.0F, maxSize, maxSize, minSize);
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
if (Utils.checkPipesConnections(tile, holder.getTile(Orientations.ZPos))) {
|
||||
pipe.prepareTextureFor(Orientations.ZPos);
|
||||
block.setBlockBounds(minSize, minSize, maxSize, maxSize, maxSize, 1.0F);
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
|
||||
pipe.prepareTextureFor(Orientations.Unknown);
|
||||
MinecraftForgeClient.bindTexture(DefaultProps.TEXTURE_BLOCKS);
|
||||
|
||||
if (pipe.isWired(IPipe.WireColor.Red)) {
|
||||
pipe.setDrawingState(DrawingState.DrawingRedWire);
|
||||
pipeRedstoneRender(renderblocks, iblockaccess, tile, pipe, block, l, Utils.pipeMinPos, Utils.pipeMaxPos,
|
||||
Utils.pipeMinPos, IPipe.WireColor.Red);
|
||||
}
|
||||
|
||||
if (pipe.isWired(IPipe.WireColor.Blue)) {
|
||||
pipe.setDrawingState(DrawingState.DrawingBlueWire);
|
||||
pipeRedstoneRender(renderblocks, iblockaccess, tile, pipe, block, l, Utils.pipeMaxPos, Utils.pipeMaxPos,
|
||||
Utils.pipeMaxPos, IPipe.WireColor.Blue);
|
||||
}
|
||||
|
||||
if (pipe.isWired(IPipe.WireColor.Green)) {
|
||||
pipe.setDrawingState(DrawingState.DrawingGreenWire);
|
||||
pipeRedstoneRender(renderblocks, iblockaccess, tile, pipe, block, l, Utils.pipeMaxPos, Utils.pipeMinPos,
|
||||
Utils.pipeMinPos, IPipe.WireColor.Green);
|
||||
}
|
||||
|
||||
if (pipe.isWired(IPipe.WireColor.Yellow)) {
|
||||
pipe.setDrawingState(DrawingState.DrawingYellowWire);
|
||||
pipeRedstoneRender(renderblocks, iblockaccess, tile, pipe, block, l, Utils.pipeMinPos, Utils.pipeMinPos,
|
||||
Utils.pipeMaxPos, IPipe.WireColor.Yellow);
|
||||
}
|
||||
|
||||
if (pipe.hasInterface())
|
||||
pipeInterfaceRender(renderblocks, iblockaccess, tile, pipe, block, l);
|
||||
}
|
||||
|
||||
private boolean isConnectedWiredPipe(IPipe pipe, TileEntity tile2, IPipe.WireColor color) {
|
||||
return pipe.isWireConnectedTo(tile2, color);
|
||||
}
|
||||
|
||||
private void pipeRedstoneRender(RenderBlocks renderblocks, IBlockAccess iblockaccess, TileEntity tile, IPipe pipe,
|
||||
Block block, int l, float cx, float cy, float cz, IPipe.WireColor color) {
|
||||
|
||||
ITileBufferHolder holder = (ITileBufferHolder) tile;
|
||||
|
||||
float minX = Utils.pipeMinPos;
|
||||
float minY = Utils.pipeMinPos;
|
||||
float minZ = Utils.pipeMinPos;
|
||||
|
||||
float maxX = Utils.pipeMaxPos;
|
||||
float maxY = Utils.pipeMaxPos;
|
||||
float maxZ = Utils.pipeMaxPos;
|
||||
|
||||
boolean foundX = false, foundY = false, foundZ = false;
|
||||
|
||||
if (isConnectedWiredPipe(pipe, holder.getTile(Orientations.XNeg), color)) {
|
||||
minX = 0;
|
||||
foundX = true;
|
||||
}
|
||||
|
||||
if (isConnectedWiredPipe(pipe, holder.getTile(Orientations.XPos), color)) {
|
||||
maxX = 1;
|
||||
foundX = true;
|
||||
}
|
||||
|
||||
if (isConnectedWiredPipe(pipe, holder.getTile(Orientations.YNeg), color)) {
|
||||
minY = 0;
|
||||
foundY = true;
|
||||
}
|
||||
|
||||
if (isConnectedWiredPipe(pipe, holder.getTile(Orientations.YPos), color)) {
|
||||
maxY = 1;
|
||||
foundY = true;
|
||||
}
|
||||
|
||||
if (isConnectedWiredPipe(pipe, holder.getTile(Orientations.ZNeg), color)) {
|
||||
minZ = 0;
|
||||
foundZ = true;
|
||||
}
|
||||
|
||||
if (isConnectedWiredPipe(pipe, holder.getTile(Orientations.ZPos), color)) {
|
||||
maxZ = 1;
|
||||
foundZ = true;
|
||||
}
|
||||
|
||||
boolean center = false;
|
||||
|
||||
if (minX == 0 && maxX != 1 && (foundY || foundZ))
|
||||
if (cx == Utils.pipeMinPos)
|
||||
maxX = Utils.pipeMinPos;
|
||||
else
|
||||
center = true;
|
||||
|
||||
if (minX != 0 && maxX == 1 && (foundY || foundZ))
|
||||
if (cx == Utils.pipeMaxPos)
|
||||
minX = Utils.pipeMaxPos;
|
||||
else
|
||||
center = true;
|
||||
|
||||
if (minY == 0 && maxY != 1 && (foundX || foundZ))
|
||||
if (cy == Utils.pipeMinPos)
|
||||
maxY = Utils.pipeMinPos;
|
||||
else
|
||||
center = true;
|
||||
|
||||
if (minY != 0 && maxY == 1 && (foundX || foundZ))
|
||||
if (cy == Utils.pipeMaxPos)
|
||||
minY = Utils.pipeMaxPos;
|
||||
else
|
||||
center = true;
|
||||
|
||||
if (minZ == 0 && maxZ != 1 && (foundX || foundY))
|
||||
if (cz == Utils.pipeMinPos)
|
||||
maxZ = Utils.pipeMinPos;
|
||||
else
|
||||
center = true;
|
||||
|
||||
if (minZ != 0 && maxZ == 1 && (foundX || foundY))
|
||||
if (cz == Utils.pipeMaxPos)
|
||||
minZ = Utils.pipeMaxPos;
|
||||
else
|
||||
center = true;
|
||||
|
||||
boolean found = foundX || foundY || foundZ;
|
||||
|
||||
// Z render
|
||||
|
||||
if (minZ != Utils.pipeMinPos || maxZ != Utils.pipeMaxPos || !found) {
|
||||
block.setBlockBounds(cx == Utils.pipeMinPos ? cx - 0.05F : cx, cy == Utils.pipeMinPos ? cy - 0.05F : cy, minZ,
|
||||
cx == Utils.pipeMinPos ? cx : cx + 0.05F, cy == Utils.pipeMinPos ? cy : cy + 0.05F, maxZ);
|
||||
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
// X render
|
||||
|
||||
if (minX != Utils.pipeMinPos || maxX != Utils.pipeMaxPos || !found) {
|
||||
block.setBlockBounds(minX, cy == Utils.pipeMinPos ? cy - 0.05F : cy, cz == Utils.pipeMinPos ? cz - 0.05F : cz, maxX,
|
||||
cy == Utils.pipeMinPos ? cy : cy + 0.05F, cz == Utils.pipeMinPos ? cz : cz + 0.05F);
|
||||
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
// Y render
|
||||
|
||||
if (minY != Utils.pipeMinPos || maxY != Utils.pipeMaxPos || !found) {
|
||||
block.setBlockBounds(cx == Utils.pipeMinPos ? cx - 0.05F : cx, minY, cz == Utils.pipeMinPos ? cz - 0.05F : cz,
|
||||
cx == Utils.pipeMinPos ? cx : cx + 0.05F, maxY, cz == Utils.pipeMinPos ? cz : cz + 0.05F);
|
||||
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
if (center || !found) {
|
||||
block.setBlockBounds(cx == Utils.pipeMinPos ? cx - 0.05F : cx, cy == Utils.pipeMinPos ? cy - 0.05F : cy,
|
||||
cz == Utils.pipeMinPos ? cz - 0.05F : cz, cx == Utils.pipeMinPos ? cx : cx + 0.05F,
|
||||
cy == Utils.pipeMinPos ? cy : cy + 0.05F, cz == Utils.pipeMinPos ? cz : cz + 0.05F);
|
||||
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void pipeInterfaceRender(RenderBlocks renderblocks, IBlockAccess iblockaccess, TileEntity tile, IPipe pipe,
|
||||
Block block, int l) {
|
||||
|
||||
ITileBufferHolder holder = (ITileBufferHolder) tile;
|
||||
|
||||
pipe.setDrawingState(DrawingState.DrawingGate);
|
||||
|
||||
float min = Utils.pipeMinPos + 0.05F;
|
||||
float max = Utils.pipeMaxPos - 0.05F;
|
||||
|
||||
if (!Utils.checkPipesConnections(tile, holder.getTile(Orientations.XNeg))) {
|
||||
block.setBlockBounds(Utils.pipeMinPos - 0.10F, min, min, Utils.pipeMinPos, max, max);
|
||||
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
if (!Utils.checkPipesConnections(tile, holder.getTile(Orientations.XPos))) {
|
||||
block.setBlockBounds(Utils.pipeMaxPos, min, min, Utils.pipeMaxPos + 0.10F, max, max);
|
||||
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
if (!Utils.checkPipesConnections(tile, holder.getTile(Orientations.YNeg))) {
|
||||
block.setBlockBounds(min, Utils.pipeMinPos - 0.10F, min, max, Utils.pipeMinPos, max);
|
||||
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
if (!Utils.checkPipesConnections(tile, holder.getTile(Orientations.YPos))) {
|
||||
block.setBlockBounds(min, Utils.pipeMaxPos, min, max, Utils.pipeMaxPos + 0.10F, max);
|
||||
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
if (!Utils.checkPipesConnections(tile, holder.getTile(Orientations.ZNeg))) {
|
||||
block.setBlockBounds(min, min, Utils.pipeMinPos - 0.10F, max, max, Utils.pipeMinPos);
|
||||
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
|
||||
if (!Utils.checkPipesConnections(tile, holder.getTile(Orientations.ZPos))) {
|
||||
block.setBlockBounds(min, min, Utils.pipeMaxPos, max, max, Utils.pipeMaxPos + 0.10F);
|
||||
|
||||
renderblocks.renderStandardBlock(block, tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
}
|
||||
}
|
||||
|
||||
private void legacyPipeRender(RenderBlocks renderblocks, IBlockAccess iblockaccess, int i, int j, int k, Block block, int l) {
|
||||
float minSize = Utils.pipeMinPos;
|
||||
float maxSize = Utils.pipeMaxPos;
|
||||
|
@ -461,50 +197,50 @@ public class mod_BuildCraftCore extends NetworkMod {
|
|||
|
||||
RenderItem itemRenderer = new RenderItem();
|
||||
|
||||
@Override
|
||||
public void renderInvBlock(RenderBlocks renderblocks, Block block, int i, int j) {
|
||||
if (block.getRenderType() == BuildCraftCore.blockByEntityModel) {
|
||||
|
||||
EntityRenderIndex index = new EntityRenderIndex(block, i);
|
||||
|
||||
if (blockByEntityRenders.containsKey(index))
|
||||
blockByEntityRenders.get(index).inventoryRender(-0.5, -0.5, -0.5, 0, 0);
|
||||
} else if (block.getRenderType() == BuildCraftCore.markerModel) {
|
||||
// Do nothing here...
|
||||
} else if (block.getRenderType() == BuildCraftCore.pipeModel) {
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
|
||||
block.setBlockBounds(Utils.pipeMinPos, 0.0F, Utils.pipeMinPos, Utils.pipeMaxPos, 1.0F, Utils.pipeMaxPos);
|
||||
block.setBlockBoundsForItemRender();
|
||||
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, -1F, 0.0F);
|
||||
renderblocks.renderBottomFace(block, 0.0D, 0.0D, 0.0D, block.getBlockTextureFromSideAndMetadata(0, i));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, 1.0F, 0.0F);
|
||||
renderblocks.renderTopFace(block, 0.0D, 0.0D, 0.0D, block.getBlockTextureFromSideAndMetadata(1, i));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, 0.0F, -1F);
|
||||
renderblocks.renderEastFace(block, 0.0D, 0.0D, 0.0D, block.getBlockTextureFromSideAndMetadata(2, i));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, 0.0F, 1.0F);
|
||||
renderblocks.renderWestFace(block, 0.0D, 0.0D, 0.0D, block.getBlockTextureFromSideAndMetadata(3, i));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(-1F, 0.0F, 0.0F);
|
||||
renderblocks.renderNorthFace(block, 0.0D, 0.0D, 0.0D, block.getBlockTextureFromSideAndMetadata(4, i));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(1.0F, 0.0F, 0.0F);
|
||||
renderblocks.renderSouthFace(block, 0.0D, 0.0D, 0.0D, block.getBlockTextureFromSideAndMetadata(5, i));
|
||||
tessellator.draw();
|
||||
GL11.glTranslatef(0.5F, 0.5F, 0.5F);
|
||||
block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
}
|
||||
// @Override
|
||||
// public void renderInvBlock(RenderBlocks renderblocks, Block block, int i, int j) {
|
||||
// if (block.getRenderType() == BuildCraftCore.blockByEntityModel) {
|
||||
//
|
||||
// EntityRenderIndex index = new EntityRenderIndex(block, i);
|
||||
//
|
||||
// if (blockByEntityRenders.containsKey(index))
|
||||
// blockByEntityRenders.get(index).inventoryRender(-0.5, -0.5, -0.5, 0, 0);
|
||||
// } else if (block.getRenderType() == BuildCraftCore.markerModel) {
|
||||
// // Do nothing here...
|
||||
// } else if (block.getRenderType() == BuildCraftCore.legacyPipeModel) {
|
||||
// Tessellator tessellator = Tessellator.instance;
|
||||
//
|
||||
// block.setBlockBounds(Utils.pipeMinPos, 0.0F, Utils.pipeMinPos, Utils.pipeMaxPos, 1.0F, Utils.pipeMaxPos);
|
||||
// block.setBlockBoundsForItemRender();
|
||||
// GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
|
||||
// tessellator.startDrawingQuads();
|
||||
// tessellator.setNormal(0.0F, -1F, 0.0F);
|
||||
// renderblocks.renderBottomFace(block, 0.0D, 0.0D, 0.0D, block.getBlockTextureFromSideAndMetadata(0, i));
|
||||
// tessellator.draw();
|
||||
// tessellator.startDrawingQuads();
|
||||
// tessellator.setNormal(0.0F, 1.0F, 0.0F);
|
||||
// renderblocks.renderTopFace(block, 0.0D, 0.0D, 0.0D, block.getBlockTextureFromSideAndMetadata(1, i));
|
||||
// tessellator.draw();
|
||||
// tessellator.startDrawingQuads();
|
||||
// tessellator.setNormal(0.0F, 0.0F, -1F);
|
||||
// renderblocks.renderEastFace(block, 0.0D, 0.0D, 0.0D, block.getBlockTextureFromSideAndMetadata(2, i));
|
||||
// tessellator.draw();
|
||||
// tessellator.startDrawingQuads();
|
||||
// tessellator.setNormal(0.0F, 0.0F, 1.0F);
|
||||
// renderblocks.renderWestFace(block, 0.0D, 0.0D, 0.0D, block.getBlockTextureFromSideAndMetadata(3, i));
|
||||
// tessellator.draw();
|
||||
// tessellator.startDrawingQuads();
|
||||
// tessellator.setNormal(-1F, 0.0F, 0.0F);
|
||||
// renderblocks.renderNorthFace(block, 0.0D, 0.0D, 0.0D, block.getBlockTextureFromSideAndMetadata(4, i));
|
||||
// tessellator.draw();
|
||||
// tessellator.startDrawingQuads();
|
||||
// tessellator.setNormal(1.0F, 0.0F, 0.0F);
|
||||
// renderblocks.renderSouthFace(block, 0.0D, 0.0D, 0.0D, block.getBlockTextureFromSideAndMetadata(5, i));
|
||||
// tessellator.draw();
|
||||
// GL11.glTranslatef(0.5F, 0.5F, 0.5F);
|
||||
// block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
// }
|
||||
// }
|
||||
|
||||
public static double frontX[][][] = new double[6][3][4];
|
||||
public static double frontZ[][][] = new double[6][3][4];
|
||||
|
|
|
@ -9,8 +9,10 @@
|
|||
|
||||
package net.minecraft.src;
|
||||
|
||||
import net.minecraft.src.buildcraft.api.IPipeTile;
|
||||
import net.minecraft.src.buildcraft.core.DefaultProps;
|
||||
import net.minecraft.src.buildcraft.transport.PipeItemRenderer;
|
||||
import net.minecraft.src.buildcraft.transport.PipeWorldRenderer;
|
||||
import net.minecraft.src.buildcraft.transport.RenderPipe;
|
||||
import net.minecraft.src.forge.MinecraftForgeClient;
|
||||
import net.minecraft.src.forge.NetworkMod;
|
||||
|
@ -18,7 +20,8 @@ import net.minecraft.src.forge.NetworkMod;
|
|||
public class mod_BuildCraftTransport extends NetworkMod {
|
||||
|
||||
public static mod_BuildCraftTransport instance;
|
||||
public static PipeItemRenderer pipeItemRenderer = new PipeItemRenderer();
|
||||
public final static PipeItemRenderer pipeItemRenderer = new PipeItemRenderer();
|
||||
public final static PipeWorldRenderer pipeWorldRenderer = new PipeWorldRenderer();
|
||||
|
||||
public mod_BuildCraftTransport() {
|
||||
instance = this;
|
||||
|
@ -28,6 +31,8 @@ public class mod_BuildCraftTransport extends NetworkMod {
|
|||
public void modsLoaded() {
|
||||
super.modsLoaded();
|
||||
BuildCraftTransport.initialize();
|
||||
|
||||
BuildCraftTransport.initializeModel(this);
|
||||
|
||||
MinecraftForgeClient.registerItemRenderer(BuildCraftTransport.pipeItemsWood.shiftedIndex, pipeItemRenderer);
|
||||
MinecraftForgeClient.registerItemRenderer(BuildCraftTransport.pipeItemsCobblestone.shiftedIndex, pipeItemRenderer);
|
||||
|
@ -77,6 +82,19 @@ public class mod_BuildCraftTransport extends NetworkMod {
|
|||
public boolean serverSideRequired() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean renderWorldBlock(RenderBlocks renderer, IBlockAccess world, int x, int y, int z, Block block, int modelID) {
|
||||
if (modelID != BuildCraftTransport.pipeModel) return true;
|
||||
|
||||
TileEntity tile = world.getBlockTileEntity(x, y, z);
|
||||
|
||||
if (tile != null && tile instanceof IPipeTile && ((IPipeTile)tile).isInitialized()) {
|
||||
pipeWorldRenderer.pipeRender(renderer, world, tile, block, modelID);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ public class mod_BuildCraftTransport extends NetworkMod {
|
|||
public void modsLoaded() {
|
||||
super.modsLoaded();
|
||||
BuildCraftTransport.initialize();
|
||||
BuildCraftTransport.initializeModel(this);
|
||||
}
|
||||
|
||||
public static void registerTilePipe(Class<? extends TileEntity> clas, String name) {
|
||||
|
|
|
@ -83,7 +83,7 @@ public class BuildCraftCore {
|
|||
public static int transparentTexture;
|
||||
|
||||
public static int blockByEntityModel;
|
||||
public static int pipeModel;
|
||||
public static int legacyPipeModel;
|
||||
public static int markerModel;
|
||||
public static int oilModel;
|
||||
|
||||
|
@ -296,7 +296,7 @@ public class BuildCraftCore {
|
|||
|
||||
public static void initializeModel(BaseMod mod) {
|
||||
blockByEntityModel = ModLoader.getUniqueBlockModelID(mod, true);
|
||||
pipeModel = ModLoader.getUniqueBlockModelID(mod, true);
|
||||
legacyPipeModel = ModLoader.getUniqueBlockModelID(mod, true);
|
||||
markerModel = ModLoader.getUniqueBlockModelID(mod, false);
|
||||
oilModel = ModLoader.getUniqueBlockModelID(mod, false);
|
||||
}
|
||||
|
|
|
@ -133,6 +133,8 @@ public class BuildCraftTransport {
|
|||
public static Action actionGreenSignal = new ActionSignalOutput(DefaultProps.ACTION_GREEN_SIGNAL, IPipe.WireColor.Green);
|
||||
public static Action actionYellowSignal = new ActionSignalOutput(DefaultProps.ACTION_YELLOW_SIGNAL, IPipe.WireColor.Yellow);
|
||||
public static Action actionEnergyPulser = new ActionEnergyPulser(DefaultProps.ACTION_ENERGY_PULSER);
|
||||
|
||||
public static int pipeModel;
|
||||
|
||||
private static class PipeRecipe {
|
||||
|
||||
|
@ -366,4 +368,8 @@ public class BuildCraftTransport {
|
|||
|
||||
return res;
|
||||
}
|
||||
|
||||
public static void initializeModel(mod_BuildCraftTransport mod) {
|
||||
pipeModel = ModLoader.getUniqueBlockModelID(mod, true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -68,7 +68,7 @@ public class BlockFrame extends Block implements ILegacyPipeConnection, IBlockPi
|
|||
|
||||
@Override
|
||||
public int getRenderType() {
|
||||
return BuildCraftCore.pipeModel;
|
||||
return BuildCraftCore.legacyPipeModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -49,7 +49,7 @@ public class BlockGenericPipe extends BlockContainer implements IBlockPipe, ITex
|
|||
|
||||
@Override
|
||||
public int getRenderType() {
|
||||
return BuildCraftCore.pipeModel;
|
||||
return BuildCraftTransport.pipeModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in a new issue