diff --git a/src/api b/src/api index 0d31b56a1..658da549e 160000 --- a/src/api +++ b/src/api @@ -1 +1 @@ -Subproject commit 0d31b56a12dd18f611505047402d2251a6dd0906 +Subproject commit 658da549eec622ed7bcfb331f655938e8841520a diff --git a/src/main/java/noppes/npcs/client/model/ModelMPM.java b/src/main/java/noppes/npcs/client/model/ModelMPM.java index 7a8273a77..76bf0e591 100644 --- a/src/main/java/noppes/npcs/client/model/ModelMPM.java +++ b/src/main/java/noppes/npcs/client/model/ModelMPM.java @@ -422,7 +422,7 @@ public class ModelMPM extends ModelNPCMale { Minecraft.getMinecraft().entityRenderer.disableLightmap((double) 0); } - GL11.glColor4f(1.0F, 1.0F, 1.0F, overlayData.getAlpha()); + glColor(overlayData.getColor(), overlayData.getAlpha()); GL11.glDepthMask(!npc.isInvisible()); @@ -522,6 +522,14 @@ public class ModelMPM extends ModelNPCMale { } + private static void glColor(int color, float alpha) { + float r = ((color >> 16) & 0xFF) / 255.0F; + float g = ((color >> 8) & 0xFF) / 255.0F; + float b = (color & 0xFF) / 255.0F; + + GL11.glColor4f(r, g, b, alpha); + } + @Override public void setRotationAngles(float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, diff --git a/src/main/java/noppes/npcs/client/renderer/RenderCNPCPlayer.java b/src/main/java/noppes/npcs/client/renderer/RenderCNPCPlayer.java index 7f532c2ad..d1042628e 100644 --- a/src/main/java/noppes/npcs/client/renderer/RenderCNPCPlayer.java +++ b/src/main/java/noppes/npcs/client/renderer/RenderCNPCPlayer.java @@ -79,7 +79,7 @@ public class RenderCNPCPlayer extends RenderPlayer { RenderHelper.disableStandardItemLighting(); } - GL11.glColor4f(1.0F, 1.0F, 1.0F, overlayData.alpha); + glColor(overlayData.getColor(), overlayData.getAlpha()); GL11.glDepthMask(!player.isInvisible()); @@ -97,6 +97,14 @@ public class RenderCNPCPlayer extends RenderPlayer { return true; } + private static void glColor(int color, float alpha) { + float r = ((color >> 16) & 0xFF) / 255.0F; + float g = ((color >> 8) & 0xFF) / 255.0F; + float b = (color & 0xFF) / 255.0F; + + GL11.glColor4f(r, g, b, alpha); + } + public void postRenderOverlay() { GL11.glPopMatrix(); diff --git a/src/main/java/noppes/npcs/client/renderer/RenderNPCInterface.java b/src/main/java/noppes/npcs/client/renderer/RenderNPCInterface.java index 2d1d1f258..f3c91d547 100644 --- a/src/main/java/noppes/npcs/client/renderer/RenderNPCInterface.java +++ b/src/main/java/noppes/npcs/client/renderer/RenderNPCInterface.java @@ -482,7 +482,7 @@ public class RenderNPCInterface extends RenderLiving { Minecraft.getMinecraft().entityRenderer.disableLightmap((double) 0); } - GL11.glColor4f(1.0F, 1.0F, 1.0F, overlayData.getAlpha()); + glColor(overlayData.getColor(), overlayData.getAlpha()); GL11.glDepthMask(!npc.isInvisible()); @@ -521,6 +521,14 @@ public class RenderNPCInterface extends RenderLiving { } } + private static void glColor(int color, float alpha) { + float r = ((color >> 16) & 0xFF) / 255.0F; + float g = ((color >> 8) & 0xFF) / 255.0F; + float b = (color & 0xFF) / 255.0F; + + GL11.glColor4f(r, g, b, alpha); + } + @Override protected float handleRotationFloat(EntityLivingBase par1EntityLiving, float par2) { EntityNPCInterface npc = (EntityNPCInterface) par1EntityLiving; diff --git a/src/main/java/noppes/npcs/controllers/data/SkinOverlay.java b/src/main/java/noppes/npcs/controllers/data/SkinOverlay.java index 4b0cde375..bc08a8033 100644 --- a/src/main/java/noppes/npcs/controllers/data/SkinOverlay.java +++ b/src/main/java/noppes/npcs/controllers/data/SkinOverlay.java @@ -10,8 +10,10 @@ public class SkinOverlay implements ISkinOverlay { public boolean glow = true; public boolean blend = true; + public float alpha = 1.0F; public float size = 1.0F; + public int color = 0xFFFFFF; public float speedX = 0.0F; public float speedY = 0.0F; @@ -78,6 +80,15 @@ public class SkinOverlay implements ISkinOverlay { return size; } + public void setColor(int color) { + this.color = Math.max(0, color); + this.updateClient(); + } + + public int getColor() { + return color; + } + public void setTextureScale(float scaleX, float scaleY) { this.scaleX = scaleX; this.scaleY = scaleY; @@ -131,6 +142,7 @@ public class SkinOverlay implements ISkinOverlay { this.blend = compound.getBoolean("SkinOverlayBlend"); this.alpha = compound.getFloat("SkinOverlayAlpha"); this.size = compound.getFloat("SkinOverlaySize"); + this.color = compound.getInteger("SkinOverlayColor"); this.speedX = compound.getFloat("SkinOverlaySpeedX"); this.speedY = compound.getFloat("SkinOverlaySpeedY"); this.scaleX = compound.getFloat("SkinOverlayScaleX"); @@ -146,6 +158,7 @@ public class SkinOverlay implements ISkinOverlay { compound.setBoolean("SkinOverlayBlend", this.getBlend()); compound.setFloat("SkinOverlayAlpha", this.getAlpha()); compound.setFloat("SkinOverlaySize", this.getSize()); + compound.setInteger("SkinOverlayColor", this.getColor()); compound.setFloat("SkinOverlaySpeedX", this.getSpeedX()); compound.setFloat("SkinOverlaySpeedY", this.getSpeedY()); compound.setFloat("SkinOverlayScaleX", this.getTextureScaleX());