Files
AntiVPN/src/main/java/dev/brighten/pl/commands/InfoCommand.java
T

118 lines
4.9 KiB
Java
Executable File

package dev.brighten.pl.commands;
import cc.funkemunky.api.commands.ancmd.Command;
import cc.funkemunky.api.commands.ancmd.CommandAdapter;
import cc.funkemunky.api.utils.Color;
import cc.funkemunky.api.utils.Init;
import cc.funkemunky.api.utils.MiscUtils;
import dev.brighten.db.utils.json.JSONException;
import dev.brighten.pl.AntiVPN;
import dev.brighten.pl.data.UserData;
import lombok.val;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
@Init(commands = true)
public class InfoCommand {
private static String LINE = MiscUtils.line(Color.Dark_Gray);
@Command(name = "kaurivpn.info", description = "view a player's vpn info.", display = "info [player]",
permission = "kvpn.command.info", aliases = {"antivpn.info"})
public void onCommand(CommandAdapter cmd) {
UserData data;
if(cmd.getArgs().length == 0) {
if(cmd.getPlayer() != null) data = UserData.getData(cmd.getPlayer().getUniqueId());
else {
cmd.getSender().sendMessage(Color.Red + "You cannot view your own info as you're not a player.");
return;
}
} else {
Player player;
if((player = Bukkit.getPlayer(cmd.getArgs()[0])) != null) {
data = UserData.getData(player.getUniqueId());
} else {
cmd.getSender().sendMessage(Color.Red + "Could not find that player. Is he/she even online?");
return;
}
}
sendData(cmd, data);
}
private static void sendData(CommandAdapter cmd, UserData data) {
if(data.response != null) {
cmd.getSender().sendMessage(LINE);
sendMsg(cmd, "&6&l" + data.getPlayer().getName() + "'s Information");
sendMsg(cmd, "");
try {
val json = data.response.toJson();
json.keySet().stream()
.filter(key -> {
switch(key) {
case "ip":
case "city":
case "success":
case "queriesLeft":
case "locationString":
case "usedAdvanced":
return false;
default:
return true;
}
})
.forEach(key -> {
try {
sendMsg(cmd, "&7" + key.toUpperCase() + "&8: &f" + json.get(key));
} catch (JSONException e) {
e.printStackTrace();
}
});
} catch (JSONException e) {
sendMsg(cmd, "&cThere was an error parsing the VPN response.");
e.printStackTrace();
}
cmd.getSender().sendMessage(LINE);
} else if(AntiVPN.INSTANCE.vpnHandler.getCached().containsKey(data.uuid)) {
data.response = AntiVPN.INSTANCE.vpnHandler.getCached()
.computeIfPresent(data.uuid,
(key, value) -> AntiVPN.INSTANCE.vpnHandler.getCached().remove(key));
cmd.getSender().sendMessage(LINE);
sendMsg(cmd, "&6&l" + data.getPlayer().getName() + "'s Information");
sendMsg(cmd, "");
try {
val json = data.response.toJson();
json.keySet().stream()
.filter(key -> {
switch(key) {
case "ip":
case "city":
case "success":
case "queriesLeft":
case "locationString":
case "usedAdvanced":
return false;
default:
return true;
}
})
.forEach(key -> {
try {
sendMsg(cmd, "&7" + key.toUpperCase() + "&8: &f" + json.get(key));
} catch (JSONException e) {
e.printStackTrace();
}
});
} catch (JSONException e) {
sendMsg(cmd, "&cThere was an error parsing the VPN response.");
e.printStackTrace();
}
cmd.getSender().sendMessage(LINE);
} else cmd.getSender().sendMessage(Color.Red + "This user was not checked for a vpn.");
}
private static void sendMsg(CommandAdapter cmd, String msg) {
cmd.getSender().sendMessage(Color.translate(msg));
}
}