2017-04-01 07:37:48 +02:00
|
|
|
package net.ME1312.SubServers.Bungee.Network.Packet;
|
|
|
|
|
2019-04-18 16:02:09 +02:00
|
|
|
import net.ME1312.Galaxi.Library.Map.ObjectMap;
|
|
|
|
import net.ME1312.Galaxi.Library.Util;
|
|
|
|
import net.ME1312.SubData.Server.Protocol.PacketObjectIn;
|
2020-11-16 21:34:59 +01:00
|
|
|
import net.ME1312.SubData.Server.SubDataClient;
|
|
|
|
import net.ME1312.SubServers.Bungee.Host.External.ExternalSubLogger;
|
2017-04-01 07:37:48 +02:00
|
|
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
import java.util.UUID;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Message Log External Host Packet
|
|
|
|
*/
|
2019-04-18 16:02:09 +02:00
|
|
|
public class PacketInExLogMessage implements PacketObjectIn<Integer> {
|
2017-04-01 07:37:48 +02:00
|
|
|
private static HashMap<UUID, ExternalSubLogger> loggers = new HashMap<UUID, ExternalSubLogger>();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* New PacketInExLogMessage (Registerer)
|
|
|
|
*/
|
|
|
|
public PacketInExLogMessage() {}
|
|
|
|
|
|
|
|
@Override
|
2019-04-18 16:02:09 +02:00
|
|
|
public void receive(SubDataClient client, ObjectMap<Integer> data) {
|
2017-04-01 07:37:48 +02:00
|
|
|
try {
|
2021-06-26 00:26:49 +02:00
|
|
|
if (data.contains(0x0000)) {
|
|
|
|
if (data.contains(0x0002) && data.contains(0x0001)) {
|
|
|
|
if (loggers.containsKey(data.getUUID(0x0000))) {
|
2021-10-24 20:53:15 +02:00
|
|
|
Util.reflect(ExternalSubLogger.class.getDeclaredMethod("log", int.class, String.class), loggers.get(data.getUUID(0x0000)), data.getInt(0x0001), data.getString(0x0002));
|
2021-06-26 00:26:49 +02:00
|
|
|
}
|
2021-06-25 05:06:53 +02:00
|
|
|
} else {
|
|
|
|
unregister(data.getUUID(0x0000));
|
2021-06-26 00:26:49 +02:00
|
|
|
client.close();
|
2021-06-25 05:06:53 +02:00
|
|
|
}
|
2017-04-01 07:37:48 +02:00
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Register External Logger
|
|
|
|
*
|
|
|
|
* @param logger Logger
|
|
|
|
* @return External Address
|
|
|
|
*/
|
|
|
|
public static UUID register(ExternalSubLogger logger) {
|
|
|
|
UUID id = Util.getNew(loggers.keySet(), UUID::randomUUID);
|
|
|
|
loggers.put(id, logger);
|
|
|
|
return id;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Unregister External Logger
|
|
|
|
*
|
|
|
|
* @param id External Address
|
|
|
|
*/
|
|
|
|
public static void unregister(UUID id) {
|
2021-06-26 00:26:49 +02:00
|
|
|
if (loggers.containsKey(id)) loggers.remove(id).stop();
|
2017-04-01 07:37:48 +02:00
|
|
|
}
|
|
|
|
}
|