修改第六部分

修正了forge模型注册
This commit is contained in:
叁玖领域 2025-05-30 11:56:56 +08:00
parent 3c6416d7ca
commit c8edb2d74f
10 changed files with 44 additions and 10 deletions

View File

@ -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"
}

View File

@ -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);
}

View File

@ -16,7 +16,8 @@ import java.util.Map;
@Mixin(EntityModelSet.class)
public class EntityModelLoaderMixin {
@Shadow private Map<ModelLayerLocation, LayerDefinition> roots;
@Shadow
private Map<ModelLayerLocation, LayerDefinition> roots;
@Inject(method = "onResourceManagerReload", at = @At("TAIL"))
private void jsonem$loadJsonEntityModels(ResourceManager manager, CallbackInfo ci) {

View File

@ -44,6 +44,7 @@ public class JsonEMCodecs {
((DilationAccess) dil).jsonem$growZ())
);
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
private static CubeDefinition createCuboidData(Optional<String> name, Vector3f offset, Vector3f dimensions, CubeDeformation dilation, boolean mirror, UVPair uv, UVPair uvSize, Optional<List<Direction>> faces) {
return ModelCuboidDataAccess.jsonem$create(name.orElse(null),
uv.u(), uv.v(),

View File

@ -33,11 +33,9 @@ public class JsonEntityModelUtil {
}
public static void loadModels(ResourceManager manager, Map<ModelLayerLocation, LayerDefinition> 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 {

View File

@ -10,6 +10,7 @@ architectury {
loom {
forge {
mixinConfig "${mod_id}.mixins.json"
mixinConfig "${mod_id}.forge.mixins.json"
}
}

View File

@ -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<ModelLayerLocation> getLayers() {
throw new AssertionError("This should not occur!");
}
}

View File

@ -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<ModelLayerLocation, Supplier<LayerDefinition>> modelLayerLocationSupplierEntry : DEFINITIONS.entrySet()) {
event.registerLayerDefinition(modelLayerLocationSupplierEntry.getKey(), modelLayerLocationSupplierEntry.getValue());
EntityModelLayersAccessor.getLayers().add(modelLayerLocationSupplierEntry.getKey());
}
}
}

View File

@ -27,5 +27,4 @@ modId = "minecraft"
mandatory = true
versionRange = "[1.20.1,)"
ordering = "NONE"
side = "BOTH"
side = "BOTH"

View File

@ -0,0 +1,14 @@
{
"required": true,
"package": "com.leisuretimedock.jsonem.forge.mixin",
"compatibilityLevel": "JAVA_17",
"minVersion": "0.8",
"client": [
"EntityModelLayersAccessor"
],
"mixins": [
],
"injectors": {
"defaultRequire": 1
}
}