diff --git a/sources/src/main/java/com/destroystokyo/paper/antixray/PacketPlayOutMapChunkInfo.java b/sources/src/main/java/com/destroystokyo/paper/antixray/PacketPlayOutMapChunkInfo.java new file mode 100644 index 000000000..d8519224a --- /dev/null +++ b/sources/src/main/java/com/destroystokyo/paper/antixray/PacketPlayOutMapChunkInfo.java @@ -0,0 +1,85 @@ +package com.destroystokyo.paper.antixray; + +import io.netty.buffer.ByteBuf; +import net.minecraft.server.Chunk; +import net.minecraft.server.DataPalette; +import net.minecraft.server.IBlockData; +import net.minecraft.server.PacketPlayOutMapChunk; + +/** + * Akarin Changes Note + * 1) byte[] -> ByteBuf (compatibility) + */ +public class PacketPlayOutMapChunkInfo { + + private final PacketPlayOutMapChunk packetPlayOutMapChunk; + private final Chunk chunk; + private final int chunkSectionSelector; + private ByteBuf data; // Akarin - byte[] -> ByteBuf + private final int[] bitsPerValue = new int[16]; + private final DataPalette[] dataPalettes = new DataPalette[16]; + private final int[] dataBitsIndexes = new int[16]; + private final IBlockData[][] predefinedBlockData = new IBlockData[16][]; + + public PacketPlayOutMapChunkInfo(PacketPlayOutMapChunk packetPlayOutMapChunk, Chunk chunk, int chunkSectionSelector) { + this.packetPlayOutMapChunk = packetPlayOutMapChunk; + this.chunk = chunk; + this.chunkSectionSelector = chunkSectionSelector; + } + + public PacketPlayOutMapChunk getPacketPlayOutMapChunk() { + return packetPlayOutMapChunk; + } + + public Chunk getChunk() { + return chunk; + } + + public int getChunkSectionSelector() { + return chunkSectionSelector; + } + + public byte[] getData() { + return data.array(); // Akarin + } + + public void setData(ByteBuf data) { // Akarin - byte[] -> ByteBuf + this.data = data; + } + + public int getBitsPerValue(int chunkSectionIndex) { + return bitsPerValue[chunkSectionIndex]; + } + + public void setBitsPerValue(int chunkSectionIndex, int bitsPerValue) { + this.bitsPerValue[chunkSectionIndex] = bitsPerValue; + } + + public DataPalette getDataPalette(int chunkSectionIndex) { + return dataPalettes[chunkSectionIndex]; + } + + public void setDataPalette(int chunkSectionIndex, DataPalette dataPalette) { + dataPalettes[chunkSectionIndex] = dataPalette; + } + + public int getDataBitsIndex(int chunkSectionIndex) { + return dataBitsIndexes[chunkSectionIndex]; + } + + public void setDataBitsIndex(int chunkSectionIndex, int dataBitsIndex) { + dataBitsIndexes[chunkSectionIndex] = dataBitsIndex; + } + + public IBlockData[] getPredefinedBlockData(int chunkSectionIndex) { + return predefinedBlockData[chunkSectionIndex]; + } + + public void setPredefinedBlockData(int chunkSectionIndex, IBlockData[] predefinedBlockData) { + this.predefinedBlockData[chunkSectionIndex] = predefinedBlockData; + } + + public boolean isWritten(int chunkSectionIndex) { + return bitsPerValue[chunkSectionIndex] != 0; + } +} diff --git a/sources/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java b/sources/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java index 6eb5544a2..de69eba45 100644 --- a/sources/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java +++ b/sources/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java @@ -21,7 +21,7 @@ public class PacketPlayOutMapChunk implements Packet { private int a; private int b; private int c; - private ByteBuf d; // Akarin + private ByteBuf d; // Akarin - byte[] -> ByteBuf private List e; private boolean f; private volatile boolean ready = false; // Paper - Async-Anti-Xray - Ready flag for the network manager @@ -43,7 +43,7 @@ public class PacketPlayOutMapChunk implements Packet { // Paper start - Anti-Xray - Add chunk packet info if (packetPlayOutMapChunkInfo != null) { - packetPlayOutMapChunkInfo.setData(this.d.array()); // Akarin + packetPlayOutMapChunkInfo.setData(this.d); } // Paper end @@ -106,7 +106,7 @@ public class PacketPlayOutMapChunk implements Packet { packetdataserializer.writeBoolean(this.f); packetdataserializer.d(this.c); packetdataserializer.d(this.d.array().length); // Akarin - packetdataserializer.writeBytes(this.d); + packetdataserializer.writeBytes(this.d.array()); packetdataserializer.d(this.e.size()); Iterator iterator = this.e.iterator();