Search in sources :

Example 1 with NbtType

use of com.nukkitx.nbt.NbtType in project BlockStateUpdater by CloudburstMC.

the class TagUtils method toImmutable.

public static Object toImmutable(Object mutable) {
    if (mutable instanceof Map) {
        Map<String, Object> map = (Map<String, Object>) mutable;
        NbtMapBuilder immutable = NbtMap.builder();
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            immutable.put(entry.getKey(), toImmutable(entry.getValue()));
        }
        return immutable.build();
    } else if (mutable instanceof List) {
        List<Object> list = new ArrayList<>();
        NbtType<?> type = NbtType.END;
        for (Object value : (List<?>) mutable) {
            if (type == NbtType.END) {
                type = NbtType.byClass(value.getClass());
            }
            list.add(toImmutable(value));
        }
        return new NbtList(type, list);
    }
    return mutable;
}
Also used : NbtType(com.nukkitx.nbt.NbtType) NbtList(com.nukkitx.nbt.NbtList) List(java.util.List) NbtList(com.nukkitx.nbt.NbtList) ArrayList(java.util.ArrayList) NbtMapBuilder(com.nukkitx.nbt.NbtMapBuilder) NbtMap(com.nukkitx.nbt.NbtMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map)

Aggregations

NbtList (com.nukkitx.nbt.NbtList)1 NbtMap (com.nukkitx.nbt.NbtMap)1 NbtMapBuilder (com.nukkitx.nbt.NbtMapBuilder)1 NbtType (com.nukkitx.nbt.NbtType)1 ArrayList (java.util.ArrayList)1 LinkedHashMap (java.util.LinkedHashMap)1 List (java.util.List)1 Map (java.util.Map)1