Skip to content

Commit 8bcd85d

Browse files
committed
Merge 1.18 into 1.19.2
2 parents f59aa5b + ee8093f commit 8bcd85d

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

common/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/buffer_builder_leak/BufferBuilderMixin.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import org.embeddedt.modernfix.ModernFix;
55
import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
66
import org.embeddedt.modernfix.render.UnsafeBufferHelper;
7+
import org.spongepowered.asm.mixin.Dynamic;
78
import org.spongepowered.asm.mixin.Mixin;
89
import org.spongepowered.asm.mixin.Shadow;
910
import org.spongepowered.asm.mixin.injection.At;
@@ -12,13 +13,21 @@
1213

1314
import java.nio.ByteBuffer;
1415

15-
@Mixin(BufferBuilder.class)
16+
@Mixin(value = BufferBuilder.class, priority = 1500)
1617
@ClientOnlyMixin
1718
public class BufferBuilderMixin {
1819
@Shadow private ByteBuffer buffer;
1920

2021
private static boolean leakReported = false;
2122

23+
private boolean mfix$shouldFree = true;
24+
25+
@Dynamic
26+
@Inject(method = "flywheel$injectForRender", at = @At("RETURN"), remap = false, require = 0)
27+
private void preventFree(CallbackInfo ci) {
28+
mfix$shouldFree = false;
29+
}
30+
2231
/**
2332
* Ensure UnsafeBufferHelper is classloaded early, to avoid Forge's event transformer showing an error in the log.
2433
*/
@@ -32,7 +41,7 @@ protected void finalize() throws Throwable {
3241
try {
3342
ByteBuffer buf = buffer;
3443
// can be null if a mod already tried to free the buffer
35-
if(buf != null) {
44+
if(buf != null && mfix$shouldFree) {
3645
if(!leakReported) {
3746
leakReported = true;
3847
ModernFix.LOGGER.warn("One or more BufferBuilders have been leaked, ModernFix will attempt to correct this.");
Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package org.embeddedt.modernfix.common.mixin.perf.dynamic_resources;
22

3+
import net.minecraft.client.multiplayer.ClientLevel;
4+
import net.minecraft.client.renderer.block.model.ItemOverride;
35
import net.minecraft.client.renderer.block.model.ItemOverrides;
46
import net.minecraft.client.resources.model.BakedModel;
7+
import net.minecraft.world.entity.LivingEntity;
8+
import net.minecraft.world.item.ItemStack;
59
import org.embeddedt.modernfix.dynamicresources.ItemOverrideBakedModel;
610
import org.spongepowered.asm.mixin.Mixin;
711
import org.spongepowered.asm.mixin.injection.At;
@@ -11,11 +15,12 @@
1115
@Mixin(ItemOverrides.class)
1216
public class ItemOverridesMixin {
1317
@Inject(method = "resolve", at = @At("RETURN"), cancellable = true)
14-
private void getRealModel(CallbackInfoReturnable<BakedModel> cir) {
18+
private void getRealModel(BakedModel bakedModel, ItemStack itemStack, ClientLevel clientLevel, LivingEntity livingEntity, CallbackInfoReturnable<BakedModel> cir) {
1519
BakedModel original = cir.getReturnValue();
1620
if(original instanceof ItemOverrideBakedModel) {
1721
ItemOverrideBakedModel override = (ItemOverrideBakedModel)original;
18-
cir.setReturnValue(override.getRealModel());
22+
BakedModel overrideModel = override.getRealModel();
23+
cir.setReturnValue(overrideModel != null ? overrideModel : bakedModel);
1924
}
2025
}
2126
}

0 commit comments

Comments
 (0)