attach-sources
diff --git a/src/main/java/com/github/steveice10/opennbt/tag/builtin/Tag.java b/src/main/java/com/github/steveice10/opennbt/tag/builtin/Tag.java
deleted file mode 100644
index 80c9ecb..0000000
--- a/src/main/java/com/github/steveice10/opennbt/tag/builtin/Tag.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.github.steveice10.opennbt.tag.builtin;
-
-import com.github.steveice10.opennbt.stringified.SNBT;
-import java.io.DataOutput;
-import java.io.IOException;
-
-/**
- * Represents an NBT tag.
- *
- * Tags should also have setter methods specific to their value types.
- */
-public abstract class Tag {
-
- /**
- * Returns the value of this tag.
- *
- * @return value of this tag
- */
- public abstract Object getValue();
-
- /**
- * Returns the raw string representation of the value of this tag.
- * For SNBT, use {@link SNBT#serialize(Tag)}.
- *
- * @return raw string representation of the value of this tag
- */
- public abstract String asRawString();
-
- /**
- * Returns the unchecked value of this tag.
- *
- * The generic of this method might be removed in a later version
- *
- * @param expected type
- * @return unchecked value of this tag
- */
- public T value() {
- return (T) getValue();
- }
-
- /**
- * Writes this tag to an output stream.
- *
- * @param out data output to write to
- * @throws IOException if an I/O error occurs
- */
- public abstract void write(DataOutput out) throws IOException;
-
- /**
- * Returns the NBT tag id of this tag type, used in I/O.
- *
- * @return ID of the tag this class represents
- */
- public abstract int getTagId();
-
- /**
- * Returns a copy of this tag.
- *
- * @return a copy of this tag
- */
- public abstract Tag copy();
-
- @Override
- public String toString() {
- return SNBT.serialize(this);
- }
-}
diff --git a/src/main/java/com/github/steveice10/opennbt/conversion/ConversionException.java b/src/main/java/com/viaversion/nbt/conversion/ConversionException.java
similarity index 91%
rename from src/main/java/com/github/steveice10/opennbt/conversion/ConversionException.java
rename to src/main/java/com/viaversion/nbt/conversion/ConversionException.java
index 12423d9..5a86af3 100644
--- a/src/main/java/com/github/steveice10/opennbt/conversion/ConversionException.java
+++ b/src/main/java/com/viaversion/nbt/conversion/ConversionException.java
@@ -1,4 +1,4 @@
-package com.github.steveice10.opennbt.conversion;
+package com.viaversion.nbt.conversion;
/**
* An exception thrown when an error occurs while converting something.
diff --git a/src/main/java/com/github/steveice10/opennbt/conversion/ConverterRegistry.java b/src/main/java/com/viaversion/nbt/conversion/ConverterRegistry.java
similarity index 74%
rename from src/main/java/com/github/steveice10/opennbt/conversion/ConverterRegistry.java
rename to src/main/java/com/viaversion/nbt/conversion/ConverterRegistry.java
index 5b40544..34d83d6 100644
--- a/src/main/java/com/github/steveice10/opennbt/conversion/ConverterRegistry.java
+++ b/src/main/java/com/viaversion/nbt/conversion/ConverterRegistry.java
@@ -1,31 +1,31 @@
-package com.github.steveice10.opennbt.conversion;
+package com.viaversion.nbt.conversion;
-import com.github.steveice10.opennbt.conversion.converter.ByteArrayTagConverter;
-import com.github.steveice10.opennbt.conversion.converter.ByteTagConverter;
-import com.github.steveice10.opennbt.conversion.converter.CompoundTagConverter;
-import com.github.steveice10.opennbt.conversion.converter.DoubleTagConverter;
-import com.github.steveice10.opennbt.conversion.converter.FloatTagConverter;
-import com.github.steveice10.opennbt.conversion.converter.IntArrayTagConverter;
-import com.github.steveice10.opennbt.conversion.converter.IntTagConverter;
-import com.github.steveice10.opennbt.conversion.converter.ListTagConverter;
-import com.github.steveice10.opennbt.conversion.converter.LongArrayTagConverter;
-import com.github.steveice10.opennbt.conversion.converter.LongTagConverter;
-import com.github.steveice10.opennbt.conversion.converter.ShortTagConverter;
-import com.github.steveice10.opennbt.conversion.converter.StringTagConverter;
-import com.github.steveice10.opennbt.tag.TagRegistry;
-import com.github.steveice10.opennbt.tag.builtin.ByteArrayTag;
-import com.github.steveice10.opennbt.tag.builtin.ByteTag;
-import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
-import com.github.steveice10.opennbt.tag.builtin.DoubleTag;
-import com.github.steveice10.opennbt.tag.builtin.FloatTag;
-import com.github.steveice10.opennbt.tag.builtin.IntArrayTag;
-import com.github.steveice10.opennbt.tag.builtin.IntTag;
-import com.github.steveice10.opennbt.tag.builtin.ListTag;
-import com.github.steveice10.opennbt.tag.builtin.LongArrayTag;
-import com.github.steveice10.opennbt.tag.builtin.LongTag;
-import com.github.steveice10.opennbt.tag.builtin.ShortTag;
-import com.github.steveice10.opennbt.tag.builtin.StringTag;
-import com.github.steveice10.opennbt.tag.builtin.Tag;
+import com.viaversion.nbt.conversion.converter.ByteArrayTagConverter;
+import com.viaversion.nbt.conversion.converter.ByteTagConverter;
+import com.viaversion.nbt.conversion.converter.CompoundTagConverter;
+import com.viaversion.nbt.conversion.converter.DoubleTagConverter;
+import com.viaversion.nbt.conversion.converter.FloatTagConverter;
+import com.viaversion.nbt.conversion.converter.IntArrayTagConverter;
+import com.viaversion.nbt.conversion.converter.IntTagConverter;
+import com.viaversion.nbt.conversion.converter.ListTagConverter;
+import com.viaversion.nbt.conversion.converter.LongArrayTagConverter;
+import com.viaversion.nbt.conversion.converter.LongTagConverter;
+import com.viaversion.nbt.conversion.converter.ShortTagConverter;
+import com.viaversion.nbt.conversion.converter.StringTagConverter;
+import com.viaversion.nbt.io.TagRegistry;
+import com.viaversion.nbt.tag.ByteArrayTag;
+import com.viaversion.nbt.tag.ByteTag;
+import com.viaversion.nbt.tag.CompoundTag;
+import com.viaversion.nbt.tag.DoubleTag;
+import com.viaversion.nbt.tag.FloatTag;
+import com.viaversion.nbt.tag.IntArrayTag;
+import com.viaversion.nbt.tag.IntTag;
+import com.viaversion.nbt.tag.ListTag;
+import com.viaversion.nbt.tag.LongArrayTag;
+import com.viaversion.nbt.tag.LongTag;
+import com.viaversion.nbt.tag.ShortTag;
+import com.viaversion.nbt.tag.StringTag;
+import com.viaversion.nbt.tag.Tag;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import java.util.HashMap;
diff --git a/src/main/java/com/github/steveice10/opennbt/conversion/TagConverter.java b/src/main/java/com/viaversion/nbt/conversion/TagConverter.java
similarity index 84%
rename from src/main/java/com/github/steveice10/opennbt/conversion/TagConverter.java
rename to src/main/java/com/viaversion/nbt/conversion/TagConverter.java
index 80f147e..f634a4e 100644
--- a/src/main/java/com/github/steveice10/opennbt/conversion/TagConverter.java
+++ b/src/main/java/com/viaversion/nbt/conversion/TagConverter.java
@@ -1,6 +1,6 @@
-package com.github.steveice10.opennbt.conversion;
+package com.viaversion.nbt.conversion;
-import com.github.steveice10.opennbt.tag.builtin.Tag;
+import com.viaversion.nbt.tag.Tag;
/**
* A converter that converts between a tag type and a value type. A converted tag will have its value and all children converted to raw types and vice versa.
diff --git a/src/main/java/com/github/steveice10/opennbt/conversion/converter/ByteArrayTagConverter.java b/src/main/java/com/viaversion/nbt/conversion/converter/ByteArrayTagConverter.java
similarity index 66%
rename from src/main/java/com/github/steveice10/opennbt/conversion/converter/ByteArrayTagConverter.java
rename to src/main/java/com/viaversion/nbt/conversion/converter/ByteArrayTagConverter.java
index 48f47ed..e3ab161 100644
--- a/src/main/java/com/github/steveice10/opennbt/conversion/converter/ByteArrayTagConverter.java
+++ b/src/main/java/com/viaversion/nbt/conversion/converter/ByteArrayTagConverter.java
@@ -1,7 +1,7 @@
-package com.github.steveice10.opennbt.conversion.converter;
+package com.viaversion.nbt.conversion.converter;
-import com.github.steveice10.opennbt.conversion.TagConverter;
-import com.github.steveice10.opennbt.tag.builtin.ByteArrayTag;
+import com.viaversion.nbt.conversion.TagConverter;
+import com.viaversion.nbt.tag.ByteArrayTag;
/**
* A converter that converts between ByteArrayTag and byte[].
diff --git a/src/main/java/com/github/steveice10/opennbt/conversion/converter/ByteTagConverter.java b/src/main/java/com/viaversion/nbt/conversion/converter/ByteTagConverter.java
similarity index 64%
rename from src/main/java/com/github/steveice10/opennbt/conversion/converter/ByteTagConverter.java
rename to src/main/java/com/viaversion/nbt/conversion/converter/ByteTagConverter.java
index eebe0f9..89833c0 100644
--- a/src/main/java/com/github/steveice10/opennbt/conversion/converter/ByteTagConverter.java
+++ b/src/main/java/com/viaversion/nbt/conversion/converter/ByteTagConverter.java
@@ -1,7 +1,7 @@
-package com.github.steveice10.opennbt.conversion.converter;
+package com.viaversion.nbt.conversion.converter;
-import com.github.steveice10.opennbt.conversion.TagConverter;
-import com.github.steveice10.opennbt.tag.builtin.ByteTag;
+import com.viaversion.nbt.conversion.TagConverter;
+import com.viaversion.nbt.tag.ByteTag;
/**
* A converter that converts between ByteTag and byte.
diff --git a/src/main/java/com/github/steveice10/opennbt/conversion/converter/CompoundTagConverter.java b/src/main/java/com/viaversion/nbt/conversion/converter/CompoundTagConverter.java
similarity index 73%
rename from src/main/java/com/github/steveice10/opennbt/conversion/converter/CompoundTagConverter.java
rename to src/main/java/com/viaversion/nbt/conversion/converter/CompoundTagConverter.java
index 1c834f4..eaa1ef0 100644
--- a/src/main/java/com/github/steveice10/opennbt/conversion/converter/CompoundTagConverter.java
+++ b/src/main/java/com/viaversion/nbt/conversion/converter/CompoundTagConverter.java
@@ -1,9 +1,9 @@
-package com.github.steveice10.opennbt.conversion.converter;
+package com.viaversion.nbt.conversion.converter;
-import com.github.steveice10.opennbt.conversion.ConverterRegistry;
-import com.github.steveice10.opennbt.conversion.TagConverter;
-import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
-import com.github.steveice10.opennbt.tag.builtin.Tag;
+import com.viaversion.nbt.conversion.ConverterRegistry;
+import com.viaversion.nbt.conversion.TagConverter;
+import com.viaversion.nbt.tag.CompoundTag;
+import com.viaversion.nbt.tag.Tag;
import java.util.HashMap;
import java.util.Map;
diff --git a/src/main/java/com/github/steveice10/opennbt/conversion/converter/DoubleTagConverter.java b/src/main/java/com/viaversion/nbt/conversion/converter/DoubleTagConverter.java
similarity index 65%
rename from src/main/java/com/github/steveice10/opennbt/conversion/converter/DoubleTagConverter.java
rename to src/main/java/com/viaversion/nbt/conversion/converter/DoubleTagConverter.java
index 0d2a87b..88671dd 100644
--- a/src/main/java/com/github/steveice10/opennbt/conversion/converter/DoubleTagConverter.java
+++ b/src/main/java/com/viaversion/nbt/conversion/converter/DoubleTagConverter.java
@@ -1,7 +1,7 @@
-package com.github.steveice10.opennbt.conversion.converter;
+package com.viaversion.nbt.conversion.converter;
-import com.github.steveice10.opennbt.conversion.TagConverter;
-import com.github.steveice10.opennbt.tag.builtin.DoubleTag;
+import com.viaversion.nbt.conversion.TagConverter;
+import com.viaversion.nbt.tag.DoubleTag;
/**
* A converter that converts between DoubleTag and double.
diff --git a/src/main/java/com/github/steveice10/opennbt/conversion/converter/FloatTagConverter.java b/src/main/java/com/viaversion/nbt/conversion/converter/FloatTagConverter.java
similarity index 64%
rename from src/main/java/com/github/steveice10/opennbt/conversion/converter/FloatTagConverter.java
rename to src/main/java/com/viaversion/nbt/conversion/converter/FloatTagConverter.java
index b81746d..ca761db 100644
--- a/src/main/java/com/github/steveice10/opennbt/conversion/converter/FloatTagConverter.java
+++ b/src/main/java/com/viaversion/nbt/conversion/converter/FloatTagConverter.java
@@ -1,7 +1,7 @@
-package com.github.steveice10.opennbt.conversion.converter;
+package com.viaversion.nbt.conversion.converter;
-import com.github.steveice10.opennbt.conversion.TagConverter;
-import com.github.steveice10.opennbt.tag.builtin.FloatTag;
+import com.viaversion.nbt.conversion.TagConverter;
+import com.viaversion.nbt.tag.FloatTag;
/**
* A converter that converts between FloatTag and float.
diff --git a/src/main/java/com/github/steveice10/opennbt/conversion/converter/IntArrayTagConverter.java b/src/main/java/com/viaversion/nbt/conversion/converter/IntArrayTagConverter.java
similarity index 65%
rename from src/main/java/com/github/steveice10/opennbt/conversion/converter/IntArrayTagConverter.java
rename to src/main/java/com/viaversion/nbt/conversion/converter/IntArrayTagConverter.java
index 0d3f708..9db16d1 100644
--- a/src/main/java/com/github/steveice10/opennbt/conversion/converter/IntArrayTagConverter.java
+++ b/src/main/java/com/viaversion/nbt/conversion/converter/IntArrayTagConverter.java
@@ -1,7 +1,7 @@
-package com.github.steveice10.opennbt.conversion.converter;
+package com.viaversion.nbt.conversion.converter;
-import com.github.steveice10.opennbt.conversion.TagConverter;
-import com.github.steveice10.opennbt.tag.builtin.IntArrayTag;
+import com.viaversion.nbt.conversion.TagConverter;
+import com.viaversion.nbt.tag.IntArrayTag;
/**
* A converter that converts between IntArrayTag and int[].
diff --git a/src/main/java/com/github/steveice10/opennbt/conversion/converter/IntTagConverter.java b/src/main/java/com/viaversion/nbt/conversion/converter/IntTagConverter.java
similarity index 64%
rename from src/main/java/com/github/steveice10/opennbt/conversion/converter/IntTagConverter.java
rename to src/main/java/com/viaversion/nbt/conversion/converter/IntTagConverter.java
index 51a65e0..f85fdd4 100644
--- a/src/main/java/com/github/steveice10/opennbt/conversion/converter/IntTagConverter.java
+++ b/src/main/java/com/viaversion/nbt/conversion/converter/IntTagConverter.java
@@ -1,7 +1,7 @@
-package com.github.steveice10.opennbt.conversion.converter;
+package com.viaversion.nbt.conversion.converter;
-import com.github.steveice10.opennbt.conversion.TagConverter;
-import com.github.steveice10.opennbt.tag.builtin.IntTag;
+import com.viaversion.nbt.conversion.TagConverter;
+import com.viaversion.nbt.tag.IntTag;
/**
* A converter that converts between IntTag and int.
diff --git a/src/main/java/com/github/steveice10/opennbt/conversion/converter/ListTagConverter.java b/src/main/java/com/viaversion/nbt/conversion/converter/ListTagConverter.java
similarity index 70%
rename from src/main/java/com/github/steveice10/opennbt/conversion/converter/ListTagConverter.java
rename to src/main/java/com/viaversion/nbt/conversion/converter/ListTagConverter.java
index bd1c010..34aa4a7 100644
--- a/src/main/java/com/github/steveice10/opennbt/conversion/converter/ListTagConverter.java
+++ b/src/main/java/com/viaversion/nbt/conversion/converter/ListTagConverter.java
@@ -1,9 +1,9 @@
-package com.github.steveice10.opennbt.conversion.converter;
+package com.viaversion.nbt.conversion.converter;
-import com.github.steveice10.opennbt.conversion.ConverterRegistry;
-import com.github.steveice10.opennbt.conversion.TagConverter;
-import com.github.steveice10.opennbt.tag.builtin.ListTag;
-import com.github.steveice10.opennbt.tag.builtin.Tag;
+import com.viaversion.nbt.conversion.ConverterRegistry;
+import com.viaversion.nbt.conversion.TagConverter;
+import com.viaversion.nbt.tag.ListTag;
+import com.viaversion.nbt.tag.Tag;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/main/java/com/github/steveice10/opennbt/conversion/converter/LongArrayTagConverter.java b/src/main/java/com/viaversion/nbt/conversion/converter/LongArrayTagConverter.java
similarity index 66%
rename from src/main/java/com/github/steveice10/opennbt/conversion/converter/LongArrayTagConverter.java
rename to src/main/java/com/viaversion/nbt/conversion/converter/LongArrayTagConverter.java
index 519e832..e3b5fda 100644
--- a/src/main/java/com/github/steveice10/opennbt/conversion/converter/LongArrayTagConverter.java
+++ b/src/main/java/com/viaversion/nbt/conversion/converter/LongArrayTagConverter.java
@@ -1,7 +1,7 @@
-package com.github.steveice10.opennbt.conversion.converter;
+package com.viaversion.nbt.conversion.converter;
-import com.github.steveice10.opennbt.conversion.TagConverter;
-import com.github.steveice10.opennbt.tag.builtin.LongArrayTag;
+import com.viaversion.nbt.conversion.TagConverter;
+import com.viaversion.nbt.tag.LongArrayTag;
/**
* A converter that converts between LongArrayTag and long[].
diff --git a/src/main/java/com/github/steveice10/opennbt/conversion/converter/LongTagConverter.java b/src/main/java/com/viaversion/nbt/conversion/converter/LongTagConverter.java
similarity index 64%
rename from src/main/java/com/github/steveice10/opennbt/conversion/converter/LongTagConverter.java
rename to src/main/java/com/viaversion/nbt/conversion/converter/LongTagConverter.java
index 6c33a71..ae83551 100644
--- a/src/main/java/com/github/steveice10/opennbt/conversion/converter/LongTagConverter.java
+++ b/src/main/java/com/viaversion/nbt/conversion/converter/LongTagConverter.java
@@ -1,7 +1,7 @@
-package com.github.steveice10.opennbt.conversion.converter;
+package com.viaversion.nbt.conversion.converter;
-import com.github.steveice10.opennbt.conversion.TagConverter;
-import com.github.steveice10.opennbt.tag.builtin.LongTag;
+import com.viaversion.nbt.conversion.TagConverter;
+import com.viaversion.nbt.tag.LongTag;
/**
* A converter that converts between LongTag and long.
diff --git a/src/main/java/com/github/steveice10/opennbt/conversion/converter/ShortTagConverter.java b/src/main/java/com/viaversion/nbt/conversion/converter/ShortTagConverter.java
similarity index 64%
rename from src/main/java/com/github/steveice10/opennbt/conversion/converter/ShortTagConverter.java
rename to src/main/java/com/viaversion/nbt/conversion/converter/ShortTagConverter.java
index 7edb9af..9713d10 100644
--- a/src/main/java/com/github/steveice10/opennbt/conversion/converter/ShortTagConverter.java
+++ b/src/main/java/com/viaversion/nbt/conversion/converter/ShortTagConverter.java
@@ -1,7 +1,7 @@
-package com.github.steveice10.opennbt.conversion.converter;
+package com.viaversion.nbt.conversion.converter;
-import com.github.steveice10.opennbt.conversion.TagConverter;
-import com.github.steveice10.opennbt.tag.builtin.ShortTag;
+import com.viaversion.nbt.conversion.TagConverter;
+import com.viaversion.nbt.tag.ShortTag;
/**
* A converter that converts between ShortTag and short.
diff --git a/src/main/java/com/github/steveice10/opennbt/conversion/converter/StringTagConverter.java b/src/main/java/com/viaversion/nbt/conversion/converter/StringTagConverter.java
similarity index 65%
rename from src/main/java/com/github/steveice10/opennbt/conversion/converter/StringTagConverter.java
rename to src/main/java/com/viaversion/nbt/conversion/converter/StringTagConverter.java
index 8e6859b..281ec29 100644
--- a/src/main/java/com/github/steveice10/opennbt/conversion/converter/StringTagConverter.java
+++ b/src/main/java/com/viaversion/nbt/conversion/converter/StringTagConverter.java
@@ -1,7 +1,7 @@
-package com.github.steveice10.opennbt.conversion.converter;
+package com.viaversion.nbt.conversion.converter;
-import com.github.steveice10.opennbt.conversion.TagConverter;
-import com.github.steveice10.opennbt.tag.builtin.StringTag;
+import com.viaversion.nbt.conversion.TagConverter;
+import com.viaversion.nbt.tag.StringTag;
/**
* A converter that converts between StringTag and String.
diff --git a/src/main/java/com/github/steveice10/opennbt/tag/io/NBTIO.java b/src/main/java/com/viaversion/nbt/io/NBTIO.java
similarity index 92%
rename from src/main/java/com/github/steveice10/opennbt/tag/io/NBTIO.java
rename to src/main/java/com/viaversion/nbt/io/NBTIO.java
index 1e717a4..b8e51ff 100644
--- a/src/main/java/com/github/steveice10/opennbt/tag/io/NBTIO.java
+++ b/src/main/java/com/viaversion/nbt/io/NBTIO.java
@@ -1,8 +1,7 @@
-package com.github.steveice10.opennbt.tag.io;
+package com.viaversion.nbt.io;
-import com.github.steveice10.opennbt.tag.TagRegistry;
-import com.github.steveice10.opennbt.tag.builtin.Tag;
-import com.github.steveice10.opennbt.tag.limiter.TagLimiter;
+import com.viaversion.nbt.tag.Tag;
+import com.viaversion.nbt.limiter.TagLimiter;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
diff --git a/src/main/java/com/github/steveice10/opennbt/tag/io/TagReader.java b/src/main/java/com/viaversion/nbt/io/TagReader.java
similarity index 94%
rename from src/main/java/com/github/steveice10/opennbt/tag/io/TagReader.java
rename to src/main/java/com/viaversion/nbt/io/TagReader.java
index 59ea84e..f74cf16 100644
--- a/src/main/java/com/github/steveice10/opennbt/tag/io/TagReader.java
+++ b/src/main/java/com/viaversion/nbt/io/TagReader.java
@@ -1,7 +1,7 @@
-package com.github.steveice10.opennbt.tag.io;
+package com.viaversion.nbt.io;
-import com.github.steveice10.opennbt.tag.builtin.Tag;
-import com.github.steveice10.opennbt.tag.limiter.TagLimiter;
+import com.viaversion.nbt.tag.Tag;
+import com.viaversion.nbt.limiter.TagLimiter;
import it.unimi.dsi.fastutil.io.FastBufferedInputStream;
import java.io.DataInput;
import java.io.DataInputStream;
diff --git a/src/main/java/com/github/steveice10/opennbt/tag/TagRegistry.java b/src/main/java/com/viaversion/nbt/io/TagRegistry.java
similarity index 84%
rename from src/main/java/com/github/steveice10/opennbt/tag/TagRegistry.java
rename to src/main/java/com/viaversion/nbt/io/TagRegistry.java
index 4919afd..7b004e9 100644
--- a/src/main/java/com/github/steveice10/opennbt/tag/TagRegistry.java
+++ b/src/main/java/com/viaversion/nbt/io/TagRegistry.java
@@ -1,19 +1,19 @@
-package com.github.steveice10.opennbt.tag;
+package com.viaversion.nbt.io;
-import com.github.steveice10.opennbt.tag.builtin.ByteArrayTag;
-import com.github.steveice10.opennbt.tag.builtin.ByteTag;
-import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
-import com.github.steveice10.opennbt.tag.builtin.DoubleTag;
-import com.github.steveice10.opennbt.tag.builtin.FloatTag;
-import com.github.steveice10.opennbt.tag.builtin.IntArrayTag;
-import com.github.steveice10.opennbt.tag.builtin.IntTag;
-import com.github.steveice10.opennbt.tag.builtin.ListTag;
-import com.github.steveice10.opennbt.tag.builtin.LongArrayTag;
-import com.github.steveice10.opennbt.tag.builtin.LongTag;
-import com.github.steveice10.opennbt.tag.builtin.ShortTag;
-import com.github.steveice10.opennbt.tag.builtin.StringTag;
-import com.github.steveice10.opennbt.tag.builtin.Tag;
-import com.github.steveice10.opennbt.tag.limiter.TagLimiter;
+import com.viaversion.nbt.limiter.TagLimiter;
+import com.viaversion.nbt.tag.ByteArrayTag;
+import com.viaversion.nbt.tag.ByteTag;
+import com.viaversion.nbt.tag.CompoundTag;
+import com.viaversion.nbt.tag.DoubleTag;
+import com.viaversion.nbt.tag.FloatTag;
+import com.viaversion.nbt.tag.IntArrayTag;
+import com.viaversion.nbt.tag.IntTag;
+import com.viaversion.nbt.tag.ListTag;
+import com.viaversion.nbt.tag.LongArrayTag;
+import com.viaversion.nbt.tag.LongTag;
+import com.viaversion.nbt.tag.ShortTag;
+import com.viaversion.nbt.tag.StringTag;
+import com.viaversion.nbt.tag.Tag;
import it.unimi.dsi.fastutil.objects.Object2IntMap;
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
import java.io.DataInput;
diff --git a/src/main/java/com/github/steveice10/opennbt/tag/io/TagWriter.java b/src/main/java/com/viaversion/nbt/io/TagWriter.java
similarity index 95%
rename from src/main/java/com/github/steveice10/opennbt/tag/io/TagWriter.java
rename to src/main/java/com/viaversion/nbt/io/TagWriter.java
index 71cafc1..311837f 100644
--- a/src/main/java/com/github/steveice10/opennbt/tag/io/TagWriter.java
+++ b/src/main/java/com/viaversion/nbt/io/TagWriter.java
@@ -1,6 +1,6 @@
-package com.github.steveice10.opennbt.tag.io;
+package com.viaversion.nbt.io;
-import com.github.steveice10.opennbt.tag.builtin.Tag;
+import com.viaversion.nbt.tag.Tag;
import it.unimi.dsi.fastutil.io.FastBufferedOutputStream;
import java.io.DataOutput;
import java.io.DataOutputStream;
diff --git a/src/main/java/com/github/steveice10/opennbt/tag/limiter/NoopTagLimiter.java b/src/main/java/com/viaversion/nbt/limiter/NoopTagLimiter.java
similarity index 87%
rename from src/main/java/com/github/steveice10/opennbt/tag/limiter/NoopTagLimiter.java
rename to src/main/java/com/viaversion/nbt/limiter/NoopTagLimiter.java
index d96feae..3c4a190 100644
--- a/src/main/java/com/github/steveice10/opennbt/tag/limiter/NoopTagLimiter.java
+++ b/src/main/java/com/viaversion/nbt/limiter/NoopTagLimiter.java
@@ -1,9 +1,12 @@
-package com.github.steveice10.opennbt.tag.limiter;
+package com.viaversion.nbt.limiter;
final class NoopTagLimiter implements TagLimiter {
static final TagLimiter INSTANCE = new NoopTagLimiter();
+ private NoopTagLimiter() {
+ }
+
@Override
public void countBytes(int bytes) {
}
diff --git a/src/main/java/com/github/steveice10/opennbt/tag/limiter/TagLimiter.java b/src/main/java/com/viaversion/nbt/limiter/TagLimiter.java
similarity index 97%
rename from src/main/java/com/github/steveice10/opennbt/tag/limiter/TagLimiter.java
rename to src/main/java/com/viaversion/nbt/limiter/TagLimiter.java
index 79f32b6..848cd75 100644
--- a/src/main/java/com/github/steveice10/opennbt/tag/limiter/TagLimiter.java
+++ b/src/main/java/com/viaversion/nbt/limiter/TagLimiter.java
@@ -1,4 +1,4 @@
-package com.github.steveice10.opennbt.tag.limiter;
+package com.viaversion.nbt.limiter;
public interface TagLimiter {
diff --git a/src/main/java/com/github/steveice10/opennbt/tag/limiter/TagLimiterImpl.java b/src/main/java/com/viaversion/nbt/limiter/TagLimiterImpl.java
similarity index 95%
rename from src/main/java/com/github/steveice10/opennbt/tag/limiter/TagLimiterImpl.java
rename to src/main/java/com/viaversion/nbt/limiter/TagLimiterImpl.java
index 48f6130..0c67d1c 100644
--- a/src/main/java/com/github/steveice10/opennbt/tag/limiter/TagLimiterImpl.java
+++ b/src/main/java/com/viaversion/nbt/limiter/TagLimiterImpl.java
@@ -1,4 +1,4 @@
-package com.github.steveice10.opennbt.tag.limiter;
+package com.viaversion.nbt.limiter;
final class TagLimiterImpl implements TagLimiter {
diff --git a/src/main/java/com/github/steveice10/opennbt/stringified/CharBuffer.java b/src/main/java/com/viaversion/nbt/stringified/CharBuffer.java
similarity index 98%
rename from src/main/java/com/github/steveice10/opennbt/stringified/CharBuffer.java
rename to src/main/java/com/viaversion/nbt/stringified/CharBuffer.java
index 083325e..ea2b65d 100644
--- a/src/main/java/com/github/steveice10/opennbt/stringified/CharBuffer.java
+++ b/src/main/java/com/viaversion/nbt/stringified/CharBuffer.java
@@ -21,7 +21,7 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
-package com.github.steveice10.opennbt.stringified;
+package com.viaversion.nbt.stringified;
/**
* A character buffer designed to be inspected by a parser.
diff --git a/src/main/java/com/github/steveice10/opennbt/stringified/SNBT.java b/src/main/java/com/viaversion/nbt/stringified/SNBT.java
similarity index 90%
rename from src/main/java/com/github/steveice10/opennbt/stringified/SNBT.java
rename to src/main/java/com/viaversion/nbt/stringified/SNBT.java
index 58ad0c6..990b1e9 100644
--- a/src/main/java/com/github/steveice10/opennbt/stringified/SNBT.java
+++ b/src/main/java/com/viaversion/nbt/stringified/SNBT.java
@@ -1,7 +1,7 @@
-package com.github.steveice10.opennbt.stringified;
+package com.viaversion.nbt.stringified;
-import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
-import com.github.steveice10.opennbt.tag.builtin.Tag;
+import com.viaversion.nbt.tag.CompoundTag;
+import com.viaversion.nbt.tag.Tag;
/**
* Serialization of stringifies tags.
diff --git a/src/main/java/com/github/steveice10/opennbt/stringified/StringifiedTagParseException.java b/src/main/java/com/viaversion/nbt/stringified/StringifiedTagParseException.java
similarity index 97%
rename from src/main/java/com/github/steveice10/opennbt/stringified/StringifiedTagParseException.java
rename to src/main/java/com/viaversion/nbt/stringified/StringifiedTagParseException.java
index b66a2e6..54e0de6 100644
--- a/src/main/java/com/github/steveice10/opennbt/stringified/StringifiedTagParseException.java
+++ b/src/main/java/com/viaversion/nbt/stringified/StringifiedTagParseException.java
@@ -21,7 +21,7 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
-package com.github.steveice10.opennbt.stringified;
+package com.viaversion.nbt.stringified;
// Specific Via changes:
// - Remove buffer field
diff --git a/src/main/java/com/github/steveice10/opennbt/stringified/TagStringReader.java b/src/main/java/com/viaversion/nbt/stringified/TagStringReader.java
similarity index 94%
rename from src/main/java/com/github/steveice10/opennbt/stringified/TagStringReader.java
rename to src/main/java/com/viaversion/nbt/stringified/TagStringReader.java
index 6d54449..b01dd18 100644
--- a/src/main/java/com/github/steveice10/opennbt/stringified/TagStringReader.java
+++ b/src/main/java/com/viaversion/nbt/stringified/TagStringReader.java
@@ -21,22 +21,22 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
-package com.github.steveice10.opennbt.stringified;
+package com.viaversion.nbt.stringified;
-import com.github.steveice10.opennbt.tag.builtin.ByteArrayTag;
-import com.github.steveice10.opennbt.tag.builtin.ByteTag;
-import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
-import com.github.steveice10.opennbt.tag.builtin.DoubleTag;
-import com.github.steveice10.opennbt.tag.builtin.FloatTag;
-import com.github.steveice10.opennbt.tag.builtin.IntArrayTag;
-import com.github.steveice10.opennbt.tag.builtin.IntTag;
-import com.github.steveice10.opennbt.tag.builtin.ListTag;
-import com.github.steveice10.opennbt.tag.builtin.LongArrayTag;
-import com.github.steveice10.opennbt.tag.builtin.LongTag;
-import com.github.steveice10.opennbt.tag.builtin.NumberTag;
-import com.github.steveice10.opennbt.tag.builtin.ShortTag;
-import com.github.steveice10.opennbt.tag.builtin.StringTag;
-import com.github.steveice10.opennbt.tag.builtin.Tag;
+import com.viaversion.nbt.tag.ByteArrayTag;
+import com.viaversion.nbt.tag.ByteTag;
+import com.viaversion.nbt.tag.CompoundTag;
+import com.viaversion.nbt.tag.DoubleTag;
+import com.viaversion.nbt.tag.FloatTag;
+import com.viaversion.nbt.tag.IntArrayTag;
+import com.viaversion.nbt.tag.IntTag;
+import com.viaversion.nbt.tag.ListTag;
+import com.viaversion.nbt.tag.LongArrayTag;
+import com.viaversion.nbt.tag.LongTag;
+import com.viaversion.nbt.tag.NumberTag;
+import com.viaversion.nbt.tag.ShortTag;
+import com.viaversion.nbt.tag.StringTag;
+import com.viaversion.nbt.tag.Tag;
import it.unimi.dsi.fastutil.ints.IntArrayList;
import it.unimi.dsi.fastutil.ints.IntList;
import java.util.stream.IntStream;
diff --git a/src/main/java/com/github/steveice10/opennbt/stringified/TagStringWriter.java b/src/main/java/com/viaversion/nbt/stringified/TagStringWriter.java
similarity index 90%
rename from src/main/java/com/github/steveice10/opennbt/stringified/TagStringWriter.java
rename to src/main/java/com/viaversion/nbt/stringified/TagStringWriter.java
index cd4a88d..84cefcd 100644
--- a/src/main/java/com/github/steveice10/opennbt/stringified/TagStringWriter.java
+++ b/src/main/java/com/viaversion/nbt/stringified/TagStringWriter.java
@@ -21,22 +21,22 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
-package com.github.steveice10.opennbt.stringified;
+package com.viaversion.nbt.stringified;
-import com.github.steveice10.opennbt.tag.builtin.ByteArrayTag;
-import com.github.steveice10.opennbt.tag.builtin.ByteTag;
-import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
-import com.github.steveice10.opennbt.tag.builtin.DoubleTag;
-import com.github.steveice10.opennbt.tag.builtin.FloatTag;
-import com.github.steveice10.opennbt.tag.builtin.IntArrayTag;
-import com.github.steveice10.opennbt.tag.builtin.IntTag;
-import com.github.steveice10.opennbt.tag.builtin.ListTag;
-import com.github.steveice10.opennbt.tag.builtin.LongArrayTag;
-import com.github.steveice10.opennbt.tag.builtin.LongTag;
-import com.github.steveice10.opennbt.tag.builtin.NumberTag;
-import com.github.steveice10.opennbt.tag.builtin.ShortTag;
-import com.github.steveice10.opennbt.tag.builtin.StringTag;
-import com.github.steveice10.opennbt.tag.builtin.Tag;
+import com.viaversion.nbt.tag.ByteArrayTag;
+import com.viaversion.nbt.tag.ByteTag;
+import com.viaversion.nbt.tag.CompoundTag;
+import com.viaversion.nbt.tag.DoubleTag;
+import com.viaversion.nbt.tag.FloatTag;
+import com.viaversion.nbt.tag.IntArrayTag;
+import com.viaversion.nbt.tag.IntTag;
+import com.viaversion.nbt.tag.ListTag;
+import com.viaversion.nbt.tag.LongArrayTag;
+import com.viaversion.nbt.tag.LongTag;
+import com.viaversion.nbt.tag.NumberTag;
+import com.viaversion.nbt.tag.ShortTag;
+import com.viaversion.nbt.tag.StringTag;
+import com.viaversion.nbt.tag.Tag;
import java.util.Map;
// Specific Via changes:
diff --git a/src/main/java/com/github/steveice10/opennbt/stringified/Tokens.java b/src/main/java/com/viaversion/nbt/stringified/Tokens.java
similarity index 98%
rename from src/main/java/com/github/steveice10/opennbt/stringified/Tokens.java
rename to src/main/java/com/viaversion/nbt/stringified/Tokens.java
index 6575c43..d2293aa 100644
--- a/src/main/java/com/github/steveice10/opennbt/stringified/Tokens.java
+++ b/src/main/java/com/viaversion/nbt/stringified/Tokens.java
@@ -21,7 +21,7 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
-package com.github.steveice10.opennbt.stringified;
+package com.viaversion.nbt.stringified;
final class Tokens {
// Compounds
diff --git a/src/main/java/com/github/steveice10/opennbt/tag/builtin/ByteArrayTag.java b/src/main/java/com/viaversion/nbt/tag/ByteArrayTag.java
similarity index 88%
rename from src/main/java/com/github/steveice10/opennbt/tag/builtin/ByteArrayTag.java
rename to src/main/java/com/viaversion/nbt/tag/ByteArrayTag.java
index 279b852..d882595 100644
--- a/src/main/java/com/github/steveice10/opennbt/tag/builtin/ByteArrayTag.java
+++ b/src/main/java/com/viaversion/nbt/tag/ByteArrayTag.java
@@ -1,6 +1,7 @@
-package com.github.steveice10.opennbt.tag.builtin;
+package com.viaversion.nbt.tag;
-import com.github.steveice10.opennbt.tag.limiter.TagLimiter;
+import com.viaversion.nbt.limiter.TagLimiter;
+import com.viaversion.nbt.stringified.SNBT;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
@@ -9,7 +10,7 @@ import java.util.Arrays;
/**
* A tag containing a byte array.
*/
-public final class ByteArrayTag extends NumberArrayTag {
+public final class ByteArrayTag implements NumberArrayTag {
public static final int ID = 7;
private static final byte[] EMPTY_ARRAY = new byte[0];
private byte[] value;
@@ -70,7 +71,7 @@ public final class ByteArrayTag extends NumberArrayTag {
* @param index Index of the value.
* @return The value at the given index.
*/
- public byte getValue(int index) {
+ public byte get(int index) {
return this.value[index];
}
@@ -80,7 +81,7 @@ public final class ByteArrayTag extends NumberArrayTag {
* @param index Index of the value.
* @param value Value to set.
*/
- public void setValue(int index, byte value) {
+ public void set(int index, byte value) {
this.value[index] = value;
}
@@ -126,4 +127,9 @@ public final class ByteArrayTag extends NumberArrayTag {
public int getTagId() {
return ID;
}
+
+ @Override
+ public String toString() {
+ return SNBT.serialize(this);
+ }
}
diff --git a/src/main/java/com/github/steveice10/opennbt/tag/builtin/ByteTag.java b/src/main/java/com/viaversion/nbt/tag/ByteTag.java
similarity index 75%
rename from src/main/java/com/github/steveice10/opennbt/tag/builtin/ByteTag.java
rename to src/main/java/com/viaversion/nbt/tag/ByteTag.java
index f221d9f..5c4eb39 100644
--- a/src/main/java/com/github/steveice10/opennbt/tag/builtin/ByteTag.java
+++ b/src/main/java/com/viaversion/nbt/tag/ByteTag.java
@@ -1,6 +1,7 @@
-package com.github.steveice10.opennbt.tag.builtin;
+package com.viaversion.nbt.tag;
-import com.github.steveice10.opennbt.tag.limiter.TagLimiter;
+import com.viaversion.nbt.stringified.SNBT;
+import com.viaversion.nbt.limiter.TagLimiter;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
@@ -8,16 +9,10 @@ import java.io.IOException;
/**
* A tag containing a byte.
*/
-public final class ByteTag extends NumberTag {
+public final class ByteTag implements NumberTag {
public static final int ID = 1;
- private byte value;
-
- /**
- * Creates a tag.
- */
- public ByteTag() {
- this((byte) 0);
- }
+ public static final ByteTag ZERO = new ByteTag((byte) 0);
+ private final byte value;
/**
* Creates a tag.
@@ -56,17 +51,6 @@ public final class ByteTag extends NumberTag {
return Byte.toString(this.value);
}
- /**
- * Sets the value of this tag.
- *
- * @param value New value of this tag.
- * @deprecated number tags will be immutable in the future
- */
- @Deprecated
- public void setValue(byte value) {
- this.value = value;
- }
-
@Override
public void write(DataOutput out) throws IOException {
out.writeByte(this.value);
@@ -85,11 +69,6 @@ public final class ByteTag extends NumberTag {
return value;
}
- @Override
- public ByteTag copy() {
- return new ByteTag(this.value);
- }
-
@Override
public byte asByte() {
return this.value;
@@ -124,4 +103,9 @@ public final class ByteTag extends NumberTag {
public int getTagId() {
return ID;
}
+
+ @Override
+ public String toString() {
+ return SNBT.serialize(this);
+ }
}
diff --git a/src/main/java/com/github/steveice10/opennbt/tag/builtin/CompoundTag.java b/src/main/java/com/viaversion/nbt/tag/CompoundTag.java
similarity index 95%
rename from src/main/java/com/github/steveice10/opennbt/tag/builtin/CompoundTag.java
rename to src/main/java/com/viaversion/nbt/tag/CompoundTag.java
index a149874..3c2f982 100644
--- a/src/main/java/com/github/steveice10/opennbt/tag/builtin/CompoundTag.java
+++ b/src/main/java/com/viaversion/nbt/tag/CompoundTag.java
@@ -1,7 +1,8 @@
-package com.github.steveice10.opennbt.tag.builtin;
+package com.viaversion.nbt.tag;
-import com.github.steveice10.opennbt.tag.TagRegistry;
-import com.github.steveice10.opennbt.tag.limiter.TagLimiter;
+import com.viaversion.nbt.io.TagRegistry;
+import com.viaversion.nbt.stringified.SNBT;
+import com.viaversion.nbt.limiter.TagLimiter;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
@@ -16,7 +17,7 @@ import org.jetbrains.annotations.Nullable;
/**
* A compound tag containing other tags.
*/
-public final class CompoundTag extends Tag implements Iterable> {
+public final class CompoundTag implements Tag, Iterable> {
public static final int ID = 10;
private Map value;
@@ -133,14 +134,13 @@ public final class CompoundTag extends Tag implements Iterable
* This will have its generic removed and instead return a raw tag in the future.
*
- * @param type of the tag
* @param tagName key of the tag
* @return tag if present, else null
* @see #getUnchecked(String)
*/
@Nullable
- public T get(String tagName) {
- return (T) this.value.get(tagName);
+ public Tag get(String tagName) {
+ return this.value.get(tagName);
}
/**
@@ -323,17 +323,16 @@ public final class CompoundTag extends Tag implements Iterable
* This will have its generic removed and instead return a raw tag in the future.
*
- * @param Type of tag to put.
* @param tagName Name of the tag.
* @param tag Tag to put into this compound tag.
* @return The previous tag associated with its name, or null if there wasn't one.
*/
@Nullable
- public T put(String tagName, T tag) {
+ public Tag put(String tagName, Tag tag) {
if (tag == this) {
throw new IllegalArgumentException("Cannot add a tag to itself");
}
- return (T) this.value.put(tagName, tag);
+ return this.value.put(tagName, tag);
}
public void putString(String tagName, String value) {
@@ -377,14 +376,13 @@ public final class CompoundTag extends Tag implements Iterable
* This will have its generic removed and instead return a raw tag in the future.
*
- * @param Type of tag to remove.
* @param tagName Name of the tag to remove.
* @return The removed tag.
* @see #removeUnchecked(String)
*/
@Nullable
- public T remove(String tagName) {
- return (T) this.value.remove(tagName);
+ public Tag remove(String tagName) {
+ return this.value.remove(tagName);
}
/**
@@ -487,4 +485,9 @@ public final class CompoundTag extends Tag implements Iterable extends Tag implements Iterable {
+public final class ListTag implements Tag, Iterable {
public static final int ID = 9;
private Class type;
private List value;
@@ -259,4 +260,9 @@ public final class ListTag extends Tag implements Iterable {
public int getTagId() {
return ID;
}
+
+ @Override
+ public String toString() {
+ return SNBT.serialize(this);
+ }
}
diff --git a/src/main/java/com/github/steveice10/opennbt/tag/builtin/LongArrayTag.java b/src/main/java/com/viaversion/nbt/tag/LongArrayTag.java
similarity index 89%
rename from src/main/java/com/github/steveice10/opennbt/tag/builtin/LongArrayTag.java
rename to src/main/java/com/viaversion/nbt/tag/LongArrayTag.java
index 53dc23a..979a9e9 100644
--- a/src/main/java/com/github/steveice10/opennbt/tag/builtin/LongArrayTag.java
+++ b/src/main/java/com/viaversion/nbt/tag/LongArrayTag.java
@@ -1,6 +1,7 @@
-package com.github.steveice10.opennbt.tag.builtin;
+package com.viaversion.nbt.tag;
-import com.github.steveice10.opennbt.tag.limiter.TagLimiter;
+import com.viaversion.nbt.limiter.TagLimiter;
+import com.viaversion.nbt.stringified.SNBT;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
@@ -9,7 +10,7 @@ import java.util.Arrays;
/**
* A tag containing a long array.
*/
-public final class LongArrayTag extends NumberArrayTag {
+public final class LongArrayTag implements NumberArrayTag {
public static final int ID = 12;
private static final long[] EMPTY_ARRAY = new long[0];
private long[] value;
@@ -71,7 +72,7 @@ public final class LongArrayTag extends NumberArrayTag {
* @param index Index of the value.
* @return The value at the given index.
*/
- public long getValue(int index) {
+ public long get(int index) {
return this.value[index];
}
@@ -81,7 +82,7 @@ public final class LongArrayTag extends NumberArrayTag {
* @param index Index of the value.
* @param value Value to set.
*/
- public void setValue(int index, long value) {
+ public void set(int index, long value) {
this.value[index] = value;
}
@@ -129,4 +130,9 @@ public final class LongArrayTag extends NumberArrayTag {
public int getTagId() {
return ID;
}
+
+ @Override
+ public String toString() {
+ return SNBT.serialize(this);
+ }
}
diff --git a/src/main/java/com/github/steveice10/opennbt/tag/builtin/LongTag.java b/src/main/java/com/viaversion/nbt/tag/LongTag.java
similarity index 74%
rename from src/main/java/com/github/steveice10/opennbt/tag/builtin/LongTag.java
rename to src/main/java/com/viaversion/nbt/tag/LongTag.java
index bc972c3..bcb63d4 100644
--- a/src/main/java/com/github/steveice10/opennbt/tag/builtin/LongTag.java
+++ b/src/main/java/com/viaversion/nbt/tag/LongTag.java
@@ -1,6 +1,7 @@
-package com.github.steveice10.opennbt.tag.builtin;
+package com.viaversion.nbt.tag;
-import com.github.steveice10.opennbt.tag.limiter.TagLimiter;
+import com.viaversion.nbt.stringified.SNBT;
+import com.viaversion.nbt.limiter.TagLimiter;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
@@ -8,16 +9,10 @@ import java.io.IOException;
/**
* A tag containing a long.
*/
-public final class LongTag extends NumberTag {
+public final class LongTag implements NumberTag {
public static final int ID = 4;
- private long value;
-
- /**
- * Creates a tag.
- */
- public LongTag() {
- this(0);
- }
+ public static final LongTag ZERO = new LongTag(0);
+ private final long value;
/**
* Creates a tag.
@@ -47,17 +42,6 @@ public final class LongTag extends NumberTag {
return Long.toString(this.value);
}
- /**
- * Sets the value of this tag.
- *
- * @param value New value of this tag.
- * @deprecated number tags will be immutable in the future
- */
- @Deprecated
- public void setValue(long value) {
- this.value = value;
- }
-
@Override
public void write(DataOutput out) throws IOException {
out.writeLong(this.value);
@@ -76,11 +60,6 @@ public final class LongTag extends NumberTag {
return Long.hashCode(this.value);
}
- @Override
- public LongTag copy() {
- return new LongTag(this.value);
- }
-
@Override
public byte asByte() {
return (byte) this.value;
@@ -115,4 +94,9 @@ public final class LongTag extends NumberTag {
public int getTagId() {
return ID;
}
+
+ @Override
+ public String toString() {
+ return SNBT.serialize(this);
+ }
}
diff --git a/src/main/java/com/github/steveice10/opennbt/tag/builtin/NumberArrayTag.java b/src/main/java/com/viaversion/nbt/tag/NumberArrayTag.java
similarity index 50%
rename from src/main/java/com/github/steveice10/opennbt/tag/builtin/NumberArrayTag.java
rename to src/main/java/com/viaversion/nbt/tag/NumberArrayTag.java
index de837f7..edb7481 100644
--- a/src/main/java/com/github/steveice10/opennbt/tag/builtin/NumberArrayTag.java
+++ b/src/main/java/com/viaversion/nbt/tag/NumberArrayTag.java
@@ -1,18 +1,21 @@
-package com.github.steveice10.opennbt.tag.builtin;
+package com.viaversion.nbt.tag;
-public abstract class NumberArrayTag extends Tag {
+public interface NumberArrayTag extends Tag {
/**
* Gets the length of this tag's array.
*
* @return array length
*/
- public abstract int length();
+ int length();
/**
* Creates a new list tag from this tag.
*
* @return a new list tag
*/
- public abstract ListTag extends NumberTag> toListTag();
+ ListTag extends NumberTag> toListTag();
+
+ @Override
+ NumberArrayTag copy();
}
diff --git a/src/main/java/com/github/steveice10/opennbt/tag/builtin/NumberTag.java b/src/main/java/com/viaversion/nbt/tag/NumberTag.java
similarity index 74%
rename from src/main/java/com/github/steveice10/opennbt/tag/builtin/NumberTag.java
rename to src/main/java/com/viaversion/nbt/tag/NumberTag.java
index 22dbe84..c53dc28 100644
--- a/src/main/java/com/github/steveice10/opennbt/tag/builtin/NumberTag.java
+++ b/src/main/java/com/viaversion/nbt/tag/NumberTag.java
@@ -1,9 +1,9 @@
-package com.github.steveice10.opennbt.tag.builtin;
+package com.viaversion.nbt.tag;
/**
* Abstract class representing a number tag, containing methods to return primitive number types.
*/
-public abstract class NumberTag extends Tag {
+public interface NumberTag extends Tag {
/**
* Gets the number value of this tag.
@@ -11,49 +11,49 @@ public abstract class NumberTag extends Tag {
* @return Number value of this tag.
*/
@Override
- public abstract Number getValue();
+ Number getValue();
/**
* Gets the byte value of this tag.
*
* @return Byte value of this tag.
*/
- public abstract byte asByte();
+ byte asByte();
/**
* Gets the short value of this tag.
*
* @return Short value of this tag.
*/
- public abstract short asShort();
+ short asShort();
/**
* Gets the int value of this tag.
*
* @return Int value of this tag.
*/
- public abstract int asInt();
+ int asInt();
/**
* Gets the long value of this tag.
*
* @return Long value of this tag.
*/
- public abstract long asLong();
+ long asLong();
/**
* Gets the float value of this tag.
*
* @return Float value of this tag.
*/
- public abstract float asFloat();
+ float asFloat();
/**
* Gets the double value of this tag.
*
* @return Double value of this tag.
*/
- public abstract double asDouble();
+ double asDouble();
/**
* Gets the boolean value of this tag.
@@ -63,7 +63,13 @@ public abstract class NumberTag extends Tag {
*
* @return Boolean value of this tag.
*/
- public boolean asBoolean() {
+ default boolean asBoolean() {
return this.asByte() != 0;
}
+
+ @Override
+ default NumberTag copy() {
+ // Immutable, so return this
+ return this;
+ }
}
diff --git a/src/main/java/com/github/steveice10/opennbt/tag/builtin/ShortTag.java b/src/main/java/com/viaversion/nbt/tag/ShortTag.java
similarity index 74%
rename from src/main/java/com/github/steveice10/opennbt/tag/builtin/ShortTag.java
rename to src/main/java/com/viaversion/nbt/tag/ShortTag.java
index b5090f1..1eb7374 100644
--- a/src/main/java/com/github/steveice10/opennbt/tag/builtin/ShortTag.java
+++ b/src/main/java/com/viaversion/nbt/tag/ShortTag.java
@@ -1,6 +1,7 @@
-package com.github.steveice10.opennbt.tag.builtin;
+package com.viaversion.nbt.tag;
-import com.github.steveice10.opennbt.tag.limiter.TagLimiter;
+import com.viaversion.nbt.stringified.SNBT;
+import com.viaversion.nbt.limiter.TagLimiter;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
@@ -8,16 +9,10 @@ import java.io.IOException;
/**
* A tag containing a short.
*/
-public final class ShortTag extends NumberTag {
+public final class ShortTag implements NumberTag {
public static final int ID = 2;
- private short value;
-
- /**
- * Creates a tag.
- */
- public ShortTag() {
- this((short) 0);
- }
+ public static final ShortTag ZERO = new ShortTag((short) 0);
+ private final short value;
/**
* Creates a tag.
@@ -47,17 +42,6 @@ public final class ShortTag extends NumberTag {
return Short.toString(this.value);
}
- /**
- * Sets the value of this tag.
- *
- * @param value New value of this tag.
- * @deprecated number tags will be immutable in the future
- */
- @Deprecated
- public void setValue(short value) {
- this.value = value;
- }
-
@Override
public void write(DataOutput out) throws IOException {
out.writeShort(this.value);
@@ -76,11 +60,6 @@ public final class ShortTag extends NumberTag {
return this.value;
}
- @Override
- public ShortTag copy() {
- return new ShortTag(this.value);
- }
-
@Override
public byte asByte() {
return (byte) this.value;
@@ -115,4 +94,9 @@ public final class ShortTag extends NumberTag {
public int getTagId() {
return ID;
}
+
+ @Override
+ public String toString() {
+ return SNBT.serialize(this);
+ }
}
diff --git a/src/main/java/com/github/steveice10/opennbt/tag/builtin/StringTag.java b/src/main/java/com/viaversion/nbt/tag/StringTag.java
similarity index 87%
rename from src/main/java/com/github/steveice10/opennbt/tag/builtin/StringTag.java
rename to src/main/java/com/viaversion/nbt/tag/StringTag.java
index 99d9932..f54df2e 100644
--- a/src/main/java/com/github/steveice10/opennbt/tag/builtin/StringTag.java
+++ b/src/main/java/com/viaversion/nbt/tag/StringTag.java
@@ -1,6 +1,7 @@
-package com.github.steveice10.opennbt.tag.builtin;
+package com.viaversion.nbt.tag;
-import com.github.steveice10.opennbt.tag.limiter.TagLimiter;
+import com.viaversion.nbt.stringified.SNBT;
+import com.viaversion.nbt.limiter.TagLimiter;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
@@ -8,7 +9,7 @@ import java.io.IOException;
/**
* A tag containing a string.
*/
-public final class StringTag extends Tag {
+public final class StringTag implements Tag {
public static final int ID = 8;
private String value;
@@ -86,4 +87,9 @@ public final class StringTag extends Tag {
public int getTagId() {
return ID;
}
+
+ @Override
+ public String toString() {
+ return SNBT.serialize(this);
+ }
}
diff --git a/src/main/java/com/viaversion/nbt/tag/Tag.java b/src/main/java/com/viaversion/nbt/tag/Tag.java
new file mode 100644
index 0000000..16834dc
--- /dev/null
+++ b/src/main/java/com/viaversion/nbt/tag/Tag.java
@@ -0,0 +1,45 @@
+package com.viaversion.nbt.tag;
+
+import com.viaversion.nbt.stringified.SNBT;
+import java.io.DataOutput;
+import java.io.IOException;
+
+public interface Tag {
+
+ /**
+ * Returns the value of this tag.
+ *
+ * @return value of this tag
+ */
+ Object getValue();
+
+ /**
+ * Returns the raw string representation of the value of this tag.
+ * For SNBT, use {@link SNBT#serialize(Tag)}.
+ *
+ * @return raw string representation of the value of this tag
+ */
+ String asRawString();
+
+ /**
+ * Writes this tag to an output stream.
+ *
+ * @param out data output to write to
+ * @throws IOException if an I/O error occurs
+ */
+ void write(DataOutput out) throws IOException;
+
+ /**
+ * Returns the NBT tag id of this tag type, used in I/O.
+ *
+ * @return ID of the tag this class represents
+ */
+ int getTagId();
+
+ /**
+ * Returns a copy of this tag.
+ *
+ * @return a copy of this tag
+ */
+ Tag copy();
+}