59 lines
3.4 KiB
Java
59 lines
3.4 KiB
Java
package assemblyline.client.render;
|
|
|
|
import assemblyline.client.model.ModelArmbot;
|
|
import assemblyline.common.machine.armbot.TileEntityArmbot;
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.client.entity.EntityClientPlayerMP;
|
|
import net.minecraft.client.renderer.entity.RenderItem;
|
|
import net.minecraft.client.renderer.entity.RenderManager;
|
|
import net.minecraft.client.renderer.texture.TextureManager;
|
|
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
|
import net.minecraft.entity.item.EntityItem;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.tileentity.TileEntity;
|
|
import net.minecraft.util.MovingObjectPosition;
|
|
import net.minecraft.util.ResourceLocation;
|
|
|
|
import org.lwjgl.opengl.GL11;
|
|
import universalelectricity.core.vector.Vector3;
|
|
|
|
public class RenderArmbot
|
|
extends TileEntitySpecialRenderer {
|
|
public static final ModelArmbot MODEL = new ModelArmbot();
|
|
public static final String TEXTURE = "armbot.png";
|
|
|
|
@Override
|
|
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) {
|
|
if (tileEntity instanceof TileEntityArmbot) {
|
|
EntityClientPlayerMP player;
|
|
MovingObjectPosition objectPosition;
|
|
String cmdText = ((TileEntityArmbot)tileEntity).getCommandDisplayText();
|
|
if (!(cmdText == null || cmdText.isEmpty() || (objectPosition = (player = Minecraft.getMinecraft().thePlayer).rayTrace(8.0, 1.0f)) == null || objectPosition.blockX != tileEntity.xCoord || objectPosition.blockY != tileEntity.yCoord && objectPosition.blockY != tileEntity.yCoord + 1 || objectPosition.blockZ != tileEntity.zCoord)) {
|
|
RenderHelper.renderFloatingText(cmdText, (float)x + 0.5f, (float)y + 0.25f, (float)z + 0.5f, 0xFFFFFF);
|
|
}
|
|
this.bindTexture(new ResourceLocation("assemblyline", "textures/models/armbot.png"));
|
|
GL11.glPushMatrix();
|
|
GL11.glTranslatef((float)((float)x + 0.5f), (float)((float)y + 1.5f), (float)((float)z + 0.5f));
|
|
GL11.glScalef((float)1.0f, (float)-1.0f, (float)-1.0f);
|
|
MODEL.render(0.0625f, ((TileEntityArmbot)tileEntity).renderYaw, ((TileEntityArmbot)tileEntity).renderPitch);
|
|
GL11.glPopMatrix();
|
|
Vector3 handPosition = ((TileEntityArmbot)tileEntity).getDeltaHandPosition();
|
|
handPosition.add(0.5);
|
|
handPosition.add(new Vector3(x, y, z));
|
|
RenderItem renderItem = (RenderItem)RenderManager.instance.getEntityClassRenderObject(EntityItem.class);
|
|
TextureManager renderEngine = Minecraft.getMinecraft().renderEngine;
|
|
for (ItemStack itemStack : ((TileEntityArmbot)tileEntity).getGrabbedItems()) {
|
|
if (itemStack == null) continue;
|
|
if (((TileEntityArmbot)tileEntity).renderEntityItem == null) {
|
|
((TileEntityArmbot)tileEntity).renderEntityItem = new EntityItem(tileEntity.getWorldObj(), 0.0, 0.0, 0.0, itemStack);
|
|
} else if (!itemStack.isItemEqual(((TileEntityArmbot)tileEntity).renderEntityItem.getEntityItem())) {
|
|
((TileEntityArmbot)tileEntity).renderEntityItem = new EntityItem(tileEntity.getWorldObj(), 0.0, 0.0, 0.0, itemStack);
|
|
}
|
|
renderItem.doRender(((TileEntityArmbot)tileEntity).renderEntityItem, handPosition.x, handPosition.y, handPosition.z, 0.0f, f);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|