Yatopia/patches/server/0045-Fix-IndexOutOfBoundsException-when-sending-too-many-.patch
Ivan Pekov 2b78178637
Updated Upstream and Sidestream(s) (Tuinity/Purpur)
Upstream/An Sidestream has released updates that appears to apply and compile correctly
This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing.

Tuinity Changes:
69e6a4c Updated Upstream (Paper)

Purpur Changes:
391f9ad Updated Upstream (Paper)
2020-12-17 09:48:17 +02:00

30 lines
1.5 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/server/PacketPlayOutMultiBlockChange.java b/src/main/java/net/minecraft/server/PacketPlayOutMultiBlockChange.java
index f260459d70053ffd17952aebf3e0410666f9bcd0..a28b6a44e744f16598419d20f4fe5d55016213e4 100644
--- a/src/main/java/net/minecraft/server/PacketPlayOutMultiBlockChange.java
+++ b/src/main/java/net/minecraft/server/PacketPlayOutMultiBlockChange.java
@@ -20,12 +20,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)) : Blocks.AIR.getBlockData(); // CraftBukkit - SPIGOT-6076, Mojang bug when empty chunk section notified
+ i++;
}
+ // Yatopia end
}