assemblyline/src/main/java/assemblyline/client/render/RenderArmbot.java
2022-10-26 19:42:44 +02:00

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