package net.md_5.bungee.forge;
import java.util.logging.Level;
import net.md_5.bungee.BungeeCord;
import net.md_5.bungee.protocol.packet.PluginMessage;
class ForgeLogger
{
static void logServer(LogDirection direction, String stateName, PluginMessage message)
{
String dir = direction == LogDirection.SENDING ? "Server -> Bungee" : "Server <- Bungee";
String log = "[" + stateName + " " + dir + "][" + direction.name() + ": " + getNameFromDiscriminator( message.getTag(), message ) + "]";
BungeeCord.getInstance().getLogger().log( Level.FINE, log );
}
static void logClient(LogDirection direction, String stateName, PluginMessage message)
{
String dir = direction == LogDirection.SENDING ? "Client -> Bungee" : "Client <- Bungee";
String log = "[" + stateName + " " + dir + "][" + direction.name() + ": " + getNameFromDiscriminator( message.getTag(), message ) + "]";
BungeeCord.getInstance().getLogger().log( Level.FINE, log );
}
private static String getNameFromDiscriminator(String channel, PluginMessage message)
{
byte discrim = message.getData()[0];
if ( channel.equals( ForgeConstants.FML_HANDSHAKE_TAG ) )
{
switch ( discrim )
{
case -2:
return "Reset";
case -1:
return "HandshakeAck";
case 0:
return "ServerHello";
case 1:
return "ClientHello";
case 2:
return "ModList";
case 3:
return "ModIdData";
default:
return "Unknown";
}
} else if ( channel.equals( ForgeConstants.FORGE_REGISTER ) )
{
switch ( discrim )
{
case 1:
return "DimensionRegister";
case 2:
return "FluidIdMap";
default:
return "Unknown";
}
}
return "UnknownChannel";
}
public enum LogDirection
{
SENDING,
RECEIVED
}
private ForgeLogger()
{ // Don't allow instantiations
}
}