package eiteam.esteemedinnovation.transport.item;
import eiteam.esteemedinnovation.commons.util.RenderUtility;
import eiteam.esteemedinnovation.commons.EsteemedInnovation;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
public class TileEntityItemMortarRenderer extends TileEntitySpecialRenderer<TileEntityItemMortar> {
private static final ResourceLocation CANNON1_RL = new ResourceLocation(EsteemedInnovation.MOD_ID, "block/item_mortar_cannon1");
private static final ResourceLocation CANNON2_RL = new ResourceLocation(EsteemedInnovation.MOD_ID, "block/item_mortar_cannon2");
private static final ResourceLocation ELSE_RL = new ResourceLocation(EsteemedInnovation.MOD_ID, "block/item_mortar_else");
@Override
public void renderTileEntityAt(TileEntityItemMortar mortar, double x, double y, double z, float partialTicks, int destroyStage) {
BlockPos pos = mortar.getPos();
int zTile = pos.getZ();
int xTile = pos.getX();
int zTarget = mortar.zTarget;
int xTarget = mortar.xTarget;
int fireTicks = mortar.fireTicks;
GlStateManager.pushMatrix();
GlStateManager.enableRescaleNormal();
GlStateManager.translate(x, y, z);
bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE);
GlStateManager.translate(0.5, 0.5, 0.5);
if (zTarget == zTile) {
GlStateManager.rotate(270F, 0, 1, 0);
} else {
GlStateManager.rotate((float) Math.toDegrees(StrictMath.atan2(xTarget - xTile, zTarget - zTile)), 0, 1, 0);
}
GlStateManager.translate(-0.5, -0.5, -0.5);
RenderUtility.renderModel(Tessellator.getInstance().getBuffer(), ELSE_RL);
Tessellator.getInstance().draw();
GlStateManager.translate(0.5, 0.5, 0.5);
GlStateManager.rotate(2F, 1, 0, 0);
GlStateManager.translate(-0.5, -0.5, -0.5);
if (fireTicks > 60 && fireTicks <= 65) {
GlStateManager.translate(0, -0.05F * StrictMath.sin(Math.PI * ((fireTicks - 60) / 10.0F)), 0);
} else if (fireTicks > 65 && fireTicks < 80) {
GlStateManager.translate(0, -0.05F * (1 - StrictMath.sin(Math.PI * ((fireTicks - 65) / 30.0F))), 0);
}
RenderUtility.renderModel(Tessellator.getInstance().getBuffer(), CANNON1_RL);
Tessellator.getInstance().draw();
GlStateManager.translate(0, 1, 0);
if (fireTicks > 60 && fireTicks <= 65) {
GlStateManager.translate(0, -0.15F * StrictMath.sin(Math.PI * ((fireTicks - 60) / 10.0F)), 0);
} else if (fireTicks > 65 && fireTicks < 80) {
GlStateManager.translate(0, -0.15F * (1 - StrictMath.sin(Math.PI * ((fireTicks - 65) / 30.0F))), 0);
}
RenderUtility.renderModel(Tessellator.getInstance().getBuffer(), CANNON2_RL);
Tessellator.getInstance().draw();
GlStateManager.popMatrix();
GlStateManager.rotate(0, 180, 0, 0);
}
}