Merge 1.18 into 1.19.2

This commit is contained in:
embeddedt 2023-12-23 17:15:26 -05:00
commit d8da6c08a0
No known key found for this signature in database
GPG Key ID: A69433EC199B5613
4 changed files with 0 additions and 174 deletions

View File

@ -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<BakedModel> cir) {
BakedModel original = cir.getReturnValue();
if(original instanceof ItemOverrideBakedModel) {
ItemOverrideBakedModel override = (ItemOverrideBakedModel)original;
BakedModel overrideModel = override.getRealModel();
cir.setReturnValue(overrideModel != null ? overrideModel : bakedModel);
}
}
}

View File

@ -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<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, 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();
}
}

View File

@ -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<ResourceLocation, UnbakedModel> modelGetter, ItemOverride override, CallbackInfoReturnable<BakedModel> cir) {
cir.setReturnValue(ItemOverrideBakedModel.of(override.getModel()));
}
}

View File

@ -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<ResourceLocation, UnbakedModel> function, Function<Material, TextureAtlasSprite> textureGetter, ItemOverride override, CallbackInfoReturnable<BakedModel> cir) {
cir.setReturnValue(ItemOverrideBakedModel.of(override.getModel()));
}
@Inject(method = "getOverrides", at = @At("HEAD"), remap = false)
private void doForceloadModels(CallbackInfoReturnable<ItemOverrides.BakedOverride> 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;
}
}
}
}
}