Skip to content

Commit e78a70b

Browse files
Fix VirtualInventory serialization
1 parent 793d283 commit e78a70b

1 file changed

Lines changed: 6 additions & 3 deletions

File tree

invui/src/main/java/xyz/xenondevs/invui/inventory/VirtualInventory.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import java.util.*;
1414
import java.util.function.BiConsumer;
1515
import java.util.logging.Level;
16+
import java.util.zip.GZIPInputStream;
1617
import java.util.zip.GZIPOutputStream;
1718

1819
/**
@@ -206,13 +207,14 @@ public static VirtualInventory deserialize(InputStream in) {
206207
int dataVersion = din.readInt();
207208
int size = din.readInt();
208209
var itemsMask = BitSet.valueOf(din.readNBytes((size + 7) / 8)); // ceil(size / 8)
210+
var itemsIn = new BufferedInputStream(new GZIPInputStream(din));
209211

210212
items = new ItemStack[size];
211213
for (int i = 0; i < size; i++) {
212214
if (!itemsMask.get(i))
213215
continue;
214216

215-
items[i] = DataUtils.deserializeItemStack(dataVersion, din);
217+
items[i] = DataUtils.deserializeItemStack(dataVersion, itemsIn);
216218
}
217219
}
218220

@@ -257,7 +259,7 @@ public void serialize(OutputStream out) {
257259

258260
var itemMask = new BitSet(items.length);
259261
var itemsBin = new ByteArrayOutputStream();
260-
var itemsOut = new GZIPOutputStream(itemsBin);
262+
var itemsOut = new BufferedOutputStream(new GZIPOutputStream(itemsBin));
261263

262264
for (int i = 0; i < items.length; i++) {
263265
var itemStack = items[i];
@@ -268,7 +270,8 @@ public void serialize(OutputStream out) {
268270
DataUtils.serializeItemStack(itemStack, itemsOut);
269271
}
270272

271-
dos.write(itemMask.toByteArray());
273+
itemsOut.close();
274+
dos.write(Arrays.copyOf(itemMask.toByteArray(), (items.length + 7) / 8)); // ceil(size / 8)
272275
dos.write(itemsBin.toByteArray());
273276

274277
dos.flush();

0 commit comments

Comments
 (0)