From 6779bbc93ffa2bcccf053c5cd9c4cd8f4b9f0e44 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Mon, 9 Jan 2023 13:57:14 -0500 Subject: [PATCH 1/2] Ignore Empty Bytes Data from Modded Blocks --- src/main/java/noppes/npcs/util/NBTJsonUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/noppes/npcs/util/NBTJsonUtil.java b/src/main/java/noppes/npcs/util/NBTJsonUtil.java index 054f677b2..d44a23d48 100644 --- a/src/main/java/noppes/npcs/util/NBTJsonUtil.java +++ b/src/main/java/noppes/npcs/util/NBTJsonUtil.java @@ -137,7 +137,7 @@ public class NBTJsonUtil { s += json.cut(1); } s = s.trim().toLowerCase(); - if(s.isEmpty()) + if(s.isEmpty() || s.contains("bytes]")) return null; try{ if(s.endsWith("d")){ From 4d17df936a0eb1583249911feb6e79c948d6109e Mon Sep 17 00:00:00 2001 From: "Luis C.M" <42545778+c0508383@users.noreply.github.com> Date: Mon, 9 Jan 2023 14:13:20 -0600 Subject: [PATCH 2/2] Fix for player overlay speeds. --- src/api | 2 +- .../java/noppes/npcs/client/NoppesUtil.java | 12 ++++- .../client/renderer/RenderCNPCPlayer.java | 47 ++++++++----------- .../npcs/controllers/data/SkinOverlay.java | 3 ++ 4 files changed, 33 insertions(+), 31 deletions(-) diff --git a/src/api b/src/api index 75ef3578f..ed926020a 160000 --- a/src/api +++ b/src/api @@ -1 +1 @@ -Subproject commit 75ef3578f62f894217e001b7259291b6a956834d +Subproject commit ed926020ab9be2822efb49ebe2f30456fd3cc919 diff --git a/src/main/java/noppes/npcs/client/NoppesUtil.java b/src/main/java/noppes/npcs/client/NoppesUtil.java index 7d1b4c1b5..329e1fd25 100644 --- a/src/main/java/noppes/npcs/client/NoppesUtil.java +++ b/src/main/java/noppes/npcs/client/NoppesUtil.java @@ -76,11 +76,19 @@ public class NoppesUtil { public static void updateSkinOverlayData(EntityPlayer player, NBTTagCompound compound) { HashMap skinOverlays = new HashMap<>(); + HashMap oldOverlays = new HashMap<>(); NBTTagList skinOverlayList = compound.getTagList("SkinOverlayData",10); - + if (Client.skinOverlays.containsKey(player.getUniqueID())) { + oldOverlays = Client.skinOverlays.get(player.getUniqueID()); + } + for (int i = 0; i < skinOverlayList.tagCount(); i++) { int tagID = skinOverlayList.getCompoundTagAt(i).getInteger("SkinOverlayID"); - skinOverlays.put(tagID, (SkinOverlay) SkinOverlay.overlayFromNBT(skinOverlayList.getCompoundTagAt(i))); + SkinOverlay overlay = (SkinOverlay) SkinOverlay.overlayFromNBT(skinOverlayList.getCompoundTagAt(i)); + if (oldOverlays.containsKey(tagID)) { + overlay.ticks = oldOverlays.get(tagID).ticks; + } + skinOverlays.put(tagID,overlay); } Client.skinOverlays.put(player.getUniqueID(), skinOverlays); } diff --git a/src/main/java/noppes/npcs/client/renderer/RenderCNPCPlayer.java b/src/main/java/noppes/npcs/client/renderer/RenderCNPCPlayer.java index 22422836e..1ad300edb 100644 --- a/src/main/java/noppes/npcs/client/renderer/RenderCNPCPlayer.java +++ b/src/main/java/noppes/npcs/client/renderer/RenderCNPCPlayer.java @@ -27,7 +27,8 @@ import java.lang.reflect.Field; import java.lang.reflect.Method; public class RenderCNPCPlayer extends RenderPlayer { - public RenderCNPCHand itemRenderer = new RenderCNPCHand(Minecraft.getMinecraft()); + public Minecraft mc = Minecraft.getMinecraft(); + public RenderCNPCHand itemRenderer = new RenderCNPCHand(mc); public float tempRenderPartialTicks; private float debugCamFOV; private float prevDebugCamFOV; @@ -43,48 +44,45 @@ public class RenderCNPCPlayer extends RenderPlayer { this.setRenderManager(RenderManager.instance); } - private boolean preRenderOverlay(EntityPlayer player, ResourceLocation overlayLocation, boolean glow, boolean blend, - float alpha, float size, float speedX, float speedY, float scaleX, float scaleY, - float offsetX, float offsetY, float offsetZ) { - if (overlayLocation.getResourcePath().isEmpty()) + private boolean preRenderOverlay(SkinOverlay overlayData, EntityPlayer player) { + if (overlayData.location.getResourcePath().isEmpty()) return false; try { - this.bindTexture(overlayLocation); + this.bindTexture(overlayData.location); } catch (Exception exception) { return false; } - float partialTickTime = ClientEventHandler.partialHandTicks; - // Overlay & Glow GL11.glEnable(GL11.GL_BLEND); - if (blend) { + if (overlayData.blend) { GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE); } else { GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); } GL11.glAlphaFunc(GL11.GL_GREATER, 0.003921569F); - if (glow) { + if (overlayData.glow) { GL11.glDisable(GL11.GL_LIGHTING); Minecraft.getMinecraft().entityRenderer.disableLightmap((double)0); RenderHelper.disableStandardItemLighting(); } - GL11.glColor4f(1.0F, 1.0F, 1.0F, alpha); + GL11.glColor4f(1.0F, 1.0F, 1.0F, overlayData.alpha); GL11.glDepthMask(!player.isInvisible()); GL11.glPushMatrix(); GL11.glMatrixMode(GL11.GL_TEXTURE); GL11.glLoadIdentity(); - GL11.glTranslatef(partialTickTime * 0.001F * speedX, partialTickTime * 0.001F * speedY, 0.0F); - GL11.glScalef(scaleX, scaleY, 1.0F); + GL11.glTranslatef(overlayData.ticks * 0.001F * overlayData.speedX, overlayData.ticks * 0.001F * overlayData.speedY, 0.0F); + GL11.glScalef(overlayData.scaleX, overlayData.scaleY, 1.0F); + overlayData.ticks++; GL11.glMatrixMode(GL11.GL_MODELVIEW); - GL11.glTranslatef(offsetX, offsetY, offsetZ); - GL11.glScalef(size, size, size); + GL11.glTranslatef(overlayData.offsetX, overlayData.offsetY, overlayData.offsetZ); + GL11.glScalef(overlayData.size, overlayData.size, overlayData.size); return true; } @@ -123,11 +121,9 @@ public class RenderCNPCPlayer extends RenderPlayer { } } - 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;; + if (!this.preRenderOverlay(overlayData, player)) + continue; + this.modelBipedMain.render(p_77036_1_, p_77036_2_, p_77036_3_, p_77036_4_, p_77036_5_, p_77036_6_, p_77036_7_); postRenderOverlay(); } @@ -290,10 +286,7 @@ public class RenderCNPCPlayer extends RenderPlayer { } } - 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 - )) + if (!this.preRenderOverlay(overlayData, player)) continue; if (gender >= 2.0F) { @@ -420,11 +413,9 @@ public class RenderCNPCPlayer extends RenderPlayer { } } - 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 - )) + if (!this.preRenderOverlay(overlayData, player)) continue; + bipedHead.isHidden = true; renderDBC.invoke(m, player, (float) rot1.get(m), (float) rot2.get(m), (float) rot3.get(m), diff --git a/src/main/java/noppes/npcs/controllers/data/SkinOverlay.java b/src/main/java/noppes/npcs/controllers/data/SkinOverlay.java index 8a19e5b64..04dc72d81 100644 --- a/src/main/java/noppes/npcs/controllers/data/SkinOverlay.java +++ b/src/main/java/noppes/npcs/controllers/data/SkinOverlay.java @@ -24,6 +24,9 @@ public class SkinOverlay implements ISkinOverlay { public float offsetY = 0.0F; public float offsetZ = 0.0F; + //Client-sided + public long ticks = 0; + public SkinOverlay() { }