diff --git a/src/main/java/mc/nbt/TypeTag.java b/src/main/java/mc/nbt/TypeTag.java new file mode 100644 index 0000000..71f27cc --- /dev/null +++ b/src/main/java/mc/nbt/TypeTag.java @@ -0,0 +1,43 @@ +package mc.nbt; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import mc.nbt.tag.*; + +@Slf4j +@RequiredArgsConstructor +@Getter +public enum TypeTag { + END(0, TagEnd.class), + BYTE(1, TagByte.class), + SHORT(2,TagShort.class), + INT(3, TagInt.class), + LONG(4, TagLong.class), + FLOAT(5, TagFloat.class), + DOUBLE(6, TagDouble.class), + BYTE_ARRAY(7, TagByteArray.class), + STRING(8, TagString.class), + LIST(9, TagList.class), + COMPOUND(10, TagCompound.class), + INT_ARRAY(11, TagIntArray.class), + LONG_ARRAY(12, TagLongArray.class); + + public static Tag getTagById(int id) { + for (TypeTag type : TypeTag.values()) { + if (type.id == id) { + try { + return type.classTag.newInstance(); + } catch (InstantiationException | IllegalAccessException e) { + log.error("{}", e.getMessage(), e); + break; + } + } + } + + return null; + } + + private final int id; + private final Class classTag; +} diff --git a/src/main/java/mc/nbt/tag/Tag.java b/src/main/java/mc/nbt/tag/Tag.java new file mode 100644 index 0000000..1993c7e --- /dev/null +++ b/src/main/java/mc/nbt/tag/Tag.java @@ -0,0 +1,15 @@ +package mc.nbt.tag; + +import lombok.Getter; +import lombok.Setter; +import mc.nbt.TypeTag; + +public abstract class Tag { + + @Getter + @Setter + private String name; + + public abstract TypeTag getType(); + +} diff --git a/src/main/java/mc/nbt/tag/TagByte.java b/src/main/java/mc/nbt/tag/TagByte.java new file mode 100644 index 0000000..5601402 --- /dev/null +++ b/src/main/java/mc/nbt/tag/TagByte.java @@ -0,0 +1,17 @@ +package mc.nbt.tag; + +import lombok.Getter; +import lombok.Setter; +import mc.nbt.TypeTag; + +public class TagByte extends Tag { + + @Getter + @Setter + private byte value; + + @Override + public TypeTag getType() { + return TypeTag.BYTE; + } +} diff --git a/src/main/java/mc/nbt/tag/TagByteArray.java b/src/main/java/mc/nbt/tag/TagByteArray.java new file mode 100644 index 0000000..f97503e --- /dev/null +++ b/src/main/java/mc/nbt/tag/TagByteArray.java @@ -0,0 +1,17 @@ +package mc.nbt.tag; + +import lombok.Getter; +import lombok.Setter; +import mc.nbt.TypeTag; + +public class TagByteArray extends Tag { + + @Getter + @Setter + private byte[] value; + + @Override + public TypeTag getType() { + return TypeTag.BYTE_ARRAY; + } +} diff --git a/src/main/java/mc/nbt/tag/TagCompound.java b/src/main/java/mc/nbt/tag/TagCompound.java new file mode 100644 index 0000000..465a24e --- /dev/null +++ b/src/main/java/mc/nbt/tag/TagCompound.java @@ -0,0 +1,19 @@ +package mc.nbt.tag; + +import lombok.Getter; +import lombok.Setter; +import mc.nbt.TypeTag; + +import java.util.List; + +public class TagCompound extends Tag { + + @Getter + @Setter + private List value; + + @Override + public TypeTag getType() { + return TypeTag.COMPOUND; + } +} diff --git a/src/main/java/mc/nbt/tag/TagDouble.java b/src/main/java/mc/nbt/tag/TagDouble.java new file mode 100644 index 0000000..b464d0a --- /dev/null +++ b/src/main/java/mc/nbt/tag/TagDouble.java @@ -0,0 +1,17 @@ +package mc.nbt.tag; + +import lombok.Getter; +import lombok.Setter; +import mc.nbt.TypeTag; + +public class TagDouble extends Tag { + + @Getter + @Setter + private double value; + + @Override + public TypeTag getType() { + return TypeTag.DOUBLE; + } +} diff --git a/src/main/java/mc/nbt/tag/TagEnd.java b/src/main/java/mc/nbt/tag/TagEnd.java new file mode 100644 index 0000000..b36c885 --- /dev/null +++ b/src/main/java/mc/nbt/tag/TagEnd.java @@ -0,0 +1,21 @@ +package mc.nbt.tag; + +import mc.nbt.TypeTag; + +public class TagEnd extends Tag { + + @Override + public void setName(String name) { + throw new UnsupportedOperationException(); + } + + @Override + public String getName() { + return null; + } + + @Override + public TypeTag getType() { + return TypeTag.END; + } +} diff --git a/src/main/java/mc/nbt/tag/TagFloat.java b/src/main/java/mc/nbt/tag/TagFloat.java new file mode 100644 index 0000000..9822e1b --- /dev/null +++ b/src/main/java/mc/nbt/tag/TagFloat.java @@ -0,0 +1,17 @@ +package mc.nbt.tag; + +import lombok.Getter; +import lombok.Setter; +import mc.nbt.TypeTag; + +public class TagFloat extends Tag { + + @Getter + @Setter + private float value; + + @Override + public TypeTag getType() { + return TypeTag.FLOAT; + } +} diff --git a/src/main/java/mc/nbt/tag/TagInt.java b/src/main/java/mc/nbt/tag/TagInt.java new file mode 100644 index 0000000..65b278b --- /dev/null +++ b/src/main/java/mc/nbt/tag/TagInt.java @@ -0,0 +1,17 @@ +package mc.nbt.tag; + +import lombok.Getter; +import lombok.Setter; +import mc.nbt.TypeTag; + +public class TagInt extends Tag { + + @Getter + @Setter + private int value; + + @Override + public TypeTag getType() { + return TypeTag.INT; + } +} diff --git a/src/main/java/mc/nbt/tag/TagIntArray.java b/src/main/java/mc/nbt/tag/TagIntArray.java new file mode 100644 index 0000000..aa47505 --- /dev/null +++ b/src/main/java/mc/nbt/tag/TagIntArray.java @@ -0,0 +1,17 @@ +package mc.nbt.tag; + +import lombok.Getter; +import lombok.Setter; +import mc.nbt.TypeTag; + +public class TagIntArray extends Tag { + + @Getter + @Setter + private int[] value; + + @Override + public TypeTag getType() { + return TypeTag.INT_ARRAY; + } +} diff --git a/src/main/java/mc/nbt/tag/TagList.java b/src/main/java/mc/nbt/tag/TagList.java new file mode 100644 index 0000000..d8a7826 --- /dev/null +++ b/src/main/java/mc/nbt/tag/TagList.java @@ -0,0 +1,19 @@ +package mc.nbt.tag; + +import lombok.Getter; +import lombok.Setter; +import mc.nbt.TypeTag; + +import java.util.List; + +@Getter +@Setter +public class TagList extends Tag { + + private List value; //FIXME + + @Override + public TypeTag getType() { + return TypeTag.LIST; + } +} diff --git a/src/main/java/mc/nbt/tag/TagLong.java b/src/main/java/mc/nbt/tag/TagLong.java new file mode 100644 index 0000000..e83bd33 --- /dev/null +++ b/src/main/java/mc/nbt/tag/TagLong.java @@ -0,0 +1,17 @@ +package mc.nbt.tag; + +import lombok.Getter; +import lombok.Setter; +import mc.nbt.TypeTag; + +public class TagLong extends Tag { + + @Getter + @Setter + private long value; + + @Override + public TypeTag getType() { + return TypeTag.LONG; + } +} diff --git a/src/main/java/mc/nbt/tag/TagLongArray.java b/src/main/java/mc/nbt/tag/TagLongArray.java new file mode 100644 index 0000000..fa51d6c --- /dev/null +++ b/src/main/java/mc/nbt/tag/TagLongArray.java @@ -0,0 +1,17 @@ +package mc.nbt.tag; + +import lombok.Getter; +import lombok.Setter; +import mc.nbt.TypeTag; + +public class TagLongArray extends Tag { + + @Getter + @Setter + private long[] value; + + @Override + public TypeTag getType() { + return TypeTag.LONG_ARRAY; + } +} diff --git a/src/main/java/mc/nbt/tag/TagShort.java b/src/main/java/mc/nbt/tag/TagShort.java new file mode 100644 index 0000000..b0c1fd6 --- /dev/null +++ b/src/main/java/mc/nbt/tag/TagShort.java @@ -0,0 +1,17 @@ +package mc.nbt.tag; + +import lombok.Getter; +import lombok.Setter; +import mc.nbt.TypeTag; + +public class TagShort extends Tag { + + @Getter + @Setter + private short value; + + @Override + public TypeTag getType() { + return TypeTag.SHORT; + } +} diff --git a/src/main/java/mc/nbt/tag/TagString.java b/src/main/java/mc/nbt/tag/TagString.java new file mode 100644 index 0000000..590afdf --- /dev/null +++ b/src/main/java/mc/nbt/tag/TagString.java @@ -0,0 +1,17 @@ +package mc.nbt.tag; + +import lombok.Getter; +import lombok.Setter; +import mc.nbt.TypeTag; + +public class TagString extends Tag { + + @Getter + @Setter + private String value; + + @Override + public TypeTag getType() { + return TypeTag.STRING; + } +}