diff --git a/src/main/java/com/cricketcraft/chisel/api/carving/CarvableHelper.java b/src/main/java/com/cricketcraft/chisel/api/carving/CarvableHelper.java index 56614217..e316ff4a 100644 --- a/src/main/java/com/cricketcraft/chisel/api/carving/CarvableHelper.java +++ b/src/main/java/com/cricketcraft/chisel/api/carving/CarvableHelper.java @@ -19,10 +19,13 @@ import com.cricketcraft.chisel.api.ChiselAPIProps; import com.cricketcraft.chisel.api.FMPIMC; import com.cricketcraft.chisel.api.rendering.TextureType; +import codechicken.microblock.MicroMaterialRegistry; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import team.chisel.block.BlockCarvableGlowie; +import team.chisel.client.render.FullBrightMicroMaterial; import team.chisel.ctmlib.ISubmapManager; public class CarvableHelper { @@ -187,11 +190,21 @@ public class CarvableHelper { Block block = info.getVariation() .getBlock(); - if (block.renderAsNormalBlock() || block.isOpaqueCube() || block.isNormalCube()) { - FMPIMC.registerFMP( - block, - info.getVariation() - .getBlockMeta()); + if (block instanceof BlockCarvableGlowie) { + int meta = info.getVariation() + .getBlockMeta(); + + MicroMaterialRegistry.registerMaterial( + new FullBrightMicroMaterial(block, meta), + block.getUnlocalizedName() + ((meta > 0) ? ("_" + meta) : "")); + + } else { + if (block.renderAsNormalBlock() || block.isOpaqueCube() || block.isNormalCube()) { + FMPIMC.registerFMP( + block, + info.getVariation() + .getBlockMeta()); + } } if (forbidChiseling) return; diff --git a/src/main/java/team/chisel/Features.java b/src/main/java/team/chisel/Features.java index 349bd726..d91eee28 100644 --- a/src/main/java/team/chisel/Features.java +++ b/src/main/java/team/chisel/Features.java @@ -181,7 +181,7 @@ public enum Features { @Override void addBlocks() { - BlockCarvable antiBlock = (BlockCarvable) new BlockCarvableAntiBlock() + BlockCarvable antiBlock = (BlockCarvable) new BlockCarvableGlowie(Material.rock) .setCreativeTab(ChiselTabs.tabOtherChiselBlocks); if (!Configurations.allowChiselCrossColors) { diff --git a/src/main/java/team/chisel/client/render/FullBrightLighting.java b/src/main/java/team/chisel/client/render/FullBrightLighting.java new file mode 100644 index 00000000..d9e05fcb --- /dev/null +++ b/src/main/java/team/chisel/client/render/FullBrightLighting.java @@ -0,0 +1,35 @@ +package team.chisel.client.render; + +import codechicken.lib.render.CCRenderState; + +public class FullBrightLighting implements CCRenderState.IVertexOperation { + + public static FullBrightLighting instance = new FullBrightLighting(); + public int id; + + public boolean load() { + if (!CCRenderState.computeLighting) { + return false; + } + CCRenderState.pipeline.addDependency(CCRenderState.colourAttrib); + CCRenderState.pipeline.addDependency(CCRenderState.lightCoordAttrib); + return true; + } + + public void operate() { + CCRenderState.setBrightness(FULL_BRIGHT_BLOCK_BRIGHTNESS); + } + + public int operationID() { + return id; + } + + { + id = CCRenderState.registerOperation(); + } + + // magic number from 'RenderBlocksCTMFullbright' + // this is the brightness of the neonite, anti, glotek blocks + // so we use it for custom microblock lighting + private final static int FULL_BRIGHT_BLOCK_BRIGHTNESS = 0xF000F0; +} diff --git a/src/main/java/team/chisel/client/render/FullBrightMicroMaterial.java b/src/main/java/team/chisel/client/render/FullBrightMicroMaterial.java new file mode 100644 index 00000000..a496e5c7 --- /dev/null +++ b/src/main/java/team/chisel/client/render/FullBrightMicroMaterial.java @@ -0,0 +1,33 @@ +package team.chisel.client.render; + +import net.minecraft.block.Block; + +import codechicken.lib.render.CCRenderState; +import codechicken.lib.render.ColourMultiplier; +import codechicken.lib.vec.Cuboid6; +import codechicken.lib.vec.Vector3; +import codechicken.microblock.BlockMicroMaterial; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class FullBrightMicroMaterial extends BlockMicroMaterial { + + public FullBrightMicroMaterial(final Block block, final int meta) { + super(block, meta); + } + + @SideOnly(Side.CLIENT) + public void renderMicroFace(final Vector3 pos, final int pass, final Cuboid6 bounds) { + CCRenderState.pipeline.builder() + .add((CCRenderState.IVertexOperation) pos.translation()) + .add((CCRenderState.IVertexOperation) this.icont()) + .add((CCRenderState.IVertexOperation) ColourMultiplier.instance(FULL_BRIGHT_COLOR_MULTIPLIER)) + .add((CCRenderState.IVertexOperation) FullBrightLighting.instance) + .render(); + } + + // magic number from 'RenderBlocksCTMFullbright' + // this is what makes the neonite, anti, glotek blocks burn bright as my ass does + // so we use it for custom microblock render + private final static int FULL_BRIGHT_COLOR_MULTIPLIER = 0xFFFFFFFF; +}