Crush packets for speed and add basic toStrings
This commit is contained in:
parent
c9f78a989c
commit
83275df93e
@ -2,6 +2,9 @@ package net.md_5.mc.protocol;
|
||||
|
||||
import java.io.DataInput;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class PacketDefinitions {
|
||||
|
||||
@ -23,6 +26,11 @@ public class PacketDefinitions {
|
||||
short len = in.readShort();
|
||||
skip(in, len * 2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "String";
|
||||
}
|
||||
};
|
||||
private static final Instruction ITEM = new Instruction() {
|
||||
@Override
|
||||
@ -33,6 +41,11 @@ public class PacketDefinitions {
|
||||
SHORT_BYTE.read(in);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Item";
|
||||
}
|
||||
};
|
||||
private static final Instruction SHORT_ITEM = new ShortHeader(ITEM);
|
||||
private static final Instruction METADATA = new Instruction() {
|
||||
@ -69,6 +82,11 @@ public class PacketDefinitions {
|
||||
x = in.readByte();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Metadata";
|
||||
}
|
||||
};
|
||||
private static final Instruction BULK_CHUNK = new Instruction() {
|
||||
@Override
|
||||
@ -77,6 +95,11 @@ public class PacketDefinitions {
|
||||
INT_BYTE.read(in);
|
||||
skip(in, count * 12);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Bulk Chunk";
|
||||
}
|
||||
};
|
||||
private static final Instruction UBYTE_BYTE = new Instruction() {
|
||||
@Override
|
||||
@ -84,6 +107,11 @@ public class PacketDefinitions {
|
||||
int size = in.readUnsignedByte();
|
||||
skip(in, size);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Unsigned Byte Byte";
|
||||
}
|
||||
};
|
||||
|
||||
static {
|
||||
@ -199,6 +227,33 @@ public class PacketDefinitions {
|
||||
opCodes[0xFD] = new Instruction[]{STRING, SHORT_BYTE, SHORT_BYTE};
|
||||
opCodes[0xFE] = new Instruction[]{};
|
||||
opCodes[0xFF] = new Instruction[]{STRING};
|
||||
|
||||
crushInstructions();
|
||||
}
|
||||
|
||||
private static void crushInstructions() {
|
||||
for (int i = 0; i < opCodes.length; i++) {
|
||||
Instruction[] instructions = opCodes[i];
|
||||
if (instructions != null) {
|
||||
List<Instruction> crushed = new ArrayList<Instruction>();
|
||||
int nextJumpSize = 0;
|
||||
for (Instruction child : instructions) {
|
||||
if (child instanceof JumpOpCode) {
|
||||
nextJumpSize += ((JumpOpCode) child).len;
|
||||
} else {
|
||||
if (nextJumpSize != 0) {
|
||||
crushed.add(new JumpOpCode(nextJumpSize));
|
||||
}
|
||||
crushed.add(child);
|
||||
nextJumpSize = 0;
|
||||
}
|
||||
}
|
||||
if (nextJumpSize != 0) {
|
||||
crushed.add(new JumpOpCode(nextJumpSize));
|
||||
}
|
||||
opCodes[i] = crushed.toArray(new Instruction[crushed.size()]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void readPacket(DataInput in) throws IOException {
|
||||
@ -207,7 +262,7 @@ public class PacketDefinitions {
|
||||
if (instructions == null) {
|
||||
throw new IOException("Unknown packet id " + packetId);
|
||||
}
|
||||
System.out.println(Integer.toHexString(packetId));
|
||||
|
||||
for (Instruction instruction : instructions) {
|
||||
instruction.read(in);
|
||||
}
|
||||
@ -222,6 +277,9 @@ public class PacketDefinitions {
|
||||
in.readByte();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public abstract String toString();
|
||||
}
|
||||
|
||||
static class JumpOpCode extends Instruction {
|
||||
@ -239,6 +297,11 @@ public class PacketDefinitions {
|
||||
void read(DataInput in) throws IOException {
|
||||
skip(in, len);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Jump(" + len + ")";
|
||||
}
|
||||
}
|
||||
|
||||
static class ByteHeader extends Instruction {
|
||||
@ -256,6 +319,11 @@ public class PacketDefinitions {
|
||||
child.read(in);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ByteHeader(" + child + ")";
|
||||
}
|
||||
}
|
||||
|
||||
static class ShortHeader extends Instruction {
|
||||
@ -273,6 +341,11 @@ public class PacketDefinitions {
|
||||
child.read(in);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ShortHeader(" + child + ")";
|
||||
}
|
||||
}
|
||||
|
||||
static class IntHeader extends Instruction {
|
||||
@ -290,5 +363,10 @@ public class PacketDefinitions {
|
||||
child.read(in);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "IntHeader(" + child + ")";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user