diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index 6c90f162..08391f23 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -2666,7 +2666,7 @@ public enum Features { voidstone.carverHelper.registerAll(voidstone, "voidstone"); Carving.chisel.registerOre("voidstone", "voidstone"); - BlockMarbleTexturedOre voidstone2 = (BlockMarbleTexturedOre) new BlockMarbleTexturedOre(Material.rock, Chisel.MOD_ID + ":voidstone/animated/void").setStepSound(Block.soundTypeStone) + BlockMultiLayer voidstone2 = (BlockMultiLayer) new BlockMultiLayer(Material.rock, Chisel.MOD_ID + ":voidstone/animated/void").setStepSound(Block.soundTypeStone) .setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(5.0F).setResistance(10.0F); voidstone2.carverHelper.addVariation("tile.voidstone.0.desc", 0, "voidstone/animated/raw"); voidstone2.carverHelper.addVariation("tile.voidstone.1.desc", 1, "voidstone/animated/quarters"); diff --git a/src/main/java/com/cricketcraft/chisel/api/client/Dir.java b/src/main/java/com/cricketcraft/chisel/api/client/Dir.java index 29ebe6de..b4dafe6a 100644 --- a/src/main/java/com/cricketcraft/chisel/api/client/Dir.java +++ b/src/main/java/com/cricketcraft/chisel/api/client/Dir.java @@ -6,8 +6,16 @@ import net.minecraftforge.common.util.ForgeDirection; import static net.minecraftforge.common.util.ForgeDirection.*; +/** + * Think of this class as a "Two dimensional ForgeDirection, with diagonals". + *

+ * It represents the eight different directions a face of a block can connect with CTM, and contains the logic for determining if a block is indeed connected in that direction. + *

+ * Note that, for example, {@link #TOP_RIGHT} does not mean connected to the {@link #TOP} and {@link #RIGHT}, but connected in the diagonal direction represented by {@link #TOP_RIGHT}. This is used + * for inner corner rendering. + */ public enum Dir { - + // @formatter:off TOP(UP), TOP_RIGHT(UP, EAST), RIGHT(EAST), @@ -18,8 +26,11 @@ public enum Dir { TOP_LEFT(UP, WEST); // @formatter:on - private static final ForgeDirection NORMAL = SOUTH; + /** + * All values of this enum, used to prevent unnecessary allocation via {@link #values()}. + */ public static final Dir[] VALUES = values(); + private static final ForgeDirection NORMAL = SOUTH; private ForgeDirection[] dirs; @@ -27,6 +38,27 @@ public enum Dir { this.dirs = dirs; } + /** + * Finds if this block is connected for the given side in this Dir. + * + * @param inst + * The CTM instance to use for logic. + * @param world + * The world the block is in. + * @param x + * The x coordinate of your block. + * @param y + * The y coordinate of your block. + * @param z + * The z coordinate of your block. + * @param sideIdx + * The side index of the current face. This equivalent to {@link ForgeDirection#ordinal()} + * @param block + * The block being rendered. + * @param meta + * The metadata of the block. + * @return True if the block is connected in the given Dir, false otherwise. + */ public boolean isConnected(CTM inst, IBlockAccess world, int x, int y, int z, int sideIdx, Block block, int meta) { ForgeDirection side = getOrientation(sideIdx); ForgeDirection[] dirs = getNormalizedDirs(side); diff --git a/src/main/java/com/cricketcraft/chisel/api/client/ISubmapManager.java b/src/main/java/com/cricketcraft/chisel/api/client/ISubmapManager.java new file mode 100644 index 00000000..3fd194c5 --- /dev/null +++ b/src/main/java/com/cricketcraft/chisel/api/client/ISubmapManager.java @@ -0,0 +1,37 @@ +package com.cricketcraft.chisel.api.client; + +import net.minecraft.block.Block; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; + +public interface ISubmapManager { + + /** + * Gets the icon for item rendering, based on side and item metadata. + * + * @param side + * Side of the ItemBlock. + * @param meta + * Metadata of the ItemBlock. + * @return The IIcon for rendering. + */ + IIcon getIcon(int side, int meta); + + /** + * Gets the icon for world rendering, based on world position and side. + */ + IIcon getIcon(IBlockAccess world, int x, int y, int z, int side); + + /** + * Hook for registering any custom icons you might need in this class. Will be called during the normal block method. + * + * @param modName + * The mod ID this submap was registered to. + * @param block + * The block being registered for. + * @param register + * The IIconRegister instance. + */ + void registerIcons(String modName, Block block, IIconRegister register); +} \ No newline at end of file diff --git a/src/main/java/com/cricketcraft/chisel/api/client/TextureSubmap.java b/src/main/java/com/cricketcraft/chisel/api/client/TextureSubmap.java new file mode 100644 index 00000000..a866552b --- /dev/null +++ b/src/main/java/com/cricketcraft/chisel/api/client/TextureSubmap.java @@ -0,0 +1,164 @@ +package com.cricketcraft.chisel.api.client; + +import java.util.List; + +import net.minecraft.util.IIcon; +import net.minecraftforge.client.event.TextureStitchEvent; +import net.minecraftforge.common.MinecraftForge; + +import com.google.common.collect.Lists; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +/** + * This class is used to split up a large IIcon into smaller "submapped" icons used for CTM and other texture manipulation. + */ +public class TextureSubmap { + + private static List submaps = Lists.newArrayList(); + private static TextureSubmap dummy = new TextureSubmap(null, 0, 0); + static { + MinecraftForge.EVENT_BUS.register(dummy); + } + + private int width, height; + private IIcon baseIcon; + private IIcon[][] icons; + + /** + * Construct a new submap. A submap is not required to be square, but it is required to be rectangular. + * + * @param baseIcon + * The IIcon to submap. + * @param width + * The width of the map, in icons. + * @param height + * The height of the map, in icons. + */ + public TextureSubmap(IIcon baseIcon, int width, int height) { + this.baseIcon = baseIcon; + this.width = width; + this.height = height; + this.icons = new IIcon[width][height]; + submaps.add(this); + } + + /** + * The width, in icons, of the submap. + */ + public int getWidth() { + return width; + } + + /** + * The height, in icons, of the submap. + */ + public int getHeight() { + return height; + } + + /** + * The large "base" icon used for the submap. + */ + public IIcon getBaseIcon() { + return baseIcon; + } + + /** + * Finds and returns the sub-icon at the given coordinates. For example, if you have a 3 by 3 submap, calling {@code getSubIcon(1, 1)} will return the center subicon. + */ + public IIcon getSubIcon(int x, int y) { + x = x % icons.length; + return icons[x][y % icons[x].length]; + } + + /** + * For internal use only, this is used to create the virtual "subicons" used in the map. + */ + @SubscribeEvent + public final void TexturesStitched(TextureStitchEvent.Post event) { + for (int x = 0; x < width; x++) { + for (int y = 0; y < height; y++) { + icons[x][y] = new TextureVirtual(getBaseIcon(), width, height, x, y); + } + } + } + + private class TextureVirtual implements IIcon { + + private int width, height; + private float umin, umax, vmin, vmax; + private String name; + private IIcon parentIcon; + + private TextureVirtual(IIcon parent, int w, int h, int x, int y) { + parentIcon = parent; + + umin = parentIcon.getInterpolatedU(16.0 * (x) / w); + umax = parentIcon.getInterpolatedU(16.0 * (x + 1) / w); + vmin = parentIcon.getInterpolatedV(16.0 * (y) / h); + vmax = parentIcon.getInterpolatedV(16.0 * (y + 1) / h); + + name = parentIcon.getIconName() + "|" + x + "." + y; + + width = parentIcon.getIconWidth(); + height = parentIcon.getIconHeight(); + } + + @Override + @SideOnly(Side.CLIENT) + public float getMinU() { + return umin; + } + + @Override + @SideOnly(Side.CLIENT) + public float getMaxU() { + return umax; + } + + @Override + @SideOnly(Side.CLIENT) + public float getInterpolatedU(double d0) { + return (float) (umin + (umax - umin) * d0 / 16.0); + } + + @Override + @SideOnly(Side.CLIENT) + public float getMinV() { + return vmin; + } + + @Override + @SideOnly(Side.CLIENT) + public float getMaxV() { + return vmax; + } + + @Override + @SideOnly(Side.CLIENT) + public float getInterpolatedV(double d0) { + return (float) (vmin + (vmax - vmin) * d0 / 16.0); + } + + @Override + @SideOnly(Side.CLIENT) + public String getIconName() { + return name; + } + + @Override + @SideOnly(Side.CLIENT) + public int getIconWidth() { + return width; + } + + @Override + @SideOnly(Side.CLIENT) + public int getIconHeight() { + return height; + } + } +} diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePane.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePane.java index b9b8ebcb..6660d5e8 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePane.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePane.java @@ -14,7 +14,7 @@ import net.minecraft.world.IBlockAccess; import com.cricketcraft.chisel.api.ICarvable; import com.cricketcraft.chisel.carving.CarvableHelper; import com.cricketcraft.chisel.carving.CarvableVariation; -import com.cricketcraft.chisel.client.render.BlockMarblePaneRenderer; +import com.cricketcraft.chisel.client.render.RendererCTMPane; import com.cricketcraft.chisel.init.ChiselTabs; import cpw.mods.fml.relauncher.Side; @@ -46,7 +46,7 @@ public class BlockCarvablePane extends BlockPane implements ICarvable { @Override public int getRenderType() { - return BlockMarblePaneRenderer.id; + return RendererCTMPane.id; } @Override diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePillar.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePillar.java index 4231ed0b..ec02a54b 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePillar.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePillar.java @@ -5,7 +5,7 @@ import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import com.cricketcraft.chisel.carving.CarvableVariation; -import com.cricketcraft.chisel.client.render.BlockMarblePillarRenderer; +import com.cricketcraft.chisel.client.render.RendererPillar; public class BlockCarvablePillar extends BlockCarvable { @@ -17,7 +17,7 @@ public class BlockCarvablePillar extends BlockCarvable { @Override public int getRenderType() { - return BlockMarblePillarRenderer.id; + return RendererPillar.id; } @Override @@ -31,9 +31,9 @@ public class BlockCarvablePillar extends BlockCarvable { } public IIcon getCtmIcon(int index, int metadata) { - //Workaround to prevent crash with invalid meta + // Workaround to prevent crash with invalid meta CarvableVariation var = null; - if(metadata <= carverHelper.variations.size()) + if (metadata <= carverHelper.variations.size()) var = carverHelper.variations.get(metadata); else var = carverHelper.variations.get(0); @@ -42,7 +42,7 @@ public class BlockCarvablePillar extends BlockCarvable { return var.iconTop; if (var.seamsCtmVert == null) return var.icon; - return var.seamsCtmVert.icons[index]; + return var.seamsCtmVert.getSubIcon(index % 2, index / 2); } } diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableStairs.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableStairs.java index 1a359292..c23f44a6 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableStairs.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableStairs.java @@ -17,7 +17,7 @@ import net.minecraft.world.World; import com.cricketcraft.chisel.api.ICarvable; import com.cricketcraft.chisel.carving.CarvableHelper; import com.cricketcraft.chisel.carving.CarvableVariation; -import com.cricketcraft.chisel.client.render.BlockMarbleStairsRenderer; +import com.cricketcraft.chisel.client.render.RendererStairs; public class BlockCarvableStairs extends BlockStairs implements ICarvable { @@ -57,7 +57,7 @@ public class BlockCarvableStairs extends BlockStairs implements ICarvable { @Override public int getRenderType() { - return BlockMarbleStairsRenderer.id; + return RendererStairs.id; } @Override diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockLavastone.java b/src/main/java/com/cricketcraft/chisel/block/BlockLavastone.java index 31839a76..b212e9e0 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockLavastone.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockLavastone.java @@ -7,7 +7,7 @@ import net.minecraft.world.World; import com.cricketcraft.chisel.client.GeneralChiselClient; -public class BlockLavastone extends BlockMarbleTexturedOre { +public class BlockLavastone extends BlockMultiLayer { public BlockLavastone(Material mat, String baseIcon) { super(mat, baseIcon); diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockMarbleTexturedOre.java b/src/main/java/com/cricketcraft/chisel/block/BlockMultiLayer.java similarity index 87% rename from src/main/java/com/cricketcraft/chisel/block/BlockMarbleTexturedOre.java rename to src/main/java/com/cricketcraft/chisel/block/BlockMultiLayer.java index c7c65f95..1294a6a4 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockMarbleTexturedOre.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockMultiLayer.java @@ -15,17 +15,17 @@ import com.cricketcraft.chisel.api.ICarvable; import com.cricketcraft.chisel.carving.CarvableHelper; import com.cricketcraft.chisel.carving.CarvableVariation; -public class BlockMarbleTexturedOre extends BlockTexturedOre implements ICarvable { +public class BlockMultiLayer extends BlockMultiLayerBase implements ICarvable { public CarvableHelper carverHelper; - public BlockMarbleTexturedOre(Material mat, String baseIcon) { + public BlockMultiLayer(Material mat, String baseIcon) { super(mat, baseIcon); carverHelper = new CarvableHelper(); } - public BlockMarbleTexturedOre(Material mat, Block block) { + public BlockMultiLayer(Material mat, Block block) { super(mat, block); carverHelper = new CarvableHelper(); diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockTexturedOre.java b/src/main/java/com/cricketcraft/chisel/block/BlockMultiLayerBase.java similarity index 75% rename from src/main/java/com/cricketcraft/chisel/block/BlockTexturedOre.java rename to src/main/java/com/cricketcraft/chisel/block/BlockMultiLayerBase.java index 8407a2f6..2461dbc3 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockTexturedOre.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockMultiLayerBase.java @@ -5,22 +5,22 @@ import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.util.IIcon; -import com.cricketcraft.chisel.client.render.BlockTexturedOreRenderer; +import com.cricketcraft.chisel.client.render.RendererMultiLayer; -public class BlockTexturedOre extends Block { +public abstract class BlockMultiLayerBase extends Block { public int currentPass; public Block base; public IIcon icon; String iconFile; - public BlockTexturedOre(Material mat, Block base) { + public BlockMultiLayerBase(Material mat, Block base) { super(mat); this.base = base; } - public BlockTexturedOre(Material mat, String iconFile) { + public BlockMultiLayerBase(Material mat, String iconFile) { super(mat); this.iconFile = iconFile; @@ -33,7 +33,7 @@ public class BlockTexturedOre extends Block { @Override public int getRenderType() { - return BlockTexturedOreRenderer.id; + return RendererMultiLayer.id; } @Override diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockSnakestone.java b/src/main/java/com/cricketcraft/chisel/block/BlockSnakestone.java index 7048f1f2..5fa597d3 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockSnakestone.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockSnakestone.java @@ -13,7 +13,7 @@ import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -import com.cricketcraft.chisel.client.render.BlockSnakeStoneRenderer; +import com.cricketcraft.chisel.client.render.RendererSnakeStone; public class BlockSnakestone extends Block { @@ -62,7 +62,7 @@ public class BlockSnakestone extends Block { @Override public int getRenderType() { - return BlockSnakeStoneRenderer.id; + return RendererSnakeStone.id; } static final int[] rotRemap = { 0, 3, 1, 2 }; diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockWaterstone.java b/src/main/java/com/cricketcraft/chisel/block/BlockWaterstone.java index 5d5d89c3..0af23f16 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockWaterstone.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockWaterstone.java @@ -2,7 +2,7 @@ package com.cricketcraft.chisel.block; import net.minecraft.block.material.Material; -public class BlockWaterstone extends BlockMarbleTexturedOre { +public class BlockWaterstone extends BlockMultiLayer { public BlockWaterstone(Material mat, String baseIcon) { super(mat, baseIcon); diff --git a/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java b/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java index 178a882b..b3e62e5c 100644 --- a/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java +++ b/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java @@ -20,7 +20,7 @@ import org.apache.commons.lang3.ArrayUtils; import com.cricketcraft.chisel.Chisel; import com.cricketcraft.chisel.api.client.CTM; import com.cricketcraft.chisel.api.client.ISubmapManager; -import com.cricketcraft.chisel.client.render.TextureSubmap; +import com.cricketcraft.chisel.api.client.TextureSubmap; import com.cricketcraft.chisel.compat.fmp.FMPIMC; import com.cricketcraft.chisel.item.ItemCarvable; import com.cricketcraft.chisel.utils.GeneralClient; @@ -199,24 +199,24 @@ public class CarvableHelper { if (side < 2) return variation.iconTop; else - return variation.seamsCtmVert.icons[0]; + return variation.seamsCtmVert.getSubIcon(0, 0); case CTMH: if (side < 2) return variation.iconTop; else - return variation.seamsCtmVert.icons[0]; + return variation.seamsCtmVert.getSubIcon(0, 0); case V9: - return variation.variations9.icons[4]; + return variation.variations9.getSubIcon(1, 1); case V4: - return variation.variations9.icons[0]; + return variation.variations9.getSubIcon(0, 0); case CTMX: return variation.icon; case R16: - return variation.variations9.icons[5]; + return variation.variations9.getSubIcon(1, 1); case R9: - return variation.variations9.icons[4]; + return variation.variations9.getSubIcon(1, 1); case R4: - return variation.variations9.icons[0]; + return variation.variations9.getSubIcon(0, 0); case CUSTOM: return variation.manager.getIcon(side, metadata); } @@ -239,13 +239,6 @@ public class CarvableHelper { case TOPSIDE: case TOPBOTSIDE: return getIcon(side, metadata); -// case CTM3: -// int tex = CTM.getTexture(world, x, y, z, side); -// -// int row = tex / 16; -// int col = tex % 16; -// -// return variation.ctm.seams[col / 4].icons[col % 4 + row * 4]; case CTMV: { if (side < 2) return variation.iconTop; @@ -255,12 +248,12 @@ public class CarvableHelper { boolean botConnected = ctm.isConnected(world, x, y - 1, z, side, block, metadata); if (topConnected && botConnected) - return variation.seamsCtmVert.icons[2]; + return variation.seamsCtmVert.getSubIcon(0, 1); if (topConnected && !botConnected) - return variation.seamsCtmVert.icons[3]; + return variation.seamsCtmVert.getSubIcon(1, 1); if (!topConnected && botConnected) - return variation.seamsCtmVert.icons[1]; - return variation.seamsCtmVert.icons[0]; + return variation.seamsCtmVert.getSubIcon(1, 0); + return variation.seamsCtmVert.getSubIcon(0, 0); } case CTMH: if (side < 2) @@ -281,12 +274,12 @@ public class CarvableHelper { } if (p && n) - return variation.seamsCtmVert.icons[1]; + return variation.seamsCtmVert.getSubIcon(1, 0); else if (p) - return variation.seamsCtmVert.icons[reverse ? 2 : 3]; + return variation.seamsCtmVert.getSubIcon(reverse ? 0 : 1, 1); else if (n) - return variation.seamsCtmVert.icons[reverse ? 3 : 2]; - return variation.seamsCtmVert.icons[0]; + return variation.seamsCtmVert.getSubIcon(reverse ? 0 : 1, 1); + return variation.seamsCtmVert.getSubIcon(0, 0); case V9: case V4: int variationSize = (variation.type == TextureType.V9) ? 3 : 2; @@ -320,7 +313,7 @@ public class CarvableHelper { index = textureZ + textureY * variationSize; } - return variation.variations9.icons[index]; + return variation.variations9.getSubIcon(index % variationSize, index / variationSize); case CTMX: return variation.icon; case R16: @@ -334,10 +327,11 @@ public class CarvableHelper { while (indexRan < 0) { indexRan = indexRan + 10000; } + int size = variation.type == TextureType.V4 ? 2 : 3; // rand.setSeed(indexRan); // Broken - return variation.variations9.icons[ /* rand */indexRan % ((variation.type == TextureType.R9) ? 9 : 4)]; + return variation.variations9.getSubIcon(indexRan % size, indexRan / size); case CUSTOM: return variation.manager.getIcon(world, x, y, z, side); } @@ -405,6 +399,8 @@ public class CarvableHelper { variation.iconTop = variation.block.getIcon(1, variation.blockMeta); variation.iconBot = variation.block.getIcon(0, variation.blockMeta); break; + default: + break; } } } else { @@ -421,13 +417,6 @@ public class CarvableHelper { variation.iconTop = register.registerIcon(modName + ":" + variation.texture + "-top"); variation.iconBot = register.registerIcon(modName + ":" + variation.texture + "-bottom"); break; -// case CTM3: -// CarvableVariationCTM ctm = new CarvableVariationCTM(); -// ctm.seams[0] = new TextureSubmap(register.registerIcon(modName + ":" + variation.texture + "-ctm1"), 4, 4); -// ctm.seams[1] = new TextureSubmap(register.registerIcon(modName + ":" + variation.texture + "-ctm2"), 4, 4); -// ctm.seams[2] = new TextureSubmap(register.registerIcon(modName + ":" + variation.texture + "-ctm3"), 4, 4); -// variation.ctm = ctm; -// break; case CTMV: variation.seamsCtmVert = new TextureSubmap(register.registerIcon(modName + ":" + variation.texture + "-ctmv"), 2, 2); variation.iconTop = register.registerIcon(modName + ":" + variation.texture + "-top"); diff --git a/src/main/java/com/cricketcraft/chisel/carving/CarvableVariation.java b/src/main/java/com/cricketcraft/chisel/carving/CarvableVariation.java index 1a7eab7d..9a8b3598 100644 --- a/src/main/java/com/cricketcraft/chisel/carving/CarvableVariation.java +++ b/src/main/java/com/cricketcraft/chisel/carving/CarvableVariation.java @@ -5,8 +5,8 @@ import net.minecraft.client.resources.I18n; import net.minecraft.util.IIcon; import com.cricketcraft.chisel.api.client.ISubmapManager; +import com.cricketcraft.chisel.api.client.TextureSubmap; import com.cricketcraft.chisel.carving.CarvableHelper.TextureType; -import com.cricketcraft.chisel.client.render.TextureSubmap; public class CarvableVariation { diff --git a/src/main/java/com/cricketcraft/chisel/client/render/BlockCarpetRenderer.java b/src/main/java/com/cricketcraft/chisel/client/render/BlockCarpetRenderer.java index c5ad492a..8090ad32 100644 --- a/src/main/java/com/cricketcraft/chisel/client/render/BlockCarpetRenderer.java +++ b/src/main/java/com/cricketcraft/chisel/client/render/BlockCarpetRenderer.java @@ -4,7 +4,7 @@ import com.cricketcraft.chisel.Chisel; import cpw.mods.fml.client.registry.RenderingRegistry; -public class BlockCarpetRenderer extends BlockAdvancedMarbleRenderer { +public class BlockCarpetRenderer extends RendererCTM { public BlockCarpetRenderer() { super(); diff --git a/src/main/java/com/cricketcraft/chisel/client/render/RenderBlocksCTM.java b/src/main/java/com/cricketcraft/chisel/client/render/RenderBlocksCTM.java index b5b6ad3b..ad3bf595 100644 --- a/src/main/java/com/cricketcraft/chisel/client/render/RenderBlocksCTM.java +++ b/src/main/java/com/cricketcraft/chisel/client/render/RenderBlocksCTM.java @@ -1,6 +1,7 @@ package com.cricketcraft.chisel.client.render; import com.cricketcraft.chisel.api.client.CTM; +import com.cricketcraft.chisel.api.client.TextureSubmap; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; @@ -246,7 +247,17 @@ public class RenderBlocksCTM extends RenderBlocks { } void side(SubSide side, int iconIndex) { - IIcon icon = iconIndex >= 16 ? submapSmall.icons[iconIndex - 16] : submap.icons[iconIndex]; + IIcon icon; + TextureSubmap map; + if (iconIndex >= 16) { + iconIndex -= 16; + map = submapSmall; + } else { + map = submap; + } + int x = iconIndex % map.getWidth(); + int y = iconIndex / map.getHeight(); + icon = map.getSubIcon(x, y); double umax = icon.getMaxU(); double umin = icon.getMinU(); diff --git a/src/main/java/com/cricketcraft/chisel/client/render/RenderBlocksCTMCarpet.java b/src/main/java/com/cricketcraft/chisel/client/render/RenderBlocksCTMCarpet.java index ebb6eda9..379ecb28 100644 --- a/src/main/java/com/cricketcraft/chisel/client/render/RenderBlocksCTMCarpet.java +++ b/src/main/java/com/cricketcraft/chisel/client/render/RenderBlocksCTMCarpet.java @@ -11,22 +11,22 @@ public class RenderBlocksCTMCarpet extends RenderBlocksCTM { @Override public void renderFaceXNeg(Block block, double x, double y, double z, IIcon icon) { - rendererOld.renderFaceXNeg(block, 0, 0, 0, submapSmall.icon); + rendererOld.renderFaceXNeg(block, 0, 0, 0, submapSmall.getBaseIcon()); } @Override public void renderFaceXPos(Block block, double x, double y, double z, IIcon icon) { - rendererOld.renderFaceXPos(block, 0, 0, 0, submapSmall.icon); + rendererOld.renderFaceXPos(block, 0, 0, 0, submapSmall.getBaseIcon()); } @Override public void renderFaceZNeg(Block block, double x, double y, double z, IIcon icon) { - rendererOld.renderFaceZNeg(block, 0, 0, 0, submapSmall.icon); + rendererOld.renderFaceZNeg(block, 0, 0, 0, submapSmall.getBaseIcon()); } @Override public void renderFaceZPos(Block block, double x, double y, double z, IIcon icon) { - rendererOld.renderFaceZPos(block, 0, 0, 0, submapSmall.icon); + rendererOld.renderFaceZPos(block, 0, 0, 0, submapSmall.getBaseIcon()); } } diff --git a/src/main/java/com/cricketcraft/chisel/client/render/RenderBlocksCTMNoLight.java b/src/main/java/com/cricketcraft/chisel/client/render/RenderBlocksCTMFullbright.java similarity index 94% rename from src/main/java/com/cricketcraft/chisel/client/render/RenderBlocksCTMNoLight.java rename to src/main/java/com/cricketcraft/chisel/client/render/RenderBlocksCTMFullbright.java index 03970684..6c3bbd0d 100644 --- a/src/main/java/com/cricketcraft/chisel/client/render/RenderBlocksCTMNoLight.java +++ b/src/main/java/com/cricketcraft/chisel/client/render/RenderBlocksCTMFullbright.java @@ -1,17 +1,19 @@ package com.cricketcraft.chisel.client.render; import com.cricketcraft.chisel.api.client.CTM; +import com.cricketcraft.chisel.api.client.TextureSubmap; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; import net.minecraft.util.IIcon; -public class RenderBlocksCTMNoLight extends RenderBlocks { +// TODO rewrite this to use the updated RenderBlocksCTM code +public class RenderBlocksCTMFullbright extends RenderBlocks { private static CTM ctm = CTM.getInstance(); - RenderBlocksCTMNoLight() { + RenderBlocksCTMFullbright() { super(); resetVertices(); } @@ -47,8 +49,18 @@ public class RenderBlocksCTMNoLight extends RenderBlocks { } void side(int a, int b, int c, int d, int iconIndex, boolean flip) { - IIcon icon = iconIndex >= 16 ? submapSmall.icons[iconIndex - 16] : submap.icons[iconIndex]; - + IIcon icon; + TextureSubmap map; + if (iconIndex >= 16) { + iconIndex -= 16; + map = submapSmall; + } else { + map = submap; + } + int x = iconIndex % map.getWidth(); + int y = iconIndex / map.getHeight(); + icon = map.getSubIcon(x, y); + double u0 = icon.getMaxU(); double u1 = icon.getMinU(); double v0 = icon.getMaxV(); diff --git a/src/main/java/com/cricketcraft/chisel/client/render/RenderBlocksColumn.java b/src/main/java/com/cricketcraft/chisel/client/render/RenderBlocksColumn.java index ca04bfb0..77cfcb46 100644 --- a/src/main/java/com/cricketcraft/chisel/client/render/RenderBlocksColumn.java +++ b/src/main/java/com/cricketcraft/chisel/client/render/RenderBlocksColumn.java @@ -1,6 +1,7 @@ package com.cricketcraft.chisel.client.render; import com.cricketcraft.chisel.api.client.CTM; +import com.cricketcraft.chisel.api.client.TextureSubmap; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; @@ -35,11 +36,11 @@ public class RenderBlocksColumn extends RenderBlocks { sides[1] = iconTop; if (yp && yn) - sides[2] = submap.icons[2]; + sides[2] = submap.getSubIcon(0, 1); else if (yp) - sides[2] = submap.icons[3]; + sides[2] = submap.getSubIcon(1, 1); else - sides[2] = submap.icons[1]; + sides[2] = submap.getSubIcon(1, 0); sides[3] = sides[4] = sides[5] = sides[2]; } else { @@ -62,14 +63,14 @@ public class RenderBlocksColumn extends RenderBlocks { // for some reason along the x axis the bottom texture on the ends is backwards. This flips it around. if (xp && xn) { - sides[1] = submap.icons[2]; + sides[1] = submap.getSubIcon(0, 1); sides[0] = sides[1]; } else if (xp) { - sides[1] = submap.icons[3]; - sides[0] = submap.icons[1]; + sides[1] = submap.getSubIcon(1, 1); + sides[0] = submap.getSubIcon(1, 0); } else { - sides[1] = submap.icons[1]; - sides[0] = submap.icons[3]; + sides[1] = submap.getSubIcon(1, 0); + sides[0] = submap.getSubIcon(1, 1); } sides[2] = sides[3] = sides[1]; } else { @@ -93,16 +94,16 @@ public class RenderBlocksColumn extends RenderBlocks { sides[3] = iconTop; if (zp && zn) - sides[0] = submap.icons[2]; + sides[0] = submap.getSubIcon(0, 1); else if (zp) - sides[0] = submap.icons[1]; + sides[0] = submap.getSubIcon(1, 0); else - sides[0] = submap.icons[3]; + sides[0] = submap.getSubIcon(1, 1); sides[1] = sides[4] = sides[5] = sides[0]; } else { sides[0] = sides[1] = iconTop; - sides[2] = sides[3] = sides[4] = sides[5] = submap.icons[0]; + sides[2] = sides[3] = sides[4] = sides[5] = submap.getSubIcon(0, 0); } } } diff --git a/src/main/java/com/cricketcraft/chisel/client/render/RenderStandardBlockNoSunlight.java b/src/main/java/com/cricketcraft/chisel/client/render/RenderStandardBlockNoSunlight.java deleted file mode 100644 index e61e44fb..00000000 --- a/src/main/java/com/cricketcraft/chisel/client/render/RenderStandardBlockNoSunlight.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.cricketcraft.chisel.client.render; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.world.IBlockAccess; - -import org.lwjgl.opengl.GL11; - -import com.cricketcraft.chisel.utils.Drawing; - -import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; -import cpw.mods.fml.client.registry.RenderingRegistry; - -public class RenderStandardBlockNoSunlight implements ISimpleBlockRenderingHandler { - - static int id; - - public RenderStandardBlockNoSunlight() { - id = RenderingRegistry.getNextAvailableRenderId(); - } - - @Override - public void renderInventoryBlock(Block block, int meta, int modelID, RenderBlocks renderer) { - GL11.glTranslatef(-0.5F, -0.5F, -0.5F); - Drawing.drawBlock(block, meta, renderer); - } - - @Override - public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { - int meta = world.getBlockMetadata(x, y, z); - - if (meta != 0) - renderer.overrideBlockTexture = block.getIcon(0, meta); - renderer.setRenderBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - renderer.renderStandardBlockWithColorMultiplier(block, x, y, z, 1.0F, 1.0F, 1.0F); - renderer.overrideBlockTexture = null; - - return false; - } - - @Override - public boolean shouldRender3DInInventory(int renderId) { - return true; - } - - @Override - public int getRenderId() { - return id; - } - -} diff --git a/src/main/java/com/cricketcraft/chisel/client/render/BlockAdvancedMarbleRenderer.java b/src/main/java/com/cricketcraft/chisel/client/render/RendererCTM.java similarity index 93% rename from src/main/java/com/cricketcraft/chisel/client/render/BlockAdvancedMarbleRenderer.java rename to src/main/java/com/cricketcraft/chisel/client/render/RendererCTM.java index 4270ad76..212e1dec 100644 --- a/src/main/java/com/cricketcraft/chisel/client/render/BlockAdvancedMarbleRenderer.java +++ b/src/main/java/com/cricketcraft/chisel/client/render/RendererCTM.java @@ -8,7 +8,6 @@ import org.lwjgl.opengl.GL11; import com.cricketcraft.chisel.Chisel; import com.cricketcraft.chisel.api.ICarvable; -import com.cricketcraft.chisel.carving.CarvableHelper; import com.cricketcraft.chisel.carving.CarvableHelper.TextureType; import com.cricketcraft.chisel.carving.CarvableVariation; import com.cricketcraft.chisel.utils.Drawing; @@ -16,12 +15,12 @@ import com.cricketcraft.chisel.utils.Drawing; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import cpw.mods.fml.client.registry.RenderingRegistry; -public class BlockAdvancedMarbleRenderer implements ISimpleBlockRenderingHandler { +public class RendererCTM implements ISimpleBlockRenderingHandler { public RenderBlocksCTM rendererCTM = new RenderBlocksCTM(); RenderBlocksColumn rendererColumn = new RenderBlocksColumn(); - public BlockAdvancedMarbleRenderer() { + public RendererCTM() { if (Chisel.renderCTMId == 0) { Chisel.renderCTMId = RenderingRegistry.getNextAvailableRenderId(); } diff --git a/src/main/java/com/cricketcraft/chisel/client/render/BlockCTMNoLightRenderer.java b/src/main/java/com/cricketcraft/chisel/client/render/RendererCTMFullbright.java similarity index 88% rename from src/main/java/com/cricketcraft/chisel/client/render/BlockCTMNoLightRenderer.java rename to src/main/java/com/cricketcraft/chisel/client/render/RendererCTMFullbright.java index f50eb46d..742fa0fb 100644 --- a/src/main/java/com/cricketcraft/chisel/client/render/BlockCTMNoLightRenderer.java +++ b/src/main/java/com/cricketcraft/chisel/client/render/RendererCTMFullbright.java @@ -8,19 +8,18 @@ import org.lwjgl.opengl.GL11; import com.cricketcraft.chisel.Chisel; import com.cricketcraft.chisel.api.ICarvable; -import com.cricketcraft.chisel.carving.CarvableHelper; -import com.cricketcraft.chisel.carving.CarvableVariation; import com.cricketcraft.chisel.carving.CarvableHelper.TextureType; +import com.cricketcraft.chisel.carving.CarvableVariation; import com.cricketcraft.chisel.utils.Drawing; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import cpw.mods.fml.client.registry.RenderingRegistry; -public class BlockCTMNoLightRenderer implements ISimpleBlockRenderingHandler { +public class RendererCTMFullbright implements ISimpleBlockRenderingHandler { - public RenderBlocksCTMNoLight rendererCTMNoLight = new RenderBlocksCTMNoLight(); + public RenderBlocksCTMFullbright rendererCTMNoLight = new RenderBlocksCTMFullbright(); - public BlockCTMNoLightRenderer() { + public RendererCTMFullbright() { if (Chisel.renderCTMNoLightId == 0) { Chisel.renderCTMNoLightId = RenderingRegistry.getNextAvailableRenderId(); } diff --git a/src/main/java/com/cricketcraft/chisel/client/render/BlockMarblePaneRenderer.java b/src/main/java/com/cricketcraft/chisel/client/render/RendererCTMPane.java similarity index 99% rename from src/main/java/com/cricketcraft/chisel/client/render/BlockMarblePaneRenderer.java rename to src/main/java/com/cricketcraft/chisel/client/render/RendererCTMPane.java index 767482a7..529bcd6e 100644 --- a/src/main/java/com/cricketcraft/chisel/client/render/BlockMarblePaneRenderer.java +++ b/src/main/java/com/cricketcraft/chisel/client/render/RendererCTMPane.java @@ -15,11 +15,11 @@ import com.cricketcraft.chisel.utils.Drawing; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import cpw.mods.fml.client.registry.RenderingRegistry; -public class BlockMarblePaneRenderer implements ISimpleBlockRenderingHandler { +public class RendererCTMPane implements ISimpleBlockRenderingHandler { public static int id; - public BlockMarblePaneRenderer() { + public RendererCTMPane() { id = RenderingRegistry.getNextAvailableRenderId(); } diff --git a/src/main/java/com/cricketcraft/chisel/client/render/BlockEldritchRenderer.java b/src/main/java/com/cricketcraft/chisel/client/render/RendererEldritch.java similarity index 96% rename from src/main/java/com/cricketcraft/chisel/client/render/BlockEldritchRenderer.java rename to src/main/java/com/cricketcraft/chisel/client/render/RendererEldritch.java index 01acad86..faedc8de 100644 --- a/src/main/java/com/cricketcraft/chisel/client/render/BlockEldritchRenderer.java +++ b/src/main/java/com/cricketcraft/chisel/client/render/RendererEldritch.java @@ -12,9 +12,9 @@ import com.cricketcraft.chisel.utils.Drawing; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import cpw.mods.fml.client.registry.RenderingRegistry; -public class BlockEldritchRenderer implements ISimpleBlockRenderingHandler { +public class RendererEldritch implements ISimpleBlockRenderingHandler { - public BlockEldritchRenderer() { + public RendererEldritch() { Chisel.renderEldritchId = RenderingRegistry.getNextAvailableRenderId(); } diff --git a/src/main/java/com/cricketcraft/chisel/client/render/BlockGlowRenderer.java b/src/main/java/com/cricketcraft/chisel/client/render/RendererLayeredGlow.java similarity index 92% rename from src/main/java/com/cricketcraft/chisel/client/render/BlockGlowRenderer.java rename to src/main/java/com/cricketcraft/chisel/client/render/RendererLayeredGlow.java index 365127e5..fa24b0ec 100644 --- a/src/main/java/com/cricketcraft/chisel/client/render/BlockGlowRenderer.java +++ b/src/main/java/com/cricketcraft/chisel/client/render/RendererLayeredGlow.java @@ -1,25 +1,24 @@ package com.cricketcraft.chisel.client.render; -import com.cricketcraft.chisel.config.Configurations; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; -import net.minecraft.item.ItemDye; import net.minecraft.world.IBlockAccess; import org.lwjgl.opengl.GL11; import com.cricketcraft.chisel.Chisel; import com.cricketcraft.chisel.block.BlockCarvableGlow; +import com.cricketcraft.chisel.config.Configurations; import com.cricketcraft.chisel.utils.Drawing; import com.cricketcraft.chisel.utils.GeneralClient; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import cpw.mods.fml.client.registry.RenderingRegistry; -public class BlockGlowRenderer implements ISimpleBlockRenderingHandler { +public class RendererLayeredGlow implements ISimpleBlockRenderingHandler { - public BlockGlowRenderer() { + public RendererLayeredGlow() { Chisel.renderGlowId = RenderingRegistry.getNextAvailableRenderId(); } diff --git a/src/main/java/com/cricketcraft/chisel/client/render/BlockTexturedOreRenderer.java b/src/main/java/com/cricketcraft/chisel/client/render/RendererMultiLayer.java similarity index 82% rename from src/main/java/com/cricketcraft/chisel/client/render/BlockTexturedOreRenderer.java rename to src/main/java/com/cricketcraft/chisel/client/render/RendererMultiLayer.java index 04494506..bdccd3c4 100644 --- a/src/main/java/com/cricketcraft/chisel/client/render/BlockTexturedOreRenderer.java +++ b/src/main/java/com/cricketcraft/chisel/client/render/RendererMultiLayer.java @@ -1,6 +1,6 @@ package com.cricketcraft.chisel.client.render; -import com.cricketcraft.chisel.block.BlockTexturedOre; +import com.cricketcraft.chisel.block.BlockMultiLayerBase; import com.cricketcraft.chisel.utils.Drawing; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import cpw.mods.fml.client.registry.RenderingRegistry; @@ -10,21 +10,21 @@ import net.minecraft.init.Blocks; import net.minecraft.world.IBlockAccess; import org.lwjgl.opengl.GL11; -public class BlockTexturedOreRenderer implements ISimpleBlockRenderingHandler { +public class RendererMultiLayer implements ISimpleBlockRenderingHandler { float bot = -0.001f, top = 1.0f - bot; public static int id; - public BlockTexturedOreRenderer() { + public RendererMultiLayer() { id = RenderingRegistry.getNextAvailableRenderId(); } @Override public void renderInventoryBlock(Block blck, int meta, int modelID, RenderBlocks renderer) { - if (blck == null || !(blck instanceof BlockTexturedOre)) + if (blck == null || !(blck instanceof BlockMultiLayerBase)) return; - BlockTexturedOre block = (BlockTexturedOre) blck; + BlockMultiLayerBase block = (BlockMultiLayerBase) blck; if (block.icon != null) { renderer.overrideBlockTexture = block.icon; @@ -44,9 +44,9 @@ public class BlockTexturedOreRenderer implements ISimpleBlockRenderingHandler { @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block blck, int modelId, RenderBlocks renderer) { - if (blck == null || !(blck instanceof BlockTexturedOre)) + if (blck == null || !(blck instanceof BlockMultiLayerBase)) return false; - BlockTexturedOre block = (BlockTexturedOre) blck; + BlockMultiLayerBase block = (BlockMultiLayerBase) blck; if (block.currentPass == 0) { if (block.icon != null) { diff --git a/src/main/java/com/cricketcraft/chisel/client/render/BlockMarblePillarRenderer.java b/src/main/java/com/cricketcraft/chisel/client/render/RendererPillar.java similarity index 97% rename from src/main/java/com/cricketcraft/chisel/client/render/BlockMarblePillarRenderer.java rename to src/main/java/com/cricketcraft/chisel/client/render/RendererPillar.java index 8898e070..15a38594 100644 --- a/src/main/java/com/cricketcraft/chisel/client/render/BlockMarblePillarRenderer.java +++ b/src/main/java/com/cricketcraft/chisel/client/render/RendererPillar.java @@ -13,11 +13,11 @@ import com.cricketcraft.chisel.utils.Drawing; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import cpw.mods.fml.client.registry.RenderingRegistry; -public class BlockMarblePillarRenderer implements ISimpleBlockRenderingHandler { +public class RendererPillar implements ISimpleBlockRenderingHandler { public static int id; - public BlockMarblePillarRenderer() { + public RendererPillar() { id = RenderingRegistry.getNextAvailableRenderId(); } diff --git a/src/main/java/com/cricketcraft/chisel/client/render/BlockRoadLineRenderer.java b/src/main/java/com/cricketcraft/chisel/client/render/RendererRoadLine.java similarity index 97% rename from src/main/java/com/cricketcraft/chisel/client/render/BlockRoadLineRenderer.java rename to src/main/java/com/cricketcraft/chisel/client/render/RendererRoadLine.java index 437d16b5..ae724791 100644 --- a/src/main/java/com/cricketcraft/chisel/client/render/BlockRoadLineRenderer.java +++ b/src/main/java/com/cricketcraft/chisel/client/render/RendererRoadLine.java @@ -14,9 +14,9 @@ import com.cricketcraft.chisel.utils.Drawing; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import cpw.mods.fml.client.registry.RenderingRegistry; -public class BlockRoadLineRenderer implements ISimpleBlockRenderingHandler { +public class RendererRoadLine implements ISimpleBlockRenderingHandler { - public BlockRoadLineRenderer() { + public RendererRoadLine() { Chisel.roadLineId = RenderingRegistry.getNextAvailableRenderId(); } diff --git a/src/main/java/com/cricketcraft/chisel/client/render/BlockLayeredRenderer.java b/src/main/java/com/cricketcraft/chisel/client/render/RendererSimpleLayered.java similarity index 93% rename from src/main/java/com/cricketcraft/chisel/client/render/BlockLayeredRenderer.java rename to src/main/java/com/cricketcraft/chisel/client/render/RendererSimpleLayered.java index f374a161..771d61fd 100644 --- a/src/main/java/com/cricketcraft/chisel/client/render/BlockLayeredRenderer.java +++ b/src/main/java/com/cricketcraft/chisel/client/render/RendererSimpleLayered.java @@ -13,9 +13,9 @@ import com.cricketcraft.chisel.utils.Drawing; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import cpw.mods.fml.client.registry.RenderingRegistry; -public class BlockLayeredRenderer implements ISimpleBlockRenderingHandler { +public class RendererSimpleLayered implements ISimpleBlockRenderingHandler { - public BlockLayeredRenderer() { + public RendererSimpleLayered() { Chisel.renderLayeredId = RenderingRegistry.getNextAvailableRenderId(); } diff --git a/src/main/java/com/cricketcraft/chisel/client/render/BlockSnakeStoneRenderer.java b/src/main/java/com/cricketcraft/chisel/client/render/RendererSnakeStone.java similarity index 96% rename from src/main/java/com/cricketcraft/chisel/client/render/BlockSnakeStoneRenderer.java rename to src/main/java/com/cricketcraft/chisel/client/render/RendererSnakeStone.java index 41b043c3..c966751a 100644 --- a/src/main/java/com/cricketcraft/chisel/client/render/BlockSnakeStoneRenderer.java +++ b/src/main/java/com/cricketcraft/chisel/client/render/RendererSnakeStone.java @@ -12,11 +12,11 @@ import com.cricketcraft.chisel.utils.Drawing; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import cpw.mods.fml.client.registry.RenderingRegistry; -public class BlockSnakeStoneRenderer implements ISimpleBlockRenderingHandler { +public class RendererSnakeStone implements ISimpleBlockRenderingHandler { public static int id; - public BlockSnakeStoneRenderer() { + public RendererSnakeStone() { id = RenderingRegistry.getNextAvailableRenderId(); } diff --git a/src/main/java/com/cricketcraft/chisel/client/render/BlockMarbleStairsRenderer.java b/src/main/java/com/cricketcraft/chisel/client/render/RendererStairs.java similarity index 92% rename from src/main/java/com/cricketcraft/chisel/client/render/BlockMarbleStairsRenderer.java rename to src/main/java/com/cricketcraft/chisel/client/render/RendererStairs.java index e1db9fcf..0619488d 100644 --- a/src/main/java/com/cricketcraft/chisel/client/render/BlockMarbleStairsRenderer.java +++ b/src/main/java/com/cricketcraft/chisel/client/render/RendererStairs.java @@ -12,11 +12,11 @@ import com.cricketcraft.chisel.utils.Drawing; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import cpw.mods.fml.client.registry.RenderingRegistry; -public class BlockMarbleStairsRenderer implements ISimpleBlockRenderingHandler { +public class RendererStairs implements ISimpleBlockRenderingHandler { public static int id; - public BlockMarbleStairsRenderer() { + public RendererStairs() { id = RenderingRegistry.getNextAvailableRenderId(); } diff --git a/src/main/java/com/cricketcraft/chisel/client/render/SubmapManagerFakeController.java b/src/main/java/com/cricketcraft/chisel/client/render/SubmapManagerFakeController.java index 122a2270..428f0fd4 100644 --- a/src/main/java/com/cricketcraft/chisel/client/render/SubmapManagerFakeController.java +++ b/src/main/java/com/cricketcraft/chisel/client/render/SubmapManagerFakeController.java @@ -7,6 +7,7 @@ import net.minecraft.world.IBlockAccess; import com.cricketcraft.chisel.api.client.CTM; import com.cricketcraft.chisel.api.client.ISubmapManager; +import com.cricketcraft.chisel.api.client.TextureSubmap; import com.cricketcraft.chisel.init.ChiselBlocks; import static com.cricketcraft.chisel.api.client.Dir.*; @@ -22,20 +23,20 @@ public class SubmapManagerFakeController implements ISubmapManager { @Override public IIcon getIcon(int side, int meta) { - return map.icons[0]; + return map.getSubIcon(0, 0); } @Override public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { ctm.buildConnectionMap(world, x, y, z, side, ChiselBlocks.futura, 2); if (ctm.connectedAnd(TOP, BOTTOM, LEFT, RIGHT)) { - return map.icons[3]; + return map.getSubIcon(1, 1); } else if (ctm.connectedAnd(TOP, BOTTOM)) { - return map.icons[2]; + return map.getSubIcon(0, 1); } else if (ctm.connectedAnd(LEFT, RIGHT)) { - return map.icons[1]; + return map.getSubIcon(1, 0); } else { - return map.icons[0]; + return map.getSubIcon(0, 0); } } diff --git a/src/main/java/com/cricketcraft/chisel/client/render/TextureSubmap.java b/src/main/java/com/cricketcraft/chisel/client/render/TextureSubmap.java deleted file mode 100644 index 350b17fc..00000000 --- a/src/main/java/com/cricketcraft/chisel/client/render/TextureSubmap.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.cricketcraft.chisel.client.render; - -import net.minecraft.util.IIcon; -import net.minecraftforge.client.event.TextureStitchEvent; -import net.minecraftforge.common.MinecraftForge; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; - -public class TextureSubmap { - - public int width, height; - public IIcon icon; - public IIcon icons[]; - - public TextureSubmap(IIcon i, int w, int h) { - icon = i; - width = w; - height = h; - icons = new IIcon[width * height]; - - MinecraftForge.EVENT_BUS.register(this); - } - - @SubscribeEvent - public void TexturesStitched(TextureStitchEvent.Post event) { - - for (int x = 0; x < width; x++) { - for (int y = 0; y < height; y++) { - icons[y * width + x] = new TextureVirtual(icon, width, height, x, y); - } - } - } -} diff --git a/src/main/java/com/cricketcraft/chisel/client/render/TextureVirtual.java b/src/main/java/com/cricketcraft/chisel/client/render/TextureVirtual.java deleted file mode 100644 index 9cd28cb1..00000000 --- a/src/main/java/com/cricketcraft/chisel/client/render/TextureVirtual.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.cricketcraft.chisel.client.render; - -import net.minecraft.util.IIcon; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class TextureVirtual implements IIcon { - - private int width, height; - private float umin, umax, vmin, vmax; - private String name; - private IIcon parentIcon; - - TextureVirtual(IIcon parent, int w, int h, int x, int y) { - parentIcon = parent; - - umin = parentIcon.getInterpolatedU(16.0 * (x) / w); - umax = parentIcon.getInterpolatedU(16.0 * (x + 1) / w); - vmin = parentIcon.getInterpolatedV(16.0 * (y) / h); - vmax = parentIcon.getInterpolatedV(16.0 * (y + 1) / h); - - name = parentIcon.getIconName() + "|" + x + "." + y; - - width = parentIcon.getIconWidth(); - height = parentIcon.getIconHeight(); - } - - @Override - @SideOnly(Side.CLIENT) - public float getMinU() { - return umin; - } - - @Override - @SideOnly(Side.CLIENT) - public float getMaxU() { - return umax; - } - - @Override - @SideOnly(Side.CLIENT) - public float getInterpolatedU(double d0) { - return (float) (umin + (umax - umin) * d0 / 16.0); - } - - @Override - @SideOnly(Side.CLIENT) - public float getMinV() { - return vmin; - } - - @Override - @SideOnly(Side.CLIENT) - public float getMaxV() { - return vmax; - } - - @Override - @SideOnly(Side.CLIENT) - public float getInterpolatedV(double d0) { - return (float) (vmin + (vmax - vmin) * d0 / 16.0); - } - - @Override - @SideOnly(Side.CLIENT) - public String getIconName() { - return name; - } - - @Override - @SideOnly(Side.CLIENT) - public int getIconWidth() { - return width; - } - - @Override - @SideOnly(Side.CLIENT) - public int getIconHeight() { - return height; - } -} diff --git a/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java b/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java index 82ecf675..e056a5e9 100644 --- a/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java +++ b/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java @@ -69,7 +69,7 @@ public final class ChiselBlocks { public static final BlockCarvable laboratoryblock = null; public static final BlockCarvable voidstone = null; - public static final BlockMarbleTexturedOre voidstone2 = null; + public static final BlockMultiLayer voidstone2 = null; public static final BlockCarvablePillar voidstonePillar = null; public static final BlockCarvablePillar voidstonePillar2 = null; public static final BlockSnakestone stone_snakestone = null; diff --git a/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java b/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java index a76a97db..b784d272 100644 --- a/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java +++ b/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java @@ -32,20 +32,19 @@ public class ClientProxy extends CommonProxy { @Override public void init() { - RenderingRegistry.registerBlockHandler(new BlockMarbleStairsRenderer()); - RenderingRegistry.registerBlockHandler(new BlockMarblePaneRenderer()); - RenderingRegistry.registerBlockHandler(new BlockRoadLineRenderer()); - RenderingRegistry.registerBlockHandler(new BlockSnakeStoneRenderer()); - RenderingRegistry.registerBlockHandler(new RenderStandardBlockNoSunlight()); - RenderingRegistry.registerBlockHandler(new BlockMarblePillarRenderer()); - RenderingRegistry.registerBlockHandler(new BlockEldritchRenderer()); - RenderingRegistry.registerBlockHandler(new BlockAdvancedMarbleRenderer()); + RenderingRegistry.registerBlockHandler(new RendererStairs()); + RenderingRegistry.registerBlockHandler(new RendererCTMPane()); + RenderingRegistry.registerBlockHandler(new RendererRoadLine()); + RenderingRegistry.registerBlockHandler(new RendererSnakeStone()); + RenderingRegistry.registerBlockHandler(new RendererPillar()); + RenderingRegistry.registerBlockHandler(new RendererEldritch()); + RenderingRegistry.registerBlockHandler(new RendererCTM()); RenderingRegistry.registerBlockHandler(new BlockCarpetRenderer()); - RenderingRegistry.registerBlockHandler(new BlockGlowRenderer()); - RenderingRegistry.registerBlockHandler(new BlockCTMNoLightRenderer()); - RenderingRegistry.registerBlockHandler(new BlockLayeredRenderer()); + RenderingRegistry.registerBlockHandler(new RendererLayeredGlow()); + RenderingRegistry.registerBlockHandler(new RendererCTMFullbright()); + RenderingRegistry.registerBlockHandler(new RendererSimpleLayered()); - RenderingRegistry.registerBlockHandler(new BlockTexturedOreRenderer()); + RenderingRegistry.registerBlockHandler(new RendererMultiLayer()); RenderAutoChisel rac = new RenderAutoChisel(); RenderingRegistry.registerBlockHandler(rac);