package com.carpentersblocks.renderer; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraftforge.common.util.ForgeDirection; import com.carpentersblocks.block.BlockCarpentersDaylightSensor; import com.carpentersblocks.data.DaylightSensor; import com.carpentersblocks.util.registry.IconRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class BlockHandlerCarpentersDaylightSensor extends BlockHandlerBase { private static ItemStack lapis = new ItemStack(Blocks.lapis_block); private static ItemStack redstone = new ItemStack(Blocks.redstone_block); @Override public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderBlocks) { double yOffset = 0.375D; /* Glass inset */ renderBlocks.setOverrideBlockTexture(renderBlocks.getIconSafe(IconRegistry.icon_daylight_sensor_glass_top)); renderBlocks.setRenderBounds(0.0625D, 0.1875D + yOffset, 0.0625D, 0.9375D, 0.25D + yOffset, 0.9375D); super.renderInventoryBlock(block, metadata, modelID, renderBlocks); renderBlocks.clearOverrideBlockTexture(); /* Lapis inset */ renderBlocks.setRenderBounds(0.125D, 0.0625D + yOffset, 0.125D, 0.875D, 0.1875D + yOffset, 0.875D); super.renderInventoryBlock(Blocks.lapis_block, metadata, modelID, renderBlocks); /* Redstone inset */ renderBlocks.setRenderBounds(0.0625D, 0.0625D + yOffset, 0.0625D, 0.125D, 0.1875D + yOffset, 0.9375D); super.renderInventoryBlock(Blocks.redstone_block, metadata, modelID, renderBlocks); renderBlocks.setRenderBounds(0.875D, 0.0625D + yOffset, 0.0625D, 0.9375D, 0.1875D + yOffset, 0.9375D); super.renderInventoryBlock(Blocks.redstone_block, metadata, modelID, renderBlocks); renderBlocks.setRenderBounds(0.0625D, 0.0625D + yOffset, 0.0625D, 0.9375D, 0.1875D + yOffset, 0.125D); super.renderInventoryBlock(Blocks.redstone_block, metadata, modelID, renderBlocks); renderBlocks.setRenderBounds(0.0625D, 0.0625D + yOffset, 0.875D, 0.9375D, 0.1875D + yOffset, 0.9375D); super.renderInventoryBlock(Blocks.redstone_block, metadata, modelID, renderBlocks); /* Bottom */ renderBlocks.setRenderBounds(0.0625D, 0.0D + yOffset, 0.0625D, 0.9375D, 0.0625D + yOffset, 0.9375D); super.renderInventoryBlock(block, metadata, modelID, renderBlocks); renderBlocks.setRenderBounds(0.0D, 0.0D + yOffset, 0.0D, 0.0625D, 0.25D + yOffset, 1.0D); super.renderInventoryBlock(block, metadata, modelID, renderBlocks); renderBlocks.setRenderBounds(0.9375D, 0.0D + yOffset, 0.0D, 1.0D, 0.25D + yOffset, 1.0D); super.renderInventoryBlock(block, metadata, modelID, renderBlocks); renderBlocks.setRenderBounds(0.0625D, 0.0D + yOffset, 0.0D, 0.9375D, 0.25D + yOffset, 0.0625D); super.renderInventoryBlock(block, metadata, modelID, renderBlocks); renderBlocks.setRenderBounds(0.0625D, 0.0D + yOffset, 0.9375D, 0.9375D, 0.25D + yOffset, 1.0D); super.renderInventoryBlock(block, metadata, modelID, renderBlocks); } @Override /** * Renders block */ protected void renderCarpentersBlock(int x, int y, int z) { renderBlocks.renderAllFaces = true; suppressDyeColor = true; suppressOverlay = true; suppressChiselDesign = true; DaylightSensor data = new DaylightSensor(); ((BlockCarpentersDaylightSensor)srcBlock).setBlockBoundsBasedOnState(renderBlocks.blockAccess, x, y, z); ForgeDirection dir = data.getDirection(TE).getOpposite(); /* Render glass pane */ renderPane(IconRegistry.icon_daylight_sensor_glass_top, x, y, z, dir.getOpposite(), true, false); /* Render lapis inlay */ renderBlockWithRotation(lapis, x, y, z, 0.125D, 0.125D, 0.8125D, 0.875D, 0.875D, 0.9375D, dir); /* Render bordering redstone inlay */ boolean isActive = data.isActive(TE); if (isActive) { disableAO = true; lightingHelper.setBrightnessOverride(lightingHelper.MAX_BRIGHTNESS); } else { lightingHelper.setLightnessOverride(0.5F); } renderBlockWithRotation(redstone, x, y, z, 0.0625D, 0.0625D, 0.8125D, 0.125D, 0.9375D, 0.9375D, dir); renderBlockWithRotation(redstone, x, y, z, 0.125D, 0.0625D, 0.8125D, 0.875D, 0.125D, 0.9375D, dir); renderBlockWithRotation(redstone, x, y, z, 0.125D, 0.875D, 0.8125D, 0.875D, 0.9375D, 0.9375D, dir); renderBlockWithRotation(redstone, x, y, z, 0.875D, 0.0625D, 0.8125D, 0.9375D, 0.9375D, 0.9375D, dir); lightingHelper.clearLightnessOverride(); lightingHelper.clearBrightnessOverride(); disableAO = false; suppressDyeColor = false; suppressOverlay = false; suppressChiselDesign = false; /* Render coverBlock walls and bottom */ ItemStack itemStack = getCoverForRendering(); renderBlockWithRotation(itemStack, x, y, z, 0.0625D, 0.0625D, 0.9375D, 0.9375D, 0.9375D, 1.0D, dir); // Base renderBlockWithRotation(itemStack, x, y, z, 0.0D, 0.0D, 0.75D, 0.0625D, 1.0D, 1.0D, dir); renderBlockWithRotation(itemStack, x, y, z, 0.0625D, 0.0D, 0.75D, 0.9375D, 0.0625D, 1.0D, dir); renderBlockWithRotation(itemStack, x, y, z, 0.0625D, 0.9375D, 0.75D, 0.9375D, 1.0D, 1.0D, dir); renderBlockWithRotation(itemStack, x, y, z, 0.9375D, 0.0D, 0.75D, 1.0D, 1.0D, 1.0D, dir); renderBlocks.renderAllFaces = false; } }