From 8058d4caa95ae6096627f27f2be9bbc30a3d6d46 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sat, 23 Dec 2023 17:12:50 -0500 Subject: [PATCH] Remove dynamic item overrides This system conflicts with other optimization mods (e.g. Noxesium) and is annoying to maintain. Please stop using item overrides and use real items/mods instead --- .../dynamic_resources/ItemOverridesMixin.java | 34 -------- .../ItemOverrideBakedModel.java | 80 ------------------- 2 files changed, 114 deletions(-) delete mode 100644 common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/ItemOverridesMixin.java delete mode 100644 common/src/main/java/org/embeddedt/modernfix/dynamicresources/ItemOverrideBakedModel.java 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 2d155459..00000000 --- a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/ItemOverridesMixin.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.embeddedt.modernfix.common.mixin.perf.dynamic_resources; - -import net.minecraft.client.multiplayer.ClientLevel; -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.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.ModifyArg; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import java.util.function.Function; - -@Mixin(ItemOverrides.class) -public class ItemOverridesMixin { - @ModifyArg(method = "*", at = @At(value = "INVOKE", target = "Ljava/util/stream/Stream;map(Ljava/util/function/Function;)Ljava/util/stream/Stream;"), index = 0) - private Function itemToBaked(Function original) { - return override -> ItemOverrideBakedModel.of(override.getModel()); - } - - @Inject(method = "resolve", at = @At("RETURN"), cancellable = true) - private void getRealModel(BakedModel bakedModel, ItemStack itemStack, ClientLevel clientLevel, LivingEntity livingEntity, 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 0c8aae1e..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.world.level.block.state.BlockState; -import org.jetbrains.annotations.Nullable; - -import java.lang.ref.WeakReference; -import java.util.List; -import java.util.Random; - -/** - * 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, Random 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(); - } -}