diff --git a/common/build.gradle b/common/build.gradle index e19da0e..ace92a2 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -7,6 +7,5 @@ dependencies { // which get remapped to the correct annotations on each platform. // Do NOT use other classes from Fabric Loader. modImplementation "net.fabricmc:fabric-loader:$rootProject.fabric_loader_version" - -// modImplementation "dev.architectury:architectury:$rootProject.architectury_api_version" + // modImplementation "dev.architectury:architectury:$rootProject.architectury_api_version" } diff --git a/common/src/main/java/com/leisuretimedock/jsonem/JsonEm.java b/common/src/main/java/com/leisuretimedock/jsonem/JsonEm.java index 0a576f8..4ab63a6 100644 --- a/common/src/main/java/com/leisuretimedock/jsonem/JsonEm.java +++ b/common/src/main/java/com/leisuretimedock/jsonem/JsonEm.java @@ -11,6 +11,7 @@ public final class JsonEm { public static void init() { // Write common init code here. } + @SuppressWarnings("unused") public static void registerModelLayer(ModelLayerLocation layer) { Services.PLATFORM.registerModelLayer(layer); } diff --git a/common/src/main/java/com/leisuretimedock/jsonem/mixin/EntityModelLoaderMixin.java b/common/src/main/java/com/leisuretimedock/jsonem/mixin/EntityModelLoaderMixin.java index 5956026..97adb7f 100644 --- a/common/src/main/java/com/leisuretimedock/jsonem/mixin/EntityModelLoaderMixin.java +++ b/common/src/main/java/com/leisuretimedock/jsonem/mixin/EntityModelLoaderMixin.java @@ -16,7 +16,8 @@ import java.util.Map; @Mixin(EntityModelSet.class) public class EntityModelLoaderMixin { - @Shadow private Map roots; + @Shadow + private Map roots; @Inject(method = "onResourceManagerReload", at = @At("TAIL")) private void jsonem$loadJsonEntityModels(ResourceManager manager, CallbackInfo ci) { diff --git a/common/src/main/java/com/leisuretimedock/jsonem/serialization/JsonEMCodecs.java b/common/src/main/java/com/leisuretimedock/jsonem/serialization/JsonEMCodecs.java index f6041bb..63551cf 100644 --- a/common/src/main/java/com/leisuretimedock/jsonem/serialization/JsonEMCodecs.java +++ b/common/src/main/java/com/leisuretimedock/jsonem/serialization/JsonEMCodecs.java @@ -44,6 +44,7 @@ public class JsonEMCodecs { ((DilationAccess) dil).jsonem$growZ()) ); + @SuppressWarnings("OptionalUsedAsFieldOrParameterType") private static CubeDefinition createCuboidData(Optional name, Vector3f offset, Vector3f dimensions, CubeDeformation dilation, boolean mirror, UVPair uv, UVPair uvSize, Optional> faces) { return ModelCuboidDataAccess.jsonem$create(name.orElse(null), uv.u(), uv.v(), diff --git a/common/src/main/java/com/leisuretimedock/jsonem/util/JsonEntityModelUtil.java b/common/src/main/java/com/leisuretimedock/jsonem/util/JsonEntityModelUtil.java index 2d9a00e..ccf6276 100644 --- a/common/src/main/java/com/leisuretimedock/jsonem/util/JsonEntityModelUtil.java +++ b/common/src/main/java/com/leisuretimedock/jsonem/util/JsonEntityModelUtil.java @@ -33,11 +33,9 @@ public class JsonEntityModelUtil { } public static void loadModels(ResourceManager manager, Map models) { - ModelLayers.getKnownLocations().forEach(layer -> { + for (ModelLayerLocation layer : ModelLayers.getKnownLocations().toList()) { var modelLoc = new ResourceLocation(layer.getModel().getNamespace(), "models/entity/"+layer.getModel().getPath()+"/"+layer.getLayer()+".json"); - var res = manager.getResource(modelLoc); - if (res.isPresent()) { try { try (var in = res.get().open()) { @@ -48,7 +46,8 @@ public class JsonEntityModelUtil { JsonEm.LOG.error("Error: {}",e.getMessage()); } } - }); + + } } public static void dump(ModelLayerLocation layer, LayerDefinition data) throws IOException { diff --git a/forge/build.gradle b/forge/build.gradle index dfa8d6c..fe248c0 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -10,6 +10,7 @@ architectury { loom { forge { mixinConfig "${mod_id}.mixins.json" + mixinConfig "${mod_id}.forge.mixins.json" } } diff --git a/forge/src/main/java/com/leisuretimedock/jsonem/forge/mixin/EntityModelLayersAccessor.java b/forge/src/main/java/com/leisuretimedock/jsonem/forge/mixin/EntityModelLayersAccessor.java new file mode 100644 index 0000000..88e688c --- /dev/null +++ b/forge/src/main/java/com/leisuretimedock/jsonem/forge/mixin/EntityModelLayersAccessor.java @@ -0,0 +1,16 @@ +package com.leisuretimedock.jsonem.forge.mixin; + +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.geom.ModelLayers; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Set; + +@Mixin({ModelLayers.class}) +public interface EntityModelLayersAccessor { + @Accessor("ALL_MODELS") + static Set getLayers() { + throw new AssertionError("This should not occur!"); + } +} \ No newline at end of file diff --git a/forge/src/main/java/com/leisuretimedock/jsonem/forge/platform/ForgePlatformHelper.java b/forge/src/main/java/com/leisuretimedock/jsonem/forge/platform/ForgePlatformHelper.java index 33b5a18..20e9aa9 100644 --- a/forge/src/main/java/com/leisuretimedock/jsonem/forge/platform/ForgePlatformHelper.java +++ b/forge/src/main/java/com/leisuretimedock/jsonem/forge/platform/ForgePlatformHelper.java @@ -1,6 +1,7 @@ package com.leisuretimedock.jsonem.forge.platform; import com.leisuretimedock.jsonem.forge.config.JsonEmConfig; +import com.leisuretimedock.jsonem.forge.mixin.EntityModelLayersAccessor; import com.leisuretimedock.jsonem.platform.IPlatFormHelper; import net.minecraft.client.model.geom.ModelLayerLocation; import net.minecraft.client.model.geom.builders.LayerDefinition; @@ -35,11 +36,13 @@ public class ForgePlatformHelper implements IPlatFormHelper { DEFINITIONS.put(layer, () -> LayerDefinition.create(new MeshDefinition(), 32, 32)); } @SubscribeEvent - public static void event(EntityRenderersEvent.RegisterLayerDefinitions event) { + public static void registerLayerDefinitions(EntityRenderersEvent.RegisterLayerDefinitions event) { for (Map.Entry> modelLayerLocationSupplierEntry : DEFINITIONS.entrySet()) { event.registerLayerDefinition(modelLayerLocationSupplierEntry.getKey(), modelLayerLocationSupplierEntry.getValue()); + EntityModelLayersAccessor.getLayers().add(modelLayerLocationSupplierEntry.getKey()); } } + } diff --git a/forge/src/main/resources/META-INF/mods.toml b/forge/src/main/resources/META-INF/mods.toml index cc4297f..1481455 100644 --- a/forge/src/main/resources/META-INF/mods.toml +++ b/forge/src/main/resources/META-INF/mods.toml @@ -27,5 +27,4 @@ modId = "minecraft" mandatory = true versionRange = "[1.20.1,)" ordering = "NONE" -side = "BOTH" - +side = "BOTH" \ No newline at end of file diff --git a/forge/src/main/resources/jsonem.forge.mixins.json b/forge/src/main/resources/jsonem.forge.mixins.json new file mode 100644 index 0000000..79f00d0 --- /dev/null +++ b/forge/src/main/resources/jsonem.forge.mixins.json @@ -0,0 +1,14 @@ +{ + "required": true, + "package": "com.leisuretimedock.jsonem.forge.mixin", + "compatibilityLevel": "JAVA_17", + "minVersion": "0.8", + "client": [ + "EntityModelLayersAccessor" + ], + "mixins": [ + ], + "injectors": { + "defaultRequire": 1 + } +}