package micdoodle8.mods.galacticraft.core.client.render.entities.layer;
import micdoodle8.mods.galacticraft.core.Constants;
import micdoodle8.mods.galacticraft.core.client.model.ModelPlayerGC;
import micdoodle8.mods.galacticraft.core.wrappers.PlayerGearData;
import net.minecraft.client.entity.AbstractClientPlayer;
import net.minecraft.client.model.ModelPlayer;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.entity.RenderPlayer;
import net.minecraft.client.renderer.entity.layers.LayerRenderer;
import net.minecraftforge.fml.client.FMLClientHandler;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class LayerOxygenTanks implements LayerRenderer<AbstractClientPlayer>
{
private final RenderPlayer playerRenderer;
public ModelRenderer[] greenOxygenTanks = new ModelRenderer[2];
public ModelRenderer[] orangeOxygenTanks = new ModelRenderer[2];
public ModelRenderer[] redOxygenTanks = new ModelRenderer[2];
public LayerOxygenTanks(RenderPlayer playerRendererIn)
{
this.playerRenderer = playerRendererIn;
float scaleFactor = 0.0F;
ModelPlayer modelPlayer = playerRendererIn.getMainModel();
this.greenOxygenTanks[0] = new ModelRenderer(modelPlayer, 4, 0).setTextureSize(128, 64);
this.greenOxygenTanks[0].addBox(-1.5F, 0F, -1.5F, 3, 7, 3, scaleFactor);
this.greenOxygenTanks[0].setRotationPoint(2F, 2F, 3.8F);
this.greenOxygenTanks[0].mirror = true;
this.greenOxygenTanks[1] = new ModelRenderer(modelPlayer, 4, 0).setTextureSize(128, 64);
this.greenOxygenTanks[1].addBox(-1.5F, 0F, -1.5F, 3, 7, 3, scaleFactor);
this.greenOxygenTanks[1].setRotationPoint(-2F, 2F, 3.8F);
this.greenOxygenTanks[1].mirror = true;
this.orangeOxygenTanks[0] = new ModelRenderer(modelPlayer, 16, 0).setTextureSize(128, 64);
this.orangeOxygenTanks[0].addBox(-1.5F, 0F, -1.5F, 3, 7, 3, scaleFactor);
this.orangeOxygenTanks[0].setRotationPoint(2F, 2F, 3.8F);
this.orangeOxygenTanks[0].mirror = true;
this.orangeOxygenTanks[1] = new ModelRenderer(modelPlayer, 16, 0).setTextureSize(128, 64);
this.orangeOxygenTanks[1].addBox(-1.5F, 0F, -1.5F, 3, 7, 3, scaleFactor);
this.orangeOxygenTanks[1].setRotationPoint(-2F, 2F, 3.8F);
this.orangeOxygenTanks[1].mirror = true;
this.redOxygenTanks[0] = new ModelRenderer(modelPlayer, 28, 0).setTextureSize(128, 64);
this.redOxygenTanks[0].addBox(-1.5F, 0F, -1.5F, 3, 7, 3, scaleFactor);
this.redOxygenTanks[0].setRotationPoint(2F, 2F, 3.8F);
this.redOxygenTanks[0].mirror = true;
this.redOxygenTanks[1] = new ModelRenderer(modelPlayer, 28, 0).setTextureSize(128, 64);
this.redOxygenTanks[1].addBox(-1.5F, 0F, -1.5F, 3, 7, 3, scaleFactor);
this.redOxygenTanks[1].setRotationPoint(-2F, 2F, 3.8F);
this.redOxygenTanks[1].mirror = true;
}
@Override
public void doRenderLayer(AbstractClientPlayer player, float f5, float f6, float partialTicks, float f8, float f2, float f7, float scale)
{
if (!player.isInvisible())
{
PlayerGearData gearData = ModelPlayerGC.getGearData(player);
if (gearData != null)
{
boolean wearingLeftTankGreen = gearData.getLeftTank() == Constants.GEAR_ID_OXYGEN_TANK_LIGHT;
boolean wearingLeftTankOrange = gearData.getLeftTank() == Constants.GEAR_ID_OXYGEN_TANK_MEDIUM;
boolean wearingLeftTankRed = gearData.getLeftTank() == Constants.GEAR_ID_OXYGEN_TANK_HEAVY || gearData.getRightTank() == Constants.GEAR_ID_OXYGEN_TANK_INFINITE;
boolean wearingRightTankGreen = gearData.getRightTank() == Constants.GEAR_ID_OXYGEN_TANK_LIGHT;
boolean wearingRightTankOrange = gearData.getRightTank() == Constants.GEAR_ID_OXYGEN_TANK_MEDIUM;
boolean wearingRightTankRed = gearData.getRightTank() == Constants.GEAR_ID_OXYGEN_TANK_HEAVY || gearData.getRightTank() == Constants.GEAR_ID_OXYGEN_TANK_INFINITE;
FMLClientHandler.instance().getClient().renderEngine.bindTexture(ModelPlayerGC.playerTexture);
ModelPlayer.copyModelAngles(this.playerRenderer.getMainModel().bipedBody, this.greenOxygenTanks[0]);
ModelPlayer.copyModelAngles(this.playerRenderer.getMainModel().bipedBody, this.greenOxygenTanks[1]);
ModelPlayer.copyModelAngles(this.playerRenderer.getMainModel().bipedBody, this.orangeOxygenTanks[0]);
ModelPlayer.copyModelAngles(this.playerRenderer.getMainModel().bipedBody, this.orangeOxygenTanks[1]);
ModelPlayer.copyModelAngles(this.playerRenderer.getMainModel().bipedBody, this.redOxygenTanks[0]);
ModelPlayer.copyModelAngles(this.playerRenderer.getMainModel().bipedBody, this.redOxygenTanks[1]);
if (playerRenderer.getMainModel().isSneak)
{
this.greenOxygenTanks[0].rotationPointY = 2.0F;
this.greenOxygenTanks[1].rotationPointY = 2.0F;
this.greenOxygenTanks[0].rotationPointZ = 1.6F;
this.greenOxygenTanks[1].rotationPointZ = 1.6F;
this.orangeOxygenTanks[0].rotationPointY = 2.0F;
this.orangeOxygenTanks[1].rotationPointY = 2.0F;
this.orangeOxygenTanks[0].rotationPointZ = 1.6F;
this.orangeOxygenTanks[1].rotationPointZ = 1.6F;
this.redOxygenTanks[0].rotationPointY = 2.0F;
this.redOxygenTanks[1].rotationPointY = 2.0F;
this.redOxygenTanks[0].rotationPointZ = 1.6F;
this.redOxygenTanks[1].rotationPointZ = 1.6F;
}
else
{
this.greenOxygenTanks[0].rotationPointY = 0.5F;
this.greenOxygenTanks[1].rotationPointY = 0.5F;
this.greenOxygenTanks[0].rotationPointZ = 0.5F;
this.greenOxygenTanks[1].rotationPointZ = 0.5F;
this.orangeOxygenTanks[0].rotationPointY = 0.5F;
this.orangeOxygenTanks[1].rotationPointY = 0.5F;
this.orangeOxygenTanks[0].rotationPointZ = 0.5F;
this.orangeOxygenTanks[1].rotationPointZ = 0.5F;
this.redOxygenTanks[0].rotationPointY = 0.5F;
this.redOxygenTanks[1].rotationPointY = 0.5F;
this.redOxygenTanks[0].rotationPointZ = 0.5F;
this.redOxygenTanks[1].rotationPointZ = 0.5F;
}
for (int i = 0; i < 2; ++i)
{
GlStateManager.pushMatrix();
GlStateManager.translate(0.175F, 0.0F, 0.0F);
GlStateManager.translate(0.0F, 0.2F, 0.0F);
GlStateManager.translate(0.0F, 0.0F, 0.2F);
if (wearingLeftTankRed)
{
this.redOxygenTanks[0].render(scale);
}
if (wearingLeftTankOrange)
{
this.orangeOxygenTanks[0].render(scale);
}
if (wearingLeftTankGreen)
{
this.greenOxygenTanks[0].render(scale);
}
GlStateManager.popMatrix();
GlStateManager.pushMatrix();
GlStateManager.translate(-0.175F, 0.0F, 0.0F);
GlStateManager.translate(0.0F, 0.2F, 0.0F);
GlStateManager.translate(0.0F, 0.0F, 0.2F);
if (wearingRightTankRed)
{
this.redOxygenTanks[1].render(scale);
}
if (wearingRightTankOrange)
{
this.orangeOxygenTanks[1].render(scale);
}
if (wearingRightTankGreen)
{
this.greenOxygenTanks[1].render(scale);
}
GlStateManager.color(1.0F, 1.0F, 1.0F);
GlStateManager.popMatrix();
}
}
}
}
@Override
public boolean shouldCombineTextures()
{
return true;
}
}