package micdoodle8.mods.galacticraft.core.client.render.entities.layer; 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; import org.lwjgl.opengl.GL11; @SideOnly(Side.CLIENT) public class LayerOxygenMask implements LayerRenderer<AbstractClientPlayer> { private final RenderPlayer playerRenderer; public ModelRenderer oxygenMask; public LayerOxygenMask(RenderPlayer playerRendererIn) { this.playerRenderer = playerRendererIn; float scaleFactor = 1.0F; ModelPlayer modelPlayer = playerRendererIn.getMainModel(); this.oxygenMask = new ModelRenderer(modelPlayer, 0, 0).setTextureSize(128, 64); this.oxygenMask.addBox(-8.0F, -16.0F, -8.0F, 16, 16, 16, scaleFactor); this.oxygenMask.setRotationPoint(0.0F, 0.0F, 0.0F); } @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 wearingMask = gearData.getMask() > -1; FMLClientHandler.instance().getClient().renderEngine.bindTexture(ModelPlayerGC.oxygenMaskTexture); ModelPlayer.copyModelAngles(this.playerRenderer.getMainModel().bipedHeadwear, this.oxygenMask); this.oxygenMask.rotationPointY = this.playerRenderer.getMainModel().bipedHeadwear.rotationPointY * 8.0F; GlStateManager.pushMatrix(); GlStateManager.scale(0.5F, 0.5F, 0.5F); if (wearingMask) { GL11.glPushMatrix(); GL11.glScalef(1.05F, 1.05F, 1.05F); this.oxygenMask.render(scale); GL11.glScalef(1F, 1F, 1F); GL11.glPopMatrix(); } GlStateManager.popMatrix(); } } } @Override public boolean shouldCombineTextures() { return true; } }