MorePlayerModels Support for Overlays

This commit is contained in:
Kam committed 2024-04-08 20:59:42 -04:00
1 parent 564f494b73
commit 9fd715a3f8
3 files changed
+37 -7

No files matched your search

@@ -167,10 +167,6 @@ public class ClientEventHandler {
public void pre(RenderPlayerEvent.Pre event){
if(!(event.entity instanceof AbstractClientPlayer))
return;
renderCNPCPlayer.modelBipedMain = event.renderer.modelBipedMain;
renderCNPCPlayer.modelArmor = event.renderer.modelArmor;
renderCNPCPlayer.modelArmorChestplate = event.renderer.modelArmorChestplate;
}
@SubscribeEvent
@@ -186,6 +182,10 @@ public class ClientEventHandler {
} catch (ClassNotFoundException ignored) {}
if (!(event.renderer instanceof RenderCNPCPlayer)) {
renderCNPCPlayer.mainModel = event.renderer.mainModel;
renderCNPCPlayer.modelBipedMain = event.renderer.modelBipedMain;
renderCNPCPlayer.modelArmor = event.renderer.modelArmor;
renderCNPCPlayer.modelArmorChestplate = event.renderer.modelArmorChestplate;
renderCNPCPlayer.tempRenderPartialTicks = event.partialRenderTick;
double d0 = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double) event.partialRenderTick - RenderManager.renderPosX;
double d1 = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double) event.partialRenderTick - RenderManager.renderPosY;
@@ -1,5 +1,6 @@
package noppes.npcs.client.renderer;
import cpw.mods.fml.common.Loader;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
@@ -18,6 +19,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.MathHelper;
import net.minecraftforge.client.event.RenderPlayerEvent;
import noppes.npcs.client.ClientCacheHandler;
import noppes.npcs.client.model.ModelMPM;
import noppes.npcs.controllers.data.SkinOverlay;
import org.lwjgl.opengl.GL11;
import org.lwjgl.util.glu.Project;
@@ -26,6 +28,7 @@ import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class RenderCNPCPlayer extends RenderPlayer {
public static boolean hasMPM = false;
public Minecraft mc = Minecraft.getMinecraft();
public RenderCNPCHand itemRenderer = new RenderCNPCHand(mc);
public float tempRenderPartialTicks;
@@ -41,6 +44,9 @@ public class RenderCNPCPlayer extends RenderPlayer {
this.modelArmorChestplate = new ModelBiped(1.0F);
this.modelArmor = new ModelBiped(0.5F);
this.setRenderManager(RenderManager.instance);
if(Loader.isModLoaded("moreplayermodels"))
hasMPM = true;
}
private boolean preRenderOverlay(SkinOverlay overlayData, EntityPlayer player) {
@@ -105,7 +111,7 @@ public class RenderCNPCPlayer extends RenderPlayer {
}
@Override
protected void renderModel(EntityLivingBase entity, float p_77036_2_, float p_77036_3_, float p_77036_4_, float p_77036_5_, float p_77036_6_, float p_77036_7_) {
protected void renderModel(EntityLivingBase entity, float par2, float par3, float par4, float par5, float par6, float par7) {
EntityPlayer player = (EntityPlayer) entity;
if (!entity.isInvisible())
{
@@ -121,7 +127,11 @@ public class RenderCNPCPlayer extends RenderPlayer {
if (!this.preRenderOverlay(overlayData, player))
continue;
this.modelBipedMain.render(entity, p_77036_2_, p_77036_3_, p_77036_4_, p_77036_5_, p_77036_6_, p_77036_7_);
if(hasMPM)
renderMorePlayerModel(true);
this.modelBipedMain.render(entity, par2, par3, par4, par5, par6, par7);
if(hasMPM)
renderMorePlayerModel(false);
postRenderOverlay();
}
}
@@ -309,6 +319,26 @@ public class RenderCNPCPlayer extends RenderPlayer {
}
}
public void renderMorePlayerModel(boolean setField){
Class<?> ModelMPMClass = null;
Field isArmor = null;
try {
ModelMPMClass = Class.forName("noppes.mpm.client.model.ModelMPM");
isArmor = ModelMPMClass.getDeclaredField("isArmor");
} catch (Exception ignored) {}
// Assuming this.modelBipedMain is an instance of ModelMPM
if (ModelMPMClass != null && ModelMPMClass.isInstance(this.modelBipedMain)) {
try {
// Set isArmor field to false
if (isArmor != null) {
isArmor.setBoolean(this.modelBipedMain, setField);
}
} catch (IllegalAccessException ignored) {}
}
}
public void renderDBCModel(RenderPlayerEvent.Specials.Post event) {
EntityPlayer player = event.entityPlayer;
@@ -19,7 +19,7 @@ public abstract class MixinEntityRenderer {
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
if (ClientEventHandler.hasOverlays(player)) {
GL11.glPushMatrix();
ClientEventHandler.renderCNPCPlayer.renderHand(p_78476_1_,0);
ClientEventHandler.renderCNPCSelf.renderHand(p_78476_1_,0);
GL11.glPopMatrix();
}
}