package net.ME1312.SubServers.Bungee.Network.Packet; import net.ME1312.Galaxi.Library.Map.ObjectMap; import net.ME1312.Galaxi.Library.Util; import net.ME1312.SubData.Server.Protocol.PacketObjectIn; import net.ME1312.SubData.Server.Protocol.PacketObjectOut; import net.ME1312.SubData.Server.SubDataClient; import java.util.HashMap; import java.util.UUID; import java.util.function.Consumer; /** * Delete Server External Host Packet */ public class PacketExDeleteServer implements PacketObjectIn, PacketObjectOut { private static HashMap>[]> callbacks = new HashMap>[]>(); private String name; private ObjectMap info; private boolean recycle; private UUID tracker = null; /** * New PacketExDeleteServer */ public PacketExDeleteServer() {} /** * New PacketExDeleteServer (Out) * * @param name Server Name * @param info Info.json Contents * @param callback Callbacks */ @SafeVarargs public PacketExDeleteServer(String name, ObjectMap info, boolean recycle, Consumer>... callback) { Util.nullpo(name, info, callback); this.name = name; this.info = info; this.recycle = recycle; this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID); callbacks.put(tracker, callback); } @Override public ObjectMap send(SubDataClient client) { ObjectMap data = new ObjectMap(); data.set(0x0000, tracker); data.set(0x0001, name); data.set(0x0002, info); if (recycle) data.set(0x0003, true); return data; } @Override public void receive(SubDataClient client, ObjectMap data) { for (Consumer> callback : callbacks.remove(data.getUUID(0x0000))) callback.accept(data); } }