From dfb4c511ccee767672b3f3c0aa5f973a5a35668d Mon Sep 17 00:00:00 2001 From: Kam Date: Tue, 4 Feb 2025 15:39:25 -0500 Subject: [PATCH] Revamped Model Table --- .../npcs/client/model/blocks/ModelTable.java | 105 ++++++++++++------ .../model/blocks/legacy/ModelLegacyTable.java | 53 +++++++++ .../renderer/blocks/BlockTableRenderer.java | 99 ++++++++++++----- .../java/noppes/npcs/config/ConfigClient.java | 2 + .../textures/models/table/acacia.png | Bin 0 -> 986 bytes .../textures/models/table/birch.png | Bin 0 -> 1064 bytes .../textures/models/table/dark_oak.png | Bin 0 -> 840 bytes .../textures/models/table/jungle.png | Bin 0 -> 1379 bytes .../customnpcs/textures/models/table/oak.png | Bin 0 -> 1015 bytes .../textures/models/table/spruce.png | Bin 0 -> 961 bytes 10 files changed, 197 insertions(+), 62 deletions(-) create mode 100644 src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyTable.java create mode 100644 src/main/resources/assets/customnpcs/textures/models/table/acacia.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/table/birch.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/table/dark_oak.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/table/jungle.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/table/oak.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/table/spruce.png diff --git a/src/main/java/noppes/npcs/client/model/blocks/ModelTable.java b/src/main/java/noppes/npcs/client/model/blocks/ModelTable.java index df4b79fef..e44916856 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/ModelTable.java +++ b/src/main/java/noppes/npcs/client/model/blocks/ModelTable.java @@ -1,53 +1,86 @@ 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; public class ModelTable extends ModelBase { - public ModelRenderer Shape1; - public ModelRenderer Table; - public ModelRenderer Shape3; - public ModelRenderer Shape4; - public ModelRenderer Shape5; + public final ModelRenderer Shape1; + private final ModelRenderer cube_r1; + private final ModelRenderer cube_r2; + public final ModelRenderer Shape3; + public final ModelRenderer Shape4; + private final ModelRenderer cube_r3; + public final ModelRenderer Shape2; + private final ModelRenderer cube_r4; + public final ModelRenderer Table; public ModelTable() { - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.mirror = true; - Shape1.addBox(-1F, 0F, -1F, 2, 14, 2); - Shape1.setRotationPoint(-6F, 10F, 6F); - - Table = new ModelRenderer(this, 0, 0); - Table.addBox(0F, -2F, 0F, 16, 2, 16); - Table.setRotationPoint(-8F, 10F, -8F); - - Shape3 = new ModelRenderer(this, 0, 0); - Shape3.addBox(-1F, 0F, -1F, 2, 14, 2); - Shape3.setRotationPoint(6F, 10F, -6F); - - Shape4 = new ModelRenderer(this, 0, 0); - Shape4.addBox(-1F, 0F, -1F, 2, 14, 2); - Shape4.setRotationPoint(6F, 10F, 6F); - - Shape5 = new ModelRenderer(this, 0, 0); - Shape5.mirror = true; - Shape5.addBox(-1F, 0F, -1F, 2, 14, 2); - Shape5.setRotationPoint(-6F, 10F, -6F); + textureWidth = 64; + textureHeight = 64; + + Shape1 = new ModelRenderer(this); + Shape1.setRotationPoint(-4.8333F, 14.8333F, 4.8333F); + Shape1.cubeList.add(new ModelBox(Shape1, 0, 19, -2.1667F, -3.8333F, 0.1667F, 2, 13, 2, 0.0F)); + + cube_r1 = new ModelRenderer(this); + cube_r1.setRotationPoint(-1.1667F, -1.3333F, -2.3333F); + Shape1.addChild(cube_r1); + setRotationAngle(cube_r1, 0.0F, 3.1416F, 0.0F); + cube_r1.cubeList.add(new ModelBox(cube_r1, 8, 14, 0.0F, -2.5F, -2.5F, 0, 5, 5, 0.0F)); + + cube_r2 = new ModelRenderer(this); + cube_r2.setRotationPoint(2.3333F, -1.3333F, 1.1667F); + Shape1.addChild(cube_r2); + setRotationAngle(cube_r2, 0.0F, 3.1416F, 0.0F); + cube_r2.cubeList.add(new ModelBox(cube_r2, 8, 19, -2.5F, -2.5F, 0.0F, 5, 5, 0, 0.0F)); + + Shape3 = new ModelRenderer(this); + Shape3.setRotationPoint(-6.0F, 24.0F, 6.0F); + Shape3.cubeList.add(new ModelBox(Shape3, 8, 19, 6.0F, -13.0F, -12.0F, 5, 5, 0, 0.0F)); + Shape3.cubeList.add(new ModelBox(Shape3, 0, 19, 11.0F, -13.0F, -13.0F, 2, 13, 2, 0.0F)); + Shape3.cubeList.add(new ModelBox(Shape3, 8, 14, 12.0F, -13.0F, -11.0F, 0, 5, 5, 0.0F)); + + Shape4 = new ModelRenderer(this); + Shape4.setRotationPoint(-6.0F, 24.0F, 6.0F); + Shape4.cubeList.add(new ModelBox(Shape4, 8, 19, 6.0F, -13.0F, 0.0F, 5, 5, 0, 0.0F)); + Shape4.cubeList.add(new ModelBox(Shape4, 0, 19, 11.0F, -13.0F, -1.0F, 2, 13, 2, 0.0F)); + + cube_r3 = new ModelRenderer(this); + cube_r3.setRotationPoint(12.0F, -10.5F, -3.5F); + Shape4.addChild(cube_r3); + setRotationAngle(cube_r3, 0.0F, 3.1416F, 0.0F); + cube_r3.cubeList.add(new ModelBox(cube_r3, 8, 14, 0.0F, -2.5F, -2.5F, 0, 5, 5, 0.0F)); + + Shape2 = new ModelRenderer(this); + Shape2.setRotationPoint(0.0F, 24.0F, 6.0F); + Shape2.cubeList.add(new ModelBox(Shape2, 0, 19, -7.0F, -13.0F, -13.0F, 2, 13, 2, 0.0F)); + Shape2.cubeList.add(new ModelBox(Shape2, 8, 14, -6.0F, -13.0F, -11.0F, 0, 5, 5, 0.0F)); + + cube_r4 = new ModelRenderer(this); + cube_r4.setRotationPoint(-2.5F, -10.5F, -12.0F); + Shape2.addChild(cube_r4); + setRotationAngle(cube_r4, 0.0F, 3.1416F, 0.0F); + cube_r4.cubeList.add(new ModelBox(cube_r4, 8, 19, -2.5F, -2.5F, 0.0F, 5, 5, 0, 0.0F)); + + Table = new ModelRenderer(this); + Table.setRotationPoint(0.0F, 24.0F, 6.0F); + Table.cubeList.add(new ModelBox(Table, 0, 0, -8.0F, -16.0F, -14.0F, 16, 3, 16, 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); - Shape1.render(f5); + @Override + 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); + Shape1.render(f5); Shape3.render(f5); Shape4.render(f5); - Shape5.render(f5); + Shape2.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/ModelLegacyTable.java b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyTable.java new file mode 100644 index 000000000..2bd7aa165 --- /dev/null +++ b/src/main/java/noppes/npcs/client/model/blocks/legacy/ModelLegacyTable.java @@ -0,0 +1,53 @@ +package noppes.npcs.client.model.blocks.legacy; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelLegacyTable extends ModelBase { + public ModelRenderer Shape1; + public ModelRenderer Table; + public ModelRenderer Shape3; + public ModelRenderer Shape4; + public ModelRenderer Shape5; + + public ModelLegacyTable() { + Shape1 = new ModelRenderer(this, 0, 0); + Shape1.mirror = true; + Shape1.addBox(-1F, 0F, -1F, 2, 14, 2); + Shape1.setRotationPoint(-6F, 10F, 6F); + + Table = new ModelRenderer(this, 0, 0); + Table.addBox(0F, -2F, 0F, 16, 2, 16); + Table.setRotationPoint(-8F, 10F, -8F); + + Shape3 = new ModelRenderer(this, 0, 0); + Shape3.addBox(-1F, 0F, -1F, 2, 14, 2); + Shape3.setRotationPoint(6F, 10F, -6F); + + Shape4 = new ModelRenderer(this, 0, 0); + Shape4.addBox(-1F, 0F, -1F, 2, 14, 2); + Shape4.setRotationPoint(6F, 10F, 6F); + + Shape5 = new ModelRenderer(this, 0, 0); + Shape5.mirror = true; + Shape5.addBox(-1F, 0F, -1F, 2, 14, 2); + Shape5.setRotationPoint(-6F, 10F, -6F); + } + + 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); + Shape1.render(f5); + Shape3.render(f5); + Shape4.render(f5); + Shape5.render(f5); + } + + 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/BlockTableRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockTableRenderer.java index 9a492bf4c..9cc53b0da 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockTableRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockTableRenderer.java @@ -2,25 +2,31 @@ package noppes.npcs.client.renderer.blocks; import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; import noppes.npcs.CustomItems; import noppes.npcs.blocks.BlockTable; import noppes.npcs.blocks.tiles.TileColorable; import noppes.npcs.client.model.blocks.ModelTable; +import noppes.npcs.client.model.blocks.legacy.ModelLegacyTable; +import noppes.npcs.config.ConfigClient; import org.lwjgl.opengl.GL11; public class BlockTableRenderer extends BlockRendererInterface{ - private final ModelTable model = new ModelTable(); - private static final ResourceLocation resource1 = new ResourceLocation("customnpcs","textures/cache/planks_oak.png"); - private static final ResourceLocation resource2 = new ResourceLocation("customnpcs","textures/cache/planks_big_oak.png"); - private static final ResourceLocation resource3 = new ResourceLocation("customnpcs","textures/cache/planks_spruce.png"); - private static final ResourceLocation resource4 = new ResourceLocation("customnpcs","textures/cache/planks_birch.png"); - private static final ResourceLocation resource5 = new ResourceLocation("customnpcs","textures/cache/planks_acacia.png"); - private static final ResourceLocation resource6 = new ResourceLocation("customnpcs","textures/cache/planks_jungle.png"); - + private final ModelLegacyTable legacyTable = new ModelLegacyTable(); + private final ModelTable table = new ModelTable(); + + private static final ResourceLocation oak = new ResourceLocation("customnpcs","textures/models/table/oak.png"); + private static final ResourceLocation spruce = new ResourceLocation("customnpcs","textures/models/table/spruce.png"); + private static final ResourceLocation birch = new ResourceLocation("customnpcs","textures/models/table/birch.png"); + private static final ResourceLocation jungle = new ResourceLocation("customnpcs","textures/models/table/jungle.png"); + private static final ResourceLocation acacia = new ResourceLocation("customnpcs","textures/models/table/acacia.png"); + private static final ResourceLocation dark_oak = new ResourceLocation("customnpcs","textures/models/table/dark_oak.png"); + public BlockTableRenderer(){ ((BlockTable)CustomItems.table).renderId = RenderingRegistry.getNextAvailableRenderId(); RenderingRegistry.registerBlockHandler(this); @@ -39,15 +45,29 @@ public class BlockTableRenderer extends BlockRendererInterface{ boolean east = var1.getWorldObj().getBlock(var1.xCoord, var1.yCoord, var1.zCoord + 1) == CustomItems.table; boolean west = var1.getWorldObj().getBlock(var1.xCoord, var1.yCoord, var1.zCoord - 1) == CustomItems.table; - model.Shape1.showModel = !south && !east; - model.Shape3.showModel = !north && !west; - model.Shape4.showModel = !north && !east; - model.Shape5.showModel = !south && !west; - - setWoodTexture(var1.getBlockMetadata()); - model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - GL11.glRotatef(90 * tile.rotation, 0, 1, 0); - model.Table.render(0.0625f); + legacyTable.Shape1.showModel = !south && !east; + legacyTable.Shape3.showModel = !north && !west; + legacyTable.Shape4.showModel = !north && !east; + legacyTable.Shape5.showModel = !south && !west; + + table.Shape1.showModel = !south && !east; + table.Shape2.showModel = !south && !west; + table.Shape3.showModel = !north && !west; + table.Shape4.showModel = !north && !east; + + if(ConfigClient.LegacyTable){ + setWoodTexture(var1.getBlockMetadata()); + legacyTable.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + GL11.glRotatef(90 * tile.rotation, 0, 1, 0); + legacyTable.Table.render(0.0625f); + } else { + GL11.glEnable(GL11.GL_ALPHA_TEST); + setTableTexture(var1.getBlockMetadata()); + table.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + GL11.glRotatef(90 * tile.rotation, 0, 1, 0); + table.Table.render(0.0625f); + GL11.glDisable(GL11.GL_ALPHA_TEST); + } GL11.glPopMatrix(); } @@ -60,18 +80,45 @@ public class BlockTableRenderer extends BlockRendererInterface{ GL11.glRotatef(180, 0, 0, 1); GL11.glRotatef(180, 0, 1, 0); - setWoodTexture(metadata); - GL11.glColor3f(1, 1, 1); - model.Table.render(0.0625f); - model.Shape1.showModel = true; - model.Shape3.showModel = true; - model.Shape4.showModel = true; - model.Shape5.showModel = true; - model.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - + if(ConfigClient.LegacyTable){ + setWoodTexture(metadata); + GL11.glColor3f(1, 1, 1); + legacyTable.Table.render(0.0625f); + legacyTable.Shape1.showModel = true; + legacyTable.Shape3.showModel = true; + legacyTable.Shape4.showModel = true; + legacyTable.Shape5.showModel = true; + legacyTable.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } else { + setTableTexture(metadata); + GL11.glColor3f(1, 1, 1); + table.Table.render(0.0625f); + table.Shape1.showModel = true; + table.Shape2.showModel = true; + table.Shape3.showModel = true; + table.Shape4.showModel = true; + table.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + } + GL11.glPopMatrix(); } + public void setTableTexture(int meta){ + TextureManager manager = Minecraft.getMinecraft().getTextureManager(); + if(meta == 1) + manager.bindTexture(spruce); + else if(meta == 2) + manager.bindTexture(birch); + else if(meta == 3) + manager.bindTexture(jungle); + else if(meta == 4) + manager.bindTexture(acacia); + else if(meta == 5) + manager.bindTexture(dark_oak); + else + manager.bindTexture(oak); + } + @Override public int getRenderId() { return CustomItems.table.getRenderType(); diff --git a/src/main/java/noppes/npcs/config/ConfigClient.java b/src/main/java/noppes/npcs/config/ConfigClient.java index f44dda428..1d522cd84 100644 --- a/src/main/java/noppes/npcs/config/ConfigClient.java +++ b/src/main/java/noppes/npcs/config/ConfigClient.java @@ -86,6 +86,7 @@ public class ConfigClient public static boolean LegacyBanner = false; public static boolean LegacyChair = false; public static boolean LegacyStool = false; + public static boolean LegacyTable = false; public static boolean LegacyBarrel = false; public static boolean LegacyCarpentryBench = false; @@ -152,6 +153,7 @@ public class ConfigClient LegacyBarrel = config.get(MODEL, "Legacy Barrel Model", false).getBoolean(false); LegacyChair = config.get(MODEL, "Legacy Chair Model", false).getBoolean(false); LegacyStool = config.get(MODEL, "Legacy Stool Model", false).getBoolean(false); + LegacyTable = config.get(MODEL, "Legacy Table Model", false).getBoolean(false); LegacyCarpentryBench = config.get(MODEL, "Legacy Carpentry Bench Model", false).getBoolean(false); // Convert to Legacy diff --git a/src/main/resources/assets/customnpcs/textures/models/table/acacia.png b/src/main/resources/assets/customnpcs/textures/models/table/acacia.png new file mode 100644 index 0000000000000000000000000000000000000000..ae87e7dbc48b63d84ad915219de7f37c246975c5 GIT binary patch literal 986 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/table/oak.png b/src/main/resources/assets/customnpcs/textures/models/table/oak.png new file mode 100644 index 0000000000000000000000000000000000000000..d087fc65cc2ab8c217587694c445772875f1759c GIT binary patch literal 1015 zcmVPx&mq|oHRCt{2nLkJyQ5?s=i3ieLOn46zB1v0yC|E)0;?SvEp-8)S>EKe3Zq9bl z*{u{@9J)BxQVJakP90pFB+#KMMhx6=k4tiq49Rtf@8#X)j+%Q1n&f@9_wM~JzxU_& z{k`8M1x0>-dgsaQcFV!UWL~tH%|Ix*_4@|3fBE4{Y7l>e7%Ij9@b%X*W~hn9$1?x` z<}?7*BFA^110~F1lgc2~D0RU!855==092fS%LsmIDA{OuOYM+pD6y0Kbp_ z000Uk1CsBE7zMg<8idDql{H2DtJtfeya3OiJps_$vDs4Z*|l5mQ+1$wYUbzs?}=-_ zdvK!Ue_|RCbxdXF+bst+8=;P`wkCAt^VPE=keiHU^Nvsy==J70;)9BCNZa0ok&nhBrE&H!{tZJ`< zvIYdJL7*pGvcmHnt+^f1A64lMV*mEz_q){q*;(#n&P+#+A(P!cp3}o78(fqy`>=6w zNbPT}dSxjUg&o84x#cTYtE?&7!bz!24THZkYMk63Hir8kr$E_?3W?Bdna~h&dCA1Ep61w_P>8oL1g3uBkm{Y#1F2CGlX%WmR3m*ur8ssxd@;+_z23)4eAc>qYsSJ|)+4zD)8i3xt* zc;WFpTp$^&?;H;G2GDmnlt|}J*djHA<+oOyYL14T^ zaD28pg0WwKu}^~Px&VM#G?|GDK8BhUR;3iF-Rcosx%NA_ zNZh1xlee%NH%8jwNU4Q7@Uw->t-B;%>`tBjO^Yrnfo_w{cm?+JHpqJH(iRy1-jRMA`N$_1! zg|V5deQ8nva$k~_p>Jvoxi2{wB`}UwyCr(1bTlG!9%~e7;(2Tmib`Qk+8PuLUXwY` z!nt1Gkue+NaGHr(&p%9px<#ehJ!6S>z@i9-DWK$RQ6U+5tx<#Byv5 z$L5fS677JCENk0soNkHn-gUO;fSlrg&Ar%?BOZ#>0kI269Uygp)B#clfYbpyTL-AK zlVd-#6P6v1HZeA{696uM`}&Q6ZKF{T~AYa~s> zYSsHSym|Lg&8+3c^Jg2+oEOiZ`I)slYdnBDKb`yT;|S@t{aqcg#Y31|N zxj!7k%b!2&tnpBvfHd*FqGBjRFw`2w`RUv@PTO_k0g~L86qTZ=6uB=M%3WT)eXkbI zv2c!8Z{P2{@lZbodnN1^xyvrc`!wu@;;NSUpe7$3`2R}(M6?LxbR|b>#wmxd7sf~;@giJP4zdF z_ZfY8y*}!f*WrIC3xXgBf*=TjAP9mW2!bF8f*=TjAPB;4^BMO>ic