assemblyline/src/main/java/assemblyline/client/render/RenderArmbot.java

96 lines
4.2 KiB
Java
Raw Normal View History

2022-10-26 19:42:44 +02:00
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;
2023-02-10 17:51:10 +01:00
public class RenderArmbot extends TileEntitySpecialRenderer {
2022-10-26 19:42:44 +02:00
public static final ModelArmbot MODEL = new ModelArmbot();
public static final String TEXTURE = "armbot.png";
@Override
2023-02-10 17:51:10 +01:00
public void
renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) {
2022-10-26 19:42:44 +02:00
if (tileEntity instanceof TileEntityArmbot) {
EntityClientPlayerMP player;
MovingObjectPosition objectPosition;
2023-02-10 17:51:10 +01:00
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
);
2022-10-26 19:42:44 +02:00
}
2023-02-10 17:51:10 +01:00
this.bindTexture(
new ResourceLocation("assemblyline", "textures/models/armbot.png")
);
2022-10-26 19:42:44 +02:00
GL11.glPushMatrix();
2023-02-10 17:51:10 +01:00
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
);
2022-10-26 19:42:44 +02:00
GL11.glPopMatrix();
2023-02-10 17:51:10 +01:00
Vector3 handPosition = ((TileEntityArmbot) tileEntity).getDeltaHandPosition();
2022-10-26 19:42:44 +02:00
handPosition.add(0.5);
handPosition.add(new Vector3(x, y, z));
2023-02-10 17:51:10 +01:00
RenderItem renderItem = (RenderItem
) RenderManager.instance.getEntityClassRenderObject(EntityItem.class);
2022-10-26 19:42:44 +02:00
TextureManager renderEngine = Minecraft.getMinecraft().renderEngine;
2023-02-10 17:51:10 +01:00
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
);
2022-10-26 19:42:44 +02:00
}
2023-02-10 17:51:10 +01:00
renderItem.doRender(
((TileEntityArmbot) tileEntity).renderEntityItem,
handPosition.x,
handPosition.y,
handPosition.z,
0.0f,
f
);
2022-10-26 19:42:44 +02:00
break;
}
}
}
}