2022-05-16 05:45:00 -05:00
|
|
|
package noppes.npcs.client.renderer;
|
|
|
|
|
import net.minecraft.client.Minecraft;
|
2022-05-16 22:04:54 -05:00
|
|
|
import net.minecraft.client.renderer.RenderHelper;
|
2022-05-16 05:45:00 -05:00
|
|
|
import net.minecraft.client.renderer.entity.RenderPlayer;
|
|
|
|
|
import net.minecraft.entity.EntityLivingBase;
|
|
|
|
|
import net.minecraft.entity.player.EntityPlayer;
|
2022-05-16 18:47:16 -05:00
|
|
|
import net.minecraft.util.ResourceLocation;
|
2022-05-16 05:45:00 -05:00
|
|
|
import noppes.npcs.client.Client;
|
2022-05-16 18:47:16 -05:00
|
|
|
import noppes.npcs.constants.EnumPacketServer;
|
|
|
|
|
import noppes.npcs.controllers.data.SkinOverlayData;
|
2022-05-16 05:45:00 -05:00
|
|
|
import org.lwjgl.opengl.GL11;
|
|
|
|
|
|
|
|
|
|
public class RenderCNPCPlayer extends RenderPlayer {
|
|
|
|
|
|
|
|
|
|
public RenderCNPCPlayer() {
|
|
|
|
|
}
|
|
|
|
|
|
2022-05-16 22:14:11 -05:00
|
|
|
private boolean preRenderOverlay(EntityPlayer player, ResourceLocation overlayLocation, boolean glow, float alpha) {
|
2022-05-16 18:47:16 -05:00
|
|
|
try {
|
|
|
|
|
this.bindTexture(overlayLocation);
|
|
|
|
|
} catch (Exception exception) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
// Overlay & Glow
|
2022-05-16 22:04:54 -05:00
|
|
|
if (glow) {
|
|
|
|
|
GL11.glDepthFunc(GL11.GL_LEQUAL);
|
|
|
|
|
GL11.glEnable(GL11.GL_BLEND);
|
|
|
|
|
GL11.glDisable(GL11.GL_LIGHTING);
|
|
|
|
|
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_DST_ALPHA);
|
|
|
|
|
Minecraft.getMinecraft().entityRenderer.disableLightmap((double)0);
|
|
|
|
|
}
|
2022-05-16 18:47:16 -05:00
|
|
|
|
2022-05-16 22:14:11 -05:00
|
|
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, alpha);
|
|
|
|
|
|
2022-05-16 18:47:16 -05:00
|
|
|
GL11.glDepthMask(!player.isInvisible());
|
|
|
|
|
|
|
|
|
|
GL11.glPushMatrix();
|
|
|
|
|
GL11.glMatrixMode(GL11.GL_TEXTURE);
|
|
|
|
|
GL11.glLoadIdentity();
|
|
|
|
|
GL11.glScalef(1.0F, 1.0F, 1.0F);
|
|
|
|
|
|
|
|
|
|
GL11.glMatrixMode(GL11.GL_MODELVIEW);
|
2022-05-16 22:04:54 -05:00
|
|
|
float scale = 1.005f;
|
2022-05-16 18:47:16 -05:00
|
|
|
GL11.glScalef(scale, scale, scale);
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
public void postRenderOverlay(EntityPlayer player) {
|
|
|
|
|
GL11.glPopMatrix();
|
|
|
|
|
|
|
|
|
|
GL11.glMatrixMode(GL11.GL_TEXTURE);
|
|
|
|
|
GL11.glLoadIdentity();
|
|
|
|
|
GL11.glMatrixMode(GL11.GL_MODELVIEW);
|
|
|
|
|
|
|
|
|
|
GL11.glEnable(GL11.GL_LIGHTING);
|
|
|
|
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
|
|
|
|
GL11.glDepthFunc(GL11.GL_LEQUAL);
|
|
|
|
|
GL11.glDisable(GL11.GL_BLEND);
|
2022-05-16 22:04:54 -05:00
|
|
|
Minecraft.getMinecraft().entityRenderer.enableLightmap((double)0);
|
2022-05-16 18:47:16 -05:00
|
|
|
}
|
|
|
|
|
|
2022-05-16 05:45:00 -05:00
|
|
|
@Override
|
|
|
|
|
protected void renderModel(EntityLivingBase p_77036_1_, float p_77036_2_, float p_77036_3_, float p_77036_4_, float p_77036_5_, float p_77036_6_, float p_77036_7_) {
|
2022-05-16 18:47:16 -05:00
|
|
|
EntityPlayer player = (EntityPlayer) p_77036_1_;
|
2022-05-16 05:45:00 -05:00
|
|
|
this.bindEntityTexture(p_77036_1_);
|
|
|
|
|
|
|
|
|
|
if (!p_77036_1_.isInvisible())
|
|
|
|
|
{
|
|
|
|
|
this.mainModel.render(p_77036_1_, p_77036_2_, p_77036_3_, p_77036_4_, p_77036_5_, p_77036_6_, p_77036_7_);
|
|
|
|
|
|
2022-05-16 18:47:16 -05:00
|
|
|
if (Client.skinOverlays.containsKey(player.getUniqueID())) {
|
|
|
|
|
for (SkinOverlayData overlayData : Client.skinOverlays.get(player.getUniqueID()).values()) {
|
2022-05-16 22:14:11 -05:00
|
|
|
if (!preRenderOverlay(player, overlayData.location, overlayData.glow, overlayData.alpha))
|
2022-05-16 18:47:16 -05:00
|
|
|
return;
|
2022-05-16 05:45:00 -05:00
|
|
|
this.mainModel.render(p_77036_1_, p_77036_2_, p_77036_3_, p_77036_4_, p_77036_5_, p_77036_6_, p_77036_7_);
|
2022-05-16 18:47:16 -05:00
|
|
|
postRenderOverlay(player);
|
|
|
|
|
}
|
|
|
|
|
} else if(player.getEntityData().hasKey("SkinOverlayData")) {
|
|
|
|
|
Client.sendData(EnumPacketServer.SERVER_UPDATE_SKIN_OVERLAYS, new Object[0]);
|
2022-05-16 05:45:00 -05:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (!p_77036_1_.isInvisibleToPlayer(Minecraft.getMinecraft().thePlayer))
|
|
|
|
|
{
|
|
|
|
|
GL11.glPushMatrix();
|
|
|
|
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.15F);
|
|
|
|
|
GL11.glDepthMask(false);
|
|
|
|
|
GL11.glEnable(GL11.GL_BLEND);
|
|
|
|
|
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
|
|
|
|
GL11.glAlphaFunc(GL11.GL_GREATER, 0.003921569F);
|
|
|
|
|
this.mainModel.render(p_77036_1_, p_77036_2_, p_77036_3_, p_77036_4_, p_77036_5_, p_77036_6_, p_77036_7_);
|
|
|
|
|
GL11.glDisable(GL11.GL_BLEND);
|
|
|
|
|
GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F);
|
|
|
|
|
GL11.glPopMatrix();
|
|
|
|
|
GL11.glDepthMask(true);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.mainModel.setRotationAngles(p_77036_2_, p_77036_3_, p_77036_4_, p_77036_5_, p_77036_6_, p_77036_7_, p_77036_1_);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-05-16 18:47:16 -05:00
|
|
|
public void renderFirstPersonArm(EntityPlayer player)
|
2022-05-16 05:45:00 -05:00
|
|
|
{
|
|
|
|
|
float f = 1.0F;
|
|
|
|
|
GL11.glColor3f(f, f, f);
|
|
|
|
|
this.modelBipedMain.onGround = 0.0F;
|
2022-05-16 18:47:16 -05:00
|
|
|
this.modelBipedMain.setRotationAngles(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, player);
|
2022-05-16 05:45:00 -05:00
|
|
|
this.modelBipedMain.bipedRightArm.render(0.0625F);
|
|
|
|
|
|
2022-05-16 18:47:16 -05:00
|
|
|
if (Client.skinOverlays.containsKey(player.getUniqueID())) {
|
|
|
|
|
for (SkinOverlayData overlayData : Client.skinOverlays.get(player.getUniqueID()).values()) {
|
2022-05-16 22:14:11 -05:00
|
|
|
if (!preRenderOverlay(player, overlayData.location, overlayData.glow, overlayData.alpha))
|
2022-05-16 18:47:16 -05:00
|
|
|
return;
|
2022-05-16 05:45:00 -05:00
|
|
|
this.modelBipedMain.onGround = 0.0F;
|
2022-05-16 18:47:16 -05:00
|
|
|
this.modelBipedMain.setRotationAngles(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, player);
|
2022-05-16 05:45:00 -05:00
|
|
|
this.modelBipedMain.bipedRightArm.render(0.0625F);
|
2022-05-16 18:47:16 -05:00
|
|
|
postRenderOverlay(player);
|
|
|
|
|
}
|
|
|
|
|
} else if(player.getEntityData().hasKey("SkinOverlayData")) {
|
|
|
|
|
Client.sendData(EnumPacketServer.SERVER_UPDATE_SKIN_OVERLAYS, new Object[0]);
|
2022-05-16 05:45:00 -05:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|