diff --git a/src/main/java/tconstruct/smeltery/SmelteryProxyClient.java b/src/main/java/tconstruct/smeltery/SmelteryProxyClient.java index 4d8b245d550..54b5325aefb 100644 --- a/src/main/java/tconstruct/smeltery/SmelteryProxyClient.java +++ b/src/main/java/tconstruct/smeltery/SmelteryProxyClient.java @@ -29,7 +29,6 @@ import tconstruct.smeltery.model.CastingBlockRender; import tconstruct.smeltery.model.CastingTableSpecialRenderer; import tconstruct.smeltery.model.PaneConnectedRender; -import tconstruct.smeltery.model.PaneRender; import tconstruct.smeltery.model.SmelteryRender; import tconstruct.smeltery.model.TankItemRenderer; import tconstruct.smeltery.model.TankRender; @@ -49,7 +48,6 @@ void registerRenderer() { RenderingRegistry.registerBlockHandler(new TankRender()); RenderingRegistry.registerBlockHandler(new CastingBlockRender()); RenderingRegistry.registerBlockHandler(new DryingRackRender()); - RenderingRegistry.registerBlockHandler(new PaneRender()); RenderingRegistry.registerBlockHandler(new PaneConnectedRender()); RenderingRegistry.registerBlockHandler(new RenderBlockFluid()); RenderingRegistry.registerBlockHandler(new BlockRenderCastingChannel()); diff --git a/src/main/java/tconstruct/smeltery/TinkerSmeltery.java b/src/main/java/tconstruct/smeltery/TinkerSmeltery.java index e825d58dbff..e850de43c26 100644 --- a/src/main/java/tconstruct/smeltery/TinkerSmeltery.java +++ b/src/main/java/tconstruct/smeltery/TinkerSmeltery.java @@ -48,7 +48,7 @@ import tconstruct.smeltery.blocks.GlassBlockConnected; import tconstruct.smeltery.blocks.GlassBlockConnectedMeta; import tconstruct.smeltery.blocks.GlassPaneConnected; -import tconstruct.smeltery.blocks.GlassPaneStained; +import tconstruct.smeltery.blocks.GlassPaneConnectedMeta; import tconstruct.smeltery.blocks.GlueBlock; import tconstruct.smeltery.blocks.GlueFluid; import tconstruct.smeltery.blocks.LavaTankBlock; @@ -511,7 +511,6 @@ public void preInit(FMLPreInitializationEvent event) { // Glass TinkerSmeltery.clearGlass = new GlassBlockConnected("clear", false).setBlockName("GlassBlock"); - TinkerSmeltery.clearGlass.stepSound = Block.soundTypeGlass; TinkerSmeltery.glassPane = new GlassPaneConnected("clear", false); TinkerSmeltery.stainedGlassClear = new GlassBlockConnectedMeta( "stained", @@ -532,8 +531,25 @@ public void preInit(FMLPreInitializationEvent event) { "green", "red", "black").setBlockName("GlassBlock.StainedClear"); - TinkerSmeltery.stainedGlassClear.stepSound = Block.soundTypeGlass; - TinkerSmeltery.stainedGlassClearPane = new GlassPaneStained(); + TinkerSmeltery.stainedGlassClearPane = new GlassPaneConnectedMeta( + "stained", + true, + "white", + "orange", + "magenta", + "light_blue", + "yellow", + "lime", + "pink", + "gray", + "light_gray", + "cyan", + "purple", + "blue", + "brown", + "green", + "red", + "black"); GameRegistry.registerBlock(TinkerSmeltery.searedSlab, SearedSlabItem.class, "SearedSlab"); GameRegistry.registerBlock(TinkerSmeltery.speedSlab, SpeedSlabItem.class, "SpeedSlab"); diff --git a/src/main/java/tconstruct/smeltery/blocks/GlassBlock.java b/src/main/java/tconstruct/smeltery/blocks/GlassBlock.java deleted file mode 100644 index 02bf28a2e25..00000000000 --- a/src/main/java/tconstruct/smeltery/blocks/GlassBlock.java +++ /dev/null @@ -1,73 +0,0 @@ -package tconstruct.smeltery.blocks; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.util.IIcon; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import tconstruct.blocks.TConstructBlock; - -public class GlassBlock extends TConstructBlock { - - static String[] blockTextures = { "glass_clear", "soulglass", "soulglass_clear" }; - - public GlassBlock() { - super(Material.glass, 3f, blockTextures); - } - - @Override - public boolean isOpaqueCube() { - return false; - } - - @Override - @SideOnly(Side.CLIENT) - public boolean shouldSideBeRendered(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) { - Block i1 = par1IBlockAccess.getBlock(par2, par3, par4); - return i1 != this && super.shouldSideBeRendered(par1IBlockAccess, par2, par3, par4, par5); - } - - @Override - public float getBlockHardness(World world, int x, int y, int z) { - int meta = world.getBlockMetadata(x, y, z); - switch (meta) { - case 0: - return 0.3F; - case 1: - case 2: - return 50.0F; - default: - return blockHardness; - } - } - - @Override - public float getExplosionResistance(Entity entity, World world, int x, int y, int z, double explosionX, - double explosionY, double explosionZ) { - int meta = world.getBlockMetadata(x, y, z); - switch (meta) { - case 0: - return 1.5F; - case 1: - case 2: - return 2000F; - default: - return getExplosionResistance(entity); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - this.icons = new IIcon[textureNames.length]; - - for (int i = 0; i < this.icons.length; ++i) { - this.icons[i] = iconRegister.registerIcon("tinker:glass/" + textureNames[i]); - } - } -} diff --git a/src/main/java/tconstruct/smeltery/blocks/GlassBlockConnected.java b/src/main/java/tconstruct/smeltery/blocks/GlassBlockConnected.java index 0495f69b5bc..cd701f57cdc 100644 --- a/src/main/java/tconstruct/smeltery/blocks/GlassBlockConnected.java +++ b/src/main/java/tconstruct/smeltery/blocks/GlassBlockConnected.java @@ -21,7 +21,7 @@ public class GlassBlockConnected extends MantleBlock { protected IIcon[] icons = new IIcon[16]; - private final boolean shouldRenderSelectionBox = true; + private static final boolean shouldRenderSelectionBox = true; protected String folder; private final int renderPass; @@ -34,11 +34,6 @@ public GlassBlockConnected(String location, boolean hasAlpha) { this.setCreativeTab(TConstructRegistry.blockTab); } - // For FMP support - public IIcon[] getIcons() { - return icons; - } - @Override public boolean isOpaqueCube() { return false; @@ -54,519 +49,315 @@ public int getRenderBlockPass() { return renderPass; } - /** - * This is checked to see if the texture should connect to this block - * - * @param par2 x - * @param par3 y - * @param par4 z - * @param par5 ID this block is asking to connect to (may be 0 if there is no block) - * @param par6 Metadata of the block this block is trying to connect to - * @return true if should connect - */ - public boolean shouldConnectToBlock(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, Block par5, - int par6) { - return par5 == this; + public boolean shouldConnectToBlock(IBlockAccess blockAccess, int x, int y, int z, Block block, int meta) { + return block == this; } @Override @SideOnly(Side.CLIENT) - public IIcon getIcon(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) { - return par1IBlockAccess.getBlockMetadata(par2, par3, par4) == 15 ? icons[0] - : getConnectedBlockTexture(par1IBlockAccess, par2, par3, par4, par5, icons); + public IIcon getIcon(IBlockAccess blockAccess, int x, int y, int z, int side) { + return getConnectedBlockTexture(blockAccess, x, y, z, side, icons); } - public IIcon getConnectedBlockTexture(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5, - IIcon[] icons) { + public IIcon getConnectedBlockTexture(IBlockAccess blockAccess, int x, int y, int z, int side, IIcon[] icons) { if (PHConstruct.connectedTexturesMode == 0) { return icons[0]; } boolean isOpenUp = false, isOpenDown = false, isOpenLeft = false, isOpenRight = false; - switch (par5) { + switch (side) { case 0: + case 1: if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2 - 1, par3, par4), - par1IBlockAccess.getBlockMetadata(par2 - 1, par3, par4))) { - isOpenDown = true; - } - - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2 + 1, par3, par4), - par1IBlockAccess.getBlockMetadata(par2 + 1, par3, par4))) { - isOpenUp = true; - } - - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3, par4 - 1), - par1IBlockAccess.getBlockMetadata(par2, par3, par4 - 1))) { + blockAccess, + x, + y, + z, + blockAccess.getBlock(x - 1, y, z), + blockAccess.getBlockMetadata(x - 1, y, z))) { isOpenLeft = true; } if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3, par4 + 1), - par1IBlockAccess.getBlockMetadata(par2, par3, par4 + 1))) { + blockAccess, + x, + y, + z, + blockAccess.getBlock(x + 1, y, z), + blockAccess.getBlockMetadata(x + 1, y, z))) { isOpenRight = true; } - if (isOpenUp && isOpenDown && isOpenLeft && isOpenRight) { - return icons[15]; - } else if (isOpenUp && isOpenDown && isOpenLeft) { - return icons[11]; - } else if (isOpenUp && isOpenDown && isOpenRight) { - return icons[12]; - } else if (isOpenUp && isOpenLeft && isOpenRight) { - return icons[13]; - } else if (isOpenDown && isOpenLeft && isOpenRight) { - return icons[14]; - } else if (isOpenDown && isOpenUp) { - return icons[5]; - } else if (isOpenLeft && isOpenRight) { - return icons[6]; - } else if (isOpenDown && isOpenLeft) { - return icons[8]; - } else if (isOpenDown && isOpenRight) { - return icons[10]; - } else if (isOpenUp && isOpenLeft) { - return icons[7]; - } else if (isOpenUp && isOpenRight) { - return icons[9]; - } else if (isOpenDown) { - return icons[3]; - } else if (isOpenUp) { - return icons[4]; - } else if (isOpenLeft) { - return icons[2]; - } else if (isOpenRight) { - return icons[1]; - } - break; - case 1: - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2 - 1, par3, par4), - par1IBlockAccess.getBlockMetadata(par2 - 1, par3, par4))) { - isOpenDown = true; - } - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2 + 1, par3, par4), - par1IBlockAccess.getBlockMetadata(par2 + 1, par3, par4))) { + blockAccess, + x, + y, + z, + blockAccess.getBlock(x, y, z - 1), + blockAccess.getBlockMetadata(x, y, z - 1))) { isOpenUp = true; } if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3, par4 - 1), - par1IBlockAccess.getBlockMetadata(par2, par3, par4 - 1))) { - isOpenLeft = true; - } - - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3, par4 + 1), - par1IBlockAccess.getBlockMetadata(par2, par3, par4 + 1))) { - isOpenRight = true; + blockAccess, + x, + y, + z, + blockAccess.getBlock(x, y, z + 1), + blockAccess.getBlockMetadata(x, y, z + 1))) { + isOpenDown = true; } - if (isOpenUp && isOpenDown && isOpenLeft && isOpenRight) { - return icons[15]; - } else if (isOpenUp && isOpenDown && isOpenLeft) { - return icons[11]; - } else if (isOpenUp && isOpenDown && isOpenRight) { - return icons[12]; - } else if (isOpenUp && isOpenLeft && isOpenRight) { - return icons[13]; - } else if (isOpenDown && isOpenLeft && isOpenRight) { - return icons[14]; - } else if (isOpenDown && isOpenUp) { - return icons[5]; - } else if (isOpenLeft && isOpenRight) { - return icons[6]; - } else if (isOpenDown && isOpenLeft) { - return icons[8]; - } else if (isOpenDown && isOpenRight) { - return icons[10]; - } else if (isOpenUp && isOpenLeft) { - return icons[7]; - } else if (isOpenUp && isOpenRight) { - return icons[9]; - } else if (isOpenDown) { - return icons[3]; - } else if (isOpenUp) { - return icons[4]; - } else if (isOpenLeft) { - return icons[2]; - } else if (isOpenRight) { - return icons[1]; - } break; case 2: if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3 - 1, par4), - par1IBlockAccess.getBlockMetadata(par2, par3 - 1, par4))) { - isOpenDown = true; + blockAccess, + x, + y, + z, + blockAccess.getBlock(x + 1, y, z), + blockAccess.getBlockMetadata(x + 1, y, z))) { + isOpenLeft = true; } if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3 + 1, par4), - par1IBlockAccess.getBlockMetadata(par2, par3 + 1, par4))) { - isOpenUp = true; + blockAccess, + x, + y, + z, + blockAccess.getBlock(x - 1, y, z), + blockAccess.getBlockMetadata(x - 1, y, z))) { + isOpenRight = true; } if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2 - 1, par3, par4), - par1IBlockAccess.getBlockMetadata(par2 - 1, par3, par4))) { - isOpenLeft = true; + blockAccess, + x, + y, + z, + blockAccess.getBlock(x, y + 1, z), + blockAccess.getBlockMetadata(x, y + 1, z))) { + isOpenUp = true; } if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2 + 1, par3, par4), - par1IBlockAccess.getBlockMetadata(par2 + 1, par3, par4))) { - isOpenRight = true; + blockAccess, + x, + y, + z, + blockAccess.getBlock(x, y - 1, z), + blockAccess.getBlockMetadata(x, y - 1, z))) { + isOpenDown = true; } - if (isOpenUp && isOpenDown && isOpenLeft && isOpenRight) { - return icons[15]; - } else if (isOpenUp && isOpenDown && isOpenLeft) { - return icons[13]; - } else if (isOpenUp && isOpenDown && isOpenRight) { - return icons[14]; - } else if (isOpenUp && isOpenLeft && isOpenRight) { - return icons[11]; - } else if (isOpenDown && isOpenLeft && isOpenRight) { - return icons[12]; - } else if (isOpenDown && isOpenUp) { - return icons[6]; - } else if (isOpenLeft && isOpenRight) { - return icons[5]; - } else if (isOpenDown && isOpenLeft) { - return icons[9]; - } else if (isOpenDown && isOpenRight) { - return icons[10]; - } else if (isOpenUp && isOpenLeft) { - return icons[7]; - } else if (isOpenUp && isOpenRight) { - return icons[8]; - } else if (isOpenDown) { - return icons[1]; - } else if (isOpenUp) { - return icons[2]; - } else if (isOpenLeft) { - return icons[4]; - } else if (isOpenRight) { - return icons[3]; - } break; case 3: if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3 - 1, par4), - par1IBlockAccess.getBlockMetadata(par2, par3 - 1, par4))) { - isOpenDown = true; + blockAccess, + x, + y, + z, + blockAccess.getBlock(x - 1, y, z), + blockAccess.getBlockMetadata(x - 1, y, z))) { + isOpenLeft = true; } if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3 + 1, par4), - par1IBlockAccess.getBlockMetadata(par2, par3 + 1, par4))) { - isOpenUp = true; + blockAccess, + x, + y, + z, + blockAccess.getBlock(x + 1, y, z), + blockAccess.getBlockMetadata(x + 1, y, z))) { + isOpenRight = true; } if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2 - 1, par3, par4), - par1IBlockAccess.getBlockMetadata(par2 - 1, par3, par4))) { - isOpenLeft = true; + blockAccess, + x, + y, + z, + blockAccess.getBlock(x, y + 1, z), + blockAccess.getBlockMetadata(x, y + 1, z))) { + isOpenUp = true; } if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2 + 1, par3, par4), - par1IBlockAccess.getBlockMetadata(par2 + 1, par3, par4))) { - isOpenRight = true; + blockAccess, + x, + y, + z, + blockAccess.getBlock(x, y - 1, z), + blockAccess.getBlockMetadata(x, y - 1, z))) { + isOpenDown = true; } - if (isOpenUp && isOpenDown && isOpenLeft && isOpenRight) { - return icons[15]; - } else if (isOpenUp && isOpenDown && isOpenLeft) { - return icons[14]; - } else if (isOpenUp && isOpenDown && isOpenRight) { - return icons[13]; - } else if (isOpenUp && isOpenLeft && isOpenRight) { - return icons[11]; - } else if (isOpenDown && isOpenLeft && isOpenRight) { - return icons[12]; - } else if (isOpenDown && isOpenUp) { - return icons[6]; - } else if (isOpenLeft && isOpenRight) { - return icons[5]; - } else if (isOpenDown && isOpenLeft) { - return icons[10]; - } else if (isOpenDown && isOpenRight) { - return icons[9]; - } else if (isOpenUp && isOpenLeft) { - return icons[8]; - } else if (isOpenUp && isOpenRight) { - return icons[7]; - } else if (isOpenDown) { - return icons[1]; - } else if (isOpenUp) { - return icons[2]; - } else if (isOpenLeft) { - return icons[3]; - } else if (isOpenRight) { - return icons[4]; - } break; case 4: if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3 - 1, par4), - par1IBlockAccess.getBlockMetadata(par2, par3 - 1, par4))) { - isOpenDown = true; + blockAccess, + x, + y, + z, + blockAccess.getBlock(x, y, z - 1), + blockAccess.getBlockMetadata(x, y, z - 1))) { + isOpenLeft = true; } if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3 + 1, par4), - par1IBlockAccess.getBlockMetadata(par2, par3 + 1, par4))) { - isOpenUp = true; + blockAccess, + x, + y, + z, + blockAccess.getBlock(x, y, z + 1), + blockAccess.getBlockMetadata(x, y, z + 1))) { + isOpenRight = true; } if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3, par4 - 1), - par1IBlockAccess.getBlockMetadata(par2, par3, par4 - 1))) { - isOpenLeft = true; + blockAccess, + x, + y, + z, + blockAccess.getBlock(x, y + 1, z), + blockAccess.getBlockMetadata(x, y + 1, z))) { + isOpenUp = true; } if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3, par4 + 1), - par1IBlockAccess.getBlockMetadata(par2, par3, par4 + 1))) { - isOpenRight = true; + blockAccess, + x, + y, + z, + blockAccess.getBlock(x, y - 1, z), + blockAccess.getBlockMetadata(x, y - 1, z))) { + isOpenDown = true; } - if (isOpenUp && isOpenDown && isOpenLeft && isOpenRight) { - return icons[15]; - } else if (isOpenUp && isOpenDown && isOpenLeft) { - return icons[14]; - } else if (isOpenUp && isOpenDown && isOpenRight) { - return icons[13]; - } else if (isOpenUp && isOpenLeft && isOpenRight) { - return icons[11]; - } else if (isOpenDown && isOpenLeft && isOpenRight) { - return icons[12]; - } else if (isOpenDown && isOpenUp) { - return icons[6]; - } else if (isOpenLeft && isOpenRight) { - return icons[5]; - } else if (isOpenDown && isOpenLeft) { - return icons[10]; - } else if (isOpenDown && isOpenRight) { - return icons[9]; - } else if (isOpenUp && isOpenLeft) { - return icons[8]; - } else if (isOpenUp && isOpenRight) { - return icons[7]; - } else if (isOpenDown) { - return icons[1]; - } else if (isOpenUp) { - return icons[2]; - } else if (isOpenLeft) { - return icons[3]; - } else if (isOpenRight) { - return icons[4]; - } break; case 5: if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3 - 1, par4), - par1IBlockAccess.getBlockMetadata(par2, par3 - 1, par4))) { - isOpenDown = true; + blockAccess, + x, + y, + z, + blockAccess.getBlock(x, y, z + 1), + blockAccess.getBlockMetadata(x, y, z + 1))) { + isOpenLeft = true; } if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3 + 1, par4), - par1IBlockAccess.getBlockMetadata(par2, par3 + 1, par4))) { - isOpenUp = true; + blockAccess, + x, + y, + z, + blockAccess.getBlock(x, y, z - 1), + blockAccess.getBlockMetadata(x, y, z - 1))) { + isOpenRight = true; } if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3, par4 - 1), - par1IBlockAccess.getBlockMetadata(par2, par3, par4 - 1))) { - isOpenLeft = true; + blockAccess, + x, + y, + z, + blockAccess.getBlock(x, y + 1, z), + blockAccess.getBlockMetadata(x, y + 1, z))) { + isOpenUp = true; } if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3, par4 + 1), - par1IBlockAccess.getBlockMetadata(par2, par3, par4 + 1))) { - isOpenRight = true; + blockAccess, + x, + y, + z, + blockAccess.getBlock(x, y - 1, z), + blockAccess.getBlockMetadata(x, y - 1, z))) { + isOpenDown = true; } - if (isOpenUp && isOpenDown && isOpenLeft && isOpenRight) { - return icons[15]; - } else if (isOpenUp && isOpenDown && isOpenLeft) { - return icons[13]; - } else if (isOpenUp && isOpenDown && isOpenRight) { - return icons[14]; - } else if (isOpenUp && isOpenLeft && isOpenRight) { - return icons[11]; - } else if (isOpenDown && isOpenLeft && isOpenRight) { - return icons[12]; - } else if (isOpenDown && isOpenUp) { - return icons[6]; - } else if (isOpenLeft && isOpenRight) { - return icons[5]; - } else if (isOpenDown && isOpenLeft) { - return icons[9]; - } else if (isOpenDown && isOpenRight) { - return icons[10]; - } else if (isOpenUp && isOpenLeft) { - return icons[7]; - } else if (isOpenUp && isOpenRight) { - return icons[8]; - } else if (isOpenDown) { - return icons[1]; - } else if (isOpenUp) { - return icons[2]; - } else if (isOpenLeft) { - return icons[4]; - } else if (isOpenRight) { - return icons[3]; - } break; } - return icons[0]; + if (isOpenUp && isOpenDown && isOpenLeft && isOpenRight) { + return icons[15]; + } else if (isOpenUp && isOpenDown && isOpenLeft) { + return icons[14]; + } else if (isOpenUp && isOpenDown && isOpenRight) { + return icons[13]; + } else if (isOpenDown && isOpenLeft && isOpenRight) { + return icons[12]; + } else if (isOpenUp && isOpenLeft && isOpenRight) { + return icons[11]; + } else if (isOpenDown && isOpenLeft) { + return icons[10]; + } else if (isOpenDown && isOpenRight) { + return icons[9]; + } else if (isOpenUp && isOpenLeft) { + return icons[8]; + } else if (isOpenUp && isOpenRight) { + return icons[7]; + } else if (isOpenDown && isOpenUp) { + return icons[6]; + } else if (isOpenLeft && isOpenRight) { + return icons[5]; + } else if (isOpenRight) { + return icons[4]; + } else if (isOpenLeft) { + return icons[3]; + } else if (isOpenUp) { + return icons[2]; + } else if (isOpenDown) { + return icons[1]; + } else { + return icons[0]; + } } @Override - public boolean shouldSideBeRendered(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) { - Block b = par1IBlockAccess.getBlock(par2, par3, par4); - return b != this && super.shouldSideBeRendered(par1IBlockAccess, par2, par3, par4, par5); + public boolean shouldSideBeRendered(IBlockAccess blockAccess, int x, int y, int z, int side) { + Block b = blockAccess.getBlock(x, y, z); + return b != this && super.shouldSideBeRendered(blockAccess, x, y, z, side); } @Override @SideOnly(Side.CLIENT) - public IIcon getIcon(int par1, int par2) { + public IIcon getIcon(int side, int meta) { return icons[0]; } @Override - public AxisAlignedBB getSelectedBoundingBoxFromPool(World par1World, int par2, int par3, int par4) { + public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) { if (shouldRenderSelectionBox) { - return super.getSelectedBoundingBoxFromPool(par1World, par2, par3, par4); + return super.getSelectedBoundingBoxFromPool(world, x, y, z); } else { return AxisAlignedBB.getBoundingBox(0D, 0D, 0D, 0D, 0D, 0D); } } + protected void registerBlockIcons(IIconRegister iconRegister, IIcon[] icons, String folder) { + icons[0] = iconRegister.registerIcon("tinker:glass/" + folder + "/glass"); + icons[1] = iconRegister.registerIcon("tinker:glass/" + folder + "/glass_1_d"); + icons[2] = iconRegister.registerIcon("tinker:glass/" + folder + "/glass_1_u"); + icons[3] = iconRegister.registerIcon("tinker:glass/" + folder + "/glass_1_l"); + icons[4] = iconRegister.registerIcon("tinker:glass/" + folder + "/glass_1_r"); + icons[5] = iconRegister.registerIcon("tinker:glass/" + folder + "/glass_2_h"); + icons[6] = iconRegister.registerIcon("tinker:glass/" + folder + "/glass_2_v"); + icons[7] = iconRegister.registerIcon("tinker:glass/" + folder + "/glass_2_dl"); + icons[8] = iconRegister.registerIcon("tinker:glass/" + folder + "/glass_2_dr"); + icons[9] = iconRegister.registerIcon("tinker:glass/" + folder + "/glass_2_ul"); + icons[10] = iconRegister.registerIcon("tinker:glass/" + folder + "/glass_2_ur"); + icons[11] = iconRegister.registerIcon("tinker:glass/" + folder + "/glass_3_d"); + icons[12] = iconRegister.registerIcon("tinker:glass/" + folder + "/glass_3_u"); + icons[13] = iconRegister.registerIcon("tinker:glass/" + folder + "/glass_3_l"); + icons[14] = iconRegister.registerIcon("tinker:glass/" + folder + "/glass_3_r"); + icons[15] = iconRegister.registerIcon("tinker:glass/" + folder + "/glass_4"); + } + @Override - public void registerBlockIcons(IIconRegister par1IconRegister) { - icons[0] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/glass"); - icons[1] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/glass_1_d"); - icons[2] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/glass_1_u"); - icons[3] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/glass_1_l"); - icons[4] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/glass_1_r"); - icons[5] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/glass_2_h"); - icons[6] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/glass_2_v"); - icons[7] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/glass_2_dl"); - icons[8] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/glass_2_dr"); - icons[9] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/glass_2_ul"); - icons[10] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/glass_2_ur"); - icons[11] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/glass_3_d"); - icons[12] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/glass_3_u"); - icons[13] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/glass_3_l"); - icons[14] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/glass_3_r"); - icons[15] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/glass_4"); + public void registerBlockIcons(IIconRegister iconRegister) { + registerBlockIcons(iconRegister, icons, folder); } @Override diff --git a/src/main/java/tconstruct/smeltery/blocks/GlassBlockConnectedMeta.java b/src/main/java/tconstruct/smeltery/blocks/GlassBlockConnectedMeta.java index 8684ea4cf66..5c3aa585d21 100644 --- a/src/main/java/tconstruct/smeltery/blocks/GlassBlockConnectedMeta.java +++ b/src/main/java/tconstruct/smeltery/blocks/GlassBlockConnectedMeta.java @@ -9,7 +9,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -23,7 +22,7 @@ public class GlassBlockConnectedMeta extends GlassBlockConnected { public String[] textures; public IIcon[][] icons; - boolean ignoreMetaForConnectedGlass = PHConstruct.connectedTexturesMode == 2; + public static final boolean ignoreMetaForConnectedGlass = PHConstruct.connectedTexturesMode == 2; public GlassBlockConnectedMeta(String location, boolean hasAlpha, String... textures) { super(location, hasAlpha); @@ -33,64 +32,42 @@ public GlassBlockConnectedMeta(String location, boolean hasAlpha, String... text @Override @SideOnly(Side.CLIENT) - public IIcon getIcon(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) { - int meta = par1IBlockAccess.getBlockMetadata(par2, par3, par4); + public IIcon getIcon(IBlockAccess blockAccess, int x, int y, int z, int side) { + int meta = blockAccess.getBlockMetadata(x, y, z); if (meta < icons.length) { - return getConnectedBlockTexture(par1IBlockAccess, par2, par3, par4, par5, icons[meta]); + return getConnectedBlockTexture(blockAccess, x, y, z, side, icons[meta]); } else { - return getConnectedBlockTexture(par1IBlockAccess, par2, par3, par4, par5, icons[0]); + return getConnectedBlockTexture(blockAccess, x, y, z, side, icons[0]); } } @Override - public boolean shouldConnectToBlock(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, Block par5, - int par6) { - return par5 == this - && (par6 == par1IBlockAccess.getBlockMetadata(par2, par3, par4) || ignoreMetaForConnectedGlass); + public boolean shouldConnectToBlock(IBlockAccess blockAccess, int x, int y, int z, Block block, int meta) { + return block == this && (meta == blockAccess.getBlockMetadata(x, y, z) || ignoreMetaForConnectedGlass); } @Override @SideOnly(Side.CLIENT) - public IIcon getIcon(int par1, int par2) { - return icons[par2][0]; + public IIcon getIcon(int side, int meta) { + return icons[meta][0]; } @Override - public void getSubBlocks(Item b, CreativeTabs par2CreativeTabs, List par3List) { + public void getSubBlocks(Item b, CreativeTabs creativeTabs, List list) { for (int i = 0; i < textures.length; i++) { - par3List.add(new ItemStack(b, 1, i)); + list.add(new ItemStack(b, 1, i)); } } @Override - public void registerBlockIcons(IIconRegister par1IconRegister) { + public void registerBlockIcons(IIconRegister iconRegister) { for (int i = 0; i < textures.length; i++) { - icons[i][0] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/" + textures[i] + "/glass"); - icons[i][1] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/" + textures[i] + "/glass_1_d"); - icons[i][2] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/" + textures[i] + "/glass_1_u"); - icons[i][3] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/" + textures[i] + "/glass_1_l"); - icons[i][4] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/" + textures[i] + "/glass_1_r"); - icons[i][5] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/" + textures[i] + "/glass_2_h"); - icons[i][6] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/" + textures[i] + "/glass_2_v"); - icons[i][7] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/" + textures[i] + "/glass_2_dl"); - icons[i][8] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/" + textures[i] + "/glass_2_dr"); - icons[i][9] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/" + textures[i] + "/glass_2_ul"); - icons[i][10] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/" + textures[i] + "/glass_2_ur"); - icons[i][11] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/" + textures[i] + "/glass_3_d"); - icons[i][12] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/" + textures[i] + "/glass_3_u"); - icons[i][13] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/" + textures[i] + "/glass_3_l"); - icons[i][14] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/" + textures[i] + "/glass_3_r"); - icons[i][15] = par1IconRegister.registerIcon("tinker:glass/" + folder + "/" + textures[i] + "/glass_4"); + registerBlockIcons(iconRegister, icons[i], folder + "/" + textures[i]); } } @Override - public int damageDropped(int par1) { - return par1; - } - - @Override - public boolean canPlaceTorchOnTop(World world, int x, int y, int z) { - return true; + public int damageDropped(int meta) { + return meta; } } diff --git a/src/main/java/tconstruct/smeltery/blocks/GlassBlockStained.java b/src/main/java/tconstruct/smeltery/blocks/GlassBlockStained.java deleted file mode 100644 index 1c2b5ea42fe..00000000000 --- a/src/main/java/tconstruct/smeltery/blocks/GlassBlockStained.java +++ /dev/null @@ -1,50 +0,0 @@ -package tconstruct.smeltery.blocks; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.util.IIcon; -import net.minecraft.world.IBlockAccess; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import tconstruct.blocks.TConstructBlock; - -public class GlassBlockStained extends TConstructBlock { - - static String[] blockTextures = { "white", "orange", "magenta", "lightblue", "yellow", "lime", "pink", "gray", - "lightgray", "cyan", "purple", "blue", "brown", "green", "red", "black" }; - String textureName; - - public GlassBlockStained(String tex) { - super(Material.glass, 3f, blockTextures); - this.textureName = tex; - } - - @Override - public int getRenderBlockPass() { - return 1; - } - - @Override - public boolean isOpaqueCube() { - return false; - } - - @Override - @SideOnly(Side.CLIENT) - public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) { - Block block = world.getBlock(x, y, z); - return block != this && super.shouldSideBeRendered(world, x, y, z, side); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - this.icons = new IIcon[textureNames.length]; - - for (int i = 0; i < this.icons.length; ++i) { - this.icons[i] = iconRegister.registerIcon("tinker:glass/" + textureName + textureNames[i]); - } - } -} diff --git a/src/main/java/tconstruct/smeltery/blocks/GlassPane.java b/src/main/java/tconstruct/smeltery/blocks/GlassPane.java deleted file mode 100644 index afa30e203f5..00000000000 --- a/src/main/java/tconstruct/smeltery/blocks/GlassPane.java +++ /dev/null @@ -1,18 +0,0 @@ -package tconstruct.smeltery.blocks; - -import net.minecraft.block.material.Material; - -import tconstruct.library.TConstructRegistry; - -public class GlassPane extends PaneBase { - - static String[] blockTextures = { "glass_clear", "soulglass", "soulglass_clear" }; - - public GlassPane() { - super(Material.glass, "glass/", blockTextures); - this.setHardness(0.3F); - this.stepSound = soundTypeGlass; - this.setBlockName("tconstruct.glasspane"); - this.setCreativeTab(TConstructRegistry.blockTab); - } -} diff --git a/src/main/java/tconstruct/smeltery/blocks/GlassPaneConnected.java b/src/main/java/tconstruct/smeltery/blocks/GlassPaneConnected.java index 119d9d1e5d0..d839c3c089b 100644 --- a/src/main/java/tconstruct/smeltery/blocks/GlassPaneConnected.java +++ b/src/main/java/tconstruct/smeltery/blocks/GlassPaneConnected.java @@ -12,14 +12,11 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import tconstruct.smeltery.model.PaneConnectedRender; -import tconstruct.util.config.PHConstruct; public class GlassPaneConnected extends GlassBlockConnected { - private IIcon theIcon; + private IIcon sideIcon; public GlassPaneConnected(String location, boolean hasAlpha) { super(location, hasAlpha); @@ -28,510 +25,55 @@ public GlassPaneConnected(String location, boolean hasAlpha) { @Override public int getRenderType() { return PaneConnectedRender.model; - // return 0; } @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) { - if (par5 == 0 || par5 == 1) { - return par1IBlockAccess.getBlock(par2, par3 - 1, par4) == this && par5 == 0 ? icons[15] - : par1IBlockAccess.getBlock(par2, par3 + 1, par4) == this && par5 == 1 ? icons[15] - : getSideTextureIndex(); - } else { - return super.getIcon(par1IBlockAccess, par2, par3, par4, par5); - } - } - - @Override - public IIcon getConnectedBlockTexture(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5, - IIcon[] icons) { - if (par5 == 0 || par5 == 1) { - return getSideTextureIndex(); - } - - if (PHConstruct.connectedTexturesMode == 0) { - return icons[0]; - } - - boolean isOpenUp = false, isOpenDown = false, isOpenLeft = false, isOpenRight = false; - - switch (par5) { - case 0: - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2 - 1, par3, par4), - par1IBlockAccess.getBlockMetadata(par2 - 1, par3, par4))) { - isOpenDown = true; - } - - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2 + 1, par3, par4), - par1IBlockAccess.getBlockMetadata(par2 + 1, par3, par4))) { - isOpenUp = true; - } - - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3, par4 - 1), - par1IBlockAccess.getBlockMetadata(par2, par3, par4 - 1))) { - isOpenLeft = true; - } - - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3, par4 + 1), - par1IBlockAccess.getBlockMetadata(par2, par3, par4 + 1))) { - isOpenRight = true; - } - - if (isOpenUp && isOpenDown && isOpenLeft && isOpenRight) { - return icons[15]; - } else if (isOpenUp && isOpenDown && isOpenLeft) { - return icons[11]; - } else if (isOpenUp && isOpenDown && isOpenRight) { - return icons[12]; - } else if (isOpenUp && isOpenLeft && isOpenRight) { - return icons[13]; - } else if (isOpenDown && isOpenLeft && isOpenRight) { - return icons[14]; - } else if (isOpenDown && isOpenUp) { - return icons[5]; - } else if (isOpenLeft && isOpenRight) { - return icons[6]; - } else if (isOpenDown && isOpenLeft) { - return icons[8]; - } else if (isOpenDown && isOpenRight) { - return icons[10]; - } else if (isOpenUp && isOpenLeft) { - return icons[7]; - } else if (isOpenUp && isOpenRight) { - return icons[9]; - } else if (isOpenDown) { - return icons[3]; - } else if (isOpenUp) { - return icons[4]; - } else if (isOpenLeft) { - return icons[2]; - } else if (isOpenRight) { - return icons[1]; - } - break; - case 1: - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2 - 1, par3, par4), - par1IBlockAccess.getBlockMetadata(par2 - 1, par3, par4))) { - isOpenDown = true; - } - - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2 + 1, par3, par4), - par1IBlockAccess.getBlockMetadata(par2 + 1, par3, par4))) { - isOpenUp = true; - } - - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3, par4 - 1), - par1IBlockAccess.getBlockMetadata(par2, par3, par4 - 1))) { - isOpenLeft = true; - } - - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3, par4 + 1), - par1IBlockAccess.getBlockMetadata(par2, par3, par4 + 1))) { - isOpenRight = true; - } - - if (isOpenUp && isOpenDown && isOpenLeft && isOpenRight) { - return icons[15]; - } else if (isOpenUp && isOpenDown && isOpenLeft) { - return icons[11]; - } else if (isOpenUp && isOpenDown && isOpenRight) { - return icons[12]; - } else if (isOpenUp && isOpenLeft && isOpenRight) { - return icons[13]; - } else if (isOpenDown && isOpenLeft && isOpenRight) { - return icons[14]; - } else if (isOpenDown && isOpenUp) { - return icons[5]; - } else if (isOpenLeft && isOpenRight) { - return icons[6]; - } else if (isOpenDown && isOpenLeft) { - return icons[8]; - } else if (isOpenDown && isOpenRight) { - return icons[10]; - } else if (isOpenUp && isOpenLeft) { - return icons[7]; - } else if (isOpenUp && isOpenRight) { - return icons[9]; - } else if (isOpenDown) { - return icons[3]; - } else if (isOpenUp) { - return icons[4]; - } else if (isOpenLeft) { - return icons[2]; - } else if (isOpenRight) { - return icons[1]; - } - break; - case 2: - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3 - 1, par4), - par1IBlockAccess.getBlockMetadata(par2, par3 - 1, par4))) { - isOpenDown = true; - } - - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3 + 1, par4), - par1IBlockAccess.getBlockMetadata(par2, par3 + 1, par4))) { - isOpenUp = true; - } - - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2 - 1, par3, par4), - par1IBlockAccess.getBlockMetadata(par2 - 1, par3, par4))) { - isOpenLeft = true; - } - - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2 + 1, par3, par4), - par1IBlockAccess.getBlockMetadata(par2 + 1, par3, par4))) { - isOpenRight = true; - } - - if (isOpenUp && isOpenDown && isOpenLeft && isOpenRight) { - return icons[15]; - } else if (isOpenUp && isOpenDown && isOpenLeft) { - return icons[13]; - } else if (isOpenUp && isOpenDown && isOpenRight) { - return icons[14]; - } else if (isOpenUp && isOpenLeft && isOpenRight) { - return icons[11]; - } else if (isOpenDown && isOpenLeft && isOpenRight) { - return icons[12]; - } else if (isOpenDown && isOpenUp) { - return icons[6]; - } else if (isOpenLeft && isOpenRight) { - return icons[5]; - } else if (isOpenDown && isOpenLeft) { - return icons[9]; - } else if (isOpenDown && isOpenRight) { - return icons[10]; - } else if (isOpenUp && isOpenLeft) { - return icons[7]; - } else if (isOpenUp && isOpenRight) { - return icons[8]; - } else if (isOpenDown) { - return icons[1]; - } else if (isOpenUp) { - return icons[2]; - } else if (isOpenLeft) { - return icons[4]; - } else if (isOpenRight) { - return icons[3]; - } - break; - case 3: - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3 - 1, par4), - par1IBlockAccess.getBlockMetadata(par2, par3 - 1, par4))) { - isOpenDown = true; - } - - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3 + 1, par4), - par1IBlockAccess.getBlockMetadata(par2, par3 + 1, par4))) { - isOpenUp = true; - } - - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2 - 1, par3, par4), - par1IBlockAccess.getBlockMetadata(par2 - 1, par3, par4))) { - isOpenLeft = true; - } - - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2 + 1, par3, par4), - par1IBlockAccess.getBlockMetadata(par2 + 1, par3, par4))) { - isOpenRight = true; - } - - if (isOpenUp && isOpenDown && isOpenLeft && isOpenRight) { - return icons[15]; - } else if (isOpenUp && isOpenDown && isOpenLeft) { - return icons[14]; - } else if (isOpenUp && isOpenDown && isOpenRight) { - return icons[13]; - } else if (isOpenUp && isOpenLeft && isOpenRight) { - return icons[11]; - } else if (isOpenDown && isOpenLeft && isOpenRight) { - return icons[12]; - } else if (isOpenDown && isOpenUp) { - return icons[6]; - } else if (isOpenLeft && isOpenRight) { - return icons[5]; - } else if (isOpenDown && isOpenLeft) { - return icons[10]; - } else if (isOpenDown && isOpenRight) { - return icons[9]; - } else if (isOpenUp && isOpenLeft) { - return icons[8]; - } else if (isOpenUp && isOpenRight) { - return icons[7]; - } else if (isOpenDown) { - return icons[1]; - } else if (isOpenUp) { - return icons[2]; - } else if (isOpenLeft) { - return icons[3]; - } else if (isOpenRight) { - return icons[4]; - } - break; - case 4: - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3 - 1, par4), - par1IBlockAccess.getBlockMetadata(par2, par3 - 1, par4))) { - isOpenDown = true; - } - - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3 + 1, par4), - par1IBlockAccess.getBlockMetadata(par2, par3 + 1, par4))) { - isOpenUp = true; - } - - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3, par4 - 1), - par1IBlockAccess.getBlockMetadata(par2, par3, par4 - 1))) { - isOpenLeft = true; - } - - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3, par4 + 1), - par1IBlockAccess.getBlockMetadata(par2, par3, par4 + 1))) { - isOpenRight = true; - } - - if (isOpenUp && isOpenDown && isOpenLeft && isOpenRight) { - return icons[15]; - } else if (isOpenUp && isOpenDown && isOpenLeft) { - return icons[14]; - } else if (isOpenUp && isOpenDown && isOpenRight) { - return icons[13]; - } else if (isOpenUp && isOpenLeft && isOpenRight) { - return icons[11]; - } else if (isOpenDown && isOpenLeft && isOpenRight) { - return icons[12]; - } else if (isOpenDown && isOpenUp) { - return icons[6]; - } else if (isOpenLeft && isOpenRight) { - return icons[5]; - } else if (isOpenDown && isOpenLeft) { - return icons[10]; - } else if (isOpenDown && isOpenRight) { - return icons[9]; - } else if (isOpenUp && isOpenLeft) { - return icons[8]; - } else if (isOpenUp && isOpenRight) { - return icons[7]; - } else if (isOpenDown) { - return icons[1]; - } else if (isOpenUp) { - return icons[2]; - } else if (isOpenLeft) { - return icons[3]; - } else if (isOpenRight) { - return icons[4]; - } - break; - case 5: - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3 - 1, par4), - par1IBlockAccess.getBlockMetadata(par2, par3 - 1, par4))) { - isOpenDown = true; - } - - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3 + 1, par4), - par1IBlockAccess.getBlockMetadata(par2, par3 + 1, par4))) { - isOpenUp = true; - } - - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3, par4 - 1), - par1IBlockAccess.getBlockMetadata(par2, par3, par4 - 1))) { - isOpenLeft = true; - } - - if (shouldConnectToBlock( - par1IBlockAccess, - par2, - par3, - par4, - par1IBlockAccess.getBlock(par2, par3, par4 + 1), - par1IBlockAccess.getBlockMetadata(par2, par3, par4 + 1))) { - isOpenRight = true; - } + public IIcon getConnectedBlockTexture(IBlockAccess blockAccess, int x, int y, int z, int side, IIcon[] icons) { + if (side == 0 || side == 1) { + if ((blockAccess.getBlock(x, y - 1, z) == this && side == 0) + || (blockAccess.getBlock(x, y + 1, z) == this && side == 1)) { + return icons[15]; + } - if (isOpenUp && isOpenDown && isOpenLeft && isOpenRight) { - return icons[15]; - } else if (isOpenUp && isOpenDown && isOpenLeft) { - return icons[13]; - } else if (isOpenUp && isOpenDown && isOpenRight) { - return icons[14]; - } else if (isOpenUp && isOpenLeft && isOpenRight) { - return icons[11]; - } else if (isOpenDown && isOpenLeft && isOpenRight) { - return icons[12]; - } else if (isOpenDown && isOpenUp) { - return icons[6]; - } else if (isOpenLeft && isOpenRight) { - return icons[5]; - } else if (isOpenDown && isOpenLeft) { - return icons[9]; - } else if (isOpenDown && isOpenRight) { - return icons[10]; - } else if (isOpenUp && isOpenLeft) { - return icons[7]; - } else if (isOpenUp && isOpenRight) { - return icons[8]; - } else if (isOpenDown) { - return icons[1]; - } else if (isOpenUp) { - return icons[2]; - } else if (isOpenLeft) { - return icons[4]; - } else if (isOpenRight) { - return icons[3]; - } - break; + int meta = blockAccess.getBlockMetadata(x, y, z); + return side == 0 ? getBottomIcon(meta) : getTopIcon(meta); } - return icons[0]; + return super.getConnectedBlockTexture(blockAccess, x, y, z, side, icons); } @Override - public void addCollisionBoxesToList(World par1World, int par2, int par3, int par4, AxisAlignedBB par5AxisAlignedBB, - List par6List, Entity par7Entity) { - boolean flag = this.canPaneConnectTo(par1World, par2, par3, par4, ForgeDirection.NORTH); - boolean flag1 = this.canPaneConnectTo(par1World, par2, par3, par4, ForgeDirection.SOUTH); - boolean flag2 = this.canPaneConnectTo(par1World, par2, par3, par4, ForgeDirection.WEST); - boolean flag3 = this.canPaneConnectTo(par1World, par2, par3, par4, ForgeDirection.EAST); + public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB axisAlignedBB, + List par6List, Entity entity) { + boolean flag = this.canPaneConnectTo(world, x, y, z - 1, ForgeDirection.NORTH); + boolean flag1 = this.canPaneConnectTo(world, x, y, z + 1, ForgeDirection.SOUTH); + boolean flag2 = this.canPaneConnectTo(world, x - 1, y, z, ForgeDirection.WEST); + boolean flag3 = this.canPaneConnectTo(world, x + 1, y, z, ForgeDirection.EAST); if ((!flag2 || !flag3) && (flag2 || flag3 || flag || flag1)) { if (flag2 && !flag3) { this.setBlockBounds(0.0F, 0.0F, 0.4375F, 0.5F, 1.0F, 0.5625F); - super.addCollisionBoxesToList(par1World, par2, par3, par4, par5AxisAlignedBB, par6List, par7Entity); + super.addCollisionBoxesToList(world, x, y, z, axisAlignedBB, par6List, entity); } else if (!flag2 && flag3) { this.setBlockBounds(0.5F, 0.0F, 0.4375F, 1.0F, 1.0F, 0.5625F); - super.addCollisionBoxesToList(par1World, par2, par3, par4, par5AxisAlignedBB, par6List, par7Entity); + super.addCollisionBoxesToList(world, x, y, z, axisAlignedBB, par6List, entity); } } else { this.setBlockBounds(0.0F, 0.0F, 0.4375F, 1.0F, 1.0F, 0.5625F); - super.addCollisionBoxesToList(par1World, par2, par3, par4, par5AxisAlignedBB, par6List, par7Entity); + super.addCollisionBoxesToList(world, x, y, z, axisAlignedBB, par6List, entity); } if ((!flag || !flag1) && (flag2 || flag3 || flag || flag1)) { if (flag && !flag1) { this.setBlockBounds(0.4375F, 0.0F, 0.0F, 0.5625F, 1.0F, 0.5F); - super.addCollisionBoxesToList(par1World, par2, par3, par4, par5AxisAlignedBB, par6List, par7Entity); + super.addCollisionBoxesToList(world, x, y, z, axisAlignedBB, par6List, entity); } else if (!flag && flag1) { this.setBlockBounds(0.4375F, 0.0F, 0.5F, 0.5625F, 1.0F, 1.0F); - super.addCollisionBoxesToList(par1World, par2, par3, par4, par5AxisAlignedBB, par6List, par7Entity); + super.addCollisionBoxesToList(world, x, y, z, axisAlignedBB, par6List, entity); } } else { this.setBlockBounds(0.4375F, 0.0F, 0.0F, 0.5625F, 1.0F, 1.0F); - super.addCollisionBoxesToList(par1World, par2, par3, par4, par5AxisAlignedBB, par6List, par7Entity); + super.addCollisionBoxesToList(world, x, y, z, axisAlignedBB, par6List, entity); } } @@ -541,15 +83,15 @@ public void setBlockBoundsForItemRender() { } @Override - public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) { + public void setBlockBoundsBasedOnState(IBlockAccess blockAccess, int x, int y, int z) { float f = 0.4375F; float f1 = 0.5625F; float f2 = 0.4375F; float f3 = 0.5625F; - boolean flag = this.canPaneConnectTo(par1IBlockAccess, par2, par3, par4, ForgeDirection.NORTH); - boolean flag1 = this.canPaneConnectTo(par1IBlockAccess, par2, par3, par4, ForgeDirection.SOUTH); - boolean flag2 = this.canPaneConnectTo(par1IBlockAccess, par2, par3, par4, ForgeDirection.WEST); - boolean flag3 = this.canPaneConnectTo(par1IBlockAccess, par2, par3, par4, ForgeDirection.EAST); + boolean flag = this.canPaneConnectTo(blockAccess, x, y, z - 1, ForgeDirection.NORTH); + boolean flag1 = this.canPaneConnectTo(blockAccess, x, y, z + 1, ForgeDirection.SOUTH); + boolean flag2 = this.canPaneConnectTo(blockAccess, x - 1, y, z, ForgeDirection.WEST); + boolean flag3 = this.canPaneConnectTo(blockAccess, x + 1, y, z, ForgeDirection.EAST); if ((!flag2 || !flag3) && (flag2 || flag3 || flag || flag1)) { if (flag2 && !flag3) { @@ -576,27 +118,25 @@ public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, this.setBlockBounds(f, 0.0F, f2, f1, 1.0F, f3); } - public IIcon getSideTextureIndex() { - return this.theIcon; + public IIcon getTopIcon(int meta) { + return sideIcon; } - public final boolean canThisPaneConnectToThisBlock(Block b) { - return b.isOpaqueCube() || b == this || b == Blocks.glass; + public IIcon getBottomIcon(int meta) { + return sideIcon; } - @Override - public void registerBlockIcons(IIconRegister par1IconRegister) { - super.registerBlockIcons(par1IconRegister); - this.theIcon = par1IconRegister.registerIcon("tinker:glass/" + folder + "/glass_side"); + public final boolean canPaneConnectToBlock(Block b) { + return b.isOpaqueCube() || b == this || b == Blocks.glass; } - public boolean canPaneConnectTo(IBlockAccess access, int x, int y, int z, ForgeDirection dir) { - return canThisPaneConnectToThisBlock(access.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ)) - || access.isSideSolid(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir.getOpposite(), false); + @Override + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.sideIcon = iconRegister.registerIcon("tinker:glass/" + folder + "/glass_side"); } - @Override - public boolean shouldSideBeRendered(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) { - return true; + public boolean canPaneConnectTo(IBlockAccess world, int x, int y, int z, ForgeDirection dir) { + return canPaneConnectToBlock(world.getBlock(x, y, z)) || world.isSideSolid(x, y, z, dir.getOpposite(), false); } } diff --git a/src/main/java/tconstruct/smeltery/blocks/GlassPaneConnectedMeta.java b/src/main/java/tconstruct/smeltery/blocks/GlassPaneConnectedMeta.java new file mode 100644 index 00000000000..b9283343638 --- /dev/null +++ b/src/main/java/tconstruct/smeltery/blocks/GlassPaneConnectedMeta.java @@ -0,0 +1,85 @@ +package tconstruct.smeltery.blocks; + +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import tconstruct.util.config.PHConstruct; + +public class GlassPaneConnectedMeta extends GlassPaneConnected { + + private final String[] textures; + private final IIcon[][] icons; + private final IIcon[] topIcons; + private final IIcon[] bottomIcons; + public static final boolean ignoreMetaForConnectedGlass = PHConstruct.connectedTexturesMode == 2; + + public GlassPaneConnectedMeta(String location, boolean hasAlpha, String... textures) { + super(location, hasAlpha); + this.textures = textures; + this.icons = new IIcon[textures.length][16]; + this.topIcons = new IIcon[textures.length]; + this.bottomIcons = new IIcon[textures.length]; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess blockAccess, int x, int y, int z, int side) { + int meta = blockAccess.getBlockMetadata(x, y, z); + if (meta < icons.length) { + return getConnectedBlockTexture(blockAccess, x, y, z, side, icons[meta]); + } else { + return getConnectedBlockTexture(blockAccess, x, y, z, side, icons[0]); + } + } + + @Override + public boolean shouldConnectToBlock(IBlockAccess blockAccess, int x, int y, int z, Block block, int meta) { + return block == this && (meta == blockAccess.getBlockMetadata(x, y, z) || ignoreMetaForConnectedGlass); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return icons[meta][0]; + } + + @Override + public void getSubBlocks(Item b, CreativeTabs creativeTabs, List list) { + for (int i = 0; i < textures.length; i++) { + list.add(new ItemStack(b, 1, i)); + } + } + + @Override + public void registerBlockIcons(IIconRegister iconRegister) { + for (int i = 0; i < textures.length; i++) { + registerBlockIcons(iconRegister, icons[i], folder + "/" + textures[i]); + topIcons[i] = iconRegister.registerIcon("tinker:glass/" + folder + "/" + textures[i] + "/glass_top"); + bottomIcons[i] = iconRegister.registerIcon("tinker:glass/" + folder + "/" + textures[i] + "/glass_bottom"); + } + } + + @Override + public IIcon getTopIcon(int meta) { + return topIcons[meta]; + } + + @Override + public IIcon getBottomIcon(int meta) { + return bottomIcons[meta]; + } + + @Override + public int damageDropped(int meta) { + return meta; + } +} diff --git a/src/main/java/tconstruct/smeltery/blocks/GlassPaneStained.java b/src/main/java/tconstruct/smeltery/blocks/GlassPaneStained.java deleted file mode 100644 index 09bb6775c6f..00000000000 --- a/src/main/java/tconstruct/smeltery/blocks/GlassPaneStained.java +++ /dev/null @@ -1,38 +0,0 @@ -package tconstruct.smeltery.blocks; - -import net.minecraft.block.material.Material; - -import tconstruct.library.TConstructRegistry; - -public class GlassPaneStained extends PaneBase { - - static String[] blockTextures = { "white", "orange", "magenta", "lightblue", "yellow", "lime", "pink", "gray", - "lightgray", "cyan", "purple", "blue", "brown", "green", "red", "black" }; - - public GlassPaneStained() { - super(Material.glass, "glass/", assembleBlockTextures()); - // TODO setHardness - this.setHardness(0.3F); - this.stepSound = soundTypeGlass; - this.setBlockName("tconstruct.glasspanestained"); - this.setCreativeTab(TConstructRegistry.blockTab); - } - - private static String[] assembleBlockTextures() { - String[] textures = new String[blockTextures.length]; - for (int i = 0; i < blockTextures.length; i++) { - textures[i] = "stainedglass_" + blockTextures[i]; - } - return textures; - } - - @Override - public int getRenderBlockPass() { - return 1; - } - - @Override - public int damageDropped(int par1) { - return par1; - } -} diff --git a/src/main/java/tconstruct/smeltery/blocks/PaneBase.java b/src/main/java/tconstruct/smeltery/blocks/PaneBase.java deleted file mode 100644 index d542a6f5505..00000000000 --- a/src/main/java/tconstruct/smeltery/blocks/PaneBase.java +++ /dev/null @@ -1,81 +0,0 @@ -package tconstruct.smeltery.blocks; - -import java.util.List; - -import net.minecraft.block.BlockStainedGlassPane; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import tconstruct.smeltery.model.PaneRender; - -public class PaneBase extends BlockStainedGlassPane { - - public String[] textureNames; - public String folder; - public IIcon[] icons; - public IIcon[] sideIcons; - - public PaneBase(Material material, String folder, String[] blockTextures) { - super(); - textureNames = blockTextures; - this.folder = folder; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - this.icons = new IIcon[textureNames.length]; - this.sideIcons = new IIcon[textureNames.length]; - - for (int i = 0; i < this.icons.length; ++i) { - this.icons[i] = iconRegister.registerIcon("tinker:" + folder + textureNames[i]); - this.sideIcons[i] = iconRegister.registerIcon("tinker:" + folder + textureNames[i] + "_side"); - } - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon func_149735_b(int side, int meta) { - return icons[meta]; - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon func_150104_b(int p_150104_1_) { - return sideIcons[p_150104_1_]; - } - - @Override - public IIcon getIcon(int side, int meta) { - return icons[meta]; - } - - @Override - @SideOnly(Side.CLIENT) - public void getSubBlocks(Item b, CreativeTabs tab, List list) { - for (int iter = 0; iter < textureNames.length; iter++) { - list.add(new ItemStack(b, 1, iter)); - } - } - - @Override - public boolean isOpaqueCube() { - return false; - } - - @Override - public boolean renderAsNormalBlock() { - return false; - } - - @Override - public int getRenderType() { - return PaneRender.model; - } -} diff --git a/src/main/java/tconstruct/smeltery/itemblocks/GlassBlockItem.java b/src/main/java/tconstruct/smeltery/itemblocks/GlassBlockItem.java index 7c06f5e88b8..ffb62f577ea 100644 --- a/src/main/java/tconstruct/smeltery/itemblocks/GlassBlockItem.java +++ b/src/main/java/tconstruct/smeltery/itemblocks/GlassBlockItem.java @@ -11,8 +11,7 @@ public class GlassBlockItem extends MultiItemBlock { - public static final String[] blockTypes = { "pure" }; // , "soul", - // "soul.pure" }; + public static final String[] blockTypes = { "pure" }; public GlassBlockItem(Block b) { super(b, "block.glass", blockTypes); diff --git a/src/main/java/tconstruct/smeltery/itemblocks/GlassPaneItem.java b/src/main/java/tconstruct/smeltery/itemblocks/GlassPaneItem.java index 63f14aab7da..2d0dd8f949e 100644 --- a/src/main/java/tconstruct/smeltery/itemblocks/GlassPaneItem.java +++ b/src/main/java/tconstruct/smeltery/itemblocks/GlassPaneItem.java @@ -6,7 +6,7 @@ public class GlassPaneItem extends MultiItemBlock { - public static final String[] blockTypes = { "pure", "soul", "soul.pure" }; + public static final String[] blockTypes = { "pure" }; public GlassPaneItem(Block b) { super(b, "block.glass", "pane", blockTypes); diff --git a/src/main/java/tconstruct/smeltery/itemblocks/StainedGlassClearPaneItem.java b/src/main/java/tconstruct/smeltery/itemblocks/StainedGlassClearPaneItem.java index 296552c09c6..b44ff22f7f2 100644 --- a/src/main/java/tconstruct/smeltery/itemblocks/StainedGlassClearPaneItem.java +++ b/src/main/java/tconstruct/smeltery/itemblocks/StainedGlassClearPaneItem.java @@ -1,7 +1,10 @@ package tconstruct.smeltery.itemblocks; import net.minecraft.block.Block; +import net.minecraft.util.IIcon; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import mantle.blocks.abstracts.MultiItemBlock; public class StainedGlassClearPaneItem extends MultiItemBlock { @@ -14,4 +17,10 @@ public StainedGlassClearPaneItem(Block b) { setMaxDamage(0); setHasSubtypes(true); } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(int meta) { + return this.field_150939_a.getIcon(1, meta); + } } diff --git a/src/main/java/tconstruct/smeltery/model/PaneConnectedRender.java b/src/main/java/tconstruct/smeltery/model/PaneConnectedRender.java index 8fd3194749b..06838a17d84 100644 --- a/src/main/java/tconstruct/smeltery/model/PaneConnectedRender.java +++ b/src/main/java/tconstruct/smeltery/model/PaneConnectedRender.java @@ -6,9 +6,12 @@ import static net.minecraftforge.common.util.ForgeDirection.WEST; import net.minecraft.block.Block; +import net.minecraft.client.renderer.EntityRenderer; import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; +import net.minecraftforge.common.util.ForgeDirection; import com.gtnewhorizons.angelica.api.ThreadSafeISBRH; @@ -22,59 +25,240 @@ public class PaneConnectedRender implements ISimpleBlockRenderingHandler { public static int model = RenderingRegistry.getNextAvailableRenderId(); @Override - public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) {} + public void renderInventoryBlock(Block block, int meta, int modelID, RenderBlocks renderer) {} @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { - boolean temp = renderer.renderAllFaces; - renderer.renderAllFaces = true; + // Boilerplate partially copied from renderBlockPane / renderBlockStainedGlassPane + Tessellator tessellator = Tessellator.instance; + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + int multRGB = block.colorMultiplier(world, x, y, z); + float multR = (float) (multRGB >> 16 & 255) / 255.0F; + float multG = (float) (multRGB >> 8 & 255) / 255.0F; + float multB = (float) (multRGB & 255) / 255.0F; - GlassPaneConnected pane = (GlassPaneConnected) block; + if (EntityRenderer.anaglyphEnable) { + float tempR = (multR * 30.0F + multG * 59.0F + multB * 11.0F) / 100.0F; + float tempG = (multR * 30.0F + multG * 70.0F) / 100.0F; + float tempB = (multR * 30.0F + multB * 70.0F) / 100.0F; + multR = tempR; + multG = tempG; + multB = tempB; + } - boolean flag = pane.canPaneConnectTo(world, x, y, z, EAST); - boolean flag1 = pane.canPaneConnectTo(world, x, y, z, WEST); - boolean flag2 = pane.canPaneConnectTo(world, x, y, z, SOUTH); - boolean flag3 = pane.canPaneConnectTo(world, x, y, z, NORTH); + tessellator.setColorOpaque_F(multR, multG, multB); + + // Fetch pane + GlassPaneConnected pane = (GlassPaneConnected) block; - IIcon sideTexture = pane.getSideTextureIndex(); + boolean bottom = pane.shouldSideBeRendered(world, x, y - 1, z, 0); + boolean top = pane.shouldSideBeRendered(world, x, y + 1, z, 1); + boolean north = pane.canPaneConnectTo(world, x, y, z - 1, NORTH); + boolean south = pane.canPaneConnectTo(world, x, y, z + 1, SOUTH); + boolean west = pane.canPaneConnectTo(world, x - 1, y, z, WEST); + boolean east = pane.canPaneConnectTo(world, x + 1, y, z, EAST); - if (!flag && !flag1 && !flag2 && !flag3) { - renderer.setRenderBounds(0D, 0D, 0.45D, 1D, 1D, 0.55D); - renderer.renderStandardBlock(block, x, y, z); - renderer.setRenderBounds(0.45D, 0D, 0D, 0.55D, 1D, 1D); - renderer.renderStandardBlock(block, x, y, z); - } // else { - // renderer.setRenderBounds(0.45D, 0D, 0.45D, 0.55D, 1D, 0.55D); - // renderer.renderStandardBlock(block, x, y, z); - // } + boolean cross = false; + if (!north && !south && !west && !east) { + cross = true; + north = south = west = east = true; + } - // renderer.setOverrideBlockTexture(sideTexture); + IIcon bottomIcon = pane.getIcon(world, x, y, z, 0); + IIcon topIcon = pane.getIcon(world, x, y, z, 1); + IIcon northIcon = pane.getIcon(world, x, y, z, 2); + IIcon southIcon = pane.getIcon(world, x, y, z, 3); + IIcon westIcon = pane.getIcon(world, x, y, z, 4); + IIcon eastIcon = pane.getIcon(world, x, y, z, 5); - if (flag) { - renderer.setRenderBounds(0.45D, 0D, 0.45D, 1D, 1D, 0.55D); - renderer.renderStandardBlock(block, x, y, z); + if (bottom) { + renderTopOrBottom(tessellator, x, y, z, north, south, west, east, false, bottomIcon); } - if (flag1) { - renderer.setRenderBounds(0D, 0D, 0.45D, 0.45D, 1D, 0.55D); - renderer.renderStandardBlock(block, x, y, z); + if (top) { + renderTopOrBottom(tessellator, x, y, z, north, south, west, east, true, topIcon); } - if (flag2) { - renderer.setRenderBounds(0.45D, 0D, 0.45D, 0.55D, 1D, 1D); - renderer.renderStandardBlock(block, x, y, z); + renderSide(tessellator, x, y, z, NORTH, east, west, north, cross, northIcon); + renderSide(tessellator, x, y, z, SOUTH, west, east, south, cross, southIcon); + renderSide(tessellator, x, y, z, WEST, north, south, west, cross, westIcon); + renderSide(tessellator, x, y, z, EAST, south, north, east, cross, eastIcon); + + return true; + } + + private void renderTopOrBottom(Tessellator tessellator, int x, int y, int z, boolean north, boolean south, + boolean west, boolean east, boolean top, IIcon icon) { + float minU = icon.getMinU(); + float maxU = icon.getMaxU(); + float minV = icon.getMinV(); + float maxV = icon.getMaxV(); + float startU = icon.getInterpolatedU(7); + float endU = icon.getInterpolatedU(9); + float startV = icon.getInterpolatedV(7); + float endV = icon.getInterpolatedV(9); + double startX = x + (7.0 / 16.0); + double startZ = z + (7.0 / 16.0); + double endX = x + (9.0 / 16.0); + double endZ = z + (9.0 / 16.0); + + // All in top winding order - direction is reversed for bottom + double[] centerSquareXZUV = new double[] { endX, startZ, endU, startV, startX, startZ, startU, startV, startX, + endZ, startU, endV, endX, endZ, endU, endV, }; + double[] northXZUV = new double[] { endX, z, endU, minV, startX, z, startU, minV, startX, startZ, startU, + startV, endX, startZ, endU, startV }; + double[] southXZUV = new double[] { endX, endZ, endU, endV, startX, endZ, startU, endV, startX, z + 1, startU, + maxV, endX, z + 1, endU, maxV }; + double[] eastXZUV = new double[] { x + 1, startZ, maxU, startV, endX, startZ, endU, startV, endX, endZ, endU, + endV, x + 1, endZ, maxU, endV }; + double[] westXZUV = new double[] { startX, startZ, startU, startV, x, startZ, minU, startV, x, endZ, minU, endV, + startX, endZ, startU, endV }; + + renderXZUV(tessellator, centerSquareXZUV, y, top); + + if (north) { + renderXZUV(tessellator, northXZUV, y, top); } + if (south) { + renderXZUV(tessellator, southXZUV, y, top); + } + if (east) { + renderXZUV(tessellator, eastXZUV, y, top); + } + if (west) { + renderXZUV(tessellator, westXZUV, y, top); + } + } - if (flag3) { - renderer.setRenderBounds(0.45D, 0D, 0D, 0.55D, 1D, 0.45D); - renderer.renderStandardBlock(block, x, y, z); + private void renderXZUV(Tessellator tessellator, double[] xzuv, double y, boolean top) { + if (top) { + for (int i = 0; i < xzuv.length; i += 4) { + tessellator.addVertexWithUV(xzuv[i], y + 1, xzuv[i + 1], xzuv[i + 2], xzuv[i + 3]); + } + } else { + for (int i = xzuv.length - 4; i >= 0; i -= 4) { + tessellator.addVertexWithUV(xzuv[i], y - 0, xzuv[i + 1], xzuv[i + 2], xzuv[i + 3]); + } } + } - renderer.clearOverrideBlockTexture(); + private void renderSide(Tessellator tessellator, int x, int y, int z, ForgeDirection side, boolean left, + boolean right, boolean front, boolean cross, IIcon icon) { + float minU = icon.getMinU(); + float maxU = icon.getMaxU(); + float minV = icon.getMinV(); + float maxV = icon.getMaxV(); + float startU = icon.getInterpolatedU(7); + float endU = icon.getInterpolatedU(9); + double startX = x + (7.0 / 16.0); + double startZ = z + (7.0 / 16.0); + double endX = x + (9.0 / 16.0); + double endZ = z + (9.0 / 16.0); - renderer.renderAllFaces = false; - return true; + switch (side) { + case NORTH: + double northZ = z + (7.0 / 16.0); + if (right) { + tessellator.addVertexWithUV(x, y + 1, northZ, maxU, minV); + tessellator.addVertexWithUV(startX, y + 1, northZ, endU, minV); + tessellator.addVertexWithUV(startX, y, northZ, endU, maxV); + tessellator.addVertexWithUV(x, y, northZ, maxU, maxV); + } + + if (left) { + tessellator.addVertexWithUV(endX, y + 1, northZ, startU, minV); + tessellator.addVertexWithUV(x + 1, y + 1, northZ, minU, minV); + tessellator.addVertexWithUV(x + 1, y, northZ, minU, maxV); + tessellator.addVertexWithUV(endX, y, northZ, startU, maxV); + } + + if (cross) northZ = z; + if (cross || !front) { + tessellator.addVertexWithUV(startX, y + 1, northZ, endU, minV); + tessellator.addVertexWithUV(endX, y + 1, northZ, startU, minV); + tessellator.addVertexWithUV(endX, y, northZ, startU, maxV); + tessellator.addVertexWithUV(startX, y, northZ, endU, maxV); + } + + break; + case SOUTH: + double southZ = z + (9.0 / 16.0); + if (right) { + tessellator.addVertexWithUV(x + 1, y + 1, southZ, maxU, minV); + tessellator.addVertexWithUV(endX, y + 1, southZ, endU, minV); + tessellator.addVertexWithUV(endX, y, southZ, endU, maxV); + tessellator.addVertexWithUV(x + 1, y, southZ, maxU, maxV); + } + + if (left) { + tessellator.addVertexWithUV(startX, y + 1, southZ, startU, minV); + tessellator.addVertexWithUV(x, y + 1, southZ, minU, minV); + tessellator.addVertexWithUV(x, y, southZ, minU, maxV); + tessellator.addVertexWithUV(startX, y, southZ, startU, maxV); + } + + if (cross) southZ = z + 1; + if (cross || !front) { + tessellator.addVertexWithUV(endX, y + 1, southZ, endU, minV); + tessellator.addVertexWithUV(startX, y + 1, southZ, startU, minV); + tessellator.addVertexWithUV(startX, y, southZ, startU, maxV); + tessellator.addVertexWithUV(endX, y, southZ, endU, maxV); + } + + break; + case WEST: + double westX = x + (7.0 / 16.0); + if (right) { + tessellator.addVertexWithUV(westX, y + 1, z + 1, maxU, minV); + tessellator.addVertexWithUV(westX, y + 1, endZ, endU, minV); + tessellator.addVertexWithUV(westX, y, endZ, endU, maxV); + tessellator.addVertexWithUV(westX, y, z + 1, maxU, maxV); + } + + if (left) { + tessellator.addVertexWithUV(westX, y + 1, startZ, startU, minV); + tessellator.addVertexWithUV(westX, y + 1, z, minU, minV); + tessellator.addVertexWithUV(westX, y, z, minU, maxV); + tessellator.addVertexWithUV(westX, y, startZ, startU, maxV); + } + + if (cross) westX = x; + if (cross || !front) { + tessellator.addVertexWithUV(westX, y + 1, endZ, endU, minV); + tessellator.addVertexWithUV(westX, y + 1, startZ, startU, minV); + tessellator.addVertexWithUV(westX, y, startZ, startU, maxV); + tessellator.addVertexWithUV(westX, y, endZ, endU, maxV); + } + + break; + case EAST: + double eastX = x + (9.0 / 16.0); + + if (right) { + tessellator.addVertexWithUV(eastX, y + 1, z, maxU, minV); + tessellator.addVertexWithUV(eastX, y + 1, startZ, endU, minV); + tessellator.addVertexWithUV(eastX, y, startZ, endU, maxV); + tessellator.addVertexWithUV(eastX, y, z, maxU, maxV); + } + + if (left) { + tessellator.addVertexWithUV(eastX, y + 1, endZ, startU, minV); + tessellator.addVertexWithUV(eastX, y + 1, z + 1, minU, minV); + tessellator.addVertexWithUV(eastX, y, z + 1, minU, maxV); + tessellator.addVertexWithUV(eastX, y, endZ, startU, maxV); + } + + if (cross) eastX = x + 1; + if (cross || !front) { + tessellator.addVertexWithUV(eastX, y + 1, startZ, endU, minV); + tessellator.addVertexWithUV(eastX, y + 1, endZ, startU, minV); + tessellator.addVertexWithUV(eastX, y, endZ, startU, maxV); + tessellator.addVertexWithUV(eastX, y, startZ, endU, maxV); + } + + break; + } } @Override diff --git a/src/main/java/tconstruct/smeltery/model/PaneRender.java b/src/main/java/tconstruct/smeltery/model/PaneRender.java deleted file mode 100644 index 2e226ff655a..00000000000 --- a/src/main/java/tconstruct/smeltery/model/PaneRender.java +++ /dev/null @@ -1,47 +0,0 @@ -package tconstruct.smeltery.model; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.world.IBlockAccess; - -import com.gtnewhorizons.angelica.api.ThreadSafeISBRH; - -import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; -import cpw.mods.fml.client.registry.RenderingRegistry; -import tconstruct.util.ItemHelper; - -@ThreadSafeISBRH(perThread = false) -public class PaneRender implements ISimpleBlockRenderingHandler { - - public static int model = RenderingRegistry.getNextAvailableRenderId(); - - @Override - public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) { - if (modelID == model) { - renderer.setRenderBounds(0.0F, 0.0F, 0.4375F, 1.0F, 1.0F, 0.5625F); - ItemHelper.renderStandardInvBlock(renderer, block, metadata); - } - } - - @Override - public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelID, - RenderBlocks renderer) { - if (modelID == model) { - // renderer.setOverrideBlockTexture(((PaneBase)block).getIcon(0, world.getBlockMetadata(x,y,z))); - return renderer.renderBlockStainedGlassPane(block, x, y, z); - // return renderPaneInWorld(renderer, world, x, y, z, (PaneBase) block); - } else { - return false; - } - } - - @Override - public boolean shouldRender3DInInventory(int modelID) { - return true; - } - - @Override - public int getRenderId() { - return model; - } -} diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/clear/glass_side.png b/src/main/resources/assets/tinker/textures/blocks/glass/clear/glass_side.png index 6aacd57b2f0..2f71e27f7d9 100644 Binary files a/src/main/resources/assets/tinker/textures/blocks/glass/clear/glass_side.png and b/src/main/resources/assets/tinker/textures/blocks/glass/clear/glass_side.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/black/glass_bottom.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/black/glass_bottom.png new file mode 100644 index 00000000000..b1b919c073a Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/black/glass_bottom.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/black/glass_top.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/black/glass_top.png new file mode 100644 index 00000000000..c2fe0732a8e Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/black/glass_top.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/blue/glass_bottom.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/blue/glass_bottom.png new file mode 100644 index 00000000000..770a160974c Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/blue/glass_bottom.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/blue/glass_top.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/blue/glass_top.png new file mode 100644 index 00000000000..b1cdc5b1052 Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/blue/glass_top.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/brown/glass_bottom.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/brown/glass_bottom.png new file mode 100644 index 00000000000..f1c271259c7 Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/brown/glass_bottom.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/brown/glass_top.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/brown/glass_top.png new file mode 100644 index 00000000000..9ab092070e9 Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/brown/glass_top.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/cyan/glass_bottom.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/cyan/glass_bottom.png new file mode 100644 index 00000000000..67210823f9e Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/cyan/glass_bottom.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/cyan/glass_top.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/cyan/glass_top.png new file mode 100644 index 00000000000..f52acf3f80c Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/cyan/glass_top.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/gray/glass_bottom.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/gray/glass_bottom.png new file mode 100644 index 00000000000..a08d9e652ec Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/gray/glass_bottom.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/gray/glass_top.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/gray/glass_top.png new file mode 100644 index 00000000000..4c96687da30 Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/gray/glass_top.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/green/glass_bottom.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/green/glass_bottom.png new file mode 100644 index 00000000000..4f4d636d750 Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/green/glass_bottom.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/green/glass_top.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/green/glass_top.png new file mode 100644 index 00000000000..d542278c989 Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/green/glass_top.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/light_blue/glass_bottom.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/light_blue/glass_bottom.png new file mode 100644 index 00000000000..873f41b1b62 Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/light_blue/glass_bottom.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/light_blue/glass_top.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/light_blue/glass_top.png new file mode 100644 index 00000000000..351f8bc2cfd Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/light_blue/glass_top.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/light_gray/glass_bottom.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/light_gray/glass_bottom.png new file mode 100644 index 00000000000..ece993f335a Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/light_gray/glass_bottom.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/light_gray/glass_top.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/light_gray/glass_top.png new file mode 100644 index 00000000000..31f5c21b885 Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/light_gray/glass_top.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/lime/glass_bottom.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/lime/glass_bottom.png new file mode 100644 index 00000000000..e79a67a868c Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/lime/glass_bottom.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/lime/glass_top.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/lime/glass_top.png new file mode 100644 index 00000000000..8d5573c6079 Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/lime/glass_top.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/magenta/glass_bottom.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/magenta/glass_bottom.png new file mode 100644 index 00000000000..507a58af4ca Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/magenta/glass_bottom.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/magenta/glass_top.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/magenta/glass_top.png new file mode 100644 index 00000000000..9d082246d7b Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/magenta/glass_top.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/orange/glass_bottom.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/orange/glass_bottom.png new file mode 100644 index 00000000000..7bd12f7ad5e Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/orange/glass_bottom.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/orange/glass_top.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/orange/glass_top.png new file mode 100644 index 00000000000..72660fa81d0 Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/orange/glass_top.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/pink/glass_bottom.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/pink/glass_bottom.png new file mode 100644 index 00000000000..167a76a7df1 Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/pink/glass_bottom.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/pink/glass_top.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/pink/glass_top.png new file mode 100644 index 00000000000..51778b159b9 Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/pink/glass_top.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/purple/glass_bottom.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/purple/glass_bottom.png new file mode 100644 index 00000000000..8d45835443b Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/purple/glass_bottom.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/purple/glass_top.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/purple/glass_top.png new file mode 100644 index 00000000000..1350f682b4f Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/purple/glass_top.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/red/glass_bottom.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/red/glass_bottom.png new file mode 100644 index 00000000000..437cefc3fd8 Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/red/glass_bottom.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/red/glass_top.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/red/glass_top.png new file mode 100644 index 00000000000..be3a0a0ea92 Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/red/glass_top.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/white/glass_bottom.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/white/glass_bottom.png new file mode 100644 index 00000000000..58cfe3acbc7 Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/white/glass_bottom.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/white/glass_top.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/white/glass_top.png new file mode 100644 index 00000000000..c4f25b00803 Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/white/glass_top.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/yellow/glass_bottom.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/yellow/glass_bottom.png new file mode 100644 index 00000000000..03bbcb6ebcb Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/yellow/glass_bottom.png differ diff --git a/src/main/resources/assets/tinker/textures/blocks/glass/stained/yellow/glass_top.png b/src/main/resources/assets/tinker/textures/blocks/glass/stained/yellow/glass_top.png new file mode 100644 index 00000000000..c1b12984847 Binary files /dev/null and b/src/main/resources/assets/tinker/textures/blocks/glass/stained/yellow/glass_top.png differ