Skip to content

Commit d9b9586

Browse files
committed
Update item override patch to 1.18
1 parent 6fda739 commit d9b9586

File tree

4 files changed

+72
-10
lines changed

4 files changed

+72
-10
lines changed

common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/ItemOverridesMixin.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,15 @@
11
package org.embeddedt.modernfix.common.mixin.perf.dynamic_resources;
22

3-
import net.minecraft.client.renderer.block.model.ItemOverride;
43
import net.minecraft.client.renderer.block.model.ItemOverrides;
54
import net.minecraft.client.resources.model.BakedModel;
65
import org.embeddedt.modernfix.dynamicresources.ItemOverrideBakedModel;
76
import org.spongepowered.asm.mixin.Mixin;
87
import org.spongepowered.asm.mixin.injection.At;
98
import org.spongepowered.asm.mixin.injection.Inject;
10-
import org.spongepowered.asm.mixin.injection.ModifyArg;
119
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
1210

13-
import java.util.function.Function;
14-
1511
@Mixin(ItemOverrides.class)
1612
public class ItemOverridesMixin {
17-
@ModifyArg(method = "*", at = @At(value = "INVOKE", target = "Ljava/util/stream/Stream;map(Ljava/util/function/Function;)Ljava/util/stream/Stream;"), index = 0)
18-
private Function<ItemOverride, BakedModel> itemToBaked(Function<ItemOverride, BakedModel> original) {
19-
return override -> ItemOverrideBakedModel.of(override.getModel());
20-
}
21-
2213
@Inject(method = "resolve", at = @At("RETURN"), cancellable = true)
2314
private void getRealModel(CallbackInfoReturnable<BakedModel> cir) {
2415
BakedModel original = cir.getReturnValue();

common/src/main/resources/modernfix.accesswidener

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,6 @@ accessible class net/minecraft/server/MinecraftServer$ReloadableResources
3131
accessible method net/minecraft/client/gui/screens/Screen addRenderableWidget (Lnet/minecraft/client/gui/components/events/GuiEventListener;)Lnet/minecraft/client/gui/components/events/GuiEventListener;
3232
accessible field net/minecraft/client/KeyMapping ALL Ljava/util/Map;
3333
accessible field net/minecraft/server/packs/resources/MultiPackResourceManager namespacedManagers Ljava/util/Map;
34-
accessible field net/minecraft/resources/RegistryOps registryAccess Lnet/minecraft/core/RegistryAccess;
34+
accessible field net/minecraft/resources/RegistryOps registryAccess Lnet/minecraft/core/RegistryAccess;
35+
accessible field net/minecraft/client/renderer/block/model/ItemOverrides$BakedOverride model Lnet/minecraft/client/resources/model/BakedModel;
36+
mutable field net/minecraft/client/renderer/block/model/ItemOverrides$BakedOverride model Lnet/minecraft/client/resources/model/BakedModel;
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.embeddedt.modernfix.fabric.mixin.perf.dynamic_resources;
2+
3+
import net.minecraft.client.renderer.block.model.BlockModel;
4+
import net.minecraft.client.renderer.block.model.ItemOverride;
5+
import net.minecraft.client.renderer.block.model.ItemOverrides;
6+
import net.minecraft.client.resources.model.BakedModel;
7+
import net.minecraft.client.resources.model.ModelBakery;
8+
import net.minecraft.client.resources.model.UnbakedModel;
9+
import net.minecraft.resources.ResourceLocation;
10+
import org.embeddedt.modernfix.dynamicresources.ItemOverrideBakedModel;
11+
import org.spongepowered.asm.mixin.Mixin;
12+
import org.spongepowered.asm.mixin.injection.At;
13+
import org.spongepowered.asm.mixin.injection.Inject;
14+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
15+
16+
import java.util.function.Function;
17+
18+
@Mixin(ItemOverrides.class)
19+
public class ItemOverridesFabricMixin {
20+
@Inject(method = "bakeModel", at = @At("HEAD"), cancellable = true)
21+
private void useDynamicallyBakedModel(ModelBakery baker, BlockModel model, Function<ResourceLocation, UnbakedModel> modelGetter, ItemOverride override, CallbackInfoReturnable<BakedModel> cir) {
22+
cir.setReturnValue(ItemOverrideBakedModel.of(override.getModel()));
23+
}
24+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package org.embeddedt.modernfix.forge.mixin.perf.dynamic_resources;
2+
3+
import net.minecraft.client.renderer.block.model.ItemOverride;
4+
import net.minecraft.client.renderer.block.model.ItemOverrides;
5+
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
6+
import net.minecraft.client.resources.model.BakedModel;
7+
import net.minecraft.client.resources.model.Material;
8+
import net.minecraft.client.resources.model.ModelBakery;
9+
import net.minecraft.client.resources.model.UnbakedModel;
10+
import net.minecraft.resources.ResourceLocation;
11+
import org.embeddedt.modernfix.dynamicresources.ItemOverrideBakedModel;
12+
import org.spongepowered.asm.mixin.Final;
13+
import org.spongepowered.asm.mixin.Mixin;
14+
import org.spongepowered.asm.mixin.Shadow;
15+
import org.spongepowered.asm.mixin.injection.At;
16+
import org.spongepowered.asm.mixin.injection.Inject;
17+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
18+
19+
import java.util.function.Function;
20+
21+
@Mixin(ItemOverrides.class)
22+
public class ItemOverridesForgeMixin {
23+
@Shadow @Final private ItemOverrides.BakedOverride[] overrides;
24+
private volatile boolean forceLoadedModels = false;
25+
26+
@Inject(method = "bakeModel", at = @At("HEAD"), cancellable = true, remap = false)
27+
private void useDynamicallyBakedModel(ModelBakery baker, UnbakedModel model, Function<ResourceLocation, UnbakedModel> function, Function<Material, TextureAtlasSprite> textureGetter, ItemOverride override, CallbackInfoReturnable<BakedModel> cir) {
28+
cir.setReturnValue(ItemOverrideBakedModel.of(override.getModel()));
29+
}
30+
31+
@Inject(method = "getOverrides", at = @At("HEAD"), remap = false)
32+
private void doForceloadModels(CallbackInfoReturnable<ItemOverrides.BakedOverride> cir) {
33+
if(!forceLoadedModels) {
34+
synchronized (this) {
35+
if(!forceLoadedModels) {
36+
for(ItemOverrides.BakedOverride override : overrides) {
37+
if(override != null && override.model instanceof ItemOverrideBakedModel)
38+
override.model = ((ItemOverrideBakedModel)override.model).getRealModel();
39+
}
40+
forceLoadedModels = true;
41+
}
42+
}
43+
}
44+
}
45+
}

0 commit comments

Comments
 (0)