Yatopia/patches/server-remap-in-progress/remap in progress/0036-Fix-IndexOutOfBoundsException-when-sending-too-many-.patch
2021-06-16 19:58:18 +02:00

30 lines
1.6 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Ivan Pekov <ivan@mrivanplays.com>
Date: Tue, 29 Sep 2020 19:25:49 +0300
Subject: [PATCH] Fix IndexOutOfBoundsException when sending too many changes
diff --git a/src/main/java/net/minecraft/network/protocol/game/PacketPlayOutMultiBlockChange.java b/src/main/java/net/minecraft/network/protocol/game/PacketPlayOutMultiBlockChange.java
index e4bf350cb650d6deb0cea5f85fee66c6c92bc659..6d8727b116a88fd3d491102c1e3634890cdac05c 100644
--- a/src/main/java/net/minecraft/network/protocol/game/PacketPlayOutMultiBlockChange.java
+++ b/src/main/java/net/minecraft/network/protocol/game/PacketPlayOutMultiBlockChange.java
@@ -27,12 +27,16 @@ public class PacketPlayOutMultiBlockChange implements Packet<PacketListenerPlayO
this.a(shortset.size());
int i = 0;
- for (ShortIterator shortiterator = shortset.iterator(); shortiterator.hasNext(); ++i) {
- short short0 = (Short) shortiterator.next();
+ // Yatopia start - fix IndexOutOfBounds exception when doing too many changes
+ ShortIterator shortiterator = shortset.iterator();
+ while (shortiterator.hasNext()) {
+ short short0 = (Short) shortiterator.nextShort();
this.b[i] = short0;
this.c[i] = (chunksection != null) ? chunksection.getType(SectionPosition.a(short0), SectionPosition.b(short0), SectionPosition.c(short0)) : net.minecraft.world.level.block.Blocks.AIR.getBlockData(); // CraftBukkit - SPIGOT-6076, Mojang bug when empty chunk section notified
+ i++;
}
+ // Yatopia end
}