Skip to content

Commit d03571c

Browse files
committed
Merge 1.20 into 1.20.4
2 parents 324fb3a + 88a276e commit d03571c

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

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

Lines changed: 14 additions & 1 deletion
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,14 +13,22 @@
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
@Shadow private boolean closed;
2021

2122
private static boolean leakReported = false;
2223

24+
private boolean mfix$shouldFree = true;
25+
26+
@Dynamic
27+
@Inject(method = "flywheel$injectForRender", at = @At("RETURN"), remap = false, require = 0)
28+
private void preventFree(CallbackInfo ci) {
29+
mfix$shouldFree = false;
30+
}
31+
2332
/**
2433
* Ensure UnsafeBufferHelper is classloaded early, to avoid Forge's event transformer showing an error in the log.
2534
*/
@@ -33,7 +42,11 @@ protected void finalize() throws Throwable {
3342
try {
3443
ByteBuffer buf = buffer;
3544
// can be null if a mod already tried to free the buffer
45+
<<<<<<< HEAD
3646
if(!this.closed && buf != null) {
47+
=======
48+
if(buf != null && mfix$shouldFree) {
49+
>>>>>>> propagations/1.20
3750
if(!leakReported) {
3851
leakReported = true;
3952
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 stack, ClientLevel level, LivingEntity entity, int seed, 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)