This commit is contained in:
2019-09-08 14:31:31 +03:00
parent 7a28a2b390
commit 56cd48d966
15 changed files with 287 additions and 0 deletions

View File

@@ -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<? extends Tag> classTag;
}

View File

@@ -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();
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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<Tag> value;
@Override
public TypeTag getType() {
return TypeTag.COMPOUND;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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<Tag> value; //FIXME
@Override
public TypeTag getType() {
return TypeTag.LIST;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}