Skip to content

Commit f7b4c78

Browse files
committed
Merge 1.18 into 1.19.2
2 parents deb81ec + 3bf8255 commit f7b4c78

File tree

1 file changed

+12
-0
lines changed
  • common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/faster_texture_stitching

1 file changed

+12
-0
lines changed

common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/faster_texture_stitching/StitcherMixin.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package org.embeddedt.modernfix.common.mixin.perf.faster_texture_stitching;
22

3+
import com.google.common.collect.ImmutableList;
34
import com.mojang.datafixers.util.Pair;
45
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
56
import net.minecraft.client.renderer.texture.Stitcher;
7+
import net.minecraft.client.renderer.texture.StitcherException;
68
import org.embeddedt.modernfix.ModernFix;
79
import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
810
import org.embeddedt.modernfix.platform.ModernFixPlatformHooks;
@@ -17,6 +19,7 @@
1719
import java.util.Comparator;
1820
import java.util.List;
1921
import java.util.Set;
22+
import java.util.stream.Stream;
2023

2124
@Mixin(Stitcher.class)
2225
@ClientOnlyMixin
@@ -28,6 +31,8 @@ public class StitcherMixin {
2831
@Shadow private int storageY;
2932

3033
@Shadow @Final private static Comparator<Stitcher.Holder> HOLDER_COMPARATOR;
34+
@Shadow @Final private int maxWidth;
35+
@Shadow @Final private int maxHeight;
3136
private List<StbStitcher.LoadableSpriteInfo> loadableSpriteInfos;
3237

3338
/**
@@ -48,6 +53,13 @@ private void stitchFast(CallbackInfo ci) {
4853
Pair<Pair<Integer, Integer>, List<StbStitcher.LoadableSpriteInfo>> packingInfo = StbStitcher.packRects(aholder);
4954
this.storageX = packingInfo.getFirst().getFirst();
5055
this.storageY = packingInfo.getFirst().getSecond();
56+
57+
// Detect an oversized atlas generated in the previous step.
58+
if(this.storageX > this.maxWidth || this.storageY > this.maxHeight) {
59+
ModernFix.LOGGER.error("Requested atlas size {}x{} exceeds maximum of {}x{}", this.storageX, this.storageY, this.maxWidth, this.maxHeight);
60+
throw new StitcherException(aholder[0].spriteInfo, Stream.of(aholder).map(arg -> arg.spriteInfo).collect(ImmutableList.toImmutableList()));
61+
}
62+
5163
this.loadableSpriteInfos = packingInfo.getSecond();
5264
}
5365

0 commit comments

Comments
 (0)