From 9360983a8b48950d781729b56d8b7e5b9ab775a3 Mon Sep 17 00:00:00 2001 From: Moses Miller Date: Mon, 9 Feb 2026 17:21:57 -0800 Subject: [PATCH 1/3] Rework glass panes to connect properly. Fixes rendering for both clear and stained glass panes, and cleans up some older code. This commit is missing textures for the tops and bottoms of the stained panes. --- .../smeltery/SmelteryProxyClient.java | 2 - .../tconstruct/smeltery/TinkerSmeltery.java | 24 +- .../smeltery/blocks/GlassBlock.java | 73 --- .../smeltery/blocks/GlassBlockConnected.java | 619 ++++++------------ .../blocks/GlassBlockConnectedMeta.java | 53 +- .../smeltery/blocks/GlassBlockStained.java | 50 -- .../tconstruct/smeltery/blocks/GlassPane.java | 18 - .../smeltery/blocks/GlassPaneConnected.java | 533 +-------------- .../blocks/GlassPaneConnectedMeta.java | 77 +++ .../smeltery/blocks/GlassPaneStained.java | 38 -- .../tconstruct/smeltery/blocks/PaneBase.java | 81 --- .../smeltery/itemblocks/GlassBlockItem.java | 3 +- .../smeltery/itemblocks/GlassPaneItem.java | 2 +- .../itemblocks/StainedGlassClearPaneItem.java | 9 + .../smeltery/model/PaneConnectedRender.java | 252 ++++++- .../tconstruct/smeltery/model/PaneRender.java | 47 -- .../blocks/glass/clear/glass_side.png | Bin 202 -> 217 bytes 17 files changed, 580 insertions(+), 1301 deletions(-) delete mode 100644 src/main/java/tconstruct/smeltery/blocks/GlassBlock.java delete mode 100644 src/main/java/tconstruct/smeltery/blocks/GlassBlockStained.java delete mode 100644 src/main/java/tconstruct/smeltery/blocks/GlassPane.java create mode 100644 src/main/java/tconstruct/smeltery/blocks/GlassPaneConnectedMeta.java delete mode 100644 src/main/java/tconstruct/smeltery/blocks/GlassPaneStained.java delete mode 100644 src/main/java/tconstruct/smeltery/blocks/PaneBase.java delete mode 100644 src/main/java/tconstruct/smeltery/model/PaneRender.java 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..1221c7944ee 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,54 @@ 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; + return getSideTextureIndex(blockAccess.getBlockMetadata(x, y, z)); } - 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 +82,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 +117,21 @@ 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 getSideTextureIndex(int meta) { + return sideIcon; } - public final boolean canThisPaneConnectToThisBlock(Block b) { + public final boolean canPaneConnectToBlock(Block b) { return b.isOpaqueCube() || b == this || b == Blocks.glass; } @Override - public void registerBlockIcons(IIconRegister par1IconRegister) { - super.registerBlockIcons(par1IconRegister); - this.theIcon = par1IconRegister.registerIcon("tinker:glass/" + folder + "/glass_side"); - } - - 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); + 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..3039a71db13 --- /dev/null +++ b/src/main/java/tconstruct/smeltery/blocks/GlassPaneConnectedMeta.java @@ -0,0 +1,77 @@ +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 { + + public String[] textures; + public IIcon[][] icons; + public IIcon[] sideIcons; + 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.sideIcons = 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]); + sideIcons[i] = iconRegister.registerIcon("tinker:glass/" + folder + "/" + textures[i] + "/glass_side"); + } + } + + @Override + public IIcon getSideTextureIndex(int meta) { + return sideIcons[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 6aacd57b2f09586c26640348b0fc2a11e7032b82..1935c8efec258182ec25d1ea8ea4532cf30130c0 100644 GIT binary patch delta 168 zcmV;Z09XIY0oehNIe&{uL_t(IPh()f1OEN{_y54xfB)eESO628g#&zkco)vb1_&C! zE3XV^V*_{%IP@LP#0l^k00MTLa3<*h6o{Lz-6lT}iSYsp$QC#c2_S0*MJ329Ffn9r zF~Xb(3vE!ef!HA0TSJ*)>kULSg7`2)VCwJ!kj;d`052E@DIt*13<1AxG(^@fS>^&Td-l6 z^I_qD&W2$IkPRRVlZ3Hh;>Z};5STj3y)evE;^6QCAp-zxjS}A~ZoH`L00000NkvXX Hu0mjf`Q<(a From eb36b6dd4aa63fa244140ad8a0c3b5824964b6c0 Mon Sep 17 00:00:00 2001 From: Moses Miller Date: Fri, 3 Apr 2026 16:07:30 -0700 Subject: [PATCH 2/3] Add textures for stained glass top/bottom --- .../smeltery/blocks/GlassPaneConnected.java | 9 +++++-- .../blocks/GlassPaneConnectedMeta.java | 22 ++++++++++++------ .../glass/stained/black/glass_bottom.png | Bin 0 -> 113 bytes .../blocks/glass/stained/black/glass_top.png | Bin 0 -> 116 bytes .../glass/stained/blue/glass_bottom.png | Bin 0 -> 116 bytes .../blocks/glass/stained/blue/glass_top.png | Bin 0 -> 116 bytes .../glass/stained/brown/glass_bottom.png | Bin 0 -> 116 bytes .../blocks/glass/stained/brown/glass_top.png | Bin 0 -> 116 bytes .../glass/stained/cyan/glass_bottom.png | Bin 0 -> 116 bytes .../blocks/glass/stained/cyan/glass_top.png | Bin 0 -> 116 bytes .../glass/stained/gray/glass_bottom.png | Bin 0 -> 116 bytes .../blocks/glass/stained/gray/glass_top.png | Bin 0 -> 116 bytes .../glass/stained/green/glass_bottom.png | Bin 0 -> 116 bytes .../blocks/glass/stained/green/glass_top.png | Bin 0 -> 116 bytes .../glass/stained/light_blue/glass_bottom.png | Bin 0 -> 116 bytes .../glass/stained/light_blue/glass_top.png | Bin 0 -> 116 bytes .../glass/stained/light_gray/glass_bottom.png | Bin 0 -> 116 bytes .../glass/stained/light_gray/glass_top.png | Bin 0 -> 116 bytes .../glass/stained/lime/glass_bottom.png | Bin 0 -> 116 bytes .../blocks/glass/stained/lime/glass_top.png | Bin 0 -> 116 bytes .../glass/stained/magenta/glass_bottom.png | Bin 0 -> 116 bytes .../glass/stained/magenta/glass_top.png | Bin 0 -> 116 bytes .../glass/stained/orange/glass_bottom.png | Bin 0 -> 116 bytes .../blocks/glass/stained/orange/glass_top.png | Bin 0 -> 116 bytes .../glass/stained/pink/glass_bottom.png | Bin 0 -> 116 bytes .../blocks/glass/stained/pink/glass_top.png | Bin 0 -> 116 bytes .../glass/stained/purple/glass_bottom.png | Bin 0 -> 116 bytes .../blocks/glass/stained/purple/glass_top.png | Bin 0 -> 116 bytes .../blocks/glass/stained/red/glass_bottom.png | Bin 0 -> 116 bytes .../blocks/glass/stained/red/glass_top.png | Bin 0 -> 116 bytes .../glass/stained/white/glass_bottom.png | Bin 0 -> 116 bytes .../blocks/glass/stained/white/glass_top.png | Bin 0 -> 116 bytes .../glass/stained/yellow/glass_bottom.png | Bin 0 -> 116 bytes .../blocks/glass/stained/yellow/glass_top.png | Bin 0 -> 116 bytes 34 files changed, 22 insertions(+), 9 deletions(-) create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/black/glass_bottom.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/black/glass_top.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/blue/glass_bottom.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/blue/glass_top.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/brown/glass_bottom.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/brown/glass_top.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/cyan/glass_bottom.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/cyan/glass_top.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/gray/glass_bottom.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/gray/glass_top.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/green/glass_bottom.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/green/glass_top.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/light_blue/glass_bottom.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/light_blue/glass_top.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/light_gray/glass_bottom.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/light_gray/glass_top.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/lime/glass_bottom.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/lime/glass_top.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/magenta/glass_bottom.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/magenta/glass_top.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/orange/glass_bottom.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/orange/glass_top.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/pink/glass_bottom.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/pink/glass_top.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/purple/glass_bottom.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/purple/glass_top.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/red/glass_bottom.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/red/glass_top.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/white/glass_bottom.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/white/glass_top.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/yellow/glass_bottom.png create mode 100644 src/main/resources/assets/tinker/textures/blocks/glass/stained/yellow/glass_top.png diff --git a/src/main/java/tconstruct/smeltery/blocks/GlassPaneConnected.java b/src/main/java/tconstruct/smeltery/blocks/GlassPaneConnected.java index 1221c7944ee..d839c3c089b 100644 --- a/src/main/java/tconstruct/smeltery/blocks/GlassPaneConnected.java +++ b/src/main/java/tconstruct/smeltery/blocks/GlassPaneConnected.java @@ -35,7 +35,8 @@ public IIcon getConnectedBlockTexture(IBlockAccess blockAccess, int x, int y, in return icons[15]; } - return getSideTextureIndex(blockAccess.getBlockMetadata(x, y, z)); + int meta = blockAccess.getBlockMetadata(x, y, z); + return side == 0 ? getBottomIcon(meta) : getTopIcon(meta); } return super.getConnectedBlockTexture(blockAccess, x, y, z, side, icons); @@ -117,7 +118,11 @@ public void setBlockBoundsBasedOnState(IBlockAccess blockAccess, int x, int y, i this.setBlockBounds(f, 0.0F, f2, f1, 1.0F, f3); } - public IIcon getSideTextureIndex(int meta) { + public IIcon getTopIcon(int meta) { + return sideIcon; + } + + public IIcon getBottomIcon(int meta) { return sideIcon; } diff --git a/src/main/java/tconstruct/smeltery/blocks/GlassPaneConnectedMeta.java b/src/main/java/tconstruct/smeltery/blocks/GlassPaneConnectedMeta.java index 3039a71db13..b9283343638 100644 --- a/src/main/java/tconstruct/smeltery/blocks/GlassPaneConnectedMeta.java +++ b/src/main/java/tconstruct/smeltery/blocks/GlassPaneConnectedMeta.java @@ -16,16 +16,18 @@ public class GlassPaneConnectedMeta extends GlassPaneConnected { - public String[] textures; - public IIcon[][] icons; - public IIcon[] sideIcons; + 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.sideIcons = new IIcon[textures.length]; + this.topIcons = new IIcon[textures.length]; + this.bottomIcons = new IIcon[textures.length]; } @Override @@ -61,13 +63,19 @@ public void getSubBlocks(Item b, CreativeTabs creativeTabs, List list public void registerBlockIcons(IIconRegister iconRegister) { for (int i = 0; i < textures.length; i++) { registerBlockIcons(iconRegister, icons[i], folder + "/" + textures[i]); - sideIcons[i] = iconRegister.registerIcon("tinker:glass/" + folder + "/" + textures[i] + "/glass_side"); + 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 getSideTextureIndex(int meta) { - return sideIcons[meta]; + public IIcon getTopIcon(int meta) { + return topIcons[meta]; + } + + @Override + public IIcon getBottomIcon(int meta) { + return bottomIcons[meta]; } @Override 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 0000000000000000000000000000000000000000..7bb1d516b482be9c62b22e7b21aec2704214182f GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|v^`xMLo9le z6Atj7b1?KfaKu3|LCUnD@sUA-iiodCKdV!MiJ~AQo1H!b!&_z+iLx)&DnM-vp00i_ I>zopr0Iduh761SM literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..493d357c521b35d85fe6eb870b658ab00da051ac GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Amz|`OUe(a_Gku1H%B08E(7@3oLjfI9-L$CNt_w_<9^^Y&_4+@S2fZb?d^toj{!o Mp00i_>zopr08g?Y8vpmdKI;Vst06vl*wg3PC literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..965349143dae8ade4c1cf1f454cd8beef94f9df1 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Amz&&Hq!)*79*>V$uQugI=iv4uuj1LS1UJjx)s>%$m@_%sgM5!T63qDW|vRQJ_u+ MPgg&ebxsLQ0DAl&WdHyG literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..6d0598522464d0b786fff32a6c4de3a31751d03b GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6AmyZ`7Ax(U|?tJ!z049ERb13gOAzG>7vW$hy&bi!a{`!4?Z(7{LE%AnGyc|Hc%&n Mr>mdKI;Vst04uv7Jpcdz literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..21ba3a2959b1939002854ede6b8d4e7bce145a44 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Amz&wRg;6OsvV8A)&$IvzW~wK!&ZSWl`s|jSb>GYATNo9C*&ka50Q?ev(}2GN4Wd MPgg&ebxsLQ0B9>AZU6uP literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..e7a8d2b40d30e4144544c0881467cfd04ce6e5b2 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6AmzkY`S&6!NAVchew2ISs=571|PGV(?yrh5eK;4goO$d9(-nEsP5xz6gwLI3#gO9 M)78&qol`;+06O9y?EnA( literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..8a5e7510eb5c7135d17ffd4dda26dd02f685fc82 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Am!{;j6b~KJ?>?fnfm03^(3{1r|IKoUX!WlNt3Td_9gdHlF8Zkl4g$_(uOw98f2N Mr>mdKI;Vst073^JfB*mh literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..9546e430625b618585bb02f80c585b03f709d168 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Am!XnKS2HgMpo?5041bvOs1D4L)W!r;9G1BMxx82@4e_JowDS5T?fdZA(tKI8Y~p Mr>mdKI;Vst05N7CSO5S3 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..458b540605bda086294a07fadc4763a7df021a4e GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Am!v-Puvd*79*>V$uQugI=iv4uuj1LS1UJjx)s>%$m@_%sgM5;lHN90o?@!%YZr= NJYD@<);T3K0RWR(A#nfz literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..6c7a02826ac69ce3bd05e850d1f5f4bfef52b71b GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Amy>IU8}l!NAVchew2ISs=571|PGV(?yrh5eK;4goO$d9(-nExOa>79jkYwIZ!8q Mr>mdKI;Vst05xA9jsO4v literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d97c77025b97ec011231415223c03c4ac69419da GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Am!1tBI>(Yx%e`F=>H-L9f&She8Php)R#q$C=^`W=-f|W}Yw3&~7PUB9L2}0MyCg M>FVdQ&MBb@0AdLrdjJ3c literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..2944a1742e67f6993c4ce962ef2374eed519da8e GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Amyx(k`FFm{^lFLqdbaXEB>WfDBtt%c9O_8ym!X)KnfFIPjd6;d3DOi^89WnSnYP NJYD@<);T3K0RV@2BB}rY literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..16c6079504172119a66ddbf0ba96cc19c53bbfcb GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Am!z-T7V5*79*>V$uQugI=iv4uuj1LS1UJjx)s>%$m@_%sgM5;e)GSWeQV0Cr~GY Mr>mdKI;Vst0EMd{Q~&?~ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..8d896d33795b603ffeed150258320ec0585f780d GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Amyh^P5}6*79*>V$uQugI=iv4uuj1LS1UJjx)s>%$m@_%sgM5A$J?kH-L9f&She8Php)R#q$C=^`W=-f|W}Yw3uy(27e!0j8{6L)y Mp00i_>zopr0D6!hyZ`_I literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..426b0a16fc8b4809d3c549b9b88a88087de5cd8f GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Amy>T0Q4ngMpo?5041bvOs1D4L)W!r;9G1BMxx82@4e_JowDSz;c*#^Xlx!`aqow Mp00i_>zopr0654W%>V!Z literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..79601478b00c92fe5243e95ac107198b12bd77f3 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Am!T{k>nt*79*>V$uQugI=iv4uuj1LS1UJjx)s>%$m@_%sgM5;pBTk?%UlTJ_B_! Nc)I$ztaD0e0sy5*BCr4e literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..c2844ef42fe38978002c11ba2c4f895298a3ebc8 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Am!{s@*=HF|j6VhJ*%-&tf)%02#KPmPMVV$uQugI=iv4uuj1LS1UJjx)s>%$m@_%sgM5VF8O^v{lBLML?Yl Mp00i_>zopr0GA~p4FCWD literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..c4ca1e5c3ec81b969ff189e5eea2a923fad5ffa9 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Amz|?ff{0F|j6VhJ*%-&tf)%02#KPmPMVzopr0EHGI%>V!Z literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..b73ea8adc30fe7ac46bc334f7cc3d0db4576c156 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Am!{v%guz*79*>V$uQugI=iv4uuj1LS1UJjx)s>%$m@_%sgM5;rcH@fvAf??}0iQ NJYD@<);T3K0RWmdKI;Vst0CUM8m;e9( literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..ef05d8d6324c1c6feba30a9bd90089024de266c7 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Am!{o4>!Bt>xp&#H0lR2E9@T910~2gu2vb9cPL&m^Gn;nR&iA!?h2B`Espi1c5pk NJYD@<);T3K0RXCgA;16t literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d0728adfaadc9429b9da9e51333074690d1a5e9f GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6AmylE$u$nU|?tJ!z049ERb13gOAzG>7vW$hy&bi!a{`!4?Z(7%;@0Avs6>|1?pt* MboFyt=akR{00PS$-~a#s literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..3a1370be7502b462525f28a8bbaa619096e821c6 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Am!H)BRD;*79*>V$uQugI=iv4uuj1LS1UJjx)s>%$m@_%sgM5A*)uP(}Ue4AE=YT M)78&qol`;+0E4|CCjbBd literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..0eb93ab9f7fa38901d42d2d1afb52b9b0c2aa5bd GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Am!1x^eS-gMpo?5041bvOs1D4L)W!r;9G1BMxx82@4e_JowDSAo_^yfXw!8M NJYD@<);T3K0RUaeAo2hJ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..c7757a7d4c0b1b3f996a6efd2a00ff442e7ddb15 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Am!{lea2iYx%e`F=>H-L9f&She8Php)R#q$C=^`W=-f|W}Yw3uvbuEIdh-CAW$cR Mr>mdKI;Vst09vCTWB>pF literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..e87cd338e8f18f4da8d37d12b3497b4340b17a48 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Amz&#qX|VYx%e`F=>H-L9f&She8Php)R#q$C=^`W=-f|W}Yw3AbC%Kr`C0DG*Bml Mr>mdKI;Vst09`R3y#N3J literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..71a8707f78399b80914095d4ca667b710b54111b GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Am!{`}@0`t>xp&#H0lR2E9@T910~2gu2vb9cPL&m^Gn;nR&iA!{50=zn*yR=>zIy N@O1TaS?83{1OVR&Bdq`c literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..fd0d2585c91d85cf947808fd93fa7b9fe74139f3 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Am!{+SGc!!NAVchew2ISs=571|PGV(?yrh5eK;4goO$d9(-nEU^~tkQuiZ$B~T}W Mr>mdKI;Vst083^dD*ylh literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..bda2cbe53bd6b9e776aee028bc38b8f5ae79b867 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gLZ0Lo9le z6Am!{`**jTt>xp&#H0lR2E9@T910~2gu2vb9cPL&m^Gn;nR&iALtCTZ1`dN`Pk=fZ NJYD@<);T3K0RX;3A{_t# literal 0 HcmV?d00001 From 1f7454f378783505e6443c53d3e3866b6ed241a1 Mon Sep 17 00:00:00 2001 From: UltraProdigy <187078471+UltraProdigy@users.noreply.github.com> Date: Sat, 4 Apr 2026 20:39:44 -0400 Subject: [PATCH 3/3] optimize images --- .../textures/blocks/glass/clear/glass_side.png | Bin 217 -> 167 bytes .../blocks/glass/stained/black/glass_bottom.png | Bin 113 -> 102 bytes .../blocks/glass/stained/black/glass_top.png | Bin 116 -> 107 bytes .../blocks/glass/stained/blue/glass_bottom.png | Bin 116 -> 107 bytes .../blocks/glass/stained/blue/glass_top.png | Bin 116 -> 107 bytes .../blocks/glass/stained/brown/glass_bottom.png | Bin 116 -> 107 bytes .../blocks/glass/stained/brown/glass_top.png | Bin 116 -> 107 bytes .../blocks/glass/stained/cyan/glass_bottom.png | Bin 116 -> 107 bytes .../blocks/glass/stained/cyan/glass_top.png | Bin 116 -> 107 bytes .../blocks/glass/stained/gray/glass_bottom.png | Bin 116 -> 107 bytes .../blocks/glass/stained/gray/glass_top.png | Bin 116 -> 107 bytes .../blocks/glass/stained/green/glass_bottom.png | Bin 116 -> 107 bytes .../blocks/glass/stained/green/glass_top.png | Bin 116 -> 107 bytes .../glass/stained/light_blue/glass_bottom.png | Bin 116 -> 107 bytes .../glass/stained/light_blue/glass_top.png | Bin 116 -> 107 bytes .../glass/stained/light_gray/glass_bottom.png | Bin 116 -> 107 bytes .../glass/stained/light_gray/glass_top.png | Bin 116 -> 107 bytes .../blocks/glass/stained/lime/glass_bottom.png | Bin 116 -> 107 bytes .../blocks/glass/stained/lime/glass_top.png | Bin 116 -> 107 bytes .../glass/stained/magenta/glass_bottom.png | Bin 116 -> 107 bytes .../blocks/glass/stained/magenta/glass_top.png | Bin 116 -> 107 bytes .../glass/stained/orange/glass_bottom.png | Bin 116 -> 107 bytes .../blocks/glass/stained/orange/glass_top.png | Bin 116 -> 107 bytes .../blocks/glass/stained/pink/glass_bottom.png | Bin 116 -> 107 bytes .../blocks/glass/stained/pink/glass_top.png | Bin 116 -> 107 bytes .../glass/stained/purple/glass_bottom.png | Bin 116 -> 107 bytes .../blocks/glass/stained/purple/glass_top.png | Bin 116 -> 107 bytes .../blocks/glass/stained/red/glass_bottom.png | Bin 116 -> 107 bytes .../blocks/glass/stained/red/glass_top.png | Bin 116 -> 107 bytes .../blocks/glass/stained/white/glass_bottom.png | Bin 116 -> 107 bytes .../blocks/glass/stained/white/glass_top.png | Bin 116 -> 107 bytes .../glass/stained/yellow/glass_bottom.png | Bin 116 -> 107 bytes .../blocks/glass/stained/yellow/glass_top.png | Bin 116 -> 107 bytes 33 files changed, 0 insertions(+), 0 deletions(-) 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 1935c8efec258182ec25d1ea8ea4532cf30130c0..2f71e27f7d9f742c2ae1405a057799697957a401 100644 GIT binary patch delta 117 zcmV-*0E++F0jB|wIc`}=L_t(I%VS``1OEN{_y54xfBzZC1t0@9U%O420Tj6aq?uv^ zK&}|LFaWuLpaCFTuwj`0K?cCQ0uw`4#{g0QQ-rJmM8muQ!`KX_+zZ1zB@PZR5HbJ& XN3-85>8(Ud00000NkvXXu0mjff|M>P delta 168 zcmV;Z09XH~0oehNIe&{uL_t(IPh()f1OEN{_y54xfB)eESO628g#&zkco)vb1_&C! zE3XV^V*_{%IP@LP#0l^k00MTLa3<*h6o{Lz-6lT}iSYsp$QC#c2_S0*MJ329Ffn9r zF~Xb(3vE!ef!HA0TSJ*)>kULSg7`2)VCwJ!kj;d`052E@DIt*2IZFPkv{ Nfv2mV%Q~loCIFJI78w8l delta 69 zcmYc*oM7mn?djqeV$qwNaDe}ugQ4GnBMyoQQl<@!j|>u2M0`#9S)CG06a^XC?DQEJ X-ZHaDlzp*QVE_V8S3j3^P6gnPbVsSb-;Q+Im-<%sPhj^Ye1v0-#W$+Q)IirZ#EjiIbf`LJ#vL$!p SjO=R+K;Y@>=d#Wzp$P!fnHA#z delta 72 zcmc~UnPBLw=jq}YV$qwNaDZ9OZ_W*tLqDz<7zS|6aN|u_V8J87=_-6SnNeTD*W*ZI b<9Tj|*Noh%TNm!_WB>wBS3j3^P6gnPbVsSb-;Q;fFEvwHp7%=ZlxWZ5+$q?+Kx9m>C#Rv&LHUzae&)RSg0`J b!Dl80xfJ$hv(rt-8Gyjk)z4*}Q$iB}jT;zD 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 index 965349143dae8ade4c1cf1f454cd8beef94f9df1..b1cdc5b10521a1ebfad831a2491cd484d5ce1872 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q+JQ{6E!fEs`f#7qeYB%`ii$$nYs!&#^-V1`G_X502Qb9^oGH#=)`Sjb b=K10b#&-ltIlVoPG5~?6tDnm{r-UW|$%PpE 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 index 6d0598522464d0b786fff32a6c4de3a31751d03b..f1c271259c705e025e14f8f5a9850bfcdc8efd1b 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q(`z&(iY^2FyDXt}s+dG6cKmExXfjF+zfmje+5{R)nG& SgXJRzAnXEuAujPUQb8Gyjk)z4*}Q$iB}dPEr0 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 index 21ba3a2959b1939002854ede6b8d4e7bce145a44..9ab092070e9eed01eafb58e2568a1f23dc9cb1d8 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q+H)d&eBcM7E-XD;U2RF)Ztd@!83^c%y*~4+F!?{36vY SDoSh&K;Y@>=d#Wzp$P!Y!W9z$ delta 72 zcmc~UnPBLw=jq}YV$qwNaDdsYy<-kzVolZz2@MvX#cT!vGHg99i#nfeY!L5JQ+agY bz;jlHi(#DeljKU5F#v(5tDnm{r-UW|wzL`q 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 index e7a8d2b40d30e4144544c0881467cfd04ce6e5b2..67210823f9e39c4956911327a4d7d264f685bae8 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q({Urd#J5448K&Tw$n^WC(WATXv`6VuS=A8w10IYXy6k SUN%3+00f?{elF{r5}E)Duovq9 delta 72 zcmc~UnPBLw=jq}YV$qwNaDX{v)2;Ij26m=CJR(fX0+}T=_?X?CF1mb3LbsuM=*wN@;3_#%N>gTe~DWM4fiE9{x 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 index 8a5e7510eb5c7135d17ffd4dda26dd02f685fc82..f52acf3f80c07c1dded9ea4b03a9e0d57f1dc8a4 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q;d=zIsdMLp)EK0-0Z=GWZDYoKeK=mYirI!N8#Uf5qQN S-P%zMK;Y@>=d#Wzp$P!qsuphm delta 72 zcmc~UnPBLw=jq}YV$qwNaDe#_U%e&sp&wTa3v5#9 b@jN$!#3nw&H~NR-7=Xaj)z4*}Q$iB}kdPP_ 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 index 9546e430625b618585bb02f80c585b03f709d168..a08d9e652ec816b3792f9b7283eaf085a4cea743 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q;fTIdjf67%=ZlxWZ5+$q?+Kx9m>C#Rv&LHUzae&)RSg0`J b!Dl9hFg5mXTXMR^8Gyjk)z4*}Q$iB}fA1IW 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 index 458b540605bda086294a07fadc4763a7df021a4e..4c96687da30629337757e98cac302f6e0ed5e51d 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q({qogIa2Es`f#7qeYB%`ii$$nYs!&#^-V1`G^)n~!h2 T^{ePS0}yz+`njxgN@xNAEDITp delta 72 zcmc~UnPBLw=jq}YV$qwNaDX}Q&W=L1mX9kFlNJaV^hzCYD3mY|>Qb9^oGH#=)`Sjb b=K10b|1|{;=q@N&#sCDKu6{1-oD!M<;o=$x 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 index 6c7a02826ac69ce3bd05e850d1f5f4bfef52b71b..4f4d636d750a73ac3874b170fa2b8ed2fcacc293 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q;fLvk~VT448K&Tw$n^WC(WATXv`6VuS=A8w11Ebl01^ S_d5J!00K`}KbLh*2~7a}p%-5O delta 72 zcmc~UnPBLw=jq}YV$qwNaDaKr*@*KE26m=CJR(fX0+}T=_?X?CF1mb4$y<4pBSiK|78Gyjk)z4*}Q$iB}gXkC} 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 index d97c77025b97ec011231415223c03c4ac69419da..d542278c9893f36d7ab8fcbb168f09399cca37b4 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q;fxnz$;q7ReK=i`g!mW|*N=WcZY==h&eF0|titKL-`} S@-IEc00f?{elF{r5}E)5>=)Aj delta 72 zcmc~UnPBLw=jq}YV$qwNaDaJTObP0l+XkKu#y-N 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 index 2944a1742e67f6993c4ce962ef2374eed519da8e..873f41b1b62d00abb7a2fac72d19b521bdb203e9 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q;d^?eaN{iEKp&S1^7tVp!G@gnPbVsSb-;Q+JVo!|9rEs`f#7qeYB%`ii$$nYs!&#^-V1`G_L&KF`8 Sgms)4fWXt$&t;ucLK6V^a~3xM delta 72 zcmc~UnPBLw=jq}YV$qwNaDZ9w&hL7*mX9kFlNJaV^hzCYD3mY|>Qb9^oGH#=)`Sjb b=K10bA6x}1Q<&;G8Gyjk)z4*}Q$iB})HE3C 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 index 8d896d33795b603ffeed150258320ec0585f780d..ece993f335a5637cc0ebdf6f56575d6d5f2101fb 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q;e8zqwUxEs`f#7qeYB%`ii$$nYs!&#^-V1`G`EOJ_{o TdCl)50}yz+`njxgN@xNA66P4U delta 72 zcmc~UnPBLw=jq}YV$qwNaDaK4-`py;mX9kFlNJaV^hzCYD3mY|>Qb9^oGH#=)`Sjb b=K10bx!ZUy7mIf3GXR07tDnm{r-UW|!*Ll0 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 index b9700ee7a15c158d721ade1d54edec3381cbad55..31f5c21b885fbd682ea2f1ff6708b6d524e1c527 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q({ozM4w57ReK=i`g!mW|*N=WcZY==h&eF0|o}3DVLZ2 S7W~`D00f?{elF{r5}E)86Bqyh delta 72 zcmc~UnPBLw=jq}YV$qwNaDX{(Uri-j%g2?8NecuFdZi9H6iOHfb*ard&J<@bYeEMz b^L%lJwMzx}%SArmX8;0ES3j3^P6gnPbVsSb-;Q;fb)pO1@7%=ZlxWZ5+$q?+Kx9m>C#Rv&LHU@^xe~U%m S%@04!00f?{elF{r5}E)5A{TN1 delta 72 zcmc~UnPBLw=jq}YV$qwNaDaKz>N)2c4D3vOctn_%1u{!$@G-kNU3B>zae&)RSg0`J b!Dl80mcyKzS7$%gX8;0ES3j3^P6gnPbVsSb-;Q+JT-}_~3Es`f#7qeYB%`ii$$nYs!&#^-V1`G`E= delta 72 zcmc~UnPBLw=jq}YV$qwNaDZ9v@BK2imX9kFlNJaV^hzCYD3mY|>Qb9^oGH#=)`Sjb c=K10bC*KQl-|qhKnE?nqUHx3vIVCg!0Q1osMgRZ+ 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 index c2844ef42fe38978002c11ba2c4f895298a3ebc8..507a58af4ca90c33f889c5dc528bbaaf65b52e12 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q;fm+U@fh6WNLmu3-FP#IUR*#%Cwv;*AC}JPZtPjrv>} S=WNer00K`}KbLh*2~7Y1$QHo> delta 72 zcmc~UnPBLw=jq}YV$qwNaDe$&?e_VMi8Wa>Bs5rj7PA=y$guUaEb4r=u|d2?P36&n c1J79*WVUdBpVt&TnE?nqUHx3vIVCg!0Pm6;UH||9 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 index c92cd0593946d490e4ab8c90bc49390c1bbdf7bf..9d082246d7b017bac9d4e3740c5163105066b4f9 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q({oyZ`lUEs`f#7qeYB%`ii$$nYs!&#^-V1`G^!|IU3q TH`~OY0SG)@{an^LB{Ts5G&~tX delta 72 zcmc~UnPBLw=jq}YV$qwNaDX}P-T!*FmX9kFlNJaV^hzCYD3mY|>Qb9^oGH#=)`Sjb b=K10b3s?lBtuoFmVgLe9S3j3^P6gnPbVsSb-;Q+JR&X02#6WNLmu3-FP#IUR*#%Cwv;*AC}JPZtLs#6^^ S7xsBE0D-5gpUXO@geCy)R2E(U delta 72 zcmc~UnPBLw=jq}YV$qwNaDZ8D=f^pWi8Wa>Bs5rj7PA=y$guUaEb4r=u|d2?P36&n b1J79*-gI*GSj~`gWdH(CS3j3^P6gnPbVsSb-;Q;eL`Qb9^oGH#=)`Sjb b=K10b*MA8LL|qJe&j19Tu6{1-oD!M<@c$a8 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 index 7d2fdf60e72f6d3a3c6711df0a54d3335c711cb1..167a76a7df1dbfdb09dee5719f5464b92dd806cd 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q;fwmg(~u6WNLmu3-FP#IUR*#%Cwv;*AC}JPZs8Yx-YK S-y$E+00f?{elF{r5}E-2BNrF| delta 72 zcmc~UnPBLw=jq}YV$qwNaDe$-%k=q-i8Wa>Bs5rj7PA=y$guUaEb4r=u|d2?P36&n b1J79*Y9n~07#(z48Gyjk)z4*}Q$iB}!crM7 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 index ef05d8d6324c1c6feba30a9bd90089024de266c7..51778b159b9dc76841004e6cbccad2c128936e88 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q;f$`TMKcS|m@fE@r!Mnqh`gk>OLeo@0j!3>X+nOwK=j T`d45k0}yz+`njxgN@xNAFRmF2 delta 72 zcmc~UnPBLw=jq}YV$qwNaDe&W{QcEzEgx4VCM^&!=#@I)P$*#_)TK7-I8&U#tO*^= b%=5(=u6+>9muo#E$N&VMu6{1-oD!M<`3D+S 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 index d0728adfaadc9429b9da9e51333074690d1a5e9f..8d45835443b31e06e065763f1e48642bacd21c8e 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q%w!((ZE&2FyDXt}s+dG6cKmExXfjF+zfmje%jMS@O+= SteSodK;Y@>=d#Wzp$P!Wo)shj delta 72 zcmc~UnPBLw=jq}YV$qwNaDbUgnPbVsSb-;Q;eH-5>RAEs`f#7qeYB%`ii$$nYs!&#^-V1`G`4la9(> Sx6$cl00K`}KbLh*2~7YH)EATh delta 72 zcmc~UnPBLw=jq}YV$qwNaDe%p?vHx5mX9kFlNJaV^hzCYD3mY|>Qb9^oGH#=)`Sjb b=K10bS+xS49_%Lh3_#%N>gTe~DWM4f(nc7) 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 index 0eb93ab9f7fa38901d42d2d1afb52b9b0c2aa5bd..437cefc3fd8d29c507ecd709f99472f8184fc8c0 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q;fh8#m847%=ZlxWZ5+$q?+Kx9m>C#Rv&LHU@@s+Ws4T SiX7%M0D-5gpUXO@geCw51{SOU delta 72 zcmc~UnPBLw=jq}YV$qwNaDaK$jhp8i4D3vOctn_%1u{!$@G-kNU3B>zae&)RSg0`J b!Dl80(MN0tbiN#1&j19Tu6{1-oD!M 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 index c7757a7d4c0b1b3f996a6efd2a00ff442e7ddb15..be3a0a0ea924f7dc7f59bf4022f97c60155bbc0c 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q;eLd8-n(7ReK=i`g!mW|*N=WcZY==h&eF0|ti7-N#xl S?9^ao00K`}KbLh*2~7a@u@^l6 delta 72 zcmc~UnPBLw=jq}YV$qwNaDe%ryj2NX%g2?8NecuFdZi9H6iOHfb*ard&J<@bYeEMz b^L%lJy@CSEnfv?&8Gyjk)z4*}Q$iB}sVo=z 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 index e87cd338e8f18f4da8d37d12b3497b4340b17a48..58cfe3acbc76f27437dbe6005908ade4707e692e 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q+H){O($|7ReK=i`g!mW|*N=WcZY==h&eF0|tifoc)fw SLipY?0D-5gpUXO@geCy+j29XJ delta 72 zcmc~UnPBLw=jq}YV$qwNaDdq?es?Wf%g2?8NecuFdZi9H6iOHfb*ard&J<@bYeEMz b^L%jz$$J7kwXSoc8Gyjk)z4*}Q$iB}tGXCd 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 index 71a8707f78399b80914095d4ca667b710b54111b..c4f25b008034d9b83dc63d38b0a33c7d02975034 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q;f$zrV}bS|m@fE@r!Mnqh`gk>OLeo@0j!3>X-MZ#>HE TS)YA`0SG)@{an^LB{Ts5MJE|r delta 72 zcmc~UnPBLw=jq}YV$qwNaDe&W-{0kIEgx4VCM^&!=#@I)P$*#_)TK7-I8&U#tO*^= c%=5(={>~Np^~7^e9|I70y85}Sb4q9e04<>$LjV8( 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 index fd0d2585c91d85cf947808fd93fa7b9fe74139f3..03bbcb6ebcbe9e52d03ea51d282e1e8a6fbdff2b 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q;fmO|9n}448K&Tw$n^WC(WATXv`6VuS=A8w10xEqM#) Sc~==S0D-5gpUXO@geCw8L>B!3 delta 72 zcmc~UnPBLw=jq}YV$qwNaDe&Orq=Tf26m=CJR(fX0+}T=_?X?CF1mb2g+i}j2x*zE)8Gyjk)z4*}Q$iB}neQ0E 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 index bda2cbe53bd6b9e776aee028bc38b8f5ae79b867..c1b12984847a0b2ce64518db545ac12d108f2b21 100644 GIT binary patch delta 63 zcmXTPo?vLD>gnPbVsSb-;Q;f$e|O8-S|m@fE@r!Mnqh`gk>OLeo@0j!3>X;JI$Zj= TU_*Tt0}yz+`njxgN@xNAMvNJT delta 72 zcmc~UnPBLw=jq}YV$qwNaDe&Wzq{pZEgx4VCM^&!=#@I)P$*#_)TK7-I8&U#tO*^= b%=5(=+8PBna2OnW!T