From c6bb5b1b74de07edfdd7f8e64e6a80d32df40e55 Mon Sep 17 00:00:00 2001 From: Kam Date: Wed, 12 Feb 2025 05:23:27 -0500 Subject: [PATCH] Couches WIP --- .../client/model/blocks/couch/ModelCouch.java | 43 ----- .../model/blocks/couch/ModelCouchCorner.java | 92 ++++++----- .../model/blocks/couch/ModelCouchLeft.java | 68 ++++---- .../model/blocks/couch/ModelCouchMiddle.java | 40 +++++ .../model/blocks/couch/ModelCouchRight.java | 70 +++++---- .../model/blocks/couch/ModelCouchSingle.java | 79 ++++++---- .../blocks/BlockCouchWoolRenderer.java | 147 +++++++++++++++--- .../textures/models/couch/acacia.png | Bin 0 -> 1502 bytes .../textures/models/couch/birch.png | Bin 0 -> 1594 bytes .../textures/models/couch/dark_oak.png | Bin 0 -> 1454 bytes .../textures/models/couch/jungle.png | Bin 0 -> 1581 bytes .../customnpcs/textures/models/couch/oak.png | Bin 0 -> 1709 bytes .../textures/models/couch/spruce.png | Bin 0 -> 1599 bytes .../customnpcs/textures/models/couch/wool.png | Bin 0 -> 1219 bytes 14 files changed, 329 insertions(+), 210 deletions(-) delete mode 100644 src/main/java/noppes/npcs/client/model/blocks/couch/ModelCouch.java create mode 100644 src/main/java/noppes/npcs/client/model/blocks/couch/ModelCouchMiddle.java create mode 100644 src/main/resources/assets/customnpcs/textures/models/couch/acacia.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/couch/birch.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/couch/dark_oak.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/couch/jungle.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/couch/oak.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/couch/spruce.png create mode 100644 src/main/resources/assets/customnpcs/textures/models/couch/wool.png diff --git a/src/main/java/noppes/npcs/client/model/blocks/couch/ModelCouch.java b/src/main/java/noppes/npcs/client/model/blocks/couch/ModelCouch.java deleted file mode 100644 index a6988ab05..000000000 --- a/src/main/java/noppes/npcs/client/model/blocks/couch/ModelCouch.java +++ /dev/null @@ -1,43 +0,0 @@ -package noppes.npcs.client.model.blocks.couch; - -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 ModelCouch extends ModelBase { - public final ModelRenderer CouchBack; - public final ModelRenderer Cussion; - - public ModelCouch() { - textureWidth = 64; - textureHeight = 64; - - CouchBack = new ModelRenderer(this); - CouchBack.setRotationPoint(0.0F, 24.0F, 0.0F); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 0, -8.0F, -1.0F, -8.0F, 2, 1, 2, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 0, 6.0F, -1.0F, -8.0F, 2, 1, 2, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 0, -8.0F, -1.0F, 6.0F, 2, 1, 2, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 0, 6.0F, -1.0F, 6.0F, 2, 1, 2, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 18, -8.0F, -2.0F, -8.0F, 16, 1, 15, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 46, -8.0F, -10.0F, 7.0F, 16, 9, 1, 0.0F)); - - Cussion = new ModelRenderer(this); - Cussion.setRotationPoint(0.0F, 24.0F, 0.0F); - Cussion.cubeList.add(new ModelBox(Cussion, 0, 0, -8.0F, -5.0F, -8.0F, 16, 3, 15, 0.0F)); - Cussion.cubeList.add(new ModelBox(Cussion, 0, 34, -8.0F, -14.0F, 4.0F, 16, 9, 3, 0.0F)); - Cussion.cubeList.add(new ModelBox(Cussion, 0, 56, -8.0F, -14.0F, 7.0F, 16, 4, 1, 0.0F)); - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - CouchBack.render(f5); - Cussion.render(f5); - } - - 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/couch/ModelCouchCorner.java b/src/main/java/noppes/npcs/client/model/blocks/couch/ModelCouchCorner.java index cd38b2005..7dc2bc3ee 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/couch/ModelCouchCorner.java +++ b/src/main/java/noppes/npcs/client/model/blocks/couch/ModelCouchCorner.java @@ -6,59 +6,57 @@ import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; public class ModelCouchCorner extends ModelBase { - private final ModelRenderer CouchBack; - private final ModelRenderer cube_r1; - private final ModelRenderer Cussion; - private final ModelRenderer cube_r2; - private final ModelRenderer cube_r3; + public final ModelRenderer CouchBack; + public final ModelRenderer Cussion; - public ModelCouchCorner() { - textureWidth = 16; - textureHeight = 16; + private final ModelRenderer cube_r1; + private final ModelRenderer cube_r2; + private final ModelRenderer cube_r3; - CouchBack = new ModelRenderer(this); - CouchBack.setRotationPoint(0.0F, 24.0F, 0.0F); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 0, 6.0F, -1.0F, -8.0F, 2, 1, 2, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 0, -8.0F, -1.0F, -8.0F, 2, 1, 2, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 0, 6.0F, -1.0F, 6.0F, 2, 1, 2, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 0, -8.0F, -1.0F, 6.0F, 2, 1, 2, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, -20, -13, -8.0F, -2.0F, -8.0F, 16, 1, 15, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, -6, 1, -8.0F, -10.0F, 7.0F, 16, 9, 1, 0.0F)); + public ModelCouchCorner(){ + textureWidth = 64; + textureHeight = 64; - cube_r1 = new ModelRenderer(this); - cube_r1.setRotationPoint(-7.5F, -6.5F, -1.0F); - CouchBack.addChild(cube_r1); - setRotationAngle(cube_r1, 0.0F, -1.5708F, 0.0F); - cube_r1.cubeList.add(new ModelBox(cube_r1, -6, 1, -7.0F, -3.5F, -0.5F, 15, 8, 1, 0.0F)); + CouchBack = new ModelRenderer(this); + CouchBack.setRotationPoint(0.0F, 24.0F, 0.0F); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, -8.0F, -2.0F, -8.0F, 2, 2, 2, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, 6.0F, -2.0F, -8.0F, 2, 2, 2, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, -8.0F, -2.0F, 6.0F, 2, 2, 2, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, 6.0F, -2.0F, 6.0F, 2, 2, 2, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 1, 35, -8.0F, -3.0F, -8.0F, 15, 1, 15, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 51, -8.0F, -12.0F, 7.0F, 16, 10, 1, 0.0F)); - Cussion = new ModelRenderer(this); - Cussion.setRotationPoint(0.0F, 24.0F, 0.0F); - Cussion.cubeList.add(new ModelBox(Cussion, -20, -13, -7.0F, -5.0F, -8.0F, 15, 3, 15, 0.0F)); - Cussion.cubeList.add(new ModelBox(Cussion, -8, -1, -7.0F, -14.0F, 4.0F, 15, 9, 3, 0.0F)); - Cussion.cubeList.add(new ModelBox(Cussion, -6, 1, -8.0F, -14.0F, 7.0F, 16, 4, 1, 0.0F)); + cube_r1 = new ModelRenderer(this); + cube_r1.setRotationPoint(7.5F, -7.5F, -1.0F); + CouchBack.addChild(cube_r1); + setRotationAngle(cube_r1, 0.0F, 1.5708F, 0.0F); + cube_r1.cubeList.add(new ModelBox(cube_r1, 1, 51, -8.0F, -4.5F, -0.5F, 15, 10, 1, 0.0F)); - cube_r2 = new ModelRenderer(this); - cube_r2.setRotationPoint(-7.5F, -12.0F, -1.0F); - Cussion.addChild(cube_r2); - setRotationAngle(cube_r2, 0.0F, -1.5708F, 0.0F); - cube_r2.cubeList.add(new ModelBox(cube_r2, -6, 1, -7.0F, -2.0F, -0.5F, 15, 4, 1, 0.0F)); + Cussion = new ModelRenderer(this); + Cussion.setRotationPoint(0.0F, 24.0F, 0.0F); + Cussion.cubeList.add(new ModelBox(Cussion, 1, 37, -8.0F, -7.0F, -8.0F, 15, 4, 15, 0.0F)); + Cussion.cubeList.add(new ModelBox(Cussion, 1, 20, -8.0F, -16.0F, 4.0F, 15, 9, 3, 0.0F)); + Cussion.cubeList.add(new ModelBox(Cussion, 0, 32, -8.0F, -16.0F, 7.0F, 16, 4, 1, 0.0F)); - cube_r3 = new ModelRenderer(this); - cube_r3.setRotationPoint(-5.5F, -9.5F, -3.5F); - Cussion.addChild(cube_r3); - setRotationAngle(cube_r3, 0.0F, -1.5708F, 0.0F); - cube_r3.cubeList.add(new ModelBox(cube_r3, -8, -1, -4.5F, -4.5F, -1.5F, 12, 9, 3, 0.0F)); - } + cube_r2 = new ModelRenderer(this); + cube_r2.setRotationPoint(7.5F, -14.0F, -1.0F); + Cussion.addChild(cube_r2); + setRotationAngle(cube_r2, 0.0F, 1.5708F, 0.0F); + cube_r2.cubeList.add(new ModelBox(cube_r2, 1, 32, -8.0F, -2.0F, -0.5F, 15, 4, 1, 0.0F)); - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - CouchBack.render(f5); - Cussion.render(f5); - } + cube_r3 = new ModelRenderer(this); + cube_r3.setRotationPoint(5.5F, -11.5F, -3.5F); + Cussion.addChild(cube_r3); + setRotationAngle(cube_r3, 0.0F, 1.5708F, 0.0F); + cube_r3.cubeList.add(new ModelBox(cube_r3, 5, 20, -7.5F, -4.5F, -1.5F, 12, 9, 3, 0.0F)); + } - public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { - modelRenderer.rotateAngleX = x; - modelRenderer.rotateAngleY = y; - modelRenderer.rotateAngleZ = z; - } + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) {} + + 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/couch/ModelCouchLeft.java b/src/main/java/noppes/npcs/client/model/blocks/couch/ModelCouchLeft.java index b20289eee..f3179daec 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/couch/ModelCouchLeft.java +++ b/src/main/java/noppes/npcs/client/model/blocks/couch/ModelCouchLeft.java @@ -6,43 +6,43 @@ import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; public class ModelCouchLeft extends ModelBase { - private final ModelRenderer CouchBack; - private final ModelRenderer Cussion; + public final ModelRenderer CouchBack; + public final ModelRenderer Cussion; - public ModelCouchLeft() { - textureWidth = 64; - textureHeight = 64; + public ModelCouchLeft() { + textureWidth = 64; + textureHeight = 64; - CouchBack = new ModelRenderer(this); - CouchBack.setRotationPoint(0.0F, 24.0F, 0.0F); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 0, -8.0F, -1.0F, -8.0F, 2, 1, 2, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 0, 6.0F, -1.0F, -8.0F, 2, 1, 2, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 0, -8.0F, -1.0F, 6.0F, 2, 1, 2, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 0, 6.0F, -1.0F, 6.0F, 2, 1, 2, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 18, -6.0F, -2.0F, -8.0F, 14, 1, 15, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 4, 46, -6.0F, -10.0F, 7.0F, 14, 9, 1, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 13, 14, -8.0F, -5.0F, -8.0F, 2, 4, 16, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 1, 47, -8.0F, -10.0F, 4.0F, 2, 5, 4, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 15, 19, -8.0F, -10.0F, -8.0F, 2, 2, 12, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 44, 51, -7.0F, -8.0F, -6.0F, 0, 3, 10, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 15, 18, -8.0F, -8.0F, -8.0F, 2, 3, 2, 0.0F)); + CouchBack = new ModelRenderer(this); + CouchBack.setRotationPoint(0.0F, 24.0F, 0.0F); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, -8.0F, -2.0F, -8.0F, 2, 2, 2, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, 6.0F, -2.0F, -8.0F, 2, 2, 2, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, -8.0F, -2.0F, 6.0F, 2, 2, 2, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, 6.0F, -2.0F, 6.0F, 2, 2, 2, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, -6.0F, -3.0F, -8.0F, 14, 1, 15, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 51, -6.0F, -12.0F, 7.0F, 14, 10, 1, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 21, -8.0F, -6.0F, -6.0F, 2, 4, 10, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 22, 48, -8.0F, -12.0F, 4.0F, 2, 10, 4, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 24, 21, -8.0F, -12.0F, -8.0F, 2, 2, 12, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 14, 17, -7.0F, -10.0F, -6.0F, 0, 4, 10, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 40, 23, -8.0F, -10.0F, -8.0F, 2, 8, 2, 0.0F)); - Cussion = new ModelRenderer(this); - Cussion.setRotationPoint(0.0F, 24.0F, 0.0F); - Cussion.cubeList.add(new ModelBox(Cussion, 1, 0, -6.0F, -5.0F, -8.0F, 14, 3, 15, 0.0F)); - Cussion.cubeList.add(new ModelBox(Cussion, 1, 34, -6.0F, -14.0F, 4.0F, 14, 9, 3, 0.0F)); - Cussion.cubeList.add(new ModelBox(Cussion, 3, 56, -6.0F, -14.0F, 7.0F, 14, 4, 1, 0.0F)); - } + Cussion = new ModelRenderer(this); + Cussion.setRotationPoint(0.0F, 24.0F, 0.0F); + Cussion.cubeList.add(new ModelBox(Cussion, 2, 0, -6.0F, -7.0F, -8.0F, 14, 4, 15, 0.0F)); + Cussion.cubeList.add(new ModelBox(Cussion, 2, 19, -6.0F, -16.0F, 3.0F, 14, 9, 4, 0.0F)); + Cussion.cubeList.add(new ModelBox(Cussion, 2, 32, -6.0F, -16.0F, 7.0F, 14, 4, 1, 0.0F)); + } - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - CouchBack.render(f5); - Cussion.render(f5); - } + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + CouchBack.render(f5); + Cussion.render(f5); + } - public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { - modelRenderer.rotateAngleX = x; - modelRenderer.rotateAngleY = y; - modelRenderer.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/couch/ModelCouchMiddle.java b/src/main/java/noppes/npcs/client/model/blocks/couch/ModelCouchMiddle.java new file mode 100644 index 000000000..b7fc591b3 --- /dev/null +++ b/src/main/java/noppes/npcs/client/model/blocks/couch/ModelCouchMiddle.java @@ -0,0 +1,40 @@ +package noppes.npcs.client.model.blocks.couch; + +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 ModelCouchMiddle extends ModelBase { + public final ModelRenderer CouchBack; + public final ModelRenderer Cussion; + + public ModelCouchMiddle() { + textureWidth = 64; + textureHeight = 64; + + CouchBack = new ModelRenderer(this); + CouchBack.setRotationPoint(0.0F, 24.0F, 0.0F); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, -8.0F, -2.0F, -8.0F, 2, 2, 2, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, 6.0F, -2.0F, -8.0F, 2, 2, 2, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, -8.0F, -2.0F, 6.0F, 2, 2, 2, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, 6.0F, -2.0F, 6.0F, 2, 2, 2, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, -8.0F, -3.0F, -8.0F, 16, 1, 15, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 51, -8.0F, -12.0F, 7.0F, 16, 10, 1, 0.0F)); + + Cussion = new ModelRenderer(this); + Cussion.setRotationPoint(0.0F, 24.0F, 0.0F); + Cussion.cubeList.add(new ModelBox(Cussion, 0, 0, -8.0F, -7.0F, -8.0F, 16, 4, 15, 0.0F)); + Cussion.cubeList.add(new ModelBox(Cussion, 0, 19, -8.0F, -16.0F, 3.0F, 16, 9, 4, 0.0F)); + Cussion.cubeList.add(new ModelBox(Cussion, 0, 32, -8.0F, -16.0F, 7.0F, 16, 4, 1, 0.0F)); + } + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) {} + + 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/couch/ModelCouchRight.java b/src/main/java/noppes/npcs/client/model/blocks/couch/ModelCouchRight.java index d9f6423a5..be64e10b8 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/couch/ModelCouchRight.java +++ b/src/main/java/noppes/npcs/client/model/blocks/couch/ModelCouchRight.java @@ -6,43 +6,45 @@ import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; public class ModelCouchRight extends ModelBase { - private final ModelRenderer CouchBack; - private final ModelRenderer Cussion; + public final ModelRenderer CouchBack; + public final ModelRenderer Cussion; - public ModelCouchRight() { - textureWidth = 64; - textureHeight = 64; + public ModelCouchRight() { + textureWidth = 64; + textureHeight = 64; - CouchBack = new ModelRenderer(this); - CouchBack.setRotationPoint(0.0F, 24.0F, 0.0F); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 0, 6.0F, -1.0F, -8.0F, 2, 1, 2, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 0, -8.0F, -1.0F, -8.0F, 2, 1, 2, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 0, 6.0F, -1.0F, 6.0F, 2, 1, 2, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 0, -8.0F, -1.0F, 6.0F, 2, 1, 2, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, -8.0F, -2.0F, -8.0F, 14, 1, 15, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 51, -8.0F, -10.0F, 7.0F, 14, 9, 1, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 36, 50, 6.0F, -5.0F, -6.0F, 2, 4, 10, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 52, 35, 6.0F, -10.0F, 4.0F, 2, 9, 4, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 36, 50, 6.0F, -10.0F, -8.0F, 2, 2, 12, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 44, 51, 7.0F, -8.0F, -6.0F, 0, 3, 10, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 15, 18, 6.0F, -8.0F, -8.0F, 2, 7, 2, 0.0F)); + CouchBack = new ModelRenderer(this); + CouchBack.mirror = true; + CouchBack.setRotationPoint(0.0F, 24.0F, 0.0F); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, 6.0F, -2.0F, -8.0F, 2, 2, 2, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, -8.0F, -2.0F, -8.0F, 2, 2, 2, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, 6.0F, -2.0F, 6.0F, 2, 2, 2, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, -8.0F, -2.0F, 6.0F, 2, 2, 2, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, -8.0F, -3.0F, -8.0F, 14, 1, 15, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 51, -8.0F, -12.0F, 7.0F, 14, 10, 1, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 21, 6.0F, -6.0F, -6.0F, 2, 4, 10, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 22, 48, 6.0F, -12.0F, 4.0F, 2, 10, 4, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 24, 21, 6.0F, -12.0F, -8.0F, 2, 2, 12, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 14, 17, 7.0F, -10.0F, -6.0F, 0, 4, 10, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 40, 23, 6.0F, -10.0F, -8.0F, 2, 8, 2, 0.0F)); - Cussion = new ModelRenderer(this); - Cussion.setRotationPoint(0.0F, 24.0F, 0.0F); - Cussion.cubeList.add(new ModelBox(Cussion, 1, 0, -8.0F, -5.0F, -8.0F, 14, 3, 15, 0.0F)); - Cussion.cubeList.add(new ModelBox(Cussion, 1, 18, -8.0F, -14.0F, 4.0F, 14, 9, 3, 0.0F)); - Cussion.cubeList.add(new ModelBox(Cussion, 4, 30, -8.0F, -14.0F, 7.0F, 14, 4, 1, 0.0F)); - } + Cussion = new ModelRenderer(this); + Cussion.mirror = true; + Cussion.setRotationPoint(0.0F, 24.0F, 0.0F); + Cussion.cubeList.add(new ModelBox(Cussion, 2, 0, -8.0F, -7.0F, -8.0F, 14, 4, 15, 0.0F)); + Cussion.cubeList.add(new ModelBox(Cussion, 2, 19, -8.0F, -16.0F, 3.0F, 14, 9, 4, 0.0F)); + Cussion.cubeList.add(new ModelBox(Cussion, 2, 32, -8.0F, -16.0F, 7.0F, 14, 4, 1, 0.0F)); + } - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - CouchBack.render(f5); - Cussion.render(f5); - } + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + CouchBack.render(f5); + Cussion.render(f5); + } - public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { - modelRenderer.rotateAngleX = x; - modelRenderer.rotateAngleY = y; - modelRenderer.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/couch/ModelCouchSingle.java b/src/main/java/noppes/npcs/client/model/blocks/couch/ModelCouchSingle.java index 0a78455a7..cf5ad52a8 100644 --- a/src/main/java/noppes/npcs/client/model/blocks/couch/ModelCouchSingle.java +++ b/src/main/java/noppes/npcs/client/model/blocks/couch/ModelCouchSingle.java @@ -6,40 +6,57 @@ import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; public class ModelCouchSingle extends ModelBase { - private final ModelRenderer CouchBack; - private final ModelRenderer Cussion; + public final ModelRenderer Cussion; + public final ModelRenderer CouchBack; + private final ModelRenderer ArmL; + private final ModelRenderer ArmR; - public ModelCouchSingle() { - textureWidth = 16; - textureHeight = 16; + public ModelCouchSingle() { + textureWidth = 64; + textureHeight = 64; - CouchBack = new ModelRenderer(this); - CouchBack.setRotationPoint(0.0F, 24.0F, 0.0F); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 0, -8.0F, -1.0F, -8.0F, 2, 1, 2, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 0, 6.0F, -1.0F, -8.0F, 2, 1, 2, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 0, -8.0F, -1.0F, 6.0F, 2, 1, 2, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 0, 6.0F, -1.0F, 6.0F, 2, 1, 2, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, -18, -13, -6.0F, -2.0F, -8.0F, 12, 1, 15, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, -4, 1, -6.0F, -10.0F, 7.0F, 12, 9, 1, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, -14, -14, 6.0F, -10.0F, -8.0F, 2, 9, 16, 0.0F)); - CouchBack.cubeList.add(new ModelBox(CouchBack, -14, -14, -8.0F, -10.0F, -8.0F, 2, 9, 16, 0.0F)); + CouchBack = new ModelRenderer(this); + CouchBack.setRotationPoint(0.0F, 24.0F, 0.0F); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, -8.0F, -2.0F, -8.0F, 2, 2, 2, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, 6.0F, -2.0F, -8.0F, 2, 2, 2, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, -8.0F, -2.0F, 6.0F, 2, 2, 2, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, 6.0F, -2.0F, 6.0F, 2, 2, 2, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 35, -8.0F, -3.0F, -8.0F, 16, 1, 15, 0.0F)); + CouchBack.cubeList.add(new ModelBox(CouchBack, 0, 51, -8.0F, -12.0F, 7.0F, 16, 10, 1, 0.0F)); - Cussion = new ModelRenderer(this); - Cussion.setRotationPoint(0.0F, 24.0F, 0.0F); - Cussion.cubeList.add(new ModelBox(Cussion, -18, -13, -6.0F, -5.0F, -8.0F, 12, 3, 15, 0.0F)); - Cussion.cubeList.add(new ModelBox(Cussion, -6, -1, -6.0F, -14.0F, 4.0F, 12, 9, 3, 0.0F)); - Cussion.cubeList.add(new ModelBox(Cussion, -4, 1, -6.0F, -14.0F, 7.0F, 12, 4, 1, 0.0F)); - } + ArmL = new ModelRenderer(this); + ArmL.setRotationPoint(9.0F, -7.0F, 0.0F); + CouchBack.addChild(ArmL); + ArmL.mirror = true; + ArmL.cubeList.add(new ModelBox(ArmL, 24, 21, -1.0F, -5.0F, -8.0F, 2, 2, 12, 0.0F)); + ArmL.cubeList.add(new ModelBox(ArmL, 14, 17, 0.0F, -3.0F, -6.0F, 0, 4, 10, 0.0F)); + ArmL.cubeList.add(new ModelBox(ArmL, 40, 23, -1.0F, -3.0F, -8.0F, 2, 8, 2, 0.0F)); + ArmL.cubeList.add(new ModelBox(ArmL, 0, 21, -1.0F, 1.0F, -6.0F, 2, 4, 10, 0.0F)); + ArmL.cubeList.add(new ModelBox(ArmL, 22, 48, -1.0F, -5.0F, 4.0F, 2, 10, 4, 0.0F)); + ArmL.mirror = false; - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - CouchBack.render(f5); - Cussion.render(f5); - } + ArmR = new ModelRenderer(this); + ArmR.setRotationPoint(-9.0F, -7.0F, 0.0F); + CouchBack.addChild(ArmR); + ArmR.cubeList.add(new ModelBox(ArmR, 24, 21, -1.0F, -5.0F, -8.0F, 2, 2, 12, 0.0F)); + ArmR.cubeList.add(new ModelBox(ArmR, 14, 17, 0.0F, -3.0F, -6.0F, 0, 4, 10, 0.0F)); + ArmR.cubeList.add(new ModelBox(ArmR, 0, 21, -1.0F, 1.0F, -6.0F, 2, 4, 10, 0.0F)); + ArmR.cubeList.add(new ModelBox(ArmR, 40, 23, -1.0F, -3.0F, -8.0F, 2, 8, 2, 0.0F)); + ArmR.cubeList.add(new ModelBox(ArmR, 22, 48, -1.0F, -5.0F, 4.0F, 2, 10, 4, 0.0F)); - public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { - modelRenderer.rotateAngleX = x; - modelRenderer.rotateAngleY = y; - modelRenderer.rotateAngleZ = z; - } + Cussion = new ModelRenderer(this); + Cussion.setRotationPoint(0.0F, 24.0F, 0.0F); + Cussion.cubeList.add(new ModelBox(Cussion, 0, 0, -8.0F, -7.0F, -8.0F, 16, 4, 15, 0.0F)); + Cussion.cubeList.add(new ModelBox(Cussion, 0, 19, -8.0F, -16.0F, 3.0F, 16, 9, 4, 0.0F)); + Cussion.cubeList.add(new ModelBox(Cussion, 0, 32, -8.0F, -16.0F, 7.0F, 16, 4, 1, 0.0F)); + } + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) {} + + 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/renderer/blocks/BlockCouchWoolRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockCouchWoolRenderer.java index bfe226f7d..74cb80d75 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockCouchWoolRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockCouchWoolRenderer.java @@ -2,9 +2,12 @@ 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.model.ModelBase; 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.BlockCouchWool; import noppes.npcs.blocks.tiles.TileCouchWool; @@ -16,11 +19,11 @@ import org.lwjgl.opengl.GL12; public class BlockCouchWoolRenderer extends BlockRendererInterface{ - private final ModelBase modelCouchLeft = new ModelCouchLeft(); - private final ModelBase modelCouchRight = new ModelCouchRight(); - private final ModelBase modelCouchCorner = new ModelCouchCorner(); - private final ModelBase modelCouch = new ModelCouch(); - private final ModelBase modelCouchSingle = new ModelCouchSingle(); + private final ModelCouchLeft modelCouchLeft = new ModelCouchLeft(); + private final ModelCouchRight modelCouchRight = new ModelCouchRight(); + private final ModelCouchCorner modelCouchCorner = new ModelCouchCorner(); + private final ModelCouchMiddle modelCouch = new ModelCouchMiddle(); + private final ModelCouchSingle modelCouchSingle = new ModelCouchSingle(); private final ModelBase modelLegacyCouchMiddle = new ModelLegacyCouchMiddle(); private final ModelBase modelLegacyCouchMiddleWool = new ModelLegacyCouchMiddleWool(); @@ -34,6 +37,16 @@ public class BlockCouchWoolRenderer extends BlockRendererInterface{ private final ModelBase modelLegacyCouchCorner = new ModelLegacyCouchCorner(); private final ModelBase modelLegacyCouchCornerWool = new ModelLegacyCouchCornerWool(); + + private static final ResourceLocation oak = new ResourceLocation("customnpcs","textures/models/couch/oak.png"); + private static final ResourceLocation spruce = new ResourceLocation("customnpcs","textures/models/couch/spruce.png"); + private static final ResourceLocation birch = new ResourceLocation("customnpcs","textures/models/couch/birch.png"); + private static final ResourceLocation jungle = new ResourceLocation("customnpcs","textures/models/couch/jungle.png"); + private static final ResourceLocation acacia = new ResourceLocation("customnpcs","textures/models/couch/acacia.png"); + private static final ResourceLocation dark_oak = new ResourceLocation("customnpcs","textures/models/couch/dark_oak.png"); + + private static final ResourceLocation wool = new ResourceLocation("customnpcs","textures/models/couch/wool.png"); + public BlockCouchWoolRenderer(){ ((BlockCouchWool)CustomItems.couchWool).renderId = RenderingRegistry.getNextAvailableRenderId(); RenderingRegistry.registerBlockHandler(this); @@ -50,7 +63,8 @@ public class BlockCouchWoolRenderer extends BlockRendererInterface{ GL11.glRotatef(90 * tile.rotation, 0, 1, 0); GL11.glColor3f(1, 1, 1); - if(false){ + GL11.glEnable(GL11.GL_ALPHA_TEST); + if(ConfigClient.LegacyCouch){ setWoodTexture(var1.getBlockMetadata()); if(tile.hasCornerLeft) modelLegacyCouchCorner.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); @@ -82,23 +96,98 @@ public class BlockCouchWoolRenderer extends BlockRendererInterface{ else modelLegacyCouchMiddleWool.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); } else { - setWoodTexture(var1.getBlockMetadata()); - if(tile.hasCornerLeft) - modelCouchCorner.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - else if(tile.hasCornerRight){ - GL11.glRotatef(90, 0, 1, 0); - modelCouchCorner.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); + int leftDX = 0, leftDZ = 0, rightDX = 0, rightDZ = 0; + switch(tile.rotation) { + case 1: // Facing south: left = east, right = west + leftDX = 0; leftDZ = 1; + rightDX = 0; rightDZ = -1; + break; + case 0: // Facing west: left = south, right = north + leftDX = 1; leftDZ = 0; + rightDX = -1; rightDZ = 0; + break; + case 3: // Facing north: left = west, right = east + leftDX = 0; leftDZ = -1; + rightDX = 0; rightDZ = 1; + break; + case 2: // Facing east: left = north, right = south + leftDX = -1; leftDZ = 0; + rightDX = 1; rightDZ = 0; + break; } - else if(tile.hasLeft && tile.hasRight) - modelCouch.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - else if(tile.hasLeft) - modelCouchLeft.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - else if(tile.hasRight) - modelCouchRight.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - else - modelCouchSingle.render(null, 0, 0, 0, 0, 0.0F, 0.0625F); - } + // Check if the blocks to the left and right are solid + Block blockLeft = tile.getWorldObj().getBlock(tile.xCoord + leftDX, tile.yCoord, tile.zCoord + leftDZ); + Block blockRight = tile.getWorldObj().getBlock(tile.xCoord + rightDX, tile.yCoord, tile.zCoord + rightDZ); + boolean leftSolid = blockLeft != null && blockLeft.getMaterial().isSolid(); + boolean rightSolid = blockRight != null && blockRight.getMaterial().isSolid(); + + setCouchWood(var1.getBlockMetadata()); + if(tile.hasCornerLeft){ + GL11.glPushMatrix(); + GL11.glRotatef(90, 0, 1, 0); + modelCouchCorner.CouchBack.render(0.0625F); + GL11.glPopMatrix(); + } + else if(tile.hasCornerRight) + modelCouchCorner.CouchBack.render(0.0625F); + else if(tile.hasLeft && tile.hasRight) + modelCouch.CouchBack.render(0.0625F); + else if(tile.hasLeft) + modelCouchLeft.CouchBack.render(0.0625F); + else if(tile.hasRight) + modelCouchRight.CouchBack.render(0.0625F); + else { + if(leftSolid && rightSolid) { + // Both sides occupied: use middle couch + modelCouch.CouchBack.render(0.0625F); + Minecraft.getMinecraft().getTextureManager().bindTexture(wool); + modelCouch.Cussion.render(0.0625F); + } else if(leftSolid) { + // Block to left exists -> use right couch model + modelCouchRight.CouchBack.render(0.0625F); + Minecraft.getMinecraft().getTextureManager().bindTexture(wool); + modelCouchRight.Cussion.render(0.0625F); + } else if(rightSolid) { + // Block to right exists -> use left couch model + modelCouchLeft.CouchBack.render(0.0625F); + Minecraft.getMinecraft().getTextureManager().bindTexture(wool); + modelCouchLeft.Cussion.render(0.0625F); + } else { + // Neither side has a solid block: use the singleton couch model + modelCouchSingle.CouchBack.render(0.0625F); + Minecraft.getMinecraft().getTextureManager().bindTexture(wool); + modelCouchSingle.Cussion.render(0.0625F); + } + } + + Minecraft.getMinecraft().getTextureManager().bindTexture(wool); + float[] color = BlockBannerRenderer.colorTable[tile.color]; + GL11.glColor3f(color[0], color[1], color[2]); + + if(tile.hasCornerLeft) + modelCouchCorner.Cussion.render(0.0625F); + else if(tile.hasCornerRight) + modelCouchCorner.Cussion.render(0.0625F); + else if(tile.hasLeft && tile.hasRight) + modelCouch.Cussion.render(0.0625F); + else if(tile.hasLeft) + modelCouchLeft.Cussion.render(0.0625F); + else if(tile.hasRight) + modelCouchRight.Cussion.render(0.0625F); + else { + if(leftSolid && rightSolid) { + modelCouch.Cussion.render(0.0625F); + } else if(leftSolid) { + modelCouchRight.Cussion.render(0.0625F); + } else if(rightSolid) { + modelCouchLeft.Cussion.render(0.0625F); + } else { + modelCouchSingle.Cussion.render(0.0625F); + } + } + } + GL11.glDisable(GL11.GL_ALPHA_TEST); GL11.glPopMatrix(); } @@ -122,6 +211,22 @@ public class BlockCouchWoolRenderer extends BlockRendererInterface{ GL11.glPopMatrix(); } + public void setCouchWood(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.couchWool.getRenderType(); diff --git a/src/main/resources/assets/customnpcs/textures/models/couch/acacia.png b/src/main/resources/assets/customnpcs/textures/models/couch/acacia.png new file mode 100644 index 0000000000000000000000000000000000000000..0797af0cb02b68a579780ecffc8efdfdc90b759c GIT binary patch literal 1502 zcmV<41tI#0P)Px)en~_@RCt{2Sv_yuMi6~GEk8tvkO-aNKtKX0MW95TQW!{)GHOx?NUh36>U8-D z>Qbaqkt(%-6lv@(Ws10SY`}#9IS?%C0$Nyu$0bk46x8sBd%Qayc_%3_U&D``{p8G> zeM_K4ixw?fv}nu}{v$TE)l^5WyadNnqhJzFU z;0j}5p7Fm~fN+q)6-Iu)DBQaRAor*H)1&=#6cPzM%Y=-R{QWn-{MpD8DlY)VzkYuk za2V&%y^NE>`?{#jGN(uTX_f1|wm>#XnjH5Cj!Ez5#as(uTP7$)Nj0o=o!gdqm%If} ztL*_42D7g7+UgvzY*gleaF8PCM*slZ>_8>iR}1>rQ?FHQxUC-VQJD2fSB|oG^TK%Y z=wYgpiQe$JRCse0!Czg$&gR+}`IOnKI6=_Ao_oj0$3yM%XTB(o>)`93|7e~Cs6mQ3 z&oT>>{M2>u=4v#_D)!G`_i7L7@}11vrDsZiJQXei2H$&^f#NghU&A&#aD{;?_TeCf zN`~-PSJ3tByu2)~9oNYxy|v-x_w-!m>U;ruQlabF*xK;s_6V`FxrTG8uzfQ~{#7&B zka2>bAHo#|s@nIYf=aT?L1pA6e1e{3A_}A2h9;{&^9gTlc!f}q*05kZ5AxNjqxPOW zdRWNcU5m+vIDHaq}X z2=rvOP!zlLp2s|w!#dG6Az2OqjH|1vYAYP1c>cPVlbpxmoijGYIK@6qUcV<>s!#6- zy#AsTp=fflL!?M3OHF(tl)k#2UGM-ZFKeUBqr6QMul{{sci06qlEdL3#j^{Ur$!#L zdaCTn_jw(a40E1&`8K>sud1{jZ&O-Bs5rSl=K){tY!!BAj=K(E#08X}0btw9JcYg} zk9%O;1E}t{x2Ej`*YiFXfkq3!^EnNiyKFc}3o*>gh{U>VKfyWVY%t;iefLN27J)_! za27;xg^{N|N>c>iwencyA;Mjl+MxQQgI7zF)T)qX7e<0jDiaBE7u8){$0U}Y4?G~~U*oS=mxVN_^8kQC>YB8L4R1(~+LB5Y%BgJ?CkQX(;$X>-Gx(-~Ia3 z0B+6$e){%{6u`_aEzjewF!EC(0Qu<;|AjS4+EO3H3qSn+_fr1=PebSUU^fLachx69 z3FMx1hQRmsR5lGNPGDPRZcAgh3y3C~9>AEYyGw0f2f{AdgjCV=o>i2jJ*lv>xmGBz zqV0ik1$djtv%n-h&fjrO51>@nPiw2pvu@+}*EEPAj1h!@E7V+?-W94qf-m2Oj0EpS z+t-1ptLZ(q<3*XLpva?dw1^(e%K$t|yyVP!qOPW=kkS7SPIKvHYx_D7L{#%?dLBAdURT@S zWg2Ypq2oVVJgTGF+{h^a000hUSV?A0O#mtY000O800000007cclK=n!07*qoM6N<$ Eg8Kd1$N&HU literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/couch/birch.png b/src/main/resources/assets/customnpcs/textures/models/couch/birch.png new file mode 100644 index 0000000000000000000000000000000000000000..54acb7c28b33af5452d1fcc5cb472ddc9a778159 GIT binary patch literal 1594 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 IM6N<$f=+zB_5c6? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/customnpcs/textures/models/couch/jungle.png b/src/main/resources/assets/customnpcs/textures/models/couch/jungle.png new file mode 100644 index 0000000000000000000000000000000000000000..e0d8a8b9e332f29199c4c55137cb0574b628a221 GIT binary patch literal 1581 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