From b25e20b15010c1c9200e6d9b551e1f9d9985ec5a Mon Sep 17 00:00:00 2001 From: Finn Date: Sun, 1 Feb 2026 17:06:06 +0100 Subject: [PATCH] Added helper methods --- pom.xml | 2 +- .../network/system/packets/Packet.java | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index aed7408..5576082 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ dev.unlegitdqrk unlegitlibrary - 1.7.7 + 1.7.8 https://unlegitdqrk.dev/ Just a big library diff --git a/src/main/java/dev/unlegitdqrk/unlegitlibrary/network/system/packets/Packet.java b/src/main/java/dev/unlegitdqrk/unlegitlibrary/network/system/packets/Packet.java index e8878aa..16f17d8 100644 --- a/src/main/java/dev/unlegitdqrk/unlegitlibrary/network/system/packets/Packet.java +++ b/src/main/java/dev/unlegitdqrk/unlegitlibrary/network/system/packets/Packet.java @@ -9,6 +9,8 @@ package dev.unlegitdqrk.unlegitlibrary.network.system.packets; import java.io.*; +import java.util.List; +import java.util.Map; import java.util.UUID; public abstract class Packet { @@ -19,5 +21,55 @@ public abstract class Packet { public abstract void read(DataInputStream stream, UUID clientID) throws IOException; public abstract void write(DataOutputStream stream) throws IOException; + + public final void writeList(DataOutputStream stream, List list) throws IOException { + stream.writeInt(list.size()); + for (Object item : list) { + writeObject(stream, item); + } + } + + public final List readList(DataInputStream stream) throws IOException { + int size = stream.readInt(); + java.util.ArrayList list = new java.util.ArrayList<>(Math.max(size, 0)); + for (int i = 0; i < size; i++) { + list.add(readObject(stream)); + } + return list; + } + + public final void writeMap(DataOutputStream stream, Map map) throws IOException { + stream.writeInt(map.size()); + for (Map.Entry entry : map.entrySet()) { + writeObject(stream, entry.getKey()); + writeObject(stream, entry.getValue()); + } + } + + public final Map readMap(DataInputStream stream) throws IOException { + int size = stream.readInt(); + java.util.HashMap map = new java.util.HashMap<>(Math.max(size * 2, 0)); + for (int i = 0; i < size; i++) { + Object key = readObject(stream); + Object value = readObject(stream); + map.put(key, value); + } + return map; + } + + public final void writeObject(DataOutputStream stream, Object object) throws IOException { + ObjectOutputStream oos = new ObjectOutputStream(stream); + oos.writeObject(object); + oos.flush(); + } + + public final Object readObject(DataInputStream stream) throws IOException { + ObjectInputStream ois = new ObjectInputStream(stream); + try { + return ois.readObject(); + } catch (ClassNotFoundException e) { + throw new IOException("Failed to deserialize object", e); + } + } }