mirror of
https://github.com/ViaVersion/ViaNBT.git
synced 2025-02-20 01:51:20 +01:00
3.3.0: Add Tag#asRawString
Also fix convertToTag
This commit is contained in:
parent
f04adbae9a
commit
ad8ac024c4
2
pom.xml
2
pom.xml
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
<groupId>com.viaversion</groupId>
|
<groupId>com.viaversion</groupId>
|
||||||
<artifactId>nbt</artifactId>
|
<artifactId>nbt</artifactId>
|
||||||
<version>3.2.1</version>
|
<version>3.3.0</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>ViaNBT</name>
|
<name>ViaNBT</name>
|
||||||
|
@ -108,6 +108,7 @@ public class ConverterRegistry {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//noinspection unchecked
|
||||||
TagConverter<T, ? extends V> converter = (TagConverter<T, ? extends V>) TAG_TO_CONVERTER.get(tag.getTagId());
|
TagConverter<T, ? extends V> converter = (TagConverter<T, ? extends V>) TAG_TO_CONVERTER.get(tag.getTagId());
|
||||||
if (converter == null) {
|
if (converter == null) {
|
||||||
throw new ConversionException("Tag type " + tag.getClass().getName() + " has no converter.");
|
throw new ConversionException("Tag type " + tag.getClass().getName() + " has no converter.");
|
||||||
@ -125,17 +126,26 @@ public class ConverterRegistry {
|
|||||||
* @return The converted tag.
|
* @return The converted tag.
|
||||||
* @throws ConversionException If a suitable converter could not be found.
|
* @throws ConversionException If a suitable converter could not be found.
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
public static <V, T extends Tag> @Nullable T convertToTag(@Nullable V value) throws ConversionException {
|
public static <V, T extends Tag> @Nullable T convertToTag(@Nullable V value) throws ConversionException {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// No need to check super classes since registering custom tags is not allowed
|
|
||||||
// and all the given ones cannot be extended, super class can't be instantiated
|
|
||||||
Class<?> valueClass = value.getClass();
|
Class<?> valueClass = value.getClass();
|
||||||
TagConverter<T, ? super V> converter = (TagConverter<T, ? super V>) TYPE_TO_CONVERTER.get(valueClass);
|
TagConverter<T, ? super V> converter = (TagConverter<T, ? super V>) TYPE_TO_CONVERTER.get(valueClass);
|
||||||
if (converter == null) {
|
if (converter == null) {
|
||||||
throw new ConversionException("Value type " + valueClass.getName() + " has no converter.");
|
// Only check interfaces since you cannot register custom tags
|
||||||
|
for (Class<?> interfaceClass : valueClass.getInterfaces()) {
|
||||||
|
converter = (TagConverter<T, ? super V>) TYPE_TO_CONVERTER.get(interfaceClass);
|
||||||
|
if (converter != null) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (converter == null) {
|
||||||
|
throw new ConversionException("Value type " + valueClass.getName() + " has no converter.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return converter.convert(value);
|
return converter.convert(value);
|
||||||
|
@ -35,6 +35,11 @@ public class ByteArrayTag extends Tag {
|
|||||||
return this.value;
|
return this.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String asRawString() {
|
||||||
|
return Arrays.toString(this.value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the value of this tag.
|
* Sets the value of this tag.
|
||||||
*
|
*
|
||||||
|
@ -37,6 +37,11 @@ public class ByteTag extends NumberTag {
|
|||||||
return this.value;
|
return this.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String asRawString() {
|
||||||
|
return Byte.toString(this.value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the value of this tag.
|
* Sets the value of this tag.
|
||||||
*
|
*
|
||||||
|
@ -37,6 +37,11 @@ public class DoubleTag extends NumberTag {
|
|||||||
return this.value;
|
return this.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String asRawString() {
|
||||||
|
return Double.toString(this.value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the value of this tag.
|
* Sets the value of this tag.
|
||||||
*
|
*
|
||||||
|
@ -37,6 +37,11 @@ public class FloatTag extends NumberTag {
|
|||||||
return this.value;
|
return this.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String asRawString() {
|
||||||
|
return Float.toString(this.value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the value of this tag.
|
* Sets the value of this tag.
|
||||||
*
|
*
|
||||||
|
@ -38,6 +38,11 @@ public class IntArrayTag extends Tag {
|
|||||||
return this.value;
|
return this.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String asRawString() {
|
||||||
|
return Arrays.toString(this.value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the value of this tag.
|
* Sets the value of this tag.
|
||||||
*
|
*
|
||||||
|
@ -37,6 +37,11 @@ public class IntTag extends NumberTag {
|
|||||||
return this.value;
|
return this.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String asRawString() {
|
||||||
|
return Integer.toString(this.value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the value of this tag.
|
* Sets the value of this tag.
|
||||||
*
|
*
|
||||||
|
@ -38,6 +38,11 @@ public class LongArrayTag extends Tag {
|
|||||||
return this.value;
|
return this.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String asRawString() {
|
||||||
|
return Arrays.toString(this.value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the value of this tag.
|
* Sets the value of this tag.
|
||||||
*
|
*
|
||||||
|
@ -37,6 +37,11 @@ public class LongTag extends NumberTag {
|
|||||||
return this.value;
|
return this.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String asRawString() {
|
||||||
|
return Long.toString(this.value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the value of this tag.
|
* Sets the value of this tag.
|
||||||
*
|
*
|
||||||
|
@ -37,6 +37,11 @@ public class ShortTag extends NumberTag {
|
|||||||
return this.value;
|
return this.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String asRawString() {
|
||||||
|
return Short.toString(this.value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the value of this tag.
|
* Sets the value of this tag.
|
||||||
*
|
*
|
||||||
|
@ -36,6 +36,11 @@ public class StringTag extends Tag {
|
|||||||
return this.value;
|
return this.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String asRawString() {
|
||||||
|
return this.value;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the value of this tag.
|
* Sets the value of this tag.
|
||||||
*
|
*
|
||||||
|
@ -20,11 +20,21 @@ public abstract class Tag implements Cloneable {
|
|||||||
*/
|
*/
|
||||||
public abstract Object getValue();
|
public abstract Object getValue();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the raw string representation of the value of this tag.
|
||||||
|
* For SNBT, use {@link SNBT#serialize(Tag)} or {@link #toString()}.
|
||||||
|
*
|
||||||
|
* @return raw string representation of the value of this tag
|
||||||
|
*/
|
||||||
|
public String asRawString() {
|
||||||
|
return this.getValue().toString();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the unchecked value of this tag.
|
* Returns the unchecked value of this tag.
|
||||||
*
|
*
|
||||||
* @return unchecked value of this tag
|
|
||||||
* @param <T> expected type
|
* @param <T> expected type
|
||||||
|
* @return unchecked value of this tag
|
||||||
*/
|
*/
|
||||||
public <T> T value() {
|
public <T> T value() {
|
||||||
return (T) getValue();
|
return (T) getValue();
|
||||||
@ -43,7 +53,7 @@ public abstract class Tag implements Cloneable {
|
|||||||
/**
|
/**
|
||||||
* Reads this tag from an input stream.
|
* Reads this tag from an input stream.
|
||||||
*
|
*
|
||||||
* @param in Stream to write to.
|
* @param in Stream to write to.
|
||||||
* @param tagLimiter taglimiter
|
* @param tagLimiter taglimiter
|
||||||
* @throws java.io.IOException If an I/O error occurs.
|
* @throws java.io.IOException If an I/O error occurs.
|
||||||
*/
|
*/
|
||||||
@ -54,8 +64,8 @@ public abstract class Tag implements Cloneable {
|
|||||||
/**
|
/**
|
||||||
* Reads this tag from an input stream.
|
* Reads this tag from an input stream.
|
||||||
*
|
*
|
||||||
* @param in Stream to write to.
|
* @param in Stream to write to.
|
||||||
* @param tagLimiter taglimiter
|
* @param tagLimiter taglimiter
|
||||||
* @param nestingLevel current level of nesting
|
* @param nestingLevel current level of nesting
|
||||||
* @throws java.io.IOException If an I/O error occurs.
|
* @throws java.io.IOException If an I/O error occurs.
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user