diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index c27047eb..02f17b71 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -1,5 +1,16 @@ package com.cricketcraft.chisel; +import static com.cricketcraft.chisel.init.ChiselBlocks.andesite; +import static com.cricketcraft.chisel.init.ChiselBlocks.diorite; +import static com.cricketcraft.chisel.init.ChiselBlocks.granite; +import static com.cricketcraft.chisel.init.ChiselBlocks.jackolantern; +import static com.cricketcraft.chisel.init.ChiselBlocks.planks; +import static com.cricketcraft.chisel.init.ChiselBlocks.pumpkin; +import static com.cricketcraft.chisel.init.ChiselBlocks.stainedGlass; +import static com.cricketcraft.chisel.init.ChiselBlocks.stainedGlassPane; +import static com.cricketcraft.chisel.init.ChiselBlocks.torches; +import static com.cricketcraft.chisel.utils.General.sGNames; + import java.util.List; import net.minecraft.block.Block; @@ -20,7 +31,41 @@ import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.api.carving.CarvingUtils.SimpleCarvingGroup; import com.cricketcraft.chisel.api.carving.ICarvingVariation; import com.cricketcraft.chisel.api.carving.IVariationInfo; -import com.cricketcraft.chisel.block.*; +import com.cricketcraft.chisel.block.BlockAutoChisel; +import com.cricketcraft.chisel.block.BlockBeaconBase; +import com.cricketcraft.chisel.block.BlockCarvable; +import com.cricketcraft.chisel.block.BlockCarvableAntiBlock; +import com.cricketcraft.chisel.block.BlockCarvableBookshelf; +import com.cricketcraft.chisel.block.BlockCarvableCarpet; +import com.cricketcraft.chisel.block.BlockCarvableGlass; +import com.cricketcraft.chisel.block.BlockCarvableGlow; +import com.cricketcraft.chisel.block.BlockCarvableGlowstone; +import com.cricketcraft.chisel.block.BlockCarvableIce; +import com.cricketcraft.chisel.block.BlockCarvableIceStairs; +import com.cricketcraft.chisel.block.BlockCarvableLayered; +import com.cricketcraft.chisel.block.BlockCarvablePackedIce; +import com.cricketcraft.chisel.block.BlockCarvablePackedIceStairs; +import com.cricketcraft.chisel.block.BlockCarvablePane; +import com.cricketcraft.chisel.block.BlockCarvablePowered; +import com.cricketcraft.chisel.block.BlockCarvablePumpkin; +import com.cricketcraft.chisel.block.BlockCarvableSlab; +import com.cricketcraft.chisel.block.BlockCarvableStairs; +import com.cricketcraft.chisel.block.BlockCarvableTorch; +import com.cricketcraft.chisel.block.BlockCloud; +import com.cricketcraft.chisel.block.BlockConcrete; +import com.cricketcraft.chisel.block.BlockEldritch; +import com.cricketcraft.chisel.block.BlockGrimstone; +import com.cricketcraft.chisel.block.BlockHolystone; +import com.cricketcraft.chisel.block.BlockLavastone; +import com.cricketcraft.chisel.block.BlockLeaf; +import com.cricketcraft.chisel.block.BlockMultiLayer; +import com.cricketcraft.chisel.block.BlockPresent; +import com.cricketcraft.chisel.block.BlockRoadLine; +import com.cricketcraft.chisel.block.BlockSnakestone; +import com.cricketcraft.chisel.block.BlockSnakestoneObsidian; +import com.cricketcraft.chisel.block.BlockWaterstone; +import com.cricketcraft.chisel.block.CarvableStairsMaker; +import com.cricketcraft.chisel.block.IStairsCreator; import com.cricketcraft.chisel.carving.Carving; import com.cricketcraft.chisel.client.render.SubmapManagerAntiblock; import com.cricketcraft.chisel.client.render.SubmapManagerCarpetFloor; @@ -50,8 +95,6 @@ import com.google.common.collect.Lists; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.GameRegistry; -import static com.cricketcraft.chisel.init.ChiselBlocks.*; -import static com.cricketcraft.chisel.utils.General.sGNames; public enum Features { @@ -1133,7 +1176,7 @@ public enum Features { @Override void addBlocks() { - BlockCarvableIcePillar ice_pillar = (BlockCarvableIcePillar) new BlockCarvableIcePillar(Material.ice).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.5F).setLightOpacity(3) + BlockCarvableIce ice_pillar = (BlockCarvableIce) new BlockCarvableIce().setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.5F).setLightOpacity(3) .setStepSound(Block.soundTypeGlass); ice_pillar.carverHelper.addVariation("tile.icePillar.0.desc", 0, "icepillar/plainplain"); @@ -1579,7 +1622,7 @@ public enum Features { marble_pillar.carverHelper.addVariation("tile.marblePillarOld.14.desc", 14, "marblepillarold/a1-stonepillar-greekbottomgreek"); marble_pillar.carverHelper.addVariation("tile.marblePillarOld.15.desc", 15, "marblepillarold/a1-stonepillar-plainbottomgreek"); } else { - marble_pillar = (BlockCarvable) new BlockCarvablePillar(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10F) + marble_pillar = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10F) .setStepSound(Block.soundTypeStone); marble_pillar.carverHelper.addVariation("tile.marblePillar.0.desc", 0, "marblepillar/pillar"); @@ -1809,7 +1852,7 @@ public enum Features { @Override void addBlocks() { - BlockCarvablePackedIcePillar packedice_pillar = (BlockCarvablePackedIcePillar) new BlockCarvablePackedIcePillar(Material.ice).setCreativeTab(ChiselTabs.tabOtherChiselBlocks) + BlockCarvablePackedIce packedice_pillar = (BlockCarvablePackedIce) new BlockCarvablePackedIce().setCreativeTab(ChiselTabs.tabOtherChiselBlocks) .setHardness(0.5F).setLightOpacity(3).setStepSound(Block.soundTypeGlass); packedice_pillar.carverHelper.addVariation("tile.packedice_pillar.0.desc", 0, "icepillar/plainplain"); @@ -2709,12 +2752,12 @@ public enum Features { @Override void addBlocks() { - BlockCarvablePillar voidstonePillar = (BlockCarvablePillar) new BlockCarvablePillar(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setStepSound(Block.soundTypeStone); + BlockCarvable voidstonePillar = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setStepSound(Block.soundTypeStone); voidstonePillar.carverHelper.addVariation("tile.voidstonePillar.0.desc", 0, "voidstone/pillar"); voidstonePillar.carverHelper.registerAll(voidstonePillar, "voidstonePillar"); Carving.chisel.registerOre("voidstonePillar", "voidstonePillar"); - BlockCarvablePillar voidstonePillar2 = (BlockCarvablePillar) new BlockCarvablePillar(Material.rock).setStepSound(Block.soundTypeStone); + BlockCarvable voidstonePillar2 = (BlockCarvable) new BlockCarvable(Material.rock).setStepSound(Block.soundTypeStone); voidstonePillar2.carverHelper.addVariation("tile.voidstonePillar2.0.desc", 0, "voidstone/animated/pillar"); voidstonePillar2.carverHelper.registerAll(voidstonePillar2, "voidstonePillar2"); Carving.chisel.registerOre("voidstonePillar2", "voidstonePillar2"); diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableIcePillar.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableIcePillar.java deleted file mode 100644 index 65ac1340..00000000 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableIcePillar.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.cricketcraft.chisel.block; - -import java.util.ArrayList; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.stats.StatList; -import net.minecraft.world.EnumSkyBlock; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.event.ForgeEventFactory; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockCarvableIcePillar extends BlockCarvablePillar { - - public BlockCarvableIcePillar(Material m) { - super(m); - this.slipperiness = 0.98F; - this.setTickRandomly(true); - setStained(true); - } - - @Override - public boolean isOpaqueCube() { - return false; - } - - /** - * Returns true if the given side of this block type should be rendered, if the adjacent block is at the given coordinates. Args: blockAccess, x, y, z, side - */ - @SideOnly(Side.CLIENT) - public boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_) - { - Block block = p_149646_1_.getBlock(p_149646_2_, p_149646_3_, p_149646_4_); - return block == this ? false : super.shouldSideBeRendered(p_149646_1_, p_149646_2_, p_149646_3_, p_149646_4_, p_149646_5_); - } - - /** - * Called when the player destroys a block with an item that can harvest it. (i, j, k) are the coordinates of the block and l is the block's subtype/damage. - */ - public void harvestBlock(World p_149636_1_, EntityPlayer p_149636_2_, int p_149636_3_, int p_149636_4_, int p_149636_5_, int p_149636_6_) - { - p_149636_2_.addStat(StatList.mineBlockStatArray[Block.getIdFromBlock(this)], 1); - p_149636_2_.addExhaustion(0.025F); - - if (this.canSilkHarvest(p_149636_1_, p_149636_2_, p_149636_3_, p_149636_4_, p_149636_5_, p_149636_6_) && EnchantmentHelper.getSilkTouchModifier(p_149636_2_)) - { - ArrayList items = new ArrayList(); - ItemStack itemstack = this.createStackedBlock(p_149636_6_); - - if (itemstack != null) - items.add(itemstack); - - ForgeEventFactory.fireBlockHarvesting(items, p_149636_1_, this, p_149636_3_, p_149636_4_, p_149636_5_, p_149636_6_, 0, 1.0f, true, p_149636_2_); - for (ItemStack is : items) - this.dropBlockAsItem(p_149636_1_, p_149636_3_, p_149636_4_, p_149636_5_, is); - } - else - { - if (p_149636_1_.provider.isHellWorld) - { - p_149636_1_.setBlockToAir(p_149636_3_, p_149636_4_, p_149636_5_); - return; - } - - int i1 = EnchantmentHelper.getFortuneModifier(p_149636_2_); - harvesters.set(p_149636_2_); - this.dropBlockAsItem(p_149636_1_, p_149636_3_, p_149636_4_, p_149636_5_, p_149636_6_, i1); - harvesters.set(null); - Material material = p_149636_1_.getBlock(p_149636_3_, p_149636_4_ - 1, p_149636_5_).getMaterial(); - - if (material.blocksMovement() || material.isLiquid()) - { - p_149636_1_.setBlock(p_149636_3_, p_149636_4_, p_149636_5_, Blocks.flowing_water); - } - } - } - - /** - * Returns the quantity of items to drop on block destruction. - */ - public int quantityDropped(Random p_149745_1_) - { - return 0; - } - - /** - * Ticks the block if it's been scheduled - */ - public void updateTick(World p_149674_1_, int p_149674_2_, int p_149674_3_, int p_149674_4_, Random p_149674_5_) - { - if (p_149674_1_.getSavedLightValue(EnumSkyBlock.Block, p_149674_2_, p_149674_3_, p_149674_4_) > 11 - this.getLightOpacity()) - { - if (p_149674_1_.provider.isHellWorld) - { - p_149674_1_.setBlockToAir(p_149674_2_, p_149674_3_, p_149674_4_); - return; - } - - this.dropBlockAsItem(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_, p_149674_1_.getBlockMetadata(p_149674_2_, p_149674_3_, p_149674_4_), 0); - p_149674_1_.setBlock(p_149674_2_, p_149674_3_, p_149674_4_, Blocks.water); - } - } - - /** - * Returns the mobility information of the block, 0 = free, 1 = can't push but can move over, 2 = total immobility and stop pistons - */ - public int getMobilityFlag() - { - return 0; - } -} diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePackedIcePillar.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePackedIcePillar.java deleted file mode 100644 index f6546a4d..00000000 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePackedIcePillar.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.cricketcraft.chisel.block; - -import net.minecraft.block.material.Material; - -public class BlockCarvablePackedIcePillar extends BlockCarvablePillar { - - public BlockCarvablePackedIcePillar(Material m) { - super(m); - this.slipperiness = 0.98F; - } -} diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePillar.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePillar.java deleted file mode 100644 index 130ca9ce..00000000 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePillar.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.cricketcraft.chisel.block; - -import net.minecraft.block.material.Material; -import net.minecraft.util.IIcon; -import net.minecraft.world.IBlockAccess; - -import com.cricketcraft.chisel.api.carving.IVariationInfo; -import com.cricketcraft.chisel.client.render.RendererPillar; - -public class BlockCarvablePillar extends BlockCarvable { - - public IIcon sides[] = new IIcon[6]; - - public BlockCarvablePillar(Material m) { - super(m); - } - - @Override - public int getRenderType() { - return RendererPillar.id; - } - - @Override - public IIcon getIcon(int side, int metadata) { - return sides[side]; - } - - @Override - public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { - return sides[side]; - } - - public IIcon getCtmIcon(int index, int metadata) { - // Workaround to prevent crash with invalid meta - IVariationInfo var = null; - if (metadata <= carverHelper.infoList.size()) - var = carverHelper.infoList.get(metadata); - else - var = carverHelper.infoList.get(0); - return var.getSubmapManager().getIcon(0, metadata); - - // TODO fix pillars -// if (index >= 4) -// return var.iconTop; -// if (var.seamsCtmVert == null) -// return var.icon; -// return var.seamsCtmVert.getSubIcon(index % 2, index / 2); - } - -} diff --git a/src/main/java/com/cricketcraft/chisel/client/render/RendererPillar.java b/src/main/java/com/cricketcraft/chisel/client/render/RendererPillar.java deleted file mode 100644 index 836d926e..00000000 --- a/src/main/java/com/cricketcraft/chisel/client/render/RendererPillar.java +++ /dev/null @@ -1,166 +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.api.rendering.TextureType; -import com.cricketcraft.chisel.block.BlockCarvablePillar; -import com.cricketcraft.chisel.utils.Drawing; - -import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; -import cpw.mods.fml.client.registry.RenderingRegistry; - -public class RendererPillar implements ISimpleBlockRenderingHandler { - - public static int id; - - public RendererPillar() { - id = RenderingRegistry.getNextAvailableRenderId(); - } - - @Override - public void renderInventoryBlock(Block blck, int metadata, int modelID, RenderBlocks renderer) { - if (!(blck instanceof BlockCarvablePillar)) - return; - - BlockCarvablePillar block = (BlockCarvablePillar) blck; - - block.sides[0] = block.sides[1] = block.getCtmIcon(4, metadata); - block.sides[2] = block.sides[3] = block.sides[4] = block.sides[5] = block.getCtmIcon(0, metadata); - GL11.glTranslatef(-0.5F, -0.5F, -0.5F); - Drawing.drawBlock(block, metadata, renderer); - } - - boolean connected(IBlockAccess world, int x, int y, int z, Block block, int meta) { - return world.getBlock(x, y, z).equals(block) && world.getBlockMetadata(x, y, z) == meta; - - } - - // TODO this is a hardcoded mess...icon decisions should be left to the ISubmapManager, not here - @Override - public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block blck, int modelId, RenderBlocks renderer) { - if (!(blck instanceof BlockCarvablePillar)) - return false; - - BlockCarvablePillar block = (BlockCarvablePillar) blck; - - int metadata = world.getBlockMetadata(x, y, z); - - // Probably not the best way to handle this... - if (metadata >= block.carverHelper.infoList.size()) { - metadata = 0; - } else { - if (block.carverHelper.infoList.get(metadata).getType() != TextureType.CTMV) { - block.sides[0] = block.carverHelper.getIcon(0, metadata); - block.sides[1] = block.carverHelper.getIcon(1, metadata); - block.sides[2] = block.carverHelper.getIcon(2, metadata); - block.sides[3] = block.carverHelper.getIcon(3, metadata); - block.sides[4] = block.carverHelper.getIcon(4, metadata); - block.sides[5] = block.carverHelper.getIcon(5, metadata); - - return renderer.renderStandardBlock(block, x, y, z); - } - } - - boolean yp = connected(world, x, y + 1, z, block, metadata); - boolean yn = connected(world, x, y - 1, z, block, metadata); - - if (yp || yn) { - block.sides[0] = block.getCtmIcon(4, metadata); - block.sides[1] = block.getCtmIcon(4, metadata); - - if (yp && yn) - block.sides[2] = block.getCtmIcon(2, metadata); - else if (yp) - block.sides[2] = block.getCtmIcon(3, metadata); - else - block.sides[2] = block.getCtmIcon(1, metadata); - - block.sides[3] = block.sides[4] = block.sides[5] = block.sides[2]; - } else { - boolean xp = connected(world, x + 1, y, z, block, metadata); - boolean xn = connected(world, x - 1, y, z, block, metadata); - - if (xp && (connected(world, x + 1, y + 1, z, block, metadata) || connected(world, x + 1, y - 1, z, block, metadata))) - xp = false; - if (xn && (connected(world, x - 1, y + 1, z, block, metadata) || connected(world, x - 1, y - 1, z, block, metadata))) - xn = false; - - if (xp || xn) { - renderer.uvRotateEast = 2; - renderer.uvRotateWest = 1; - renderer.uvRotateTop = 1; - renderer.uvRotateBottom = 2; - - block.sides[4] = block.getCtmIcon(4, metadata); - block.sides[5] = block.getCtmIcon(4, metadata); - - if (xp && xn) - block.sides[0] = block.getCtmIcon(2, metadata); - else if (xp) - block.sides[0] = block.getCtmIcon(3, metadata); - else - block.sides[0] = block.getCtmIcon(1, metadata); - - block.sides[1] = block.sides[2] = block.sides[3] = block.sides[0]; - } else { - boolean zp = connected(world, x, y, z + 1, block, metadata); - boolean zn = connected(world, x, y, z - 1, block, metadata); - - if (zp && (connected(world, x, y + 1, z + 1, block, metadata) || connected(world, x, y - 1, z + 1, block, metadata))) - zp = false; - if (zp && (connected(world, x + 1, y, z + 1, block, metadata) || connected(world, x - 1, y, z + 1, block, metadata))) - zp = false; - if (zn && (connected(world, x, y + 1, z - 1, block, metadata) || connected(world, x, y - 1, z - 1, block, metadata))) - zn = false; - if (zn && (connected(world, x + 1, y, z - 1, block, metadata) || connected(world, x - 1, y, z - 1, block, metadata))) - zn = false; - - if (zp || zn) { - renderer.uvRotateSouth = 1; - renderer.uvRotateNorth = 2; - - block.sides[2] = block.getCtmIcon(4, metadata); - block.sides[3] = block.getCtmIcon(4, metadata); - - if (zp && zn) - block.sides[0] = block.getCtmIcon(2, metadata); - else if (zp) - block.sides[0] = block.getCtmIcon(1, metadata); - else - block.sides[0] = block.getCtmIcon(3, metadata); - - block.sides[1] = block.sides[4] = block.sides[5] = block.sides[0]; - } else { - block.sides[0] = block.sides[1] = block.getCtmIcon(4, metadata); - block.sides[2] = block.sides[3] = block.sides[4] = block.sides[5] = block.getCtmIcon(0, metadata); - } - } - } - - boolean flag = renderer.renderStandardBlock(block, x, y, z); - - renderer.uvRotateSouth = 0; - renderer.uvRotateEast = 0; - renderer.uvRotateWest = 0; - renderer.uvRotateNorth = 0; - renderer.uvRotateTop = 0; - renderer.uvRotateBottom = 0; - - return flag; - } - - @Override - public boolean shouldRender3DInInventory(int renderId) { - return true; - } - - @Override - public int getRenderId() { - return id; - } - -} diff --git a/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java b/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java index d25aa8d2..d3493eb5 100644 --- a/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java +++ b/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java @@ -40,9 +40,9 @@ public final class ChiselBlocks { public static final BlockCarvable stonebricksmooth = null; public static final BlockCarvablePane iron_bars = null; public static final BlockCarvableIce ice = null; - public static final BlockCarvableIcePillar ice_pillar = null; + public static final BlockCarvableIce ice_pillar = null; public static final BlockCarvablePackedIce packedice = null; - public static final BlockCarvablePackedIcePillar packedice_pillar = null; + public static final BlockCarvablePackedIce packedice_pillar = null; public static final BlockCarvable obsidian = null; public static final BlockCarvable obsidian2 = null; public static final BlockCarvablePowered redstone_block = null; @@ -71,8 +71,8 @@ public final class ChiselBlocks { public static final BlockCarvable voidstone = null; public static final BlockMultiLayer voidstone2 = null; public static final BlockCarvable voidstonerunic = null; - public static final BlockCarvablePillar voidstonePillar = null; - public static final BlockCarvablePillar voidstonePillar2 = null; + public static final BlockCarvable voidstonePillar = null; + public static final BlockCarvable voidstonePillar2 = null; public static final BlockSnakestone stone_snakestone = null; public static final BlockSnakestone sand_snakestone = null; public static final BlockSnakestoneObsidian obsidian_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 f77a7193..1e1c90d7 100644 --- a/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java +++ b/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java @@ -36,7 +36,6 @@ public class ClientProxy extends CommonProxy { 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 RendererLayeredGlow());