修改第六部分
修正了forge模型注册
This commit is contained in:
parent
3c6416d7ca
commit
c8edb2d74f
|
|
@ -7,6 +7,5 @@ dependencies {
|
||||||
// which get remapped to the correct annotations on each platform.
|
// which get remapped to the correct annotations on each platform.
|
||||||
// Do NOT use other classes from Fabric Loader.
|
// Do NOT use other classes from Fabric Loader.
|
||||||
modImplementation "net.fabricmc:fabric-loader:$rootProject.fabric_loader_version"
|
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"
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ public final class JsonEm {
|
||||||
public static void init() {
|
public static void init() {
|
||||||
// Write common init code here.
|
// Write common init code here.
|
||||||
}
|
}
|
||||||
|
@SuppressWarnings("unused")
|
||||||
public static void registerModelLayer(ModelLayerLocation layer) {
|
public static void registerModelLayer(ModelLayerLocation layer) {
|
||||||
Services.PLATFORM.registerModelLayer(layer);
|
Services.PLATFORM.registerModelLayer(layer);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,8 @@ import java.util.Map;
|
||||||
|
|
||||||
@Mixin(EntityModelSet.class)
|
@Mixin(EntityModelSet.class)
|
||||||
public class EntityModelLoaderMixin {
|
public class EntityModelLoaderMixin {
|
||||||
@Shadow private Map<ModelLayerLocation, LayerDefinition> roots;
|
@Shadow
|
||||||
|
private Map<ModelLayerLocation, LayerDefinition> roots;
|
||||||
|
|
||||||
@Inject(method = "onResourceManagerReload", at = @At("TAIL"))
|
@Inject(method = "onResourceManagerReload", at = @At("TAIL"))
|
||||||
private void jsonem$loadJsonEntityModels(ResourceManager manager, CallbackInfo ci) {
|
private void jsonem$loadJsonEntityModels(ResourceManager manager, CallbackInfo ci) {
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@ public class JsonEMCodecs {
|
||||||
((DilationAccess) dil).jsonem$growZ())
|
((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) {
|
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),
|
return ModelCuboidDataAccess.jsonem$create(name.orElse(null),
|
||||||
uv.u(), uv.v(),
|
uv.u(), uv.v(),
|
||||||
|
|
|
||||||
|
|
@ -33,11 +33,9 @@ public class JsonEntityModelUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void loadModels(ResourceManager manager, Map<ModelLayerLocation, LayerDefinition> models) {
|
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 modelLoc = new ResourceLocation(layer.getModel().getNamespace(), "models/entity/"+layer.getModel().getPath()+"/"+layer.getLayer()+".json");
|
||||||
|
|
||||||
var res = manager.getResource(modelLoc);
|
var res = manager.getResource(modelLoc);
|
||||||
|
|
||||||
if (res.isPresent()) {
|
if (res.isPresent()) {
|
||||||
try {
|
try {
|
||||||
try (var in = res.get().open()) {
|
try (var in = res.get().open()) {
|
||||||
|
|
@ -48,7 +46,8 @@ public class JsonEntityModelUtil {
|
||||||
JsonEm.LOG.error("Error: {}",e.getMessage());
|
JsonEm.LOG.error("Error: {}",e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void dump(ModelLayerLocation layer, LayerDefinition data) throws IOException {
|
public static void dump(ModelLayerLocation layer, LayerDefinition data) throws IOException {
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ architectury {
|
||||||
loom {
|
loom {
|
||||||
forge {
|
forge {
|
||||||
mixinConfig "${mod_id}.mixins.json"
|
mixinConfig "${mod_id}.mixins.json"
|
||||||
|
mixinConfig "${mod_id}.forge.mixins.json"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.leisuretimedock.jsonem.forge.platform;
|
package com.leisuretimedock.jsonem.forge.platform;
|
||||||
|
|
||||||
import com.leisuretimedock.jsonem.forge.config.JsonEmConfig;
|
import com.leisuretimedock.jsonem.forge.config.JsonEmConfig;
|
||||||
|
import com.leisuretimedock.jsonem.forge.mixin.EntityModelLayersAccessor;
|
||||||
import com.leisuretimedock.jsonem.platform.IPlatFormHelper;
|
import com.leisuretimedock.jsonem.platform.IPlatFormHelper;
|
||||||
import net.minecraft.client.model.geom.ModelLayerLocation;
|
import net.minecraft.client.model.geom.ModelLayerLocation;
|
||||||
import net.minecraft.client.model.geom.builders.LayerDefinition;
|
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));
|
DEFINITIONS.put(layer, () -> LayerDefinition.create(new MeshDefinition(), 32, 32));
|
||||||
}
|
}
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void event(EntityRenderersEvent.RegisterLayerDefinitions event) {
|
public static void registerLayerDefinitions(EntityRenderersEvent.RegisterLayerDefinitions event) {
|
||||||
for (Map.Entry<ModelLayerLocation, Supplier<LayerDefinition>> modelLayerLocationSupplierEntry : DEFINITIONS.entrySet()) {
|
for (Map.Entry<ModelLayerLocation, Supplier<LayerDefinition>> modelLayerLocationSupplierEntry : DEFINITIONS.entrySet()) {
|
||||||
event.registerLayerDefinition(modelLayerLocationSupplierEntry.getKey(), modelLayerLocationSupplierEntry.getValue());
|
event.registerLayerDefinition(modelLayerLocationSupplierEntry.getKey(), modelLayerLocationSupplierEntry.getValue());
|
||||||
|
EntityModelLayersAccessor.getLayers().add(modelLayerLocationSupplierEntry.getKey());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,4 +28,3 @@ mandatory = true
|
||||||
versionRange = "[1.20.1,)"
|
versionRange = "[1.20.1,)"
|
||||||
ordering = "NONE"
|
ordering = "NONE"
|
||||||
side = "BOTH"
|
side = "BOTH"
|
||||||
|
|
||||||
|
|
|
||||||
14
forge/src/main/resources/jsonem.forge.mixins.json
Normal file
14
forge/src/main/resources/jsonem.forge.mixins.json
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user