Is NBTBase removed in 1.7.2??? Code:java DataOutputStream out = new DataOutputStream(bos);NBTTagList itemList = new NBTTagList(); I cant't write the List Code:java NBTBase.a(itemList, out); or Load Code:java NBTTagList itemList = (NBTTagList) NBTBase.a(in);
no in NBTBase is the method removed to save a NBTTagList in DataOutputStream Code:java public static InputStream serialize(Collection<ItemStack> items, boolean gzip) throws IOException { ByteArrayInputStream ret = null; if (!items.isEmpty()) { ByteArrayOutputStream bos = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(bos); out.writeBoolean(gzip); if (gzip) { out.flush(); out = new DataOutputStream(new GZIPOutputStream(out, true)); } NBTTagList itemList = new NBTTagList(); // Save every element in the list for (ItemStack item : items) { net.minecraft.server.v1_7_R1.ItemStack nmsis = CraftItemStack.asNMSCopy(item); if (nmsis != null) { NBTTagCompound outputObject = new NBTTagCompound(); nmsis.save(outputObject); itemList.add(outputObject); } } // Now save the list !ERROR HERE! NBTBase.a(itemList, out); out.flush(); ret = new ByteArrayInputStream(bos.toByteArray()); } return ret; }
Code: NBTCompressedStreamTools Appears to be the best bet, however I haven't been able to figure out how to correctly utilize it. Hopefully someone can help more.
Code:java public static InputStream serialize(Collection<ItemStack> items, boolean gzip) throws IOException { ByteArrayInputStream ret = null; if (!items.isEmpty()) { /*ByteArrayOutputStream bos = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(bos); out.writeBoolean(gzip); if (gzip) { out.flush(); out = new DataOutputStream(new GZIPOutputStream(out, true)); } NBTTagList itemList = new NBTTagList(); // Save every element in the list for (ItemStack item : items) { net.minecraft.server.v1_7_R1.ItemStack nmsis = CraftItemStack.asNMSCopy(item); if (nmsis != null) { NBTTagCompound outputObject = new NBTTagCompound(); nmsis.save(outputObject); itemList.add(outputObject); } } // Now save the list NBTBase.a(itemList, out); out.flush(); */ ByteBuf buf = Unpooled.EMPTY_BUFFER; PacketDataSerializer serializer = new PacketDataSerializer(buf); buf.writeInt(items.size()); for(ItemStack item : items) serializer.a(CraftItemStack.asNMSCopy(item)); ret = new ByteArrayInputStream(serializer.array()); } return ret; } public static List<ItemStack> deserialize(InputStream input) throws IOException { List<ItemStack> items = new ArrayList<>(); //new GZIPInputStream(input) DataInputStream in = new DataInputStream(input); if (in.readBoolean()) in = new DataInputStream(new GZIPInputStream(input)); ByteBuf buf = Unpooled.EMPTY_BUFFER; buf.writeBytes(IOUtils.toByteArray(in)); PacketDataSerializer serializer = new PacketDataSerializer(buf); int count = serializer.readInt(); for(int i = 0; i < count; i++) { net.minecraft.server.v1_7_R1.ItemStack item = serializer.c(); if(item != null) items.add(CraftItemStack.asCraftMirror(item)); } /*NBTTagList itemList = (NBTTagList) NBTBase.a(in); for (int i = 0; i < itemList.size(); i++) { NBTTagCompound inputObject = (NBTTagCompound) itemList.get(i); if (!inputObject.isEmpty()) { items.add(CraftItemStack.asCraftMirror(net.minecraft.server.v1_7_R1.ItemStack.createStack(inputObject))); } }*/ return items; }
Code:java public static InputStream serialize(Collection<ItemStack> items, boolean gzip) throws IOException { ByteArrayInputStream ret = null; if (!items.isEmpty()) { /*ByteArrayOutputStream bos = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(bos); out.writeBoolean(gzip); if (gzip) { out.flush(); out = new DataOutputStream(new GZIPOutputStream(out, true)); } NBTTagList itemList = new NBTTagList(); // Save every element in the list for (ItemStack item : items) { net.minecraft.server.v1_5_R3.ItemStack nmsis = CraftItemStack.asNMSCopy(item); if (nmsis != null) { NBTTagCompound outputObject = new NBTTagCompound(); nmsis.save(outputObject); itemList.add(outputObject); } } // Now save the list NBTBase.a(itemList, out); out.flush(); */ ByteBuf buf = Unpooled.buffer(); PacketDataSerializer serializer = new PacketDataSerializer(buf); buf.writeInt(items.size()); for (ItemStack item : items) serializer.a(CraftItemStack.asNMSCopy(item)); ret = new ByteArrayInputStream(serializer.array()); } return ret; } public static List<ItemStack> deserialize(InputStream input) throws IOException { List<ItemStack> items = new ArrayList<>(); //new GZIPInputStream(input) DataInputStream in = new DataInputStream(input); ByteBuf buf = Unpooled.buffer(); buf.writeBytes(IOUtils.toByteArray(in)); PacketDataSerializer serializer = new PacketDataSerializer(buf); try { int count = buf.readInt(); for (int i = 0; i <= count; i++) { net.minecraft.server.v1_5_R3.ItemStack item = serializer.c(); if (item != null) { items.add(CraftItemStack.asCraftMirror(item)); } } } catch (Exception e) { } if (items.size() == 0) items.add(new ItemStack(Material.AIR)); /*NBTTagList itemList = (NBTTagList) NBTBase.a(in); for (int i = 0; i < itemList.size(); i++) { NBTTagCompound inputObject = (NBTTagCompound) itemList.get(i); if (!inputObject.isEmpty()) { items.add(CraftItemStack.asCraftMirror(net.minecraft.server.v1_5_R3.ItemStack.createStack(inputObject))); } }*/ return items; }