mirror of
https://github.com/funkemunky/AntiVPN.git
synced 2026-06-13 07:00:40 +00:00
Added data, info, and reload command
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user