From 3c6416d7ca021e6c6b49d6f8d394f8b0a09be4ce Mon Sep 17 00:00:00 2001 From: 3944Realms Date: Thu, 29 May 2025 05:14:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=AC=AC=E4=BA=94=E9=83=A8?= =?UTF-8?q?=E5=88=86=20=E5=8E=BB=E6=8E=89=E4=BA=86=E4=B8=8D=E6=98=AF?= =?UTF-8?q?=E5=BE=88=E5=BF=85=E8=A6=81=E7=9A=84=E5=A1=94=E5=90=8AAPI?= =?UTF-8?q?=EF=BC=8C=E7=9B=AE=E5=89=8D=E5=85=A8=E5=B1=80=E4=BD=BF=E7=94=A8?= =?UTF-8?q?Service=E6=9D=A5=E6=9B=BF=E4=BB=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/build.gradle | 2 +- .../com/leisuretimedock/jsonem/JsonEm.java | 6 ++---- .../jsonem/platform/IPlatFormHelper.java | 3 +++ fabric/build.gradle | 2 +- .../fabric/platform/FabricPlatformHelper.java | 11 ++++++++++ fabric/src/main/resources/fabric.mod.json | 1 - forge/build.gradle | 2 +- .../jsonem/forge/JsonEmForge.java | 8 ++----- .../forge/platform/ForgePlatformHelper.java | 21 +++++++++++++++++++ forge/src/main/resources/META-INF/mods.toml | 6 ------ 10 files changed, 42 insertions(+), 20 deletions(-) diff --git a/common/build.gradle b/common/build.gradle index db182e6..e19da0e 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -8,5 +8,5 @@ dependencies { // 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 b0344e0..0a576f8 100644 --- a/common/src/main/java/com/leisuretimedock/jsonem/JsonEm.java +++ b/common/src/main/java/com/leisuretimedock/jsonem/JsonEm.java @@ -1,9 +1,7 @@ package com.leisuretimedock.jsonem; -import dev.architectury.registry.client.level.entity.EntityModelLayerRegistry; +import com.leisuretimedock.jsonem.platform.Services; import net.minecraft.client.model.geom.ModelLayerLocation; -import net.minecraft.client.model.geom.builders.LayerDefinition; -import net.minecraft.client.model.geom.builders.MeshDefinition; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -14,6 +12,6 @@ public final class JsonEm { // Write common init code here. } public static void registerModelLayer(ModelLayerLocation layer) { - EntityModelLayerRegistry.register(layer, () -> LayerDefinition.create(new MeshDefinition(), 32, 32)); + Services.PLATFORM.registerModelLayer(layer); } } diff --git a/common/src/main/java/com/leisuretimedock/jsonem/platform/IPlatFormHelper.java b/common/src/main/java/com/leisuretimedock/jsonem/platform/IPlatFormHelper.java index 678d520..4be4b43 100644 --- a/common/src/main/java/com/leisuretimedock/jsonem/platform/IPlatFormHelper.java +++ b/common/src/main/java/com/leisuretimedock/jsonem/platform/IPlatFormHelper.java @@ -1,8 +1,11 @@ package com.leisuretimedock.jsonem.platform; +import net.minecraft.client.model.geom.ModelLayerLocation; + import java.nio.file.Path; public interface IPlatFormHelper { boolean shouldDumpModels(); Path getDumpModelsPath(); + void registerModelLayer(ModelLayerLocation layer); } diff --git a/fabric/build.gradle b/fabric/build.gradle index 2e113ca..9e84b5e 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -29,7 +29,7 @@ dependencies { modImplementation "net.fabricmc.fabric-api:fabric-api:$rootProject.fabric_api_version" - modImplementation "dev.architectury:architectury-fabric:$rootProject.architectury_api_version" +// modImplementation "dev.architectury:architectury-fabric:$rootProject.architectury_api_version" common(project(path: ':common', configuration: 'namedElements')) { transitive false } shadowBundle project(path: ':common', configuration: 'transformProductionFabric') diff --git a/fabric/src/main/java/com/leisuretimedock/jsonem/fabric/platform/FabricPlatformHelper.java b/fabric/src/main/java/com/leisuretimedock/jsonem/fabric/platform/FabricPlatformHelper.java index ae02cee..6e343fa 100644 --- a/fabric/src/main/java/com/leisuretimedock/jsonem/fabric/platform/FabricPlatformHelper.java +++ b/fabric/src/main/java/com/leisuretimedock/jsonem/fabric/platform/FabricPlatformHelper.java @@ -2,9 +2,14 @@ package com.leisuretimedock.jsonem.fabric.platform; import com.leisuretimedock.jsonem.fabric.JsonEmFabric; import com.leisuretimedock.jsonem.platform.IPlatFormHelper; +import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry; import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; import java.nio.file.Path; +import java.util.Objects; public class FabricPlatformHelper implements IPlatFormHelper { @Override @@ -16,4 +21,10 @@ public class FabricPlatformHelper implements IPlatFormHelper { public Path getDumpModelsPath() { return FabricLoader.getInstance().getGameDir().resolve("jsonem_dump"); } + + @Override + public void registerModelLayer(ModelLayerLocation layer) { + Objects.requireNonNull(layer); + EntityModelLayerRegistry.registerModelLayer(layer, () -> LayerDefinition.create(new MeshDefinition(), 32, 32)); + } } diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index b9c4ab3..64ffb63 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -26,7 +26,6 @@ "fabricloader": ">=0.16.14", "minecraft": "~1.20.1", "java": ">=17", - "architectury": ">=9.2.14", "fabric-api": "*" }, "suggests": { diff --git a/forge/build.gradle b/forge/build.gradle index 4a87317..dfa8d6c 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -36,7 +36,7 @@ dependencies { forge "net.minecraftforge:forge:$rootProject.forge_version" - modImplementation "dev.architectury:architectury-forge:$rootProject.architectury_api_version" +// modImplementation "dev.architectury:architectury-forge:$rootProject.architectury_api_version" common(project(path: ':common', configuration: 'namedElements')) { transitive false } shadowBundle project(path: ':common', configuration: 'transformProductionNeoForge') } diff --git a/forge/src/main/java/com/leisuretimedock/jsonem/forge/JsonEmForge.java b/forge/src/main/java/com/leisuretimedock/jsonem/forge/JsonEmForge.java index 4e0b92c..209ac8c 100644 --- a/forge/src/main/java/com/leisuretimedock/jsonem/forge/JsonEmForge.java +++ b/forge/src/main/java/com/leisuretimedock/jsonem/forge/JsonEmForge.java @@ -2,8 +2,7 @@ package com.leisuretimedock.jsonem.forge; import com.leisuretimedock.jsonem.JsonEm; import com.leisuretimedock.jsonem.forge.config.JsonEmConfig; -import dev.architectury.platform.forge.EventBuses; -import net.minecraftforge.eventbus.api.IEventBus; +import com.leisuretimedock.jsonem.forge.platform.ForgePlatformHelper; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; @@ -11,11 +10,8 @@ import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; @Mod(JsonEm.MOD_ID) public final class JsonEmForge { public JsonEmForge(FMLJavaModLoadingContext context) { - // Submit our event bus to let Architectury API register our content on the right time. - IEventBus modEventBus = context.getModEventBus(); - EventBuses.registerModEventBus(JsonEm.MOD_ID, modEventBus); context.registerConfig(ModConfig.Type.CLIENT, JsonEmConfig.spec, "jsonem.toml"); - // Run our common setup. JsonEm.init(); + context.getModEventBus().register(ForgePlatformHelper.class); } } 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 a961b41..33b5a18 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 @@ -2,11 +2,20 @@ package com.leisuretimedock.jsonem.forge.platform; import com.leisuretimedock.jsonem.forge.config.JsonEmConfig; import com.leisuretimedock.jsonem.platform.IPlatFormHelper; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraftforge.client.event.EntityRenderersEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.loading.FMLPaths; import java.nio.file.Path; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Supplier; public class ForgePlatformHelper implements IPlatFormHelper { + private static final Map> DEFINITIONS = new ConcurrentHashMap<>(); @Override public boolean shouldDumpModels() { try { @@ -21,4 +30,16 @@ public class ForgePlatformHelper implements IPlatFormHelper { return FMLPaths.GAMEDIR.get().resolve("jsonem_dump"); } + @Override + public void registerModelLayer(ModelLayerLocation layer) { + DEFINITIONS.put(layer, () -> LayerDefinition.create(new MeshDefinition(), 32, 32)); + } + @SubscribeEvent + public static void event(EntityRenderersEvent.RegisterLayerDefinitions event) { + for (Map.Entry> modelLayerLocationSupplierEntry : DEFINITIONS.entrySet()) { + event.registerLayerDefinition(modelLayerLocationSupplierEntry.getKey(), modelLayerLocationSupplierEntry.getValue()); + } + } + + } diff --git a/forge/src/main/resources/META-INF/mods.toml b/forge/src/main/resources/META-INF/mods.toml index e1d3247..cc4297f 100644 --- a/forge/src/main/resources/META-INF/mods.toml +++ b/forge/src/main/resources/META-INF/mods.toml @@ -29,9 +29,3 @@ versionRange = "[1.20.1,)" ordering = "NONE" side = "BOTH" -[[dependencies.jsonem]] -modId = "architectury" -mandatory = true -versionRange = "[9.2.14,)" -ordering = "AFTER" -side = "BOTH"