Update item override patch to 1.18
This commit is contained in:
parent
6fda7393b3
commit
d9b9586af3
|
|
@ -1,24 +1,15 @@
|
|||
package org.embeddedt.modernfix.common.mixin.perf.dynamic_resources;
|
||||
|
||||
import net.minecraft.client.renderer.block.model.ItemOverride;
|
||||
import net.minecraft.client.renderer.block.model.ItemOverrides;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
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(CallbackInfoReturnable<BakedModel> cir) {
|
||||
BakedModel original = cir.getReturnValue();
|
||||
|
|
|
|||
|
|
@ -31,4 +31,6 @@ accessible class net/minecraft/server/MinecraftServer$ReloadableResources
|
|||
accessible method net/minecraft/client/gui/screens/Screen addRenderableWidget (Lnet/minecraft/client/gui/components/events/GuiEventListener;)Lnet/minecraft/client/gui/components/events/GuiEventListener;
|
||||
accessible field net/minecraft/client/KeyMapping ALL Ljava/util/Map;
|
||||
accessible field net/minecraft/server/packs/resources/MultiPackResourceManager namespacedManagers Ljava/util/Map;
|
||||
accessible field net/minecraft/resources/RegistryOps registryAccess Lnet/minecraft/core/RegistryAccess;
|
||||
accessible field net/minecraft/resources/RegistryOps registryAccess Lnet/minecraft/core/RegistryAccess;
|
||||
accessible field net/minecraft/client/renderer/block/model/ItemOverrides$BakedOverride model Lnet/minecraft/client/resources/model/BakedModel;
|
||||
mutable field net/minecraft/client/renderer/block/model/ItemOverrides$BakedOverride model Lnet/minecraft/client/resources/model/BakedModel;
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
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()));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user