use of com.sk89q.worldedit.util.nbt.BinaryTag in project FastAsyncWorldEdit by IntellectualSites.
the class NbtUtils method getInt.
/**
* Get an integer from a tag.
*
* @param tag the tag to read from
* @param key the key to look for
* @return child tag
* @throws InvalidFormatException if the format of the items is invalid
* @since TODO
*/
public static int getInt(CompoundBinaryTag tag, String key) throws InvalidFormatException {
BinaryTag childTag = tag.get(key);
if (childTag == null) {
throw new InvalidFormatException("Missing a \"" + key + "\" tag");
}
BinaryTagType<?> type = childTag.type();
if (type == BinaryTagTypes.INT) {
return ((IntBinaryTag) childTag).intValue();
}
if (type == BinaryTagTypes.BYTE) {
return ((ByteBinaryTag) childTag).intValue();
}
if (type == BinaryTagTypes.SHORT) {
return ((ShortBinaryTag) childTag).intValue();
}
throw new InvalidFormatException(key + " tag is not of int, short or byte tag type.");
}
use of com.sk89q.worldedit.util.nbt.BinaryTag in project FastAsyncWorldEdit by IntellectualSites.
the class AnvilChunk13 method populateEntities.
/**
* Used to load the biomes.
*/
private void populateEntities() throws DataException {
entities = new ArrayList<>();
if (rootTag.get("Entities") == null) {
return;
}
ListBinaryTag tags = NbtUtils.getChildTag(rootTag, "Entities", BinaryTagTypes.LIST);
for (BinaryTag tag : tags) {
if (!(tag instanceof CompoundBinaryTag)) {
throw new InvalidFormatException("CompoundTag expected in Entities");
}
CompoundBinaryTag t = (CompoundBinaryTag) tag;
entities.add(new BaseEntity(EntityTypes.get(t.getString("id")), LazyReference.computed(t)));
}
}
use of com.sk89q.worldedit.util.nbt.BinaryTag in project FastAsyncWorldEdit by IntellectualSites.
the class OldChunk method populateTileEntities.
/**
* Used to load the tile entities.
*
* @throws DataException if there is an error getting the chunk data
*/
private void populateTileEntities() throws DataException {
ListBinaryTag tags = NbtUtils.getChildTag(rootTag, "TileEntities", BinaryTagTypes.LIST);
tileEntities = new HashMap<>();
for (BinaryTag tag : tags) {
if (!(tag instanceof CompoundBinaryTag)) {
throw new InvalidFormatException("CompoundTag expected in TileEntities");
}
CompoundBinaryTag t = (CompoundBinaryTag) tag;
int x = 0;
int y = 0;
int z = 0;
CompoundBinaryTag.Builder values = CompoundBinaryTag.builder();
for (String key : t.keySet()) {
BinaryTag value = t.get(key);
switch(key) {
case "x":
if (value instanceof IntBinaryTag) {
x = ((IntBinaryTag) value).value();
}
break;
case "y":
if (value instanceof IntBinaryTag) {
y = ((IntBinaryTag) value).value();
}
break;
case "z":
if (value instanceof IntBinaryTag) {
z = ((IntBinaryTag) value).value();
}
break;
default:
break;
}
values.put(key, value);
}
BlockVector3 vec = BlockVector3.at(x, y, z);
tileEntities.put(vec, values.build());
}
}
use of com.sk89q.worldedit.util.nbt.BinaryTag in project FastAsyncWorldEdit by IntellectualSites.
the class PaperweightAdapter method fromNativeBinary.
/**
* Converts a WorldEdit-native NBT structure to a NMS structure.
*
* @param foreign structure to convert
* @return non-native structure
*/
@Override
public net.minecraft.nbt.Tag fromNativeBinary(BinaryTag foreign) {
if (foreign == null) {
return null;
}
if (foreign instanceof CompoundBinaryTag) {
net.minecraft.nbt.CompoundTag tag = new net.minecraft.nbt.CompoundTag();
for (String key : ((CompoundBinaryTag) foreign).keySet()) {
tag.put(key, fromNativeBinary(((CompoundBinaryTag) foreign).get(key)));
}
return tag;
} else if (foreign instanceof ByteBinaryTag) {
return net.minecraft.nbt.ByteTag.valueOf(((ByteBinaryTag) foreign).value());
} else if (foreign instanceof ByteArrayBinaryTag) {
return new net.minecraft.nbt.ByteArrayTag(((ByteArrayBinaryTag) foreign).value());
} else if (foreign instanceof DoubleBinaryTag) {
return net.minecraft.nbt.DoubleTag.valueOf(((DoubleBinaryTag) foreign).value());
} else if (foreign instanceof FloatBinaryTag) {
return net.minecraft.nbt.FloatTag.valueOf(((FloatBinaryTag) foreign).value());
} else if (foreign instanceof IntBinaryTag) {
return net.minecraft.nbt.IntTag.valueOf(((IntBinaryTag) foreign).value());
} else if (foreign instanceof IntArrayBinaryTag) {
return new net.minecraft.nbt.IntArrayTag(((IntArrayBinaryTag) foreign).value());
} else if (foreign instanceof LongArrayBinaryTag) {
return new net.minecraft.nbt.LongArrayTag(((LongArrayBinaryTag) foreign).value());
} else if (foreign instanceof ListBinaryTag) {
net.minecraft.nbt.ListTag tag = new net.minecraft.nbt.ListTag();
ListBinaryTag foreignList = (ListBinaryTag) foreign;
for (BinaryTag t : foreignList) {
tag.add(fromNativeBinary(t));
}
return tag;
} else if (foreign instanceof LongBinaryTag) {
return net.minecraft.nbt.LongTag.valueOf(((LongBinaryTag) foreign).value());
} else if (foreign instanceof ShortBinaryTag) {
return net.minecraft.nbt.ShortTag.valueOf(((ShortBinaryTag) foreign).value());
} else if (foreign instanceof StringBinaryTag) {
return net.minecraft.nbt.StringTag.valueOf(((StringBinaryTag) foreign).value());
} else if (foreign instanceof EndBinaryTag) {
return net.minecraft.nbt.EndTag.INSTANCE;
} else {
throw new IllegalArgumentException("Don't know how to make NMS " + foreign.getClass().getCanonicalName());
}
}
use of com.sk89q.worldedit.util.nbt.BinaryTag in project FastAsyncWorldEdit by IntellectualSites.
the class AnvilChunk method populateTileEntities.
/**
* Used to load the tile entities.
*/
private void populateTileEntities() throws DataException {
ListBinaryTag tags = NbtUtils.getChildTag(rootTag, "TileEntities", BinaryTagTypes.LIST);
tileEntities = new HashMap<>();
for (BinaryTag tag : tags) {
if (!(tag instanceof CompoundBinaryTag)) {
throw new InvalidFormatException("CompoundTag expected in TileEntities");
}
CompoundBinaryTag t = (CompoundBinaryTag) tag;
int x = 0;
int y = 0;
int z = 0;
CompoundBinaryTag.Builder values = CompoundBinaryTag.builder();
for (String key : t.keySet()) {
BinaryTag value = t.get(key);
switch(key) {
case "x":
if (value instanceof IntBinaryTag) {
x = ((IntBinaryTag) value).value();
}
break;
case "y":
if (value instanceof IntBinaryTag) {
y = ((IntBinaryTag) value).value();
}
break;
case "z":
if (value instanceof IntBinaryTag) {
z = ((IntBinaryTag) value).value();
}
break;
default:
break;
}
values.put(key, value);
}
BlockVector3 vec = BlockVector3.at(x, y, z);
tileEntities.put(vec, values.build());
}
}
Aggregations