From 07175758a7783ae82eed27d0933cb1ce33389436 Mon Sep 17 00:00:00 2001 From: "Luis C.M" <42545778+c0508383@users.noreply.github.com> Date: Mon, 23 Jan 2023 18:47:23 -0600 Subject: [PATCH] Small fix for model part compatibility. --- .../npcs/client/ClientEventHandler.java | 40 +++++-------------- .../noppes/npcs/mixin/MixinModelRenderer.java | 12 +++--- 2 files changed, 16 insertions(+), 36 deletions(-) diff --git a/src/main/java/noppes/npcs/client/ClientEventHandler.java b/src/main/java/noppes/npcs/client/ClientEventHandler.java index 52ea9b6bc..1d4a2aba2 100644 --- a/src/main/java/noppes/npcs/client/ClientEventHandler.java +++ b/src/main/java/noppes/npcs/client/ClientEventHandler.java @@ -39,7 +39,7 @@ public class ClientEventHandler { public static HashMap partNames = new HashMap<>(); public static HashMap,Field[]> declaredFieldCache = new HashMap<>(); - public static HashMap originalValues = new HashMap<>(); + public static HashMap originalValues = new HashMap<>(); public static ModelBase playerModel; @SubscribeEvent @@ -96,37 +96,17 @@ public class ClientEventHandler { data = Client.playerAnimations.get(event.entity.getUniqueID()); } - Class RenderClass = playerModel.getClass(); - Object model = playerModel; - - while (RenderClass != Object.class) { - Field[] declared; - if (ClientEventHandler.declaredFieldCache.containsKey(RenderClass)) { - declared = ClientEventHandler.declaredFieldCache.get(RenderClass); - } else { - declared = RenderClass.getDeclaredFields(); - ClientEventHandler.declaredFieldCache.put(RenderClass,declared); - } - for (Field f : declared) { - f.setAccessible(true); - try { - ModelRenderer fieldValue = (ModelRenderer) f.get(model); - EnumAnimationPart enumPart = this.getPlayerPartType(fieldValue); - if (originalValues.containsKey(enumPart)) { - FramePart part = originalValues.get(enumPart); - fieldValue.rotationPointX = part.pivot[0]; - fieldValue.rotationPointY = part.pivot[1]; - fieldValue.rotationPointZ = part.pivot[2]; - fieldValue.rotateAngleX = part.rotation[0]; - fieldValue.rotateAngleY = part.rotation[1]; - fieldValue.rotateAngleZ = part.rotation[2]; - } - } catch (Exception ignored) {} - } - RenderClass = RenderClass.getSuperclass(); + for (Map.Entry entry : ClientEventHandler.originalValues.entrySet()) { + ModelRenderer renderer = entry.getKey(); + FramePart part = entry.getValue(); + renderer.rotateAngleX = part.rotation[0]; + renderer.rotateAngleY = part.rotation[1]; + renderer.rotateAngleZ = part.rotation[2]; + renderer.rotationPointX = part.pivot[0]; + renderer.rotationPointY = part.pivot[1]; + renderer.rotationPointZ = part.pivot[2]; } - originalValues.clear(); ClientEventHandler.playerModel = null; } diff --git a/src/main/java/noppes/npcs/mixin/MixinModelRenderer.java b/src/main/java/noppes/npcs/mixin/MixinModelRenderer.java index c63905ccf..bbbe3382c 100644 --- a/src/main/java/noppes/npcs/mixin/MixinModelRenderer.java +++ b/src/main/java/noppes/npcs/mixin/MixinModelRenderer.java @@ -116,13 +116,13 @@ public abstract class MixinModelRenderer { pivotEqualPart = this.pivotEqualPart((ModelRenderer) (Object) this); } partType = mainPartType != null ? mainPartType : pivotEqualPart; - if (partType != null && !ClientEventHandler.originalValues.containsKey(partType)) { - FramePart part = new FramePart(partType); - part.pivot = new float[]{prevPointX,prevPointY,prevPointZ}; - part.rotation = new float[]{prevAngleX,prevAngleY,prevAngleZ}; - ClientEventHandler.originalValues.put(partType,part); - } if (partType != null && animData != null) { + if (!ClientEventHandler.originalValues.containsKey((ModelRenderer) (Object) this)) { + FramePart part = new FramePart(); + part.pivot = new float[]{prevPointX, prevPointY, prevPointZ}; + part.rotation = new float[]{prevAngleX, prevAngleY, prevAngleZ}; + ClientEventHandler.originalValues.put((ModelRenderer) (Object) this, part); + } if (animData.isActive()) { Frame frame = (Frame) animData.animation.currentFrame(); if (frame.frameParts.containsKey(partType)) {