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);
}
}
}