From afa5bd81bd49affa9e5cf8d634be6ed3ec4cec09 Mon Sep 17 00:00:00 2001 From: Kam Date: Wed, 12 Feb 2025 22:29:16 -0500 Subject: [PATCH] Updated Pedestal Model --- .../client/model/blocks/ModelPedestal.java | 41 ++++---- .../blocks/legacy/ModelLegacyPedestal.java | 40 ++++++++ .../blocks/BlockPedestalRenderer.java | 88 +++++++++++++----- .../java/noppes/npcs/config/ConfigClient.java | 2 + .../models/{ => legacy}/npcPedestal.png | Bin .../textures/models/pedestal/diamond.png | Bin 0 -> 1280 bytes .../textures/models/pedestal/gold.png | Bin 0 -> 998 bytes .../textures/models/pedestal/iron.png | Bin 0 -> 925 bytes .../textures/models/pedestal/stone.png | Bin 0 -> 720 bytes .../textures/models/pedestal/wood.png | Bin 0 -> 1312 bytes 10 files changed, 124 insertions(+), 47 deletions(-) create mode 100644 src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyPedestal.java rename src/main/resources/assets/customnpcs/textures/models/{ => legacy}/npcPedestal.png (100%) create mode 100644 src/main/resources/assets/customnpcs/textures/models/pedestal/diamond.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/pedestal/gold.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/pedestal/iron.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/pedestal/stone.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/pedestal/wood.png diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelPedestal.java b/src/main/java/noppes/npcs/client/model/blocks/ModelPedestal.java index ec0defb30..8431662e1 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelPedestal.java +++ b/src/main/java/noppes/npcs/client/model/blocks/ModelPedestal.java @@ -1,40 +1,31 @@ package noppes.npcs.client.model.blocks; import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelBox; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; -import org.lwjgl.opengl.GL11; public class ModelPedestal extends ModelBase { - ModelRenderer Main_Block; - ModelRenderer Front; + private final ModelRenderer bb_main; public ModelPedestal() { - Main_Block = new ModelRenderer(this, 1, 0); - Main_Block.addBox(-7F, 0F, -8F, 14, 3, 16); - Main_Block.setRotationPoint(0, 16F, 0F); - - Front = new ModelRenderer(this, 16, 8); - Front.addBox(-8F, 0F, -8F, 16, 5, 16); - Front.setRotationPoint(0F, 19F, 0F); + textureWidth = 64; + textureHeight = 64; + + bb_main = new ModelRenderer(this); + bb_main.setRotationPoint(0.0F, 24.0F, 0.0F); + bb_main.cubeList.add(new ModelBox(bb_main, 0, 0, -6.0F, -4.0F, -6.0F, 12, 4, 12, 0.0F)); + bb_main.cubeList.add(new ModelBox(bb_main, 0, 16, -5.0F, -5.0F, -4.0F, 10, 1, 8, 0.0F)); } - public void render(Entity entity, float f, float f1, float f2, float f3, - float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - GL11.glPushMatrix(); - GL11.glScalef(1, 1, 0.5f); - Main_Block.render(f5); - GL11.glScalef(1, 1, 1.25f); - Front.render(f5); - GL11.glPopMatrix(); + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + bb_main.render(f5); } - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; + public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; } - - } diff --git a/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyPedestal.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyPedestal.java new file mode 100644 index 000000000..18fd108ce --- /dev/null +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyPedestal.java @@ -0,0 +1,40 @@ +package noppes.npcs.client.model.blocks.legacy; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import org.lwjgl.opengl.GL11; + +public class ModelLegacyPedestal extends ModelBase { + ModelRenderer Main_Block; + ModelRenderer Front; + + public ModelLegacyPedestal() { + Main_Block = new ModelRenderer(this, 1, 0); + Main_Block.addBox(-7F, 0F, -8F, 14, 3, 16); + Main_Block.setRotationPoint(0, 16F, 0F); + + Front = new ModelRenderer(this, 16, 8); + Front.addBox(-8F, 0F, -8F, 16, 5, 16); + Front.setRotationPoint(0F, 19F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, + float f4, float f5) { + super.render(entity, f, f1, f2, f3, f4, f5); + GL11.glPushMatrix(); + GL11.glScalef(1, 1, 0.5f); + Main_Block.render(f5); + GL11.glScalef(1, 1, 1.25f); + Front.render(f5); + GL11.glPopMatrix(); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + +} diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockPedestalRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockPedestalRenderer.java index 7ee33ab8d..e866193ee 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockPedestalRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockPedestalRenderer.java @@ -14,14 +14,23 @@ import noppes.npcs.CustomItems; import noppes.npcs.blocks.BlockRotated; import noppes.npcs.blocks.tiles.TilePedestal; import noppes.npcs.client.model.blocks.ModelPedestal; +import noppes.npcs.client.model.blocks.legacy.ModelLegacyPedestal; +import noppes.npcs.config.ConfigClient; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; public class BlockPedestalRenderer extends BlockRendererInterface{ - private final ModelPedestal model = new ModelPedestal(); - private final static ResourceLocation resource = new ResourceLocation("customnpcs:textures/models/npcPedestal.png"); - + private final ModelLegacyPedestal legacyModel = new ModelLegacyPedestal(); + private final static ResourceLocation resource = new ResourceLocation("customnpcs:textures/models/legacy/npcPedestal.png"); + + private final ModelPedestal model = new ModelPedestal(); + private final static ResourceLocation wood = new ResourceLocation("customnpcs:textures/models/pedestal/wood.png"); + private final static ResourceLocation stone = new ResourceLocation("customnpcs:textures/models/pedestal/stone.png"); + private final static ResourceLocation iron = new ResourceLocation("customnpcs:textures/models/pedestal/iron.png"); + private final static ResourceLocation gold = new ResourceLocation("customnpcs:textures/models/pedestal/gold.png"); + private final static ResourceLocation diamond = new ResourceLocation("customnpcs:textures/models/pedestal/diamond.png"); + public BlockPedestalRenderer(){ ((BlockRotated)CustomItems.pedestal).renderId = RenderingRegistry.getNextAvailableRenderId(); RenderingRegistry.registerBlockHandler(this); @@ -35,17 +44,26 @@ public class BlockPedestalRenderer extends BlockRendererInterface{ GL11.glEnable(GL11.GL_ALPHA_TEST); GL11.glPushMatrix(); GL11.glTranslatef((float)var2 + 0.5f, (float)var4 + 1.5f, (float)var6 + 0.5f); - //GL11.glScalef(0.95f, 0.95f, 0.95f); GL11.glRotatef(180, 0, 0, 1); GL11.glRotatef(90 * tile.rotation, 0, 1, 0); GL11.glColor3f(1, 1, 1); - - setMaterialTexture(var1.getBlockMetadata()); - model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - GL11.glScalef(1f, 0.99f, 1f); - TextureManager manager = Minecraft.getMinecraft().getTextureManager(); - manager.bindTexture(resource); - model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + + if(ConfigClient.LegacyPedestal){ + setMaterialTexture(var1.getBlockMetadata()); + legacyModel.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + GL11.glScalef(1f, 0.99f, 1f); + TextureManager manager = Minecraft.getMinecraft().getTextureManager(); + manager.bindTexture(resource); + legacyModel.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } else { + setPedestalTexture(var1.getBlockMetadata()); + GL11.glPushMatrix(); + GL11.glScalef(1f, 1.3f, 1f); + GL11.glTranslatef(0f, -0.34f, 0f); + model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + GL11.glPopMatrix(); + GL11.glScalef(1f, 0.99f, 1f); + } if(!this.playerTooFar(tile)) doRender(tile.getStackInSlot(0)); GL11.glPopMatrix(); @@ -55,7 +73,10 @@ public class BlockPedestalRenderer extends BlockRendererInterface{ if(item == null || item.getItem() == null || item.getItem() instanceof ItemBlock) return; GL11.glPushMatrix(); - GL11.glTranslatef(0.06f, 0.30f, 0.02f); + if(ConfigClient.LegacyPedestal) + GL11.glTranslatef(0.06f, 0.30f, 0.02f); + else + GL11.glTranslatef(0.06f, 0.490f, 0.02f); GL11.glRotatef(180, 0, 0, 1); GL11.glRotatef(90, 0, 1, 0); GL11.glScalef(0.6f, 0.6f, 0.6f); @@ -90,30 +111,53 @@ public class BlockPedestalRenderer extends BlockRendererInterface{ RenderManager.instance.itemRenderer.renderItem(Minecraft.getMinecraft().thePlayer, item, 0); } GL11.glPopMatrix(); - + } @Override public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { GL11.glPushMatrix(); - GL11.glTranslatef(0, 0.44f, 0); - GL11.glScalef(0.76f, 0.66f, 0.76f); - GL11.glRotatef(180, 0, 0, 1); - GL11.glRotatef(180, 0, 1, 0); - setMaterialTexture(metadata); - GL11.glColor3f(1, 1, 1); - model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - + if(ConfigClient.LegacyPedestal){ + GL11.glTranslatef(0, 0.44f, 0); + GL11.glScalef(0.76f, 0.66f, 0.76f); + GL11.glRotatef(180, 0, 0, 1); + GL11.glRotatef(180, 0, 1, 0); + setMaterialTexture(metadata); + GL11.glColor3f(1, 1, 1); + legacyModel.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } else { + GL11.glTranslatef(0, 1.9f, 0); + GL11.glScalef(1f, 1.4f, 1f); + GL11.glRotatef(180, 0, 0, 1); + GL11.glRotatef(180, 0, 1, 0); + setPedestalTexture(metadata); + GL11.glColor3f(1, 1, 1); + model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } GL11.glPopMatrix(); } + public void setPedestalTexture(int meta){ + TextureManager manager = Minecraft.getMinecraft().getTextureManager(); + if(meta == 1) + manager.bindTexture(stone); + else if(meta == 2) + manager.bindTexture(iron); + else if(meta == 3) + manager.bindTexture(gold); + else if(meta == 4) + manager.bindTexture(diamond); + else + manager.bindTexture(wood); + } + @Override public int getRenderId() { return CustomItems.pedestal.getRenderType(); } - + public int specialRenderDistance(){ return 40; } diff --git a/src/main/java/noppes/npcs/config/ConfigClient.java b/src/main/java/noppes/npcs/config/ConfigClient.java index 4d2ac9950..459268552 100644 --- a/src/main/java/noppes/npcs/config/ConfigClient.java +++ b/src/main/java/noppes/npcs/config/ConfigClient.java @@ -94,6 +94,7 @@ public class ConfigClient public static boolean LegacyLantern = false; public static boolean LegacyCandle = false; public static boolean LegacyTallLamp = false; + public static boolean LegacyPedestal = false; public static void init(File configFile) { @@ -165,6 +166,7 @@ public class ConfigClient LegacyLantern = config.get(MODEL, "Legacy Lantern Model", false).getBoolean(false); LegacyCandle = config.get(MODEL, "Legacy Candle Model", false).getBoolean(false); LegacyTallLamp = config.get(MODEL, "Legacy Tall Lamp Model", false).getBoolean(false); + LegacyPedestal = config.get(MODEL, "Legacy Pedestal Model", false).getBoolean(false); // Convert to Legacy if(CustomNpcs.legacyExist){ diff --git a/src/main/resources/assets/customnpcs/textures/models/npcPedestal.png b/src/main/resources/assets/customnpcs/textures/models/legacy/npcPedestal.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/models/npcPedestal.png rename to src/main/resources/assets/customnpcs/textures/models/legacy/npcPedestal.png diff --git a/src/main/resources/assets/customnpcs/textures/models/pedestal/diamond.png b/src/main/resources/assets/customnpcs/textures/models/pedestal/diamond.png new file mode 100644 index 0000000000000000000000000000000000000000..262380e513437c4290e2379a72e6d1850f2aebf5 GIT binary patch literal 1280 zcmV+b1^@bqP)Px(x=BPqRCt{2nK5tMRuISk6eXH8L7{4(MMmw(h2TLQJQym9qCkNz9y4~zkj~xu z8QLjhfCBd9(Lk1dfwYLA030fyDG@KVQfX0)1|%ra5@>dy?)j0TB$Ae7BY3}w;=6l( zcf5D+-dRFMj<5Q`et8=g_7FAIhprfC$P+f+@k?;W4s^x9g*^lS?3cIMyCm7ZCxhnv z?NLq2x~98O$f{sF0W+fS$#BOGI(~_bH{=O3)OG?UzsPvfvz=fyR%IZw1BjaH0}GrG zXOZzV*L{%L0cAtNk))%ksi>(w+Xk2#MjS~x%7(<`36jwjgXuRlmC0|K+!4_6OU!V0 z>_px#(jiDkSB!-^>n2wYXa{b@03ezWVU$T2_ysVq~K**Bai9x zb8ed4TcGdBY>y{7A&I#0y#9Sr%%fyG0qWHo0JlZ}GFtGUD+Y9>1bg5{v75NVDfo^=6Hy=leJXB&zKRJ~72J zb-Z$;akCeG?Rxcwy#v7R0&)4IzroAL*F({9xTDXk=dO2$0`GPHh)P;4eQ9e@zzg#o z+_3|*=i>QZ1y6PrSc3xGv4gYL8<;(pi;QgZn>`n2tvAg0C%X!s?^R&-!usQd`3}~g zu#$)=QaDGmbXd2?k0z20ztA3l8(7^-w09MB{1UA01?tt$P~Y9d;f~I}D33dKZWE=Z zqBZi^O>y4*ot*e9)c^oAM$gN}Xq=xji##uv zWIaW2C3c}{2jPC_OIykTv`4|+{&>Cf|0XNH?;l_FBm00)u<>^U zjlKTspLD0dk)-3<@Cumj--bM42DU~X%0`$RBjG)DQfnOQ{kZ)I=lGD*%*Fij=_fcq z7!{|L_iW8XyW+C7(pmuEo2iF7)&c;0@p&EfsuwA002wtn=x~lACv4)j z7dM{&K+yzyyOmRyUk!Nzt9!|QTiwgV5;kpzXjRxwfYabTi%#D7c-M)H=Oc1y1W-q( z9k}@UtNp}#J&;@=@!R1@(s6FA&k@U7ZgjlUmN*@ZaqW$=U4|AlHL##LvQE;r+%S_5 zLQ>~|WyTZwH0e=s!xkm4KL^Zjxy@eDDJK-GFJA?S6&Tq1q(mVma5?l!1v7q98Nw2m{TYG^v4ATUw@gYPDt~C;-?T@!nRZm#Wa8LS(X)T zV4g)RGQOtz?4L07{(dguD<)0Ljd)xMBc<=j*^}TyC2h+s-nT^FhR8!@ezp(8o==7> z2i)t5S45hYTfC`5IpU*mK$?~tUldW*c;bzgUxyz$NyqrSK0?xOfj}S-2m}IwKp+qZ q1OkCTAP@)y0)apv5C{YxKmP;B#(u<-wjHGa0000 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/pedestal/gold.png b/src/main/resources/assets/customnpcs/textures/models/pedestal/gold.png new file mode 100644 index 0000000000000000000000000000000000000000..413965f589a372d84462b58c57fea506e6c0bf24 GIT binary patch literal 998 zcmVPx&ph-kQRCt{2n9ob&P!Pwzku%7RjA7tA7ve}MJq(Ze3S3JYHLkMR%K z;~w_tar+Or3yTVBDGEytl|m?_v9*EhA$cz^Y5IF@E6nHO>w7cL%w#fe=1G{6&Q--< z&u`7y>mzS)`9(8x z1o%#m8!mO-*!(CR2Gj9#>PVfpW@-n>Z4a<(F$0k11iJ>g?Q!{G#`E8y{GypT0x-;w zH_&-YW^+Kx=0mCL1_>^2@ZU)pHs))21Co}F8!yT)keM97vbXCrgE4z}!3j(T!bu^@ zpk+t;!k&v}=CtcNP5#ZgXhKD3T;3S|HWS8+`paUb2$0(zRILylbLG{iGQ&9lvEHHIsN>;Yhk2yo)v^Ep znNk_Im(SR#w4sE~pSO2d6TKcQPEsD0pX(v!*(v&sI+Vk6D0?PeEeqz6HdKD<{X^rG zJrl~|Ir@z{%(K&&{JgBOupBs|lE+jSrcD0&j||u~WJ+aT=qSZvw3d(;oxt`_9-RaG zhf&1}EB3#{{pUrxzS#GB-43$34fMJlzL3pr007t;8;@IK>*Ai%$cu85JkP<``96WM z%AKoBiZZsGm@I3|lBqYBi20O9w`Lm0uC&O%Y? zy3twB+TK>6hw=&Vbobv4n3t*QfV3N(0hz?TfSBc1k+BiLySbc-+so%z9x#uzl!~wr zyZzxeL`&-S#xZdOq}}qQ)$fzu5UmPhBf!&TC`J{qYcM~5NbT!cEuSoSe5V&nhMxZ3 zbHIp84UD=RSz*RHV3Hdhk#RRftA=!avF{^MU?5Sb?4Ja^LYm={mc_4cQD}>MB=_At z-i+x1@jBt=`(J$e@_VJ~1cD$4f*=TjAP9mW2!bF8f*=TjAP9mW2!bF8f_TUL1EOO} UdE`N~8UO$Q07*qoM6N<$f)&o_2LJ#7 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/pedestal/iron.png b/src/main/resources/assets/customnpcs/textures/models/pedestal/iron.png new file mode 100644 index 0000000000000000000000000000000000000000..dd3e15089832c62eb956476ae930b92eba2bc43e GIT binary patch literal 925 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 W51pNZSwr&x0000