From 51982e5bee6a5a57b36cc2945878f7aed2a95467 Mon Sep 17 00:00:00 2001 From: c0508383 Date: Fri, 19 Aug 2022 03:20:47 -0500 Subject: [PATCH] Fixed DBC overlay rendering in obfuscated clients. --- .../client/renderer/RenderCNPCPlayer.java | 133 +++++++++++++++++- 1 file changed, 130 insertions(+), 3 deletions(-) diff --git a/src/main/java/noppes/npcs/client/renderer/RenderCNPCPlayer.java b/src/main/java/noppes/npcs/client/renderer/RenderCNPCPlayer.java index 3c13dc709..99ecadb5c 100644 --- a/src/main/java/noppes/npcs/client/renderer/RenderCNPCPlayer.java +++ b/src/main/java/noppes/npcs/client/renderer/RenderCNPCPlayer.java @@ -379,7 +379,6 @@ public class RenderCNPCPlayer extends RenderPlayer { ModelRenderer bipedRL = (ModelRenderer) ModelBipedBody.getField("bipedRightLeg").get(m); ModelRenderer bipedLL = (ModelRenderer) ModelBipedBody.getField("bipedLeftLeg").get(m); - ModelRenderer Brightarm = (ModelRenderer) ModelBipedBody.getField("Brightarm").get(m); ModelRenderer Bleftarm = (ModelRenderer) ModelBipedBody.getField("Bleftarm").get(m); ModelRenderer rightleg = (ModelRenderer) ModelBipedBody.getField("rightleg").get(m); @@ -487,8 +486,136 @@ public class RenderCNPCPlayer extends RenderPlayer { postRenderOverlay(); } } - } catch (Exception ignored) { - postRenderOverlay(); + } catch (Exception ignored) {} + + try { + Class RenderPlayerJBRA = Class.forName("JinRyuu.JBRA.RenderPlayerJBRA"); + Class ModelBipedDBC = Class.forName("JinRyuu.JBRA.ModelBipedDBC"); + Class ModelBipedBody = Class.forName("JinRyuu.JRMCore.entity.ModelBipedBody"); + + Method renderDBC = ModelBipedBody.getMethod("func_78088_a",Entity.class,float.class,float.class,float.class,float.class,float.class,float.class); + Field rot1 = ModelBipedDBC.getField("rot1"); + Field rot2 = ModelBipedDBC.getField("rot2"); + Field rot3 = ModelBipedDBC.getField("rot3"); + Field rot4 = ModelBipedDBC.getField("rot4"); + Field rot5 = ModelBipedDBC.getField("rot5"); + Field rot6 = ModelBipedDBC.getField("rot6"); + + Object m = RenderPlayerJBRA.getField("modelMain").get(event.renderer); + ModelBipedBody.getField("field_78095_p").set(m, (int) player.getSwingProgress(event.partialRenderTick)); + ModelBipedBody.getField("field_78093_q").set(m, player.isRiding()); + ModelBipedBody.getField("field_78091_s").set(m, player.isChild()); + ModelBipedBody.getField("field_78117_n").set(m, player.isSneaking()); + ModelBipedBody.getField("y").set(null, ModelBipedDBC.getField("y").get(null)); + + ModelRenderer bipedHead = (ModelRenderer) ModelBipedBody.getField("field_78116_c").get(m); + ModelRenderer bipedBody = (ModelRenderer) ModelBipedBody.getField("field_78115_e").get(m); + ModelRenderer bipedRA = (ModelRenderer) ModelBipedBody.getField("field_78112_f").get(m); + ModelRenderer bipedLA = (ModelRenderer) ModelBipedBody.getField("field_78113_g").get(m); + ModelRenderer bipedRL = (ModelRenderer) ModelBipedBody.getField("field_78123_h").get(m); + ModelRenderer bipedLL = (ModelRenderer) ModelBipedBody.getField("field_78124_i").get(m); + + ModelRenderer Brightarm = (ModelRenderer) ModelBipedBody.getField("Brightarm").get(m); + ModelRenderer Bleftarm = (ModelRenderer) ModelBipedBody.getField("Bleftarm").get(m); + ModelRenderer rightleg = (ModelRenderer) ModelBipedBody.getField("rightleg").get(m); + ModelRenderer leftleg = (ModelRenderer) ModelBipedBody.getField("leftleg").get(m); + ModelRenderer body = (ModelRenderer) ModelBipedBody.getField("body").get(m); + ModelRenderer hip = (ModelRenderer) ModelBipedBody.getField("hip").get(m); + ModelRenderer waist = (ModelRenderer) ModelBipedBody.getField("waist").get(m); + ModelRenderer bottom = (ModelRenderer) ModelBipedBody.getField("bottom").get(m); + ModelRenderer Bbreast = (ModelRenderer) ModelBipedBody.getField("Bbreast").get(m); + ModelRenderer Bbreast2 = (ModelRenderer) ModelBipedBody.getField("Bbreast2").get(m); + ModelRenderer breast = (ModelRenderer) ModelBipedBody.getField("breast").get(m); + ModelRenderer breast2 = (ModelRenderer) ModelBipedBody.getField("breast2").get(m); + float childScl = (float) RenderPlayerJBRA.getMethod("childSclGet").invoke(null); + + if (Client.skinOverlays.containsKey(player.getUniqueID())) { + for (SkinOverlay overlayData : Client.skinOverlays.get(player.getUniqueID()).values()) { + if (overlayData.texture.isEmpty()) + continue; + + if (overlayData.location == null) { + overlayData.location = new ResourceLocation(overlayData.texture); + } else { + String str = overlayData.location.getResourceDomain() + ":" + overlayData.location.getResourcePath(); + if (!str.equals(overlayData.texture)) { + overlayData.location = new ResourceLocation(overlayData.texture); + } + } + + if (!preRenderOverlay(player, overlayData.location, overlayData.glow, overlayData.blend, overlayData.alpha, overlayData.size, + overlayData.speedX, overlayData.speedY, overlayData.scaleX, overlayData.scaleY, + overlayData.offsetX, overlayData.offsetY, overlayData.offsetZ + )) + continue; + bipedHead.isHidden = true; + 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) + ); + bipedHead.isHidden = false; + + bipedBody.isHidden = true; + bipedRA.isHidden = true; + bipedLA.isHidden = true; + bipedRL.isHidden = true; + bipedLL.isHidden = true; + //Female render + Brightarm.isHidden = true; + Bleftarm.isHidden = true; + rightleg.isHidden = true; + leftleg.isHidden = true; + body.isHidden = true; + hip.isHidden = true; + waist.isHidden = true; + bottom.isHidden = true; + Bbreast.isHidden = true; + Bbreast2.isHidden = true; + breast.isHidden = true; + breast2.isHidden = true; + if (player.isSneaking()) { + GL11.glTranslatef(0, 0.06F, 0); + } + if (childScl > 1.5F) { + GL11.glTranslatef(0, -0.015F, 0); + GL11.glScalef(1.025F, 1.025F, 1.025F); + } else { + 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); + } + } + 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; + //Female render + Brightarm.isHidden = false; + Bleftarm.isHidden = false; + rightleg.isHidden = false; + leftleg.isHidden = false; + body.isHidden = false; + hip.isHidden = false; + waist.isHidden = false; + bottom.isHidden = false; + Bbreast.isHidden = false; + Bbreast2.isHidden = false; + breast.isHidden = false; + breast2.isHidden = false; + + postRenderOverlay(); + } + } + } catch (Exception e) { + e.printStackTrace(); } } }