Added primitives & string array data type

This commit is contained in:
Felix Cravic 2020-05-04 21:53:15 +02:00
parent 8b41c7550b
commit 486cf989a1
11 changed files with 244 additions and 10 deletions

View File

@ -2,7 +2,7 @@ package net.minestom.server.data;
import net.minestom.server.data.type.CharacterData;
import net.minestom.server.data.type.*;
import net.minestom.server.data.type.array.ItemStackArrayData;
import net.minestom.server.data.type.array.*;
import net.minestom.server.inventory.Inventory;
import net.minestom.server.item.ItemStack;
import net.minestom.server.utils.PrimitiveConversion;
@ -16,15 +16,31 @@ public class DataManager {
{
registerType(Byte.class, new ByteData());
registerType(byte[].class, new ByteArrayData());
registerType(Boolean.class, new BooleanData());
registerType(boolean[].class, new BooleanArrayData());
registerType(Character.class, new CharacterData());
registerType(char[].class, new CharacterArrayData());
registerType(Short.class, new ShortData());
registerType(short[].class, new ShortArrayData());
registerType(Integer.class, new IntegerData());
registerType(int[].class, new IntegerArrayData());
registerType(Long.class, new LongData());
registerType(long[].class, new LongArrayData());
registerType(Float.class, new FloatData());
registerType(float[].class, new FloatArrayData());
registerType(Double.class, new DoubleData());
registerType(double[].class, new DoubleArrayData());
registerType(String.class, new StringData());
registerType(String[].class, new StringArrayData());
registerType(SerializableData.class, new SerializableDataData());

View File

@ -0,0 +1,25 @@
package net.minestom.server.data.type.array;
import net.minestom.server.data.DataType;
import net.minestom.server.network.packet.PacketReader;
import net.minestom.server.network.packet.PacketWriter;
public class BooleanArrayData extends DataType<boolean[]> {
@Override
public void encode(PacketWriter packetWriter, boolean[] value) {
packetWriter.writeVarInt(value.length);
for (boolean val : value) {
packetWriter.writeBoolean(val);
}
}
@Override
public boolean[] decode(PacketReader packetReader) {
boolean[] array = new boolean[packetReader.readVarInt()];
for (int i = 0; i < array.length; i++) {
array[i] = packetReader.readBoolean();
}
return array;
}
}

View File

@ -0,0 +1,24 @@
package net.minestom.server.data.type.array;
import net.minestom.server.data.DataType;
import net.minestom.server.network.packet.PacketReader;
import net.minestom.server.network.packet.PacketWriter;
public class ByteArrayData extends DataType<byte[]> {
@Override
public void encode(PacketWriter packetWriter, byte[] value) {
packetWriter.writeVarInt(value.length);
for (byte val : value) {
packetWriter.writeByte(val);
}
}
@Override
public byte[] decode(PacketReader packetReader) {
byte[] array = new byte[packetReader.readVarInt()];
for (int i = 0; i < array.length; i++) {
array[i] = packetReader.readByte();
}
return array;
}
}

View File

@ -0,0 +1,24 @@
package net.minestom.server.data.type.array;
import net.minestom.server.data.DataType;
import net.minestom.server.network.packet.PacketReader;
import net.minestom.server.network.packet.PacketWriter;
public class CharacterArrayData extends DataType<char[]> {
@Override
public void encode(PacketWriter packetWriter, char[] value) {
packetWriter.writeVarInt(value.length);
for (char val : value) {
packetWriter.writeChar(val);
}
}
@Override
public char[] decode(PacketReader packetReader) {
char[] array = new char[packetReader.readVarInt()];
for (int i = 0; i < array.length; i++) {
array[i] = packetReader.readChar();
}
return array;
}
}

View File

@ -0,0 +1,25 @@
package net.minestom.server.data.type.array;
import net.minestom.server.data.DataType;
import net.minestom.server.network.packet.PacketReader;
import net.minestom.server.network.packet.PacketWriter;
public class DoubleArrayData extends DataType<double[]> {
@Override
public void encode(PacketWriter packetWriter, double[] value) {
packetWriter.writeVarInt(value.length);
for (double val : value) {
packetWriter.writeDouble(val);
}
}
@Override
public double[] decode(PacketReader packetReader) {
double[] array = new double[packetReader.readVarInt()];
for (int i = 0; i < array.length; i++) {
array[i] = packetReader.readDouble();
}
return array;
}
}

View File

@ -0,0 +1,25 @@
package net.minestom.server.data.type.array;
import net.minestom.server.data.DataType;
import net.minestom.server.network.packet.PacketReader;
import net.minestom.server.network.packet.PacketWriter;
public class FloatArrayData extends DataType<float[]> {
@Override
public void encode(PacketWriter packetWriter, float[] value) {
packetWriter.writeVarInt(value.length);
for (float val : value) {
packetWriter.writeFloat(val);
}
}
@Override
public float[] decode(PacketReader packetReader) {
float[] array = new float[packetReader.readVarInt()];
for (int i = 0; i < array.length; i++) {
array[i] = packetReader.readFloat();
}
return array;
}
}

View File

@ -0,0 +1,25 @@
package net.minestom.server.data.type.array;
import net.minestom.server.data.DataType;
import net.minestom.server.network.packet.PacketReader;
import net.minestom.server.network.packet.PacketWriter;
public class IntegerArrayData extends DataType<int[]> {
@Override
public void encode(PacketWriter packetWriter, int[] value) {
packetWriter.writeVarInt(value.length);
for (int val : value) {
packetWriter.writeInt(val);
}
}
@Override
public int[] decode(PacketReader packetReader) {
int[] array = new int[packetReader.readVarInt()];
for (int i = 0; i < array.length; i++) {
array[i] = packetReader.readInteger();
}
return array;
}
}

View File

@ -5,9 +5,6 @@ import net.minestom.server.item.ItemStack;
import net.minestom.server.network.packet.PacketReader;
import net.minestom.server.network.packet.PacketWriter;
import java.util.ArrayList;
import java.util.List;
public class ItemStackArrayData extends DataType<ItemStack[]> {
@Override
public void encode(PacketWriter packetWriter, ItemStack[] value) {
@ -19,12 +16,10 @@ public class ItemStackArrayData extends DataType<ItemStack[]> {
@Override
public ItemStack[] decode(PacketReader packetReader) {
List<ItemStack> items = new ArrayList<>();
int size = packetReader.readVarInt();
for (int i = 0; i < size; i++) {
items.add(packetReader.readSlot());
ItemStack[] items = new ItemStack[packetReader.readVarInt()];
for (int i = 0; i < items.length; i++) {
items[i] = packetReader.readSlot();
}
ItemStack[] array = items.toArray(new ItemStack[items.size()]);
return array;
return items;
}
}

View File

@ -0,0 +1,25 @@
package net.minestom.server.data.type.array;
import net.minestom.server.data.DataType;
import net.minestom.server.network.packet.PacketReader;
import net.minestom.server.network.packet.PacketWriter;
public class LongArrayData extends DataType<long[]> {
@Override
public void encode(PacketWriter packetWriter, long[] value) {
packetWriter.writeVarInt(value.length);
for (long val : value) {
packetWriter.writeLong(val);
}
}
@Override
public long[] decode(PacketReader packetReader) {
long[] array = new long[packetReader.readVarInt()];
for (int i = 0; i < array.length; i++) {
array[i] = packetReader.readLong();
}
return array;
}
}

View File

@ -0,0 +1,25 @@
package net.minestom.server.data.type.array;
import net.minestom.server.data.DataType;
import net.minestom.server.network.packet.PacketReader;
import net.minestom.server.network.packet.PacketWriter;
public class ShortArrayData extends DataType<short[]> {
@Override
public void encode(PacketWriter packetWriter, short[] value) {
packetWriter.writeVarInt(value.length);
for (short val : value) {
packetWriter.writeShort(val);
}
}
@Override
public short[] decode(PacketReader packetReader) {
short[] array = new short[packetReader.readVarInt()];
for (int i = 0; i < array.length; i++) {
array[i] = packetReader.readShort();
}
return array;
}
}

View File

@ -0,0 +1,25 @@
package net.minestom.server.data.type.array;
import net.minestom.server.data.DataType;
import net.minestom.server.network.packet.PacketReader;
import net.minestom.server.network.packet.PacketWriter;
public class StringArrayData extends DataType<String[]> {
@Override
public void encode(PacketWriter packetWriter, String[] value) {
packetWriter.writeVarInt(value.length);
for (String val : value) {
packetWriter.writeSizedString(val);
}
}
@Override
public String[] decode(PacketReader packetReader) {
String[] array = new String[packetReader.readVarInt()];
for (int i = 0; i < array.length; i++) {
array[i] = packetReader.readSizedString();
}
return array;
}
}