icbm/src/main/java/calclavia/lib/render/RenderTaggedTile.java

65 lines
2.4 KiB
Java

package calclavia.lib.render;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityClientPlayerMP;
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;
@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 && t instanceof ITagRender &&
this.getPlayer().getDistance((double)t.xCoord, (double)t.yCoord,
(double)t.zCoord) <=
(double)RendererLivingEntity.NAME_TAG_RANGE) {
HashMap tags = new HashMap();
float height = ((ITagRender)t).addInformation(tags, this.getPlayer());
EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
if (player.ridingEntity == null) {
MovingObjectPosition objectPosition = player.rayTrace(8.0D, 1.0F);
if (objectPosition != null) {
boolean isLooking = false;
for (int it = 0; (float)it < height; ++it) {
if (objectPosition.blockX == t.xCoord &&
objectPosition.blockY == t.yCoord + it &&
objectPosition.blockZ == t.zCoord) {
isLooking = true;
}
}
if (isLooking) {
Iterator var17 = tags.entrySet().iterator();
for (int i = 0; var17.hasNext(); ++i) {
Entry entry = (Entry)var17.next();
if (entry.getKey() != null) {
CalclaviaRenderHelper.renderFloatingText(
(String)entry.getKey(), (float)x + 0.5F,
(float)y + (float)i * 0.25F - 2.0F + height,
(float)z + 0.5F, ((Integer)entry.getValue()).intValue());
}
}
}
}
}
}
}
public EntityPlayer getPlayer() {
EntityLivingBase entity = this.field_147501_a.field_147551_g;
return entity instanceof EntityPlayer ? (EntityPlayer)entity : null;
}
}