3
0
Mirror von https://github.com/ViaVersion/ViaBackwards.git synchronisiert 2024-12-27 08:30:10 +01:00

Properly read unused light data in 1.17->1.16

Some servers for some reason do this
Dieser Commit ist enthalten in:
Nassim Jahnke 2024-08-18 15:13:51 +02:00
Ursprung ef2621c917
Commit 0b3a792a51
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: EF6771C01F6EF02F

Datei anzeigen

@ -247,13 +247,14 @@ public final class BlockItemPacketRewriter1_17 extends BackwardsItemRewriter<Cli
private void writeLightArrays(PacketWrapper wrapper, BitSet bitMask, int cutBitMask, private void writeLightArrays(PacketWrapper wrapper, BitSet bitMask, int cutBitMask,
int startFromSection, int sectionHeight) { int startFromSection, int sectionHeight) {
wrapper.read(Types.VAR_INT); // Length - throw it away int packetContentsLength = wrapper.read(Types.VAR_INT);
int read = 0;
List<byte[]> light = new ArrayList<>(); List<byte[]> light = new ArrayList<>();
// Remove lower bounds // Remove lower bounds
for (int i = 0; i < startFromSection; i++) { for (int i = 0; i < startFromSection; i++) {
if (bitMask.get(i)) { if (bitMask.get(i)) {
read++;
wrapper.read(Types.BYTE_ARRAY_PRIMITIVE); wrapper.read(Types.BYTE_ARRAY_PRIMITIVE);
} }
} }
@ -261,6 +262,7 @@ public final class BlockItemPacketRewriter1_17 extends BackwardsItemRewriter<Cli
// Add the important 18 sections // Add the important 18 sections
for (int i = 0; i < 18; i++) { for (int i = 0; i < 18; i++) {
if (isSet(cutBitMask, i)) { if (isSet(cutBitMask, i)) {
read++;
light.add(wrapper.read(Types.BYTE_ARRAY_PRIMITIVE)); light.add(wrapper.read(Types.BYTE_ARRAY_PRIMITIVE));
} }
} }
@ -268,6 +270,14 @@ public final class BlockItemPacketRewriter1_17 extends BackwardsItemRewriter<Cli
// Remove upper bounds // Remove upper bounds
for (int i = startFromSection + 18; i < sectionHeight + 2; i++) { for (int i = startFromSection + 18; i < sectionHeight + 2; i++) {
if (bitMask.get(i)) { if (bitMask.get(i)) {
read++;
wrapper.read(Types.BYTE_ARRAY_PRIMITIVE);
}
}
if (read != packetContentsLength) {
// Read the rest if the server for some reason sends more than are actually consumed
for (int i = read; i < packetContentsLength; i++) {
wrapper.read(Types.BYTE_ARRAY_PRIMITIVE); wrapper.read(Types.BYTE_ARRAY_PRIMITIVE);
} }
} }