Ensures chunk data to be synced (i guess)
This commit is contained in:
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -21,7 +21,7 @@ public class PacketPlayOutMapChunk implements Packet<PacketListenerPlayOut> {
|
|||||||
private int a;
|
private int a;
|
||||||
private int b;
|
private int b;
|
||||||
private int c;
|
private int c;
|
||||||
private ByteBuf d; // Akarin
|
private ByteBuf d; // Akarin - byte[] -> ByteBuf
|
||||||
private List<NBTTagCompound> e;
|
private List<NBTTagCompound> e;
|
||||||
private boolean f;
|
private boolean f;
|
||||||
private volatile boolean ready = false; // Paper - Async-Anti-Xray - Ready flag for the network manager
|
private volatile boolean ready = false; // Paper - Async-Anti-Xray - Ready flag for the network manager
|
||||||
@@ -43,7 +43,7 @@ public class PacketPlayOutMapChunk implements Packet<PacketListenerPlayOut> {
|
|||||||
|
|
||||||
// Paper start - Anti-Xray - Add chunk packet info
|
// Paper start - Anti-Xray - Add chunk packet info
|
||||||
if (packetPlayOutMapChunkInfo != null) {
|
if (packetPlayOutMapChunkInfo != null) {
|
||||||
packetPlayOutMapChunkInfo.setData(this.d.array()); // Akarin
|
packetPlayOutMapChunkInfo.setData(this.d);
|
||||||
}
|
}
|
||||||
// Paper end
|
// Paper end
|
||||||
|
|
||||||
@@ -106,7 +106,7 @@ public class PacketPlayOutMapChunk implements Packet<PacketListenerPlayOut> {
|
|||||||
packetdataserializer.writeBoolean(this.f);
|
packetdataserializer.writeBoolean(this.f);
|
||||||
packetdataserializer.d(this.c);
|
packetdataserializer.d(this.c);
|
||||||
packetdataserializer.d(this.d.array().length); // Akarin
|
packetdataserializer.d(this.d.array().length); // Akarin
|
||||||
packetdataserializer.writeBytes(this.d);
|
packetdataserializer.writeBytes(this.d.array());
|
||||||
packetdataserializer.d(this.e.size());
|
packetdataserializer.d(this.e.size());
|
||||||
Iterator iterator = this.e.iterator();
|
Iterator iterator = this.e.iterator();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user