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.OutByteBuffer;
public class ByteArrayTag implements NBTTag {
public class ByteArrayTag extends NBTTag {
final 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.OutByteBuffer;
public class ByteTag implements NBTTag {
public class ByteTag extends NBTTag {
final byte value;
public ByteTag(byte value) {

View File

@ -21,7 +21,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
public class CompoundTag implements NBTTag {
public class CompoundTag extends NBTTag {
final String name;
final HashMap<String, NBTTag> data;
@ -135,6 +135,9 @@ public class CompoundTag implements NBTTag {
}
public void writeTag(String name, NBTTag tag) {
if (isFinal) {
throw new IllegalArgumentException("This tag is marked as final!");
}
data.put(name, tag);
}
@ -145,6 +148,9 @@ public class CompoundTag implements NBTTag {
// abstract functions
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("y", new IntTag(position.getY()));
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.OutByteBuffer;
public class DoubleTag implements NBTTag {
public class DoubleTag extends NBTTag {
final 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.OutByteBuffer;
public class FloatTag implements NBTTag {
public class FloatTag extends NBTTag {
final float value;
public FloatTag(float value) {

View File

@ -18,7 +18,7 @@ import de.bixilon.minosoft.protocol.protocol.OutByteBuffer;
import java.util.Arrays;
public class IntArrayTag implements NBTTag {
public class IntArrayTag extends NBTTag {
final 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.OutByteBuffer;
public class IntTag implements NBTTag {
public class IntTag extends NBTTag {
final 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.Arrays;
public class ListTag implements NBTTag {
public class ListTag extends NBTTag {
final TagTypes type;
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.OutByteBuffer;
public class LongArrayTag implements NBTTag {
public class LongArrayTag extends NBTTag {
final 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.OutByteBuffer;
public class LongTag implements NBTTag {
public class LongTag extends NBTTag {
final 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;
public interface NBTTag {
TagTypes getType();
public abstract class NBTTag {
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.OutByteBuffer;
public class ShortTag implements NBTTag {
public class ShortTag extends NBTTag {
final 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.OutByteBuffer;
public class StringTag implements NBTTag {
public class StringTag extends NBTTag {
final String value;
public StringTag(String value) {