mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2025-07-02 11:26:42 +00:00
Lazy tags + get / set tiles
Lazy tags means tiles/ents are not translated into the nms NBTBase until it is needed. Should be faster in cases where getFullBlock is called, but nbt is not always needed. Commands like Copy and Paste, where the input/output are both nms worlds, can entirely bypass WorldEdit translating to and from the WorldEdit JNBT classes.
This commit is contained in:
@ -25,6 +25,15 @@ import java.util.Locale;
|
||||
* The {@code TAG_Byte_Array} tag.
|
||||
*/
|
||||
public final class ByteArrayTag extends Tag {
|
||||
@Override
|
||||
public String getTypeName() {
|
||||
return "TAG_Byte_Array";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTypeCode() {
|
||||
return NBTConstants.TYPE_BYTE_ARRAY;
|
||||
}
|
||||
|
||||
private final byte[] value;
|
||||
|
||||
|
@ -23,6 +23,14 @@ package com.sk89q.jnbt;
|
||||
* The {@code TAG_Byte} tag.
|
||||
*/
|
||||
public final class ByteTag extends NumberTag {
|
||||
@Override
|
||||
public int getTypeCode() {
|
||||
return NBTConstants.TYPE_BYTE;
|
||||
}
|
||||
@Override
|
||||
public String getTypeName() {
|
||||
return "TAG_Byte";
|
||||
}
|
||||
|
||||
private final byte value;
|
||||
|
||||
|
@ -32,6 +32,15 @@ import java.util.UUID;
|
||||
* The {@code TAG_Compound} tag.
|
||||
*/
|
||||
public class CompoundTag extends Tag {
|
||||
@Override
|
||||
public String getTypeName() {
|
||||
return "TAG_Compound";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTypeCode() {
|
||||
return NBTConstants.TYPE_COMPOUND;
|
||||
}
|
||||
|
||||
private Map<String, Tag> value;
|
||||
|
||||
|
@ -24,6 +24,14 @@ package com.sk89q.jnbt;
|
||||
*
|
||||
*/
|
||||
public final class DoubleTag extends NumberTag {
|
||||
@Override
|
||||
public int getTypeCode() {
|
||||
return NBTConstants.TYPE_DOUBLE;
|
||||
}
|
||||
@Override
|
||||
public String getTypeName() {
|
||||
return "TAG_Double";
|
||||
}
|
||||
|
||||
private final double value;
|
||||
|
||||
|
@ -23,6 +23,15 @@ package com.sk89q.jnbt;
|
||||
* The {@code TAG_End} tag.
|
||||
*/
|
||||
public final class EndTag extends Tag {
|
||||
@Override
|
||||
public String getTypeName() {
|
||||
return "TAG_End";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTypeCode() {
|
||||
return NBTConstants.TYPE_END;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getValue() {
|
||||
|
@ -23,6 +23,14 @@ package com.sk89q.jnbt;
|
||||
* The {@code TAG_Float} tag.
|
||||
*/
|
||||
public final class FloatTag extends NumberTag {
|
||||
@Override
|
||||
public int getTypeCode() {
|
||||
return NBTConstants.TYPE_FLOAT;
|
||||
}
|
||||
@Override
|
||||
public String getTypeName() {
|
||||
return "TAG_Float";
|
||||
}
|
||||
|
||||
private final float value;
|
||||
|
||||
|
@ -29,6 +29,15 @@ import java.util.Locale;
|
||||
* The {@code TAG_Int_Array} tag.
|
||||
*/
|
||||
public final class IntArrayTag extends Tag {
|
||||
@Override
|
||||
public String getTypeName() {
|
||||
return "TAG_Int_Array";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTypeCode() {
|
||||
return NBTConstants.TYPE_INT_ARRAY;
|
||||
}
|
||||
|
||||
private final int[] value;
|
||||
|
||||
|
@ -23,6 +23,14 @@ package com.sk89q.jnbt;
|
||||
* The {@code TAG_Int} tag.
|
||||
*/
|
||||
public final class IntTag extends NumberTag {
|
||||
@Override
|
||||
public int getTypeCode() {
|
||||
return NBTConstants.TYPE_INT;
|
||||
}
|
||||
@Override
|
||||
public String getTypeName() {
|
||||
return "TAG_Int";
|
||||
}
|
||||
|
||||
private final int value;
|
||||
|
||||
|
@ -31,6 +31,15 @@ import javax.annotation.Nullable;
|
||||
* The {@code TAG_List} tag.
|
||||
*/
|
||||
public class ListTag extends Tag {
|
||||
@Override
|
||||
public String getTypeName() {
|
||||
return "TAG_List";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTypeCode() {
|
||||
return NBTConstants.TYPE_LIST;
|
||||
}
|
||||
|
||||
private final Class<? extends Tag> type;
|
||||
private final List<Tag> value;
|
||||
@ -432,7 +441,7 @@ public class ListTag extends Tag {
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder bldr = new StringBuilder();
|
||||
bldr.append("TAG_List").append(": ").append(value.size()).append(" entries of type ").append(NBTUtils.getTypeName(type)).append("\r\n{\r\n");
|
||||
bldr.append("TAG_List").append(": ").append(value.size()).append(" entries of type ").append(type.getTypeName()).append("\r\n{\r\n");
|
||||
for (Tag t : value) {
|
||||
bldr.append(" ").append(t.toString().replaceAll("\r\n", "\r\n ")).append("\r\n");
|
||||
}
|
||||
|
@ -29,6 +29,15 @@ import java.util.Locale;
|
||||
* The {@code TAG_Long_Array} tag.
|
||||
*/
|
||||
public class LongArrayTag extends Tag {
|
||||
@Override
|
||||
public String getTypeName() {
|
||||
return "TAG_Long_Array";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTypeCode() {
|
||||
return NBTConstants.TYPE_LONG_ARRAY;
|
||||
}
|
||||
|
||||
private final long[] value;
|
||||
|
||||
|
@ -24,6 +24,14 @@ package com.sk89q.jnbt;
|
||||
*
|
||||
*/
|
||||
public final class LongTag extends NumberTag {
|
||||
@Override
|
||||
public int getTypeCode() {
|
||||
return NBTConstants.TYPE_LONG;
|
||||
}
|
||||
@Override
|
||||
public String getTypeName() {
|
||||
return "TAG_Long";
|
||||
}
|
||||
|
||||
private final long value;
|
||||
|
||||
|
@ -90,7 +90,7 @@ public final class NBTOutputStream extends OutputStream implements Closeable, Da
|
||||
checkNotNull(name);
|
||||
checkNotNull(tag);
|
||||
|
||||
int type = NBTUtils.getTypeCode(tag.getClass());
|
||||
int type = tag.getTypeCode();
|
||||
writeNamedTagName(name, type);
|
||||
|
||||
if (type == NBTConstants.TYPE_END) {
|
||||
@ -189,7 +189,7 @@ public final class NBTOutputStream extends OutputStream implements Closeable, Da
|
||||
}
|
||||
|
||||
public void writeTag(Tag tag) throws IOException {
|
||||
int type = NBTUtils.getTypeCode(tag.getClass());
|
||||
int type = tag.getTypeCode();
|
||||
os.writeByte(type);
|
||||
writeTagPayload(tag);
|
||||
}
|
||||
@ -207,7 +207,7 @@ public final class NBTOutputStream extends OutputStream implements Closeable, Da
|
||||
* if an I/O error occurs.
|
||||
*/
|
||||
public void writeTagPayload(Tag tag) throws IOException {
|
||||
int type = NBTUtils.getTypeCode(tag.getClass());
|
||||
int type = tag.getTypeCode();
|
||||
switch (type) {
|
||||
case NBTConstants.TYPE_END:
|
||||
writeEndTagPayload((EndTag) tag);
|
||||
@ -311,7 +311,7 @@ public final class NBTOutputStream extends OutputStream implements Closeable, Da
|
||||
int size = tags.size();
|
||||
if (!tags.isEmpty()) {
|
||||
Tag tag0 = tags.get(0);
|
||||
os.writeByte(NBTUtils.getTypeCode(tag0.getClass()));
|
||||
os.writeByte(tag0.getTypeCode());
|
||||
} else {
|
||||
os.writeByte(NBTUtils.getTypeCode(clazz));
|
||||
}
|
||||
|
@ -49,7 +49,7 @@ public final class NBTUtils {
|
||||
return "TAG_Byte_Array";
|
||||
} else if (clazz.equals(ByteTag.class)) {
|
||||
return "TAG_Byte";
|
||||
} else if (clazz.equals(CompoundTag.class)) {
|
||||
} else if (CompoundTag.class.isAssignableFrom(clazz)) {
|
||||
return "TAG_Compound";
|
||||
} else if (clazz.equals(DoubleTag.class)) {
|
||||
return "TAG_Double";
|
||||
@ -89,7 +89,7 @@ public final class NBTUtils {
|
||||
return NBTConstants.TYPE_BYTE_ARRAY;
|
||||
} else if (clazz.equals(ByteTag.class)) {
|
||||
return NBTConstants.TYPE_BYTE;
|
||||
} else if (clazz.equals(CompoundTag.class)) {
|
||||
} else if (CompoundTag.class.isAssignableFrom(clazz)) {
|
||||
return NBTConstants.TYPE_COMPOUND;
|
||||
} else if (clazz.equals(DoubleTag.class)) {
|
||||
return NBTConstants.TYPE_DOUBLE;
|
||||
|
@ -23,6 +23,14 @@ package com.sk89q.jnbt;
|
||||
* The {@code TAG_Short} tag.
|
||||
*/
|
||||
public final class ShortTag extends NumberTag {
|
||||
@Override
|
||||
public int getTypeCode() {
|
||||
return NBTConstants.TYPE_SHORT;
|
||||
}
|
||||
@Override
|
||||
public String getTypeName() {
|
||||
return "TAG_Short";
|
||||
}
|
||||
|
||||
private final short value;
|
||||
|
||||
|
@ -25,6 +25,15 @@ import static com.google.common.base.Preconditions.checkNotNull;
|
||||
* The {@code TAG_String} tag.
|
||||
*/
|
||||
public final class StringTag extends Tag {
|
||||
@Override
|
||||
public String getTypeName() {
|
||||
return "TAG_String";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTypeCode() {
|
||||
return NBTConstants.TYPE_STRING;
|
||||
}
|
||||
|
||||
private final String value;
|
||||
|
||||
|
@ -35,4 +35,8 @@ public abstract class Tag {
|
||||
return getValue();
|
||||
}
|
||||
|
||||
public abstract int getTypeCode();
|
||||
|
||||
public abstract String getTypeName();
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user