package xenxier.minecraft.servermagic.event;
import org.json.simple.JSONObject;
import xenxier.minecraft.servermagic.Server;
interface EventInterface {
String getArgument(String line);
}
public abstract class Event implements EventInterface {
String event;
Server server;
JSONObject eventjson;
String eventname;
/* This classes constructor has no modifier.
* Protected would allow subclasses outside of xenxier.minecraft.servermagic.event.
* Having no modifier only allows subclasses in the same package.
*/
Event(Server server, String eventname, String event) {
this.server = server;
this.event = event.toLowerCase();
this.eventname = eventname;
this.eventjson = (JSONObject) this.server.server_json.get("events");
}
public void parseLine(String line) {
if (line.toLowerCase().contains(event)) {
doJSONEvents(getArgument(line));
}
}
private void doJSONEvents(String arg) {
parse(this.server, this.eventjson.get(eventname).toString(), arg);
}
public static void parse(Server server, String event, String arg) {
if (!event.isEmpty()) {
// The player string may have colour coding in it, parse this out:
// example: '�9Player�r' will be parsed to 'Player'
StringBuilder sb = new StringBuilder(arg);
if (sb.charAt(0) == '�') { // if first character is this then parse
int first = sb.indexOf("�");
int last = sb.lastIndexOf("�");
sb.delete(last, last + 2);
sb.delete(first, first + 2);
}
String[] parsed = (event.replace("@$", sb.toString())).split(";");
for (int i = 0; i < parsed.length; i++) {
if (!parsed[i].isEmpty()) {
server.passCommand(parsed[i]);
}
}
}
}
public static void parse(Server server, String event) {
if (!event.isEmpty()) {
String[] parsed = (event.replace("@$", "")).split(";");
for (int i = 0; i < parsed.length; i++) {
if (!parsed[i].isEmpty()) {
server.passCommand(parsed[i]);
}
}
}
}
}