修改第十部分
将Forge退回到47.3.5版本
This commit is contained in:
parent
a0e0485ec0
commit
9229bbfd71
|
|
@ -9,7 +9,7 @@ public final class JsonEm {
|
||||||
public static final String MOD_ID = "jsonem";
|
public static final String MOD_ID = "jsonem";
|
||||||
public static final Logger LOG = LoggerFactory.getLogger(JsonEm.class);
|
public static final Logger LOG = LoggerFactory.getLogger(JsonEm.class);
|
||||||
public static void commonSetUp() {
|
public static void commonSetUp() {
|
||||||
Services.PLATFORM.getReloadListener().registerModelReloadListener();
|
|
||||||
}
|
}
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public static void registerModelLayer(ModelLayerLocation layer) {
|
public static void registerModelLayer(ModelLayerLocation layer) {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
package com.leisuretimedock.jsonem.core;
|
|
||||||
|
|
||||||
import com.leisuretimedock.jsonem.JsonEm;
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
|
||||||
|
|
||||||
public interface IJsonEntityModelReloadListener {
|
|
||||||
ResourceLocation ID = new ResourceLocation(JsonEm.MOD_ID, "json_model_reload");
|
|
||||||
void registerModelReloadListener();
|
|
||||||
}
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
package com.leisuretimedock.jsonem.mixin;
|
|
||||||
|
|
||||||
import net.minecraft.client.model.geom.EntityModelSet;
|
|
||||||
import net.minecraft.client.model.geom.ModelLayerLocation;
|
|
||||||
import net.minecraft.client.model.geom.builders.LayerDefinition;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@Mixin(EntityModelSet.class)
|
|
||||||
public interface EntityModelSetAccess {
|
|
||||||
@Accessor("roots")
|
|
||||||
void setRoots(Map<ModelLayerLocation, LayerDefinition> roots);
|
|
||||||
|
|
||||||
@Accessor("roots")
|
|
||||||
Map<ModelLayerLocation, LayerDefinition> getRoots();
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
package com.leisuretimedock.jsonem.mixin;
|
||||||
|
|
||||||
|
import com.leisuretimedock.jsonem.util.JsonEntityModelUtil;
|
||||||
|
import net.minecraft.client.model.geom.EntityModelSet;
|
||||||
|
import net.minecraft.client.model.geom.ModelLayerLocation;
|
||||||
|
import net.minecraft.client.model.geom.builders.LayerDefinition;
|
||||||
|
import net.minecraft.server.packs.resources.ResourceManager;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Mixin(EntityModelSet.class)
|
||||||
|
public abstract class EntityModelSetMixin {
|
||||||
|
@Accessor("roots")
|
||||||
|
abstract void setRoots(Map<ModelLayerLocation, LayerDefinition> roots);
|
||||||
|
|
||||||
|
@Accessor("roots")
|
||||||
|
abstract Map<ModelLayerLocation, LayerDefinition> getRoots();
|
||||||
|
@Inject(method = "onResourceManagerReload", at = @At("TAIL"))
|
||||||
|
public void onResourceManagerReload(ResourceManager resourceManager, CallbackInfo ci) {
|
||||||
|
setRoots(new HashMap<>(getRoots()));
|
||||||
|
JsonEntityModelUtil.loadModels(resourceManager, getRoots());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
package com.leisuretimedock.jsonem.platform;
|
package com.leisuretimedock.jsonem.platform;
|
||||||
|
|
||||||
import com.leisuretimedock.jsonem.core.IJsonEntityModelReloadListener;
|
|
||||||
import net.minecraft.client.model.geom.ModelLayerLocation;
|
import net.minecraft.client.model.geom.ModelLayerLocation;
|
||||||
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
|
@ -9,5 +8,4 @@ public interface IPlatFormHelper {
|
||||||
boolean shouldDumpModels();
|
boolean shouldDumpModels();
|
||||||
Path getDumpModelsPath();
|
Path getDumpModelsPath();
|
||||||
void registerModelLayer(ModelLayerLocation layer);
|
void registerModelLayer(ModelLayerLocation layer);
|
||||||
IJsonEntityModelReloadListener getReloadListener();
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
"minVersion": "0.8",
|
"minVersion": "0.8",
|
||||||
"client": [
|
"client": [
|
||||||
"DilationAccess",
|
"DilationAccess",
|
||||||
"EntityModelSetAccess",
|
"EntityModelSetMixin",
|
||||||
"EntityModelsMixin",
|
"EntityModelsMixin",
|
||||||
"ModelCuboidDataAccess",
|
"ModelCuboidDataAccess",
|
||||||
"ModelPartDataAccess",
|
"ModelPartDataAccess",
|
||||||
|
|
|
||||||
|
|
@ -1,59 +0,0 @@
|
||||||
package com.leisuretimedock.jsonem.fabric.core;
|
|
||||||
|
|
||||||
import com.leisuretimedock.jsonem.JsonEm;
|
|
||||||
import com.leisuretimedock.jsonem.core.IJsonEntityModelReloadListener;
|
|
||||||
import com.leisuretimedock.jsonem.mixin.EntityModelSetAccess;
|
|
||||||
import com.leisuretimedock.jsonem.util.JsonEntityModelUtil;
|
|
||||||
import net.fabricmc.fabric.api.resource.IdentifiableResourceReloadListener;
|
|
||||||
import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
|
|
||||||
import net.minecraft.client.Minecraft;
|
|
||||||
import net.minecraft.client.model.geom.EntityModelSet;
|
|
||||||
import net.minecraft.client.model.geom.ModelLayerLocation;
|
|
||||||
import net.minecraft.client.model.geom.builders.LayerDefinition;
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
|
||||||
import net.minecraft.server.packs.PackType;
|
|
||||||
import net.minecraft.server.packs.resources.ResourceManager;
|
|
||||||
import net.minecraft.util.Unit;
|
|
||||||
import net.minecraft.util.profiling.ProfilerFiller;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
import java.util.concurrent.Executor;
|
|
||||||
|
|
||||||
public class JsonEntityModelReloadListenerImp implements IJsonEntityModelReloadListener, IdentifiableResourceReloadListener {
|
|
||||||
@Override
|
|
||||||
public ResourceLocation getFabricId() {
|
|
||||||
return ID;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public @NotNull CompletableFuture<Void> reload(@NotNull PreparationBarrier preparationBarrier, @NotNull ResourceManager resourceManager, @NotNull ProfilerFiller preparationsProfiler, @NotNull ProfilerFiller reloadProfiler, @NotNull Executor backgroundExecutor, @NotNull Executor gameExecutor) {
|
|
||||||
return preparationBarrier.wait(Unit.INSTANCE).thenRunAsync(() -> {
|
|
||||||
reloadProfiler.startTick();
|
|
||||||
reloadProfiler.push("listener");
|
|
||||||
try {
|
|
||||||
Minecraft minecraft = Minecraft.getInstance();
|
|
||||||
EntityModelSet modelSet = minecraft.getEntityModels();
|
|
||||||
|
|
||||||
EntityModelSetAccess accessor = (EntityModelSetAccess) modelSet;
|
|
||||||
Map<ModelLayerLocation, LayerDefinition> roots = new HashMap<>(accessor.getRoots());
|
|
||||||
|
|
||||||
JsonEntityModelUtil.loadModels(resourceManager, roots);
|
|
||||||
|
|
||||||
accessor.setRoots(roots);
|
|
||||||
} catch (Exception e) {
|
|
||||||
JsonEm.LOG.error(e.getMessage(), e);
|
|
||||||
}
|
|
||||||
reloadProfiler.pop();
|
|
||||||
reloadProfiler.endTick();
|
|
||||||
}, gameExecutor);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void registerModelReloadListener() {
|
|
||||||
ResourceManagerHelper.get(PackType.CLIENT_RESOURCES)
|
|
||||||
.registerReloadListener(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
package com.leisuretimedock.jsonem.fabric.platform;
|
package com.leisuretimedock.jsonem.fabric.platform;
|
||||||
|
|
||||||
import com.leisuretimedock.jsonem.core.IJsonEntityModelReloadListener;
|
|
||||||
import com.leisuretimedock.jsonem.fabric.JsonEmFabric;
|
import com.leisuretimedock.jsonem.fabric.JsonEmFabric;
|
||||||
import com.leisuretimedock.jsonem.fabric.core.JsonEntityModelReloadListenerImp;
|
|
||||||
import com.leisuretimedock.jsonem.platform.IPlatFormHelper;
|
import com.leisuretimedock.jsonem.platform.IPlatFormHelper;
|
||||||
import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry;
|
import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry;
|
||||||
import net.fabricmc.loader.api.FabricLoader;
|
import net.fabricmc.loader.api.FabricLoader;
|
||||||
|
|
@ -30,8 +28,4 @@ public class FabricPlatformHelper implements IPlatFormHelper {
|
||||||
EntityModelLayerRegistry.registerModelLayer(layer, () -> LayerDefinition.create(new MeshDefinition(), 32, 32));
|
EntityModelLayerRegistry.registerModelLayer(layer, () -> LayerDefinition.create(new MeshDefinition(), 32, 32));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public IJsonEntityModelReloadListener getReloadListener() {
|
|
||||||
return new JsonEntityModelReloadListenerImp();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,17 @@ package com.leisuretimedock.jsonem.forge;
|
||||||
import com.leisuretimedock.jsonem.JsonEm;
|
import com.leisuretimedock.jsonem.JsonEm;
|
||||||
import com.leisuretimedock.jsonem.forge.config.JsonEmConfig;
|
import com.leisuretimedock.jsonem.forge.config.JsonEmConfig;
|
||||||
import com.leisuretimedock.jsonem.forge.platform.ForgePlatformHelper;
|
import com.leisuretimedock.jsonem.forge.platform.ForgePlatformHelper;
|
||||||
|
import net.minecraftforge.fml.ModLoadingContext;
|
||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
import net.minecraftforge.fml.config.ModConfig;
|
import net.minecraftforge.fml.config.ModConfig;
|
||||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||||
|
|
||||||
@Mod(JsonEm.MOD_ID)
|
@Mod(JsonEm.MOD_ID)
|
||||||
public final class JsonEmForge {
|
public final class JsonEmForge {
|
||||||
public JsonEmForge(FMLJavaModLoadingContext context) {
|
public JsonEmForge() {
|
||||||
context.registerConfig(ModConfig.Type.CLIENT, JsonEmConfig.spec, "jsonem.toml");
|
FMLJavaModLoadingContext fmlJavaModLoadingContext = FMLJavaModLoadingContext.get();
|
||||||
|
ModLoadingContext.get().registerConfig(ModConfig.Type.CLIENT, JsonEmConfig.spec, "jsonem.toml");
|
||||||
JsonEm.commonSetUp();
|
JsonEm.commonSetUp();
|
||||||
context.getModEventBus().register(ForgePlatformHelper.class);
|
fmlJavaModLoadingContext.getModEventBus().register(ForgePlatformHelper.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
||||||
package com.leisuretimedock.jsonem.forge.core;
|
|
||||||
|
|
||||||
import com.leisuretimedock.jsonem.core.IJsonEntityModelReloadListener;
|
|
||||||
import com.leisuretimedock.jsonem.mixin.EntityModelSetAccess;
|
|
||||||
import com.leisuretimedock.jsonem.util.JsonEntityModelUtil;
|
|
||||||
import net.minecraft.client.Minecraft;
|
|
||||||
import net.minecraft.client.model.geom.EntityModelSet;
|
|
||||||
import net.minecraft.client.model.geom.ModelLayerLocation;
|
|
||||||
import net.minecraft.client.model.geom.builders.LayerDefinition;
|
|
||||||
import net.minecraft.server.packs.resources.ResourceManager;
|
|
||||||
import net.minecraft.server.packs.resources.ResourceManagerReloadListener;
|
|
||||||
import net.minecraftforge.client.event.RegisterClientReloadListenersEvent;
|
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
|
||||||
import net.minecraftforge.fml.common.Mod;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class JsonEntityModelReloadListenerImp implements IJsonEntityModelReloadListener, ResourceManagerReloadListener {
|
|
||||||
|
|
||||||
public static void registerReloadListeners(RegisterClientReloadListenersEvent event) {
|
|
||||||
event.registerReloadListener(new JsonEntityModelReloadListenerImp());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void registerModelReloadListener() {
|
|
||||||
Mod.EventBusSubscriber.Bus.MOD.bus()
|
|
||||||
.get()
|
|
||||||
.addListener(JsonEntityModelReloadListenerImp::registerReloadListeners);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onResourceManagerReload(@NotNull ResourceManager resourceManager) {
|
|
||||||
Minecraft mc = Minecraft.getInstance();
|
|
||||||
EntityModelSet modelSet = mc.getEntityModels();
|
|
||||||
|
|
||||||
EntityModelSetAccess accessor = (EntityModelSetAccess) modelSet;
|
|
||||||
Map<ModelLayerLocation, LayerDefinition> roots = new HashMap<>(accessor.getRoots());
|
|
||||||
|
|
||||||
// 注入自定义模型
|
|
||||||
JsonEntityModelUtil.loadModels(resourceManager, roots);
|
|
||||||
|
|
||||||
accessor.setRoots(roots);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,16 +1,15 @@
|
||||||
package com.leisuretimedock.jsonem.forge.platform;
|
package com.leisuretimedock.jsonem.forge.platform;
|
||||||
|
|
||||||
import com.leisuretimedock.jsonem.core.IJsonEntityModelReloadListener;
|
|
||||||
import com.leisuretimedock.jsonem.forge.config.JsonEmConfig;
|
import com.leisuretimedock.jsonem.forge.config.JsonEmConfig;
|
||||||
import com.leisuretimedock.jsonem.forge.core.JsonEntityModelReloadListenerImp;
|
|
||||||
import com.leisuretimedock.jsonem.forge.mixin.EntityModelLayersAccessor;
|
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.PartPose;
|
||||||
|
import net.minecraft.client.model.geom.builders.CubeListBuilder;
|
||||||
import net.minecraft.client.model.geom.builders.LayerDefinition;
|
import net.minecraft.client.model.geom.builders.LayerDefinition;
|
||||||
import net.minecraft.client.model.geom.builders.MeshDefinition;
|
import net.minecraft.client.model.geom.builders.MeshDefinition;
|
||||||
import net.minecraftforge.client.event.EntityRenderersEvent;
|
import net.minecraftforge.client.event.EntityRenderersEvent;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
|
|
||||||
import net.minecraftforge.fml.loading.FMLPaths;
|
import net.minecraftforge.fml.loading.FMLPaths;
|
||||||
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
|
@ -36,12 +35,14 @@ public class ForgePlatformHelper implements IPlatFormHelper {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void registerModelLayer(ModelLayerLocation layer) {
|
public void registerModelLayer(ModelLayerLocation layer) {
|
||||||
DEFINITIONS.put(layer, () -> LayerDefinition.create(new MeshDefinition(), 32, 32));
|
DEFINITIONS.put(layer, ForgePlatformHelper::createPlaceholderDefinition);
|
||||||
}
|
}
|
||||||
|
private static LayerDefinition createPlaceholderDefinition() {
|
||||||
@Override
|
MeshDefinition mesh = new MeshDefinition();
|
||||||
public IJsonEntityModelReloadListener getReloadListener() {
|
var root = mesh.getRoot();
|
||||||
return new JsonEntityModelReloadListenerImp();
|
// 加入 main root,防止 bakeLayer().getChild("main") 为 null
|
||||||
|
root.addOrReplaceChild("main", CubeListBuilder.create(), PartPose.ZERO);
|
||||||
|
return LayerDefinition.create(mesh, 32, 32);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
modLoader = "javafml"
|
modLoader = "javafml"
|
||||||
loaderVersion = "[47,)"
|
loaderVersion = "[47,)"
|
||||||
#issueTrackerURL = ""
|
issueTrackerURL = "https://github.com/LeisureTimeDock/JsonEM_Neo_Forge"
|
||||||
license = "${mod_licence}"
|
license = "${mod_licence}"
|
||||||
logoFile = "icon.png"
|
logoFile = "icon.png"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,4 +20,4 @@ minecraft_version=1.20.1
|
||||||
architectury_api_version=9.2.14
|
architectury_api_version=9.2.14
|
||||||
fabric_loader_version=0.16.14
|
fabric_loader_version=0.16.14
|
||||||
fabric_api_version=0.92.5+1.20.1
|
fabric_api_version=0.92.5+1.20.1
|
||||||
forge_version=1.20.1-47.4.1
|
forge_version=1.20.1-47.3.5
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user