package com.jaquadro.minecraft.gardenstuff.integration.lantern; import com.jaquadro.minecraft.gardenapi.api.component.IRedstoneSource; import com.jaquadro.minecraft.gardenapi.api.component.StandardLanternSource; import com.jaquadro.minecraft.gardencore.util.RenderHelper; import com.jaquadro.minecraft.gardenstuff.block.tile.TileEntityLantern; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.world.World; import net.minecraftforge.client.IItemRenderer; import java.util.Random; public class VanillaLanternSource { public static class TorchLanternSource extends StandardLanternSource { public TorchLanternSource () { super(new LanternSourceInfo("torch", Item.getItemFromBlock(Blocks.torch), Blocks.torch.getLightValue())); } @Override @SideOnly(Side.CLIENT) public void render (RenderBlocks renderer, int x, int y, int z, int meta, int pass) { renderer.renderBlockAllFaces(Blocks.torch, x, y, z); } @Override @SideOnly(Side.CLIENT) public void renderItem (RenderBlocks renderer, IItemRenderer.ItemRenderType renderType, int meta) { RenderHelper renderHelper = RenderHelper.instance; renderHelper.setRenderBounds(0, 0, 0.4375, 1, 1, 0.5625); renderHelper.renderFace(RenderHelper.ZNEG, null, Blocks.torch, Blocks.torch.getIcon(2, 0), meta); renderHelper.renderFace(RenderHelper.ZPOS, null, Blocks.torch, Blocks.torch.getIcon(3, 0), meta); renderHelper.setRenderBounds(0.4375, 0, 0, 0.5625, 1, 1); renderHelper.renderFace(RenderHelper.XNEG, null, Blocks.torch, Blocks.torch.getIcon(4, 0), meta); renderHelper.renderFace(RenderHelper.XPOS, null, Blocks.torch, Blocks.torch.getIcon(5, 0), meta); renderHelper.setRenderBounds(0.4375, 0, 0.4375, 0.5625, 0.625, 0.5625); renderHelper.renderFace(RenderHelper.YPOS, null, Blocks.torch, Blocks.torch.getIcon(1, 0), meta); } @Override @SideOnly(Side.CLIENT) public void renderParticle (World world, int x, int y, int z, Random rand, int meta) { double px = x + 0.5F; double py = y + 0.7F; double pz = z + 0.5F; TileEntityLantern tile = (TileEntityLantern)world.getTileEntity(x, y, z); if (tile == null || !tile.hasGlass()) world.spawnParticle("smoke", px, py, pz, 0.0D, 0.0D, 0.0D); world.spawnParticle("flame", px, py, pz, 0.0D, 0.0D, 0.0D); } } public static class RedstoneTorchSource extends StandardLanternSource implements IRedstoneSource { public RedstoneTorchSource () { super(new LanternSourceInfo("redstoneTorch", Item.getItemFromBlock(Blocks.redstone_torch), Blocks.redstone_torch.getLightValue())); } @Override @SideOnly(Side.CLIENT) public void render (RenderBlocks renderer, int x, int y, int z, int meta, int pass) { renderer.renderBlockAllFaces(Blocks.redstone_torch, x, y, z); } @Override @SideOnly(Side.CLIENT) public void renderItem (RenderBlocks renderer, IItemRenderer.ItemRenderType renderType, int meta) { RenderHelper renderHelper = RenderHelper.instance; renderHelper.setRenderBounds(0, 0, 0.4375, 1, 1, 0.5625); renderHelper.renderFace(RenderHelper.ZNEG, null, Blocks.redstone_torch, Blocks.redstone_torch.getIcon(2, 0), meta); renderHelper.renderFace(RenderHelper.ZPOS, null, Blocks.redstone_torch, Blocks.redstone_torch.getIcon(3, 0), meta); renderHelper.setRenderBounds(0.4375, 0, 0, 0.5625, 1, 1); renderHelper.renderFace(RenderHelper.XNEG, null, Blocks.redstone_torch, Blocks.redstone_torch.getIcon(4, 0), meta); renderHelper.renderFace(RenderHelper.XPOS, null, Blocks.redstone_torch, Blocks.redstone_torch.getIcon(5, 0), meta); renderHelper.setRenderBounds(0.4375, 0, 0.4375, 0.5625, 0.625, 0.5625); renderHelper.renderFace(RenderHelper.YPOS, null, Blocks.redstone_torch, Blocks.redstone_torch.getIcon(1, 0), meta); } @Override @SideOnly(Side.CLIENT) public void renderParticle (World world, int x, int y, int z, Random rand, int meta) { double px = x + .5f + (rand.nextFloat() - 0.5F) * 0.2D; double py = y + .6f + (rand.nextFloat() - 0.5F) * 0.2D + 0.1F; double pz = z + .5f + (rand.nextFloat() - 0.5F) * 0.2D; world.spawnParticle("reddust", px, py, pz, 0.0D, 0.0D, 0.0D); } @Override public int strongPowerValue (int meta) { return 15; } @Override public int weakPowerValue (int meta) { return 15; } } public static class GlowstoneSource extends StandardLanternSource { public GlowstoneSource () { super(new LanternSourceInfo("glowstone", Items.glowstone_dust, Blocks.glowstone.getLightValue())); } @Override @SideOnly(Side.CLIENT) public void render (RenderBlocks renderer, int x, int y, int z, int meta, int pass) { renderer.setRenderBounds(.3, 0, .3, .7, .4, .7); renderer.renderStandardBlock(Blocks.glowstone, x, y, z); } @Override @SideOnly(Side.CLIENT) public void renderItem (RenderBlocks renderer, IItemRenderer.ItemRenderType renderType, int meta) { RenderHelper.instance.setRenderBounds(.3, 0, .3, .7, .4, .7); RenderHelper.instance.renderBlock(null, Blocks.glowstone, 0); } } }