nbt: final ability

This commit is contained in:
Bixilon 2020-10-09 19:55:05 +02:00
parent b759512800
commit 53e5dce736
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
13 changed files with 31 additions and 17 deletions

View File

@ -16,7 +16,7 @@ package de.bixilon.minosoft.util.nbt.tag;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer; import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.OutByteBuffer; import de.bixilon.minosoft.protocol.protocol.OutByteBuffer;
public class ByteArrayTag implements NBTTag { public class ByteArrayTag extends NBTTag {
final byte[] value; final byte[] value;
public ByteArrayTag(byte[] value) { public ByteArrayTag(byte[] value) {

View File

@ -16,7 +16,7 @@ package de.bixilon.minosoft.util.nbt.tag;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer; import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.OutByteBuffer; import de.bixilon.minosoft.protocol.protocol.OutByteBuffer;
public class ByteTag implements NBTTag { public class ByteTag extends NBTTag {
final byte value; final byte value;
public ByteTag(byte value) { public ByteTag(byte value) {

View File

@ -21,7 +21,7 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
public class CompoundTag implements NBTTag { public class CompoundTag extends NBTTag {
final String name; final String name;
final HashMap<String, NBTTag> data; final HashMap<String, NBTTag> data;
@ -135,6 +135,9 @@ public class CompoundTag implements NBTTag {
} }
public void writeTag(String name, NBTTag tag) { public void writeTag(String name, NBTTag tag) {
if (isFinal) {
throw new IllegalArgumentException("This tag is marked as final!");
}
data.put(name, tag); data.put(name, tag);
} }
@ -145,6 +148,9 @@ public class CompoundTag implements NBTTag {
// abstract functions // abstract functions
public void writeBlockPosition(BlockPosition position) { public void writeBlockPosition(BlockPosition position) {
if (isFinal) {
throw new IllegalArgumentException("This tag is marked as final!");
}
data.put("x", new IntTag(position.getX())); data.put("x", new IntTag(position.getX()));
data.put("y", new IntTag(position.getY())); data.put("y", new IntTag(position.getY()));
data.put("z", new IntTag(position.getZ())); data.put("z", new IntTag(position.getZ()));

View File

@ -16,7 +16,7 @@ package de.bixilon.minosoft.util.nbt.tag;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer; import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.OutByteBuffer; import de.bixilon.minosoft.protocol.protocol.OutByteBuffer;
public class DoubleTag implements NBTTag { public class DoubleTag extends NBTTag {
final double value; final double value;
public DoubleTag(double value) { public DoubleTag(double value) {

View File

@ -16,7 +16,7 @@ package de.bixilon.minosoft.util.nbt.tag;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer; import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.OutByteBuffer; import de.bixilon.minosoft.protocol.protocol.OutByteBuffer;
public class FloatTag implements NBTTag { public class FloatTag extends NBTTag {
final float value; final float value;
public FloatTag(float value) { public FloatTag(float value) {

View File

@ -18,7 +18,7 @@ import de.bixilon.minosoft.protocol.protocol.OutByteBuffer;
import java.util.Arrays; import java.util.Arrays;
public class IntArrayTag implements NBTTag { public class IntArrayTag extends NBTTag {
final int[] value; final int[] value;
public IntArrayTag(int[] value) { public IntArrayTag(int[] value) {

View File

@ -16,7 +16,7 @@ package de.bixilon.minosoft.util.nbt.tag;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer; import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.OutByteBuffer; import de.bixilon.minosoft.protocol.protocol.OutByteBuffer;
public class IntTag implements NBTTag { public class IntTag extends NBTTag {
final int value; final int value;
public IntTag(int value) { public IntTag(int value) {

View File

@ -19,7 +19,7 @@ import de.bixilon.minosoft.protocol.protocol.OutByteBuffer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
public class ListTag implements NBTTag { public class ListTag extends NBTTag {
final TagTypes type; final TagTypes type;
final ArrayList<NBTTag> list; final ArrayList<NBTTag> list;

View File

@ -16,7 +16,7 @@ package de.bixilon.minosoft.util.nbt.tag;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer; import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.OutByteBuffer; import de.bixilon.minosoft.protocol.protocol.OutByteBuffer;
public class LongArrayTag implements NBTTag { public class LongArrayTag extends NBTTag {
final long[] value; final long[] value;
public LongArrayTag(long[] value) { public LongArrayTag(long[] value) {

View File

@ -16,7 +16,7 @@ package de.bixilon.minosoft.util.nbt.tag;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer; import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.OutByteBuffer; import de.bixilon.minosoft.protocol.protocol.OutByteBuffer;
public class LongTag implements NBTTag { public class LongTag extends NBTTag {
final long value; final long value;
public LongTag(long value) { public LongTag(long value) {

View File

@ -15,10 +15,18 @@ package de.bixilon.minosoft.util.nbt.tag;
import de.bixilon.minosoft.protocol.protocol.OutByteBuffer; import de.bixilon.minosoft.protocol.protocol.OutByteBuffer;
public interface NBTTag { public abstract class NBTTag {
TagTypes getType(); boolean isFinal = false;
void writeBytes(OutByteBuffer buffer); abstract TagTypes getType();
String toString(); abstract void writeBytes(OutByteBuffer buffer);
public boolean isFinal() {
return isFinal;
}
public void setFinal() {
this.isFinal = true;
}
} }

View File

@ -16,7 +16,7 @@ package de.bixilon.minosoft.util.nbt.tag;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer; import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.OutByteBuffer; import de.bixilon.minosoft.protocol.protocol.OutByteBuffer;
public class ShortTag implements NBTTag { public class ShortTag extends NBTTag {
final short value; final short value;
public ShortTag(short value) { public ShortTag(short value) {

View File

@ -16,7 +16,7 @@ package de.bixilon.minosoft.util.nbt.tag;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer; import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.OutByteBuffer; import de.bixilon.minosoft.protocol.protocol.OutByteBuffer;
public class StringTag implements NBTTag { public class StringTag extends NBTTag {
final String value; final String value;
public StringTag(String value) { public StringTag(String value) {