mirror of
https://github.com/ViaVersion/ViaVersion.git
synced 2024-11-15 22:55:33 +01:00
Remove more methods (Sorry last one didn't build!)
This commit is contained in:
parent
b3de4de0cd
commit
38d33dba16
@ -10,21 +10,13 @@ import io.netty.handler.codec.ByteToMessageDecoder;
|
|||||||
import io.netty.handler.codec.MessageToByteEncoder;
|
import io.netty.handler.codec.MessageToByteEncoder;
|
||||||
import org.spacehq.opennbt.NBTIO;
|
import org.spacehq.opennbt.NBTIO;
|
||||||
import org.spacehq.opennbt.tag.builtin.CompoundTag;
|
import org.spacehq.opennbt.tag.builtin.CompoundTag;
|
||||||
import us.myles.ViaVersion.chunks.MagicBitSet;
|
|
||||||
import us.myles.ViaVersion.chunks.PacketChunk;
|
|
||||||
import us.myles.ViaVersion.chunks.PacketChunkData;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
|
||||||
import java.io.DataInputStream;
|
import java.io.DataInputStream;
|
||||||
import java.io.DataOutputStream;
|
import java.io.DataOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.nio.ByteBuffer;
|
|
||||||
import java.nio.ByteOrder;
|
|
||||||
import java.nio.ShortBuffer;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.BitSet;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@ -268,113 +260,6 @@ public class PacketUtil {
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
// This method is based on one from here
|
|
||||||
// https://github.com/Steveice10/MCProtocolLib/blob/master/src/main/java/org/spacehq/mc/protocol/util/NetUtil.java
|
|
||||||
public static PacketChunk readChunkData(boolean isFullChunk, int bitmask, byte[] input) {
|
|
||||||
PacketChunkData[] chunks = new PacketChunkData[16];
|
|
||||||
boolean sky = false;
|
|
||||||
int expected = 0;
|
|
||||||
int position = 0;
|
|
||||||
ShortBuffer blockData = ByteBuffer.wrap(input).order(ByteOrder.LITTLE_ENDIAN).asShortBuffer();
|
|
||||||
|
|
||||||
for (int i = 0; i < chunks.length; i++) {
|
|
||||||
if ((bitmask & 1 << i) != 0) {
|
|
||||||
expected += (4096 * 2) + 2048;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// If there is more data, then there must be skylights :D
|
|
||||||
if (input.length > expected) {
|
|
||||||
sky = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read block data
|
|
||||||
for (int i = 0; i < chunks.length; i++) {
|
|
||||||
if ((bitmask & 1 << i) != 0) {
|
|
||||||
chunks[i] = new PacketChunkData(sky);
|
|
||||||
blockData.position(position / 2);
|
|
||||||
blockData.get(chunks[i].getBlocks(), 0, 4096);
|
|
||||||
position = position + (4096 * 2);
|
|
||||||
} else {
|
|
||||||
chunks[i] = new PacketChunkData(sky);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Read blocklight data
|
|
||||||
for (int i = 0; i < chunks.length; i++) {
|
|
||||||
if ((bitmask & 1 << i) != 0) {
|
|
||||||
System.arraycopy(input, position, chunks[i].getBlockLight(), 0, 2048);
|
|
||||||
position = position + 2048;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Read skylight data
|
|
||||||
if (sky) {
|
|
||||||
for (int i = 0; i < chunks.length; i++) {
|
|
||||||
if ((bitmask & 1 << i) != 0) {
|
|
||||||
System.arraycopy(input, position, chunks[i].getSkyLight(), 0, 2048);
|
|
||||||
position = position + 2048;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
byte[] biomeData = null;
|
|
||||||
|
|
||||||
if (isFullChunk) {
|
|
||||||
// yay im a full chunk meaning i know my biomes, mommy get the camera!
|
|
||||||
biomeData = new byte[256];
|
|
||||||
System.arraycopy(input, position, biomeData, 0, 256);
|
|
||||||
}
|
|
||||||
return new PacketChunk(chunks, biomeData);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void writeNewChunk(ByteBuf buffer, PacketChunkData chunk) {
|
|
||||||
// Bits Per Block (We use 0, cause we're not gonna write a palette ;) )
|
|
||||||
buffer.writeByte(0);
|
|
||||||
// No Palette nor length :D
|
|
||||||
|
|
||||||
// Data Array Length
|
|
||||||
byte[] blockData = convertBlockArray(chunk.getBlocks());
|
|
||||||
writeVarInt((blockData != null ? blockData.length : 0) / 8, buffer); // Notchian is divide by 8
|
|
||||||
|
|
||||||
buffer.writeBytes(blockData);
|
|
||||||
// Block Light
|
|
||||||
buffer.writeBytes(chunk.getBlockLight());
|
|
||||||
// If has skylight, write it
|
|
||||||
if (chunk.getSkyLight() != null) {
|
|
||||||
buffer.writeBytes(chunk.getSkyLight());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static byte[] convertBlockArray(short[] blocks) {
|
|
||||||
// block ID for the first 9 bits, and the block damage value for the last 4 bits
|
|
||||||
byte[] output = new byte[6664]; // (16 * 16 * 16 * 13) / 8 :) (plus some for padding ...)
|
|
||||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
||||||
for (short block : blocks) {
|
|
||||||
int blockID = block >> 4; // (Needs to be to 9 bits)
|
|
||||||
int data = block & 0xF; // 8 bits
|
|
||||||
|
|
||||||
}
|
|
||||||
return null; // todo: finish
|
|
||||||
}
|
|
||||||
|
|
||||||
private static BitSet append(BitSet base, int index, MagicBitSet toAdd) {
|
|
||||||
for (int i = 0; i < toAdd.getTrueLength(); i++) {
|
|
||||||
base.set(index + i, toAdd.get(i));
|
|
||||||
}
|
|
||||||
return base;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static MagicBitSet getPaddedBitSet(int value, int bitSize) {
|
|
||||||
MagicBitSet output = new MagicBitSet(bitSize);
|
|
||||||
BitSet temp = BitSet.valueOf(new long[]{value});
|
|
||||||
for (int i = 0; i < bitSize; i++) {
|
|
||||||
output.set(i, false);
|
|
||||||
}
|
|
||||||
int toShift = bitSize - temp.length();
|
|
||||||
for (int i = 0; i < temp.length(); i++) {
|
|
||||||
output.set(toShift + i, temp.get(i));
|
|
||||||
}
|
|
||||||
return output;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static long[] readBlockPosition(ByteBuf buf) {
|
public static long[] readBlockPosition(ByteBuf buf) {
|
||||||
long val = buf.readLong();
|
long val = buf.readLong();
|
||||||
long x = (val >> 38); // signed
|
long x = (val >> 38); // signed
|
||||||
|
Loading…
Reference in New Issue
Block a user