Mekanism-tilera-Edition/common/calclavia/lib/render/RenderTaggedTile.java
Aidan C. Brady 53323279c7 MekanismInduction module - done!
Still need to configure the build
2013-11-16 10:21:37 -05:00

89 lines
2.3 KiB
Java

package calclavia.lib.render;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.entity.RendererLivingEntity;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MovingObjectPosition;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
/**
* @author Rseifert & Calclavia
*/
@SideOnly(Side.CLIENT)
public abstract class RenderTaggedTile extends TileEntitySpecialRenderer
{
@Override
public void renderTileEntityAt(TileEntity t, double x, double y, double z, float f)
{
if (t != null)
{
if (t instanceof ITagRender && this.getPlayer().getDistance(t.xCoord, t.yCoord, t.zCoord) <= RendererLivingEntity.NAME_TAG_RANGE)
{
HashMap<String, Integer> tags = new HashMap<String, Integer>();
float height = ((ITagRender) t).addInformation(tags, this.getPlayer());
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
if (player.ridingEntity == null)
{
MovingObjectPosition objectPosition = player.rayTrace(8, 1);
if (objectPosition != null)
{
boolean isLooking = false;
for (int h = 0; h < height; h++)
{
if (objectPosition.blockX == t.xCoord && objectPosition.blockY == t.yCoord + h && objectPosition.blockZ == t.zCoord)
{
isLooking = true;
}
}
if (isLooking)
{
Iterator<Entry<String, Integer>> it = tags.entrySet().iterator();
int i = 0;
while (it.hasNext())
{
Entry<String, Integer> entry = it.next();
if (entry.getKey() != null)
{
CalclaviaRenderHelper.renderFloatingText(entry.getKey(), (float) x + 0.5f, ((float) y + (i * 0.25f)) - 2f + height, (float) z + 0.5f, entry.getValue());
}
i++;
}
}
}
}
}
}
}
/**
* gets the player linked with the renderer
*/
public EntityPlayer getPlayer()
{
EntityLivingBase entity = this.tileEntityRenderer.entityLivingPlayer;
if (entity instanceof EntityPlayer)
{
return (EntityPlayer) entity;
}
return null;
}
}