diff --git a/src/main/java/org/saturnclient/cosmetics/hat/HatFeatureRenderer.java b/src/main/java/org/saturnclient/cosmetics/hat/HatFeatureRenderer.java index ea55d4f..ef06149 100644 --- a/src/main/java/org/saturnclient/cosmetics/hat/HatFeatureRenderer.java +++ b/src/main/java/org/saturnclient/cosmetics/hat/HatFeatureRenderer.java @@ -3,11 +3,11 @@ package org.saturnclient.cosmetics.hat; import java.io.IOException; import java.util.Map; +import org.saturnclient.cosmetics.obj.ObjModel; import org.saturnclient.cosmetics.obj.ObjRenderer; import org.saturnclient.saturnclient.client.player.SaturnPlayer; import de.javagl.obj.Mtl; -import de.javagl.obj.Obj; import net.minecraft.client.render.OverlayTexture; import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.entity.feature.FeatureRenderer; @@ -19,15 +19,12 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.Identifier; public class HatFeatureRenderer extends FeatureRenderer { - static Identifier HAT = Identifier.of("saturnclient", "models/item/horns/horns.obj"); - static Identifier BLACK_MTL = Identifier.of("saturnclient", "models/item/black.mtl"); - Obj obj; + static Identifier BLACK_MTL = Identifier.of("saturnclient", "models/cosmetic/black.mtl"); Map mtl; public HatFeatureRenderer(FeatureRendererContext context) { super(context); try { - this.obj = ObjRenderer.loadObj(HAT); this.mtl = ObjRenderer.loadMtl(BLACK_MTL); } catch (IOException e) { e.printStackTrace(); @@ -52,9 +49,9 @@ public class HatFeatureRenderer extends FeatureRenderer loadedObjModels = new HashMap<>(); + + public record Config( + @JsonProperty("transform") Transform transform) { + + @JsonFormat(shape = JsonFormat.Shape.ARRAY) + public record Transform(double x, double y, double z) { + } + } + + Obj obj; + Config config; + + public static ObjModel of(Identifier obj) { + if (loadedObjModels.containsKey(obj)) + return loadedObjModels.get(obj); + + ObjModel o = new ObjModel(obj); + loadedObjModels.put(obj, o); + return o; + } + + ObjModel(Identifier identifier) { + Identifier obj = Identifier.of(identifier.getNamespace(), identifier.getPath() + ".obj"); + System.out.println(obj); + // Identifier json = Identifier.of(identifier.getNamespace(), identifier.getPath() + ".json"); + + try { + this.obj = ObjRenderer.loadObj(obj); + } catch (IOException e) { + e.printStackTrace(); + } + + Identifier.of(obj.toString()); + } + + public void render(Map mtlMap, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, + int overlay) { + ObjRenderer.renderObj(this.obj, mtlMap, matrices, vertexConsumers, light, overlay); + } +} diff --git a/src/main/java/org/saturnclient/cosmetics/obj/ObjRenderer.java b/src/main/java/org/saturnclient/cosmetics/obj/ObjRenderer.java index 420323c..6f59fe6 100644 --- a/src/main/java/org/saturnclient/cosmetics/obj/ObjRenderer.java +++ b/src/main/java/org/saturnclient/cosmetics/obj/ObjRenderer.java @@ -15,7 +15,6 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.Identifier; public class ObjRenderer { - public static Obj loadObj(Identifier objId) throws IOException { try (InputStream is = MinecraftClient.getInstance().getResourceManager() .getResource(objId).get().getInputStream()) { @@ -37,7 +36,6 @@ public class ObjRenderer { public static void renderObj(Obj obj, Map mtlMap, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay) { - MatrixStack.Entry entry = matrices.peek(); Map materialGroups = ObjSplitting.splitByMaterialGroups(obj); diff --git a/src/main/resources/assets/saturnclient/items/hat_halo.json b/src/main/resources/assets/saturnclient/items/hat_halo.json deleted file mode 100644 index 9666890..0000000 --- a/src/main/resources/assets/saturnclient/items/hat_halo.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "model": { - "type": "minecraft:model", - "model": "saturnclient:item/halo/white" - } -} diff --git a/src/main/resources/assets/saturnclient/items/hat_halo_black.json b/src/main/resources/assets/saturnclient/items/hat_halo_black.json deleted file mode 100644 index cb7e0c7..0000000 --- a/src/main/resources/assets/saturnclient/items/hat_halo_black.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "model": { - "type": "minecraft:model", - "model": "saturnclient:item/halo/black" - } -} diff --git a/src/main/resources/assets/saturnclient/items/hat_horns_black.json b/src/main/resources/assets/saturnclient/items/hat_horns_black.json deleted file mode 100644 index 610dd63..0000000 --- a/src/main/resources/assets/saturnclient/items/hat_horns_black.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "model": { - "type": "minecraft:model", - "model": "saturnclient:item/horns/black" - } -} diff --git a/src/main/resources/assets/saturnclient/items/hat_horns_white.json b/src/main/resources/assets/saturnclient/items/hat_horns_white.json deleted file mode 100644 index e81956c..0000000 --- a/src/main/resources/assets/saturnclient/items/hat_horns_white.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "model": { - "type": "minecraft:model", - "model": "saturnclient:item/horns/white" - } -} diff --git a/src/main/resources/assets/saturnclient/models/item/black.mtl b/src/main/resources/assets/saturnclient/models/cosmetic/black.mtl similarity index 100% rename from src/main/resources/assets/saturnclient/models/item/black.mtl rename to src/main/resources/assets/saturnclient/models/cosmetic/black.mtl diff --git a/src/main/resources/assets/saturnclient/models/item/halo/halo.obj b/src/main/resources/assets/saturnclient/models/cosmetic/halo/model.obj similarity index 100% rename from src/main/resources/assets/saturnclient/models/item/halo/halo.obj rename to src/main/resources/assets/saturnclient/models/cosmetic/halo/model.obj diff --git a/src/main/resources/assets/saturnclient/models/item/horns/horns.obj b/src/main/resources/assets/saturnclient/models/cosmetic/horns/model.obj similarity index 100% rename from src/main/resources/assets/saturnclient/models/item/horns/horns.obj rename to src/main/resources/assets/saturnclient/models/cosmetic/horns/model.obj diff --git a/src/main/resources/assets/saturnclient/models/item/white.mtl b/src/main/resources/assets/saturnclient/models/cosmetic/white.mtl similarity index 100% rename from src/main/resources/assets/saturnclient/models/item/white.mtl rename to src/main/resources/assets/saturnclient/models/cosmetic/white.mtl diff --git a/src/main/resources/assets/saturnclient/models/item/halo/black.json b/src/main/resources/assets/saturnclient/models/item/halo/black.json deleted file mode 100644 index bd402ad..0000000 --- a/src/main/resources/assets/saturnclient/models/item/halo/black.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "special-model-loader:builtin/obj", - "model": "saturnclient:models/item/halo/halo.obj", - "mtl_override": "saturnclient:models/item/black.mtl", - "flip_v": true, - "display": { - "thirdperson_righthand": { - "rotation": [0, 0, 0], - "translation": [1.5, 12, 1.5], - "scale": [0.2, 0.2, 0.2] - } - } -} diff --git a/src/main/resources/assets/saturnclient/models/item/halo/white.json b/src/main/resources/assets/saturnclient/models/item/halo/white.json deleted file mode 100644 index 6265076..0000000 --- a/src/main/resources/assets/saturnclient/models/item/halo/white.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "special-model-loader:builtin/obj", - "model": "saturnclient:models/item/halo/halo.obj", - "mtl_override": "saturnclient:models/item/white.mtl", - "flip_v": true, - "display": { - "thirdperson_righthand": { - "rotation": [0, 0, 0], - "translation": [1.5, 12, 1.5], - "scale": [0.2, 0.2, 0.2] - } - } -} diff --git a/src/main/resources/assets/saturnclient/models/item/horns/black.json b/src/main/resources/assets/saturnclient/models/item/horns/black.json deleted file mode 100644 index effa342..0000000 --- a/src/main/resources/assets/saturnclient/models/item/horns/black.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "special-model-loader:builtin/obj", - "model": "saturnclient:models/item/horns/horns.obj", - "mtl_override": "saturnclient:models/item/black.mtl", - "flip_v": true, - "display": { - "thirdperson_righthand": { - "rotation": [0, 0, 0], - "translation": [2, 6, 2], - "scale": [0.25, 0.25, 0.25] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/saturnclient/models/item/horns/white.json b/src/main/resources/assets/saturnclient/models/item/horns/white.json deleted file mode 100644 index 1001f92..0000000 --- a/src/main/resources/assets/saturnclient/models/item/horns/white.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "special-model-loader:builtin/obj", - "model": "saturnclient:models/item/horns/horns.obj", - "mtl_override": "saturnclient:models/item/white.mtl", - "flip_v": true, - "display": { - "thirdperson_righthand": { - "rotation": [0, 0, 0], - "translation": [2, 6, 2], - "scale": [0.25, 0.25, 0.25] - } - } -} \ No newline at end of file