package tv.mineinthebox.essentials.greylist;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import tv.mineinthebox.essentials.xEssentials;
import tv.mineinthebox.essentials.enums.GreyListCause;
import tv.mineinthebox.essentials.enums.LogType;
import tv.mineinthebox.essentials.events.customevents.PlayerGreyListedEvent;
import tv.mineinthebox.essentials.hook.Hooks;
import tv.mineinthebox.essentials.interfaces.EventTemplate;
import tv.mineinthebox.essentials.interfaces.XOfflinePlayer;
import tv.mineinthebox.essentials.interfaces.XPlayer;
import tv.mineinthebox.simpleserver.MimeType;
import tv.mineinthebox.simpleserver.events.SimpleServerEvent;
import tv.mineinthebox.simpleserver.events.manager.ServerEvent;
import tv.mineinthebox.simpleserver.events.manager.ServerListener;
public class GreyListServer extends EventTemplate implements ServerListener {
public GreyListServer(xEssentials pl) {
super(pl, "GreyList");
}
@ServerEvent
public void onRequest(SimpleServerEvent e) {
if(e.isGetRequest()) {
if(e.getUri().startsWith("/adduser/") && e.getUri().length() > "/adduser/".length()) {
String user = e.getUri().substring("/adduser/".length());
if(pl.getManagers().getPlayerManager().isEssentialsPlayer(user)) {
XOfflinePlayer off = pl.getManagers().getPlayerManager().getOfflinePlayer(user);
if(!off.isGreyListed()) {
e.setMimeType(MimeType.MIME_JSON);
e.setContent("{\"xEssentials\": {\"response\": \"success\"}}\n\r".getBytes());
if(pl.getConfiguration().getDebugConfig().isEnabled()) {
xEssentials.log("player: " + off.getName() + " has been greylisted, result: " + off.isGreyListed() + " if this is true its wrong", LogType.DEBUG);
}
if(off instanceof XPlayer) {
XPlayer xp = (XPlayer)off;
off.setGreyListed(true);
sendMessage(xp.getBukkitPlayer(), ChatColor.GREEN + "you are successfully promoted to " + pl.getConfiguration().getGreyListConfig().getGroup());
if(Hooks.isVaultPermissionsEnabled()) {
String oldGroup = pl.getManagers().getVaultManager().getGroup(off.getBukkitPlayer().getWorld(), off.getName());
String newgroup = pl.getConfiguration().getGreyListConfig().getGroup();
pl.getManagers().getVaultManager().setGroup(off.getBukkitPlayer().getWorld(), off.getName(), newgroup);
Bukkit.getPluginManager().callEvent(new PlayerGreyListedEvent(off.getBukkitPlayer(), newgroup, oldGroup, GreyListCause.SITE, pl));
}
} else {
off.setGreyListed(true);
if(Hooks.isVaultPermissionsEnabled()) {
String oldGroup = pl.getManagers().getVaultManager().getGroup(off.getLocation().getWorld(), user);
String newgroup = pl.getConfiguration().getGreyListConfig().getGroup();
pl.getManagers().getVaultManager().setGroup(off.getLocation().getWorld(), off.getName(), newgroup);
Bukkit.getPluginManager().callEvent(new PlayerGreyListedEvent(off.getBukkitPlayer(), newgroup, oldGroup, GreyListCause.SITE, pl));
}
}
} else {
if(pl.getConfiguration().getDebugConfig().isEnabled()) {
xEssentials.log("player: " + off.getName() + " was already greylisted", LogType.DEBUG);
}
e.setMimeType(MimeType.MIME_JSON);
e.setContent("{\"xEssentials\": {\"response\": \"greylisted\"}}\n\r".getBytes());
}
} else {
if(pl.getConfiguration().getDebugConfig().isEnabled()) {
xEssentials.log("player: " + user + " does not exist for the greylist request /adduser/"+user, LogType.DEBUG);
}
e.setMimeType(MimeType.MIME_JSON);
e.setContent("{\"xEssentials\": {\"response\": \"notexist\"}}\n\r".getBytes());
}
} else {
e.setCancelled(true);
}
}
}
}