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
This commit is contained in:
parent
a7c2424b14
commit
8058d4caa9
|
|
@ -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<ItemOverride, BakedModel> itemToBaked(Function<ItemOverride, BakedModel> 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<BakedModel> cir) {
|
|
||||||
BakedModel original = cir.getReturnValue();
|
|
||||||
if(original instanceof ItemOverrideBakedModel) {
|
|
||||||
ItemOverrideBakedModel override = (ItemOverrideBakedModel)original;
|
|
||||||
BakedModel overrideModel = override.getRealModel();
|
|
||||||
cir.setReturnValue(overrideModel != null ? overrideModel : bakedModel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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<BakedModel> 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<BakedQuad> 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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue
Block a user