diff --git a/src/main/java/noppes/npcs/client/renderer/RenderCNPCPlayer.java b/src/main/java/noppes/npcs/client/renderer/RenderCNPCPlayer.java index 118b30528..1305e309a 100644 --- a/src/main/java/noppes/npcs/client/renderer/RenderCNPCPlayer.java +++ b/src/main/java/noppes/npcs/client/renderer/RenderCNPCPlayer.java @@ -318,6 +318,12 @@ public class RenderCNPCPlayer extends RenderPlayer { RenderPlayer renderplayer = (RenderPlayer)render; renderplayer.renderFirstPersonArm(player); + float gender = 1.0F; + try { + Class RenderPlayerJBRA = Class.forName("JinRyuu.JBRA.RenderPlayerJBRA"); + gender = (float) RenderPlayerJBRA.getMethod("genGet").invoke(null); + } catch (Exception ignored) {} + if (Client.skinOverlays.containsKey(player.getUniqueID())) { for (SkinOverlay overlayData : Client.skinOverlays.get(player.getUniqueID()).values()) { if (overlayData.texture.isEmpty()) @@ -337,19 +343,20 @@ public class RenderCNPCPlayer extends RenderPlayer { overlayData.offsetX, overlayData.offsetY, overlayData.offsetZ )) return; + + if (gender >= 2.0F) { + GL11.glRotatef(7F, 0, 0, 1); + GL11.glTranslatef(0.015F, 0.0375F, -0.0025F); + } this.modelBipedMain.onGround = 0.0F; this.modelBipedMain.setRotationAngles(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, player); this.modelBipedMain.bipedRightArm.render(0.0625F); + postRenderOverlay(); } } } - byte b(String n) { - return Byte.parseByte(n); - } - - public void renderDBCModel(RenderPlayerEvent.Specials.Post event) { EntityPlayer player = event.entityPlayer; @@ -360,6 +367,11 @@ public class RenderCNPCPlayer extends RenderPlayer { Object m = RenderPlayerJBRA.getField("modelMain").get(event.renderer); ModelRenderer bipedHead = (ModelRenderer) ModelBipedBody.getField("bipedHead").get(m); + ModelRenderer bipedBody = (ModelRenderer) ModelBipedBody.getField("bipedBody").get(m); + ModelRenderer bipedRA = (ModelRenderer) ModelBipedBody.getField("bipedRightArm").get(m); + ModelRenderer bipedLA = (ModelRenderer) ModelBipedBody.getField("bipedLeftArm").get(m); + ModelRenderer bipedRL = (ModelRenderer) ModelBipedBody.getField("bipedRightLeg").get(m); + ModelRenderer bipedLL = (ModelRenderer) ModelBipedBody.getField("bipedLeftLeg").get(m); float childScl = (float) RenderPlayerJBRA.getMethod("childSclGet").invoke(null); ModelBipedBody.getField("onGround").set(m, (int) player.getSwingProgress(event.partialRenderTick)); @@ -404,15 +416,33 @@ public class RenderCNPCPlayer extends RenderPlayer { ); bipedHead.isHidden = false; - if (childScl > 1) { - GL11.glScalef(1.0F / childScl, 1.0F / childScl, 1.0F / childScl); - GL11.glTranslatef(0.0F, (childScl - 1.0F) * 1.5F, 0.0F); - GL11.glScalef(childScl * 0.78F, childScl * 0.78F, childScl * 0.78F); + bipedBody.isHidden = true; + bipedRA.isHidden = true; + bipedLA.isHidden = true; + bipedRL.isHidden = true; + bipedLL.isHidden = true; + + if (childScl > 1.5F) { + GL11.glTranslatef(0, -0.015F, 0); + GL11.glScalef(1.025F, 1.025F, 1.025F); } else { - GL11.glTranslatef(0, 0.0025F, 0); - GL11.glScalef(1.02F, 1.02F, 1.02F); + if (childScl > 1) { + GL11.glTranslatef(0, -0.01F, 0); + GL11.glScalef(1.025F, 1.025F, 1.025F); + } else { + GL11.glTranslatef(0, 0.0025F, 0); + GL11.glScalef(1.02F, 1.02F, 1.02F); + } } - bipedHead.render((float) rot6.get(m)); + renderDBC.invoke(m, player, + (float) rot1.get(m), (float) rot2.get(m), (float) rot3.get(m), + (float) rot4.get(m), (float) rot5.get(m), (float) rot6.get(m) + ); + bipedBody.isHidden = false; + bipedRA.isHidden = false; + bipedLA.isHidden = false; + bipedRL.isHidden = false; + bipedLL.isHidden = false; postRenderOverlay(); } diff --git a/src/main/java/noppes/npcs/scripted/NpcAPI.java b/src/main/java/noppes/npcs/scripted/NpcAPI.java index 931e1b974..32b35f1a8 100644 --- a/src/main/java/noppes/npcs/scripted/NpcAPI.java +++ b/src/main/java/noppes/npcs/scripted/NpcAPI.java @@ -11,6 +11,7 @@ import java.util.List; import java.util.Map; import cpw.mods.fml.common.eventhandler.EventBus; +import jdk.nashorn.internal.ir.debug.ObjectSizeCalculator; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; @@ -68,6 +69,10 @@ public class NpcAPI extends AbstractNpcAPI { worldCache.clear(); } + public long sizeOfObject(Object obj) { + return ObjectSizeCalculator.getObjectSize(obj); + } + public void stopServer() { CustomNpcs.getServer().initiateShutdown(); } diff --git a/src/main/java/noppes/npcs/scripted/interfaces/AbstractNpcAPI.java b/src/main/java/noppes/npcs/scripted/interfaces/AbstractNpcAPI.java index 8d8e17cc7..6d5546e14 100644 --- a/src/main/java/noppes/npcs/scripted/interfaces/AbstractNpcAPI.java +++ b/src/main/java/noppes/npcs/scripted/interfaces/AbstractNpcAPI.java @@ -43,6 +43,8 @@ public abstract class AbstractNpcAPI { public AbstractNpcAPI() { } + public abstract long sizeOfObject(Object obj); + public abstract void stopServer(); public abstract IFactionHandler getFactions();