Added data, info, and reload command

This commit is contained in:
funkemunky
2020-01-13 09:18:46 -05:00
parent 5ef4492e84
commit c789aa58af
7 changed files with 165 additions and 10 deletions
@@ -9,7 +9,8 @@ import dev.brighten.pl.AntiVPN;
public class AlertsCommand {
@Command(name = "kaurivpn.alerts", description = "toggle vpn alerts",
display = "alerts", playerOnly = true, permission = {"kvpn.alerts", "kvpn.command.alerts"})
display = "alerts", playerOnly = true, aliases = {"antivpn.alerts"},
permission = {"kvpn.alerts", "kvpn.command.alerts"})
public void onCommand(CommandAdapter cmd) {
boolean toggled = AntiVPN.INSTANCE.alertsHandler.toggleAlerts(cmd.getPlayer());
cmd.getSender().sendMessage(toggled
@@ -0,0 +1,80 @@
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 cc.funkemunky.carbon.utils.json.JSONException;
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 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));
}
}
@@ -0,0 +1,35 @@
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.MathUtils;
import dev.brighten.pl.AntiVPN;
@Init(commands = true)
public class ReloadCommand {
@Command(name = "kaurivpn.reload", description = "reload KauriVPN.", display = "reload",
aliases = {"antivpn.reload"}, permission = "kvpn.command.reload")
public void onCommand(CommandAdapter cmd) {
long start = System.nanoTime();
task(cmd, "Reloading config");
AntiVPN.INSTANCE.reloadConfig();
task(cmd, "Unloading KauriVPN");
AntiVPN.INSTANCE.disable();
task(cmd, "Loading KauriVPN");
AntiVPN.INSTANCE.enable();
double complete = System.nanoTime() - start / 1E6D;
cmd.getSender().sendMessage(Color.Green + "Reload completed in "
+ MathUtils.round(complete, 2) + "ms.");
}
private static void task(CommandAdapter adapter, String task) {
adapter.getSender().sendMessage(Color.translate("&7" + task + "..."));
}
}
@@ -9,7 +9,7 @@ import cc.funkemunky.api.utils.Init;
public class VpnCommand {
@Command(name = "kaurivpn", description = "The Kauri AntiVPN main command.",
aliases = {"antivpn", "avpn", "kvpn"}, permission = "kvpn.command")
aliases = {"antivpn"}, permission = "kvpn.command")
public void onCommand(CommandAdapter cmd) {
Atlas.getInstance().getCommandManager().runHelpMessage(cmd,
cmd.getSender(), Atlas.getInstance().getCommandManager().getDefaultScheme());
@@ -0,0 +1,39 @@
package dev.brighten.pl.data;
import dev.brighten.pl.vpn.VPNResponse;
import lombok.RequiredArgsConstructor;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@RequiredArgsConstructor
public class UserData {
public final static Map<UUID, UserData> dataMap = Collections.synchronizedMap(new HashMap<>());
public final UUID uuid;
private Player player;
public VPNResponse response;
public boolean hasAlerts;
public static UserData getData(UUID uuid) {
return dataMap.computeIfAbsent(uuid, key -> {
if(Bukkit.getPlayer(uuid) != null) {
UserData data = new UserData(uuid);
dataMap.put(key, data);
return data;
}
return null;
});
}
public Player getPlayer() {
if(player == null) {
return player = Bukkit.getPlayer(uuid);
}
return player;
}
}
@@ -1,6 +1,7 @@
package dev.brighten.pl.handlers;
import cc.funkemunky.api.utils.JsonMessage;
import dev.brighten.pl.data.UserData;
import dev.brighten.pl.utils.Config;
import dev.brighten.pl.utils.StringUtils;
import dev.brighten.pl.vpn.VPNResponse;
@@ -14,7 +15,6 @@ import java.util.Set;
import java.util.UUID;
public class AlertsHandler {
private Set<Player> hasAlerts = new HashSet<>();
public void sendAlert(UUID uuid, VPNResponse response) {
JsonMessage message = new JsonMessage();
@@ -24,8 +24,8 @@ public class AlertsHandler {
.addHoverText(Config.alertHoverMessage.stream()
.map(string -> StringUtils.formatString(string, response)
.replace("%player%", player.getName())).toArray(String[]::new));
hasAlerts.parallelStream().filter(Objects::nonNull)
.forEach(message::sendToPlayer);
UserData.dataMap.values().parallelStream().filter(data -> data.hasAlerts)
.forEach(data -> message.sendToPlayer(data.getPlayer()));
}
//TODO When updated Atlas releases, add this functionality.
@@ -34,11 +34,8 @@ public class AlertsHandler {
}
public boolean toggleAlerts(Player player) {
boolean contains;
UserData data = UserData.getData(player.getUniqueId());
if(contains = hasAlerts.contains(player)) hasAlerts.remove(player);
else hasAlerts.add(player);
return !contains;
return data.hasAlerts = !data.hasAlerts;
}
}
@@ -5,6 +5,7 @@ import cc.funkemunky.api.utils.MiscUtils;
import cc.funkemunky.api.utils.RunUtils;
import cc.funkemunky.api.utils.Tuple;
import dev.brighten.pl.AntiVPN;
import dev.brighten.pl.data.UserData;
import dev.brighten.pl.listeners.impl.VPNCheckEvent;
import dev.brighten.pl.utils.Config;
import dev.brighten.pl.utils.StringUtils;
@@ -31,6 +32,8 @@ public class VPNHandler {
while(queue.size() > 0 && (element = queue.poll()) != null) {
val response = AntiVPN.INSTANCE.vpnAPI.getResponse(element.two);
if(response != null && response.isSuccess()) {
UserData data = UserData.getData(element.one);
data.response = response;
VPNCheckEvent event = new VPNCheckEvent(response);
if(Config.fireEvent)
RunUtils.task(() -> Bukkit.getPluginManager().callEvent(event), AntiVPN.INSTANCE);