diff --git a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/ItemOverridesMixin.java b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/ItemOverridesMixin.java deleted file mode 100644 index 4505fcb8..00000000 --- a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/ItemOverridesMixin.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.embeddedt.modernfix.common.mixin.perf.dynamic_resources; - -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.renderer.block.model.ItemOverrides; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; -import org.embeddedt.modernfix.dynamicresources.ItemOverrideBakedModel; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(ItemOverrides.class) -public class ItemOverridesMixin { - @Inject(method = "resolve", at = @At("RETURN"), cancellable = true) - private void getRealModel(BakedModel bakedModel, ItemStack stack, ClientLevel level, LivingEntity entity, int seed, CallbackInfoReturnable cir) { - BakedModel original = cir.getReturnValue(); - if(original instanceof ItemOverrideBakedModel) { - ItemOverrideBakedModel override = (ItemOverrideBakedModel)original; - BakedModel overrideModel = override.getRealModel(); - cir.setReturnValue(overrideModel != null ? overrideModel : bakedModel); - } - } -} diff --git a/common/src/main/java/org/embeddedt/modernfix/dynamicresources/ItemOverrideBakedModel.java b/common/src/main/java/org/embeddedt/modernfix/dynamicresources/ItemOverrideBakedModel.java deleted file mode 100644 index 42f431a6..00000000 --- a/common/src/main/java/org/embeddedt/modernfix/dynamicresources/ItemOverrideBakedModel.java +++ /dev/null @@ -1,80 +0,0 @@ -package org.embeddedt.modernfix.dynamicresources; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.block.model.ItemOverrides; -import net.minecraft.client.renderer.block.model.ItemTransforms; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraft.world.level.block.state.BlockState; -import org.jetbrains.annotations.Nullable; - -import java.lang.ref.WeakReference; -import java.util.List; - -/** - * Delegate model that stores the location of an actual baked model, for use in ItemOverrides. - */ -public class ItemOverrideBakedModel implements BakedModel { - public final ResourceLocation realLocation; - private WeakReference realModel = new WeakReference<>(null); - - private ItemOverrideBakedModel(ResourceLocation realLocation) { - this.realLocation = realLocation; - } - - public static ItemOverrideBakedModel of(ResourceLocation realLocation) { - return new ItemOverrideBakedModel(realLocation); - } - - public BakedModel getRealModel() { - BakedModel m = realModel.get(); - if(m == null) { - m = DynamicBakedModelProvider.currentInstance.get(realLocation); - realModel = new WeakReference<>(m); - } - return m; - } - - @Override - public List getQuads(@Nullable BlockState state, @Nullable Direction direction, RandomSource random) { - return getRealModel().getQuads(state, direction, random); - } - - @Override - public boolean useAmbientOcclusion() { - return getRealModel().useAmbientOcclusion(); - } - - @Override - public boolean isGui3d() { - return getRealModel().isGui3d(); - } - - @Override - public boolean usesBlockLight() { - return getRealModel().usesBlockLight(); - } - - @Override - public boolean isCustomRenderer() { - return getRealModel().isCustomRenderer(); - } - - @Override - public TextureAtlasSprite getParticleIcon() { - return getRealModel().getParticleIcon(); - } - - @Override - public ItemTransforms getTransforms() { - return getRealModel().getTransforms(); - } - - @Override - public ItemOverrides getOverrides() { - return getRealModel().getOverrides(); - } -} diff --git a/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ItemOverridesFabricMixin.java b/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ItemOverridesFabricMixin.java deleted file mode 100644 index 83eb0547..00000000 --- a/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ItemOverridesFabricMixin.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.embeddedt.modernfix.fabric.mixin.perf.dynamic_resources; - -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.renderer.block.model.ItemOverride; -import net.minecraft.client.renderer.block.model.ItemOverrides; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.ModelBakery; -import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.resources.ResourceLocation; -import org.embeddedt.modernfix.dynamicresources.ItemOverrideBakedModel; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import java.util.function.Function; - -@Mixin(ItemOverrides.class) -public class ItemOverridesFabricMixin { - @Inject(method = "bakeModel", at = @At("HEAD"), cancellable = true) - private void useDynamicallyBakedModel(ModelBakery baker, BlockModel model, Function modelGetter, ItemOverride override, CallbackInfoReturnable cir) { - cir.setReturnValue(ItemOverrideBakedModel.of(override.getModel())); - } -} diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ItemOverridesForgeMixin.java b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ItemOverridesForgeMixin.java deleted file mode 100644 index 935601b0..00000000 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ItemOverridesForgeMixin.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.embeddedt.modernfix.forge.mixin.perf.dynamic_resources; - -import net.minecraft.client.renderer.block.model.ItemOverride; -import net.minecraft.client.renderer.block.model.ItemOverrides; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.Material; -import net.minecraft.client.resources.model.ModelBakery; -import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.resources.ResourceLocation; -import org.embeddedt.modernfix.dynamicresources.ItemOverrideBakedModel; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import java.util.function.Function; - -@Mixin(ItemOverrides.class) -public class ItemOverridesForgeMixin { - @Shadow @Final private ItemOverrides.BakedOverride[] overrides; - private volatile boolean forceLoadedModels = false; - - @Inject(method = "bakeModel", at = @At("HEAD"), cancellable = true, remap = false) - private void useDynamicallyBakedModel(ModelBakery baker, UnbakedModel model, Function function, Function textureGetter, ItemOverride override, CallbackInfoReturnable cir) { - cir.setReturnValue(ItemOverrideBakedModel.of(override.getModel())); - } - - @Inject(method = "getOverrides", at = @At("HEAD"), remap = false) - private void doForceloadModels(CallbackInfoReturnable cir) { - if(!forceLoadedModels) { - synchronized (this) { - if(!forceLoadedModels) { - for(ItemOverrides.BakedOverride override : overrides) { - if(override != null && override.model instanceof ItemOverrideBakedModel) - override.model = ((ItemOverrideBakedModel)override.model).getRealModel(); - } - forceLoadedModels = true; - } - } - } - } -}