mirror of
https://github.com/dmulloy2/ProtocolLib.git
synced 2024-11-24 11:36:51 +01:00
Ensure that we can create compounds and lists.
This commit is contained in:
parent
671654aaaf
commit
8abb93114f
@ -36,10 +36,10 @@ public class NbtCompound implements NbtWrapper<Map<String, NbtBase<?>>>, Iterabl
|
||||
* @param list - the list of elements to add.
|
||||
* @return The new wrapped NBT compound.
|
||||
*/
|
||||
public static <T> NbtCompound fromList(String name, Collection<? extends NbtBase<T>> list) {
|
||||
NbtCompound copy = new NbtCompound(name);
|
||||
public static NbtCompound fromList(String name, Collection<? extends NbtBase<?>> list) {
|
||||
NbtCompound copy = fromName(name);
|
||||
|
||||
for (NbtBase<T> base : list)
|
||||
for (NbtBase<?> base : list)
|
||||
copy.getValue().put(base.getName(), base);
|
||||
return copy;
|
||||
}
|
||||
@ -80,14 +80,6 @@ public class NbtCompound implements NbtWrapper<Map<String, NbtBase<?>>>, Iterabl
|
||||
return getValue().keySet();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve a Collection view of the entries in this compound.
|
||||
* @return A view of each NBT tag in this compound.
|
||||
*/
|
||||
public Collection<NbtBase<?>> asCollection(){
|
||||
return getValue().values();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, NbtBase<?>> getValue() {
|
||||
// Return a wrapper map
|
||||
|
@ -165,10 +165,19 @@ public class NbtFactory {
|
||||
* @param list - the list of elements to add.
|
||||
* @return The new wrapped NBT compound.
|
||||
*/
|
||||
public static <T> NbtCompound ofCompound(String name, Collection<? extends NbtBase<T>> list) {
|
||||
public static NbtCompound ofCompound(String name, Collection<? extends NbtBase<?>> list) {
|
||||
return NbtCompound.fromList(name, list);
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a new NBT compound wrapper.
|
||||
* @param name - the name of the compound wrapper.
|
||||
* @return The new wrapped NBT compound.
|
||||
*/
|
||||
public static NbtCompound ofCompound(String name) {
|
||||
return NbtCompound.fromName(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a NBT list of out an array of values.
|
||||
* @param name - name of this list.
|
||||
|
@ -4,6 +4,8 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.primitives.Primitives;
|
||||
|
||||
/**
|
||||
* Represents all the element types
|
||||
*
|
||||
@ -88,6 +90,11 @@ public enum NbtType {
|
||||
for (NbtType type : values) {
|
||||
lookup[type.getRawID()] = type;
|
||||
classLookup.put(type.getValueType(), type);
|
||||
|
||||
// Add a wrapper type
|
||||
if (type.getValueType().isPrimitive()) {
|
||||
classLookup.put(Primitives.wrap(type.getValueType()), type);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -32,6 +32,8 @@ import com.comphenix.protocol.wrappers.BukkitConverters;
|
||||
import com.comphenix.protocol.wrappers.ChunkPosition;
|
||||
import com.comphenix.protocol.wrappers.WrappedDataWatcher;
|
||||
import com.comphenix.protocol.wrappers.WrappedWatchableObject;
|
||||
import com.comphenix.protocol.wrappers.nbt.NbtCompound;
|
||||
import com.comphenix.protocol.wrappers.nbt.NbtFactory;
|
||||
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Lists;
|
||||
@ -233,6 +235,22 @@ public class PacketContainerTest {
|
||||
assertEquals(testValue, worldAccess.read(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetNbtModifier() {
|
||||
PacketContainer updateTileEntity = new PacketContainer(132);
|
||||
|
||||
NbtCompound compound = NbtFactory.ofCompound("test");
|
||||
compound.put("test", "name");
|
||||
compound.put(NbtFactory.ofList("ages", 1, 2, 3));
|
||||
|
||||
updateTileEntity.getNbtModifier().write(0, compound);
|
||||
|
||||
NbtCompound result = (NbtCompound) updateTileEntity.getNbtModifier().read(0);
|
||||
|
||||
assertEquals(compound.getString("test"), result.getString("test"));
|
||||
assertEquals(compound.getList("ages"), result.getList("ages"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetDataWatcherModifier() {
|
||||
PacketContainer mobSpawnPacket = new PacketContainer(Packets.Server.MOB_SPAWN);
|
||||
|
Loading…
Reference in New Issue
Block a user