Fix sodium compat
This commit is contained in:
parent
6e4074ba3a
commit
93a65632ab
|
|
@ -5,11 +5,15 @@ import net.minecraft.client.color.block.BlockColors;
|
|||
import net.minecraft.client.renderer.block.dispatch.BlockStateModel;
|
||||
import net.minecraft.client.resources.model.BlockStateModelLoader;
|
||||
import net.minecraft.client.resources.model.ClientItemInfoLoader;
|
||||
import net.minecraft.client.resources.model.ModelDiscovery;
|
||||
import net.minecraft.client.resources.model.ModelManager;
|
||||
import net.minecraft.client.resources.model.ResolvedModel;
|
||||
import net.minecraft.client.resources.model.UnbakedModel;
|
||||
import net.minecraft.client.resources.model.cuboid.ItemModelGenerator;
|
||||
import net.minecraft.resources.Identifier;
|
||||
import net.minecraft.server.packs.resources.Resource;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.neoforged.neoforge.client.model.standalone.StandaloneModelLoader;
|
||||
import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
|
||||
import org.embeddedt.modernfix.dynresources.BlockStateModelMap;
|
||||
import org.embeddedt.modernfix.dynresources.DynamicModelSystem;
|
||||
|
|
@ -17,6 +21,7 @@ import org.spongepowered.asm.mixin.Mixin;
|
|||
import org.spongepowered.asm.mixin.Overwrite;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.ModifyArg;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
|
@ -40,11 +45,20 @@ public class MixinModelManager {
|
|||
* @author embeddedt
|
||||
* @reason Model resolution is not necessary, because we dynamically find models as they are referenced
|
||||
*/
|
||||
@Overwrite
|
||||
private static ModelManager.ResolvedModels discoverModelDependencies(
|
||||
Map<Identifier, UnbakedModel> inputModels, BlockStateModelLoader.LoadedModels loadedModels, ClientItemInfoLoader.LoadedClientInfos loadedClientInfos, net.neoforged.neoforge.client.model.standalone.StandaloneModelLoader.LoadedModels standaloneModels
|
||||
@Redirect(
|
||||
method = "discoverModelDependencies(Ljava/util/Map;Lnet/minecraft/client/resources/model/BlockStateModelLoader$LoadedModels;Lnet/minecraft/client/resources/model/ClientItemInfoLoader$LoadedClientInfos;Lnet/neoforged/neoforge/client/model/standalone/StandaloneModelLoader$LoadedModels;)Lnet/minecraft/client/resources/model/ModelManager$ResolvedModels;",
|
||||
at = @At(value = "INVOKE", target = "Lnet/minecraft/client/resources/model/ModelDiscovery;resolve()Ljava/util/Map;")
|
||||
)
|
||||
private static Map<Identifier, ResolvedModel> resolveModelDependenciesDynamically(
|
||||
ModelDiscovery discovery, Map<Identifier, UnbakedModel> inputModels, BlockStateModelLoader.LoadedModels loadedModels, ClientItemInfoLoader.LoadedClientInfos loadedClientInfos, StandaloneModelLoader.LoadedModels standaloneModels
|
||||
) {
|
||||
return new DynamicModelSystem.DynamicResolver(inputModels, loadedModels, loadedClientInfos, standaloneModels).resolvedModels();
|
||||
UnbakedModel generatedItemModel = new ItemModelGenerator();
|
||||
var generatedItemWrapper = ((ModelDiscoveryAccessor) discovery).mfix$getModelWrappers().get(ItemModelGenerator.GENERATED_ITEM_MODEL_ID);
|
||||
if (generatedItemWrapper != null) {
|
||||
generatedItemModel = ((ModelDiscoveryModelWrapperAccessor) generatedItemWrapper).mfix$getWrapped();
|
||||
}
|
||||
|
||||
return new DynamicModelSystem.DynamicResolver(inputModels, loadedModels, loadedClientInfos, standaloneModels, generatedItemModel).resolvedModels().models();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
package org.embeddedt.modernfix.common.mixin.perf.dynamic_resources;
|
||||
|
||||
import net.minecraft.client.resources.model.ModelDiscovery;
|
||||
import net.minecraft.client.resources.model.UnbakedModel;
|
||||
import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
@Mixin(ModelDiscovery.ModelWrapper.class)
|
||||
@ClientOnlyMixin
|
||||
public interface ModelDiscoveryModelWrapperAccessor {
|
||||
@Accessor("wrapped")
|
||||
UnbakedModel mfix$getWrapped();
|
||||
}
|
||||
|
|
@ -138,11 +138,19 @@ public class DynamicModelSystem {
|
|||
public record DynamicResolver(Map<Identifier, UnbakedModel> inputModels,
|
||||
BlockStateModelLoader.LoadedModels loadedModels,
|
||||
ClientItemInfoLoader.LoadedClientInfos loadedClientInfos,
|
||||
StandaloneModelLoader.LoadedModels standaloneModels) {
|
||||
StandaloneModelLoader.LoadedModels standaloneModels,
|
||||
UnbakedModel generatedItemModel) {
|
||||
|
||||
public DynamicResolver(Map<Identifier, UnbakedModel> inputModels,
|
||||
BlockStateModelLoader.LoadedModels loadedModels,
|
||||
ClientItemInfoLoader.LoadedClientInfos loadedClientInfos,
|
||||
StandaloneModelLoader.LoadedModels standaloneModels) {
|
||||
this(inputModels, loadedModels, loadedClientInfos, standaloneModels, new ItemModelGenerator());
|
||||
}
|
||||
|
||||
private ResolvedModel resolveModel(Identifier id) {
|
||||
var discovery = new ModelDiscovery(inputModels, MissingCuboidModel.missingModel());
|
||||
discovery.addSpecialModel(ItemModelGenerator.GENERATED_ITEM_MODEL_ID, new ItemModelGenerator());
|
||||
discovery.addSpecialModel(ItemModelGenerator.GENERATED_ITEM_MODEL_ID, generatedItemModel);
|
||||
if (!id.equals(ItemModelGenerator.GENERATED_ITEM_MODEL_ID)) {
|
||||
UnbakedModel unbaked = inputModels.get(id);
|
||||
if (unbaked != null) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user