package openeye;
import com.google.common.base.Strings;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;
import net.minecraft.client.Minecraft;
import net.minecraftforge.fml.common.FMLCommonHandler;
import openeye.logic.Config;
import openeye.logic.Sanitizers;
import openeye.notes.NotesButtonInjector;
public abstract class Proxy {
private static class Client extends Proxy {
@Override
public boolean isSnooperEnabled() {
try {
return Minecraft.getMinecraft().gameSettings.snooperEnabled;
} catch (Exception e) {
Log.warn(e, "Can't read client snooper settings, won't send any data");
return false;
}
}
@Override
public String getLanguage() {
return Minecraft.getMinecraft().gameSettings.language;
}
@Override
public void first() {
try {
String username = Minecraft.getMinecraft().getSession().getUsername();
if (!Strings.isNullOrEmpty(username)) Sanitizers.addPlayerName(username);
} catch (Throwable t) {
Log.warn(t, "Failed to get player username");
}
}
@Override
public void init() {
if (Config.mainScreenNotes) NotesButtonInjector.registerInjector();
}
}
private static class Server extends Proxy {
@Override
public boolean isSnooperEnabled() {
try {
File settings = new File("server.properties");
Properties props = new Properties();
InputStream input = new FileInputStream(settings);
try {
props.load(input);
} finally {
input.close();
}
String flag = props.getProperty("snooper-enabled");
// default value for vanilla is also true
return flag != null? flag.equalsIgnoreCase("true") : true;
} catch (Exception e) {
Log.warn(e, "Can't read server snooper settings, won't send any data");
return false;
}
}
@Override
public String getLanguage() {
return "n/a";
}
@Override
public void first() {}
@Override
public void init() {}
}
public abstract boolean isSnooperEnabled();
public abstract String getLanguage();
public abstract void first();
public abstract void init();
private static Proxy instance;
public static Proxy instance() {
if (instance == null) instance = createProxy();
return instance;
}
private static Proxy createProxy() {
switch (FMLCommonHandler.instance().getSide()) {
case CLIENT:
return new Client();
case SERVER:
return new Server();
default:
throw new IllegalStateException("Impossibru!");
}
}
}