package net.smart.utilities;
import java.io.*;
import org.apache.logging.log4j.*;
import cpw.mods.fml.common.*;
public class Assert
{
public final static String messageBorder = "========================================";
public final static String messageSeparator = "----------------------------------------";
public final static boolean hasClientPlayerAPI = hasAPI("Client");
public final static boolean hasServerPlayerAPI = hasAPI("Server");
public final static boolean hasRenderPlayerAPI = hasAPI("Render");
public static void clientPlayerAPI(String modName)
{
if(!hasClientPlayerAPI)
throw new RuntimeException(error(getPlayerAPIMessage(modName, true)));
}
public static void serverPlayerAPI(String modName)
{
if(!hasServerPlayerAPI)
throw new RuntimeException(error(getPlayerAPIMessage(modName, false)));
}
private static String[] getPlayerAPIMessage(String modName, boolean client)
{
return getMessage(
modName + " could not find the required API \"" + (client ? "Client" : "Server") + " Player\"!",
"Download Player API core from:",
"\thttp://www.minecraftforum.net/topic/738498-/",
"and install it on your system to fix this specific problem.");
}
private static String[] getMessage(String header, String... lines)
{
String[] message = new String[lines.length + 4];
int i = 0;
message[i++] = messageBorder;
message[i++] = header;
message[i++] = messageSeparator;
for(int n=0; n<lines.length; n++)
message[i++] = lines[n];
message[i] = messageBorder;
return message;
}
public static String error(String... lines)
{
return log(Level.ERROR, System.err, lines);
}
private static String log(Level level, PrintStream stream, String... lines)
{
String message = "\n";
for(int i=0; i<lines.length; i++)
{
String line = lines[i];
stream.println(line);
message += "\n\t" + line;
}
message += "\n";
FMLLog.log(level, message);
return message;
}
private static boolean hasAPI(String prefix)
{
String fullPrefix = "api.player." + prefix.substring(0,1).toLowerCase() + prefix.substring(1) + "." + prefix + "Player";
return Reflect.CheckClasses(Assert.class, new Name(fullPrefix + "API"), new Name(fullPrefix + "BaseSorter"));
}
}