Adding kick toggling to the config

This commit is contained in:
Dawson Hessler
2021-07-18 19:58:05 -04:00
parent 665b313828
commit 68b6335ad5
5 changed files with 31 additions and 11 deletions
@@ -28,8 +28,9 @@ public class BukkitConfig implements VPNConfig {
private final ConfigDefault<Boolean> cacheResultsDefault = new ConfigDefault<>(true,
"cachedResults", BukkitPlugin.pluginInstance),
defaultDatabaseEnabled = new ConfigDefault<>(false, "database.enabled",
BukkitPlugin.pluginInstance), defaultCommandsEnable
= new ConfigDefault<>(false, "commands.enabled", BukkitPlugin.pluginInstance);
BukkitPlugin.pluginInstance), defaultCommandsEnable = new ConfigDefault<>(false,
"commands.enabled", BukkitPlugin.pluginInstance), defaultKickPlayers
= new ConfigDefault<>(true, "kickPlayers", BukkitPlugin.pluginInstance);
private final ConfigDefault<Integer>
defaultPort = new ConfigDefault<>(-1, "database.port", BukkitPlugin.pluginInstance);
private final ConfigDefault<List<String>> prefixWhitelistsDefault = new ConfigDefault<>(new ArrayList<>(),
@@ -40,7 +41,7 @@ public class BukkitConfig implements VPNConfig {
private String license, kickMessage, databaseType, databaseName, username, password, ip;
private List<String> prefixWhitelists, commands;
private int port;
private boolean cacheResults, databaseEnabled, commandsEnabled;
private boolean cacheResults, databaseEnabled, commandsEnabled, kickPlayers;
@Override
public String getLicense() {
@@ -67,6 +68,11 @@ public class BukkitConfig implements VPNConfig {
return commands;
}
@Override
public boolean kickPlayersOnDetect() {
return kickPlayers;
}
@Override
public List<String> getPrefixWhitelists() {
return prefixWhitelists;
@@ -133,5 +139,6 @@ public class BukkitConfig implements VPNConfig {
port = defaultPort.get();
commandsEnabled = defaultCommandsEnable.get();
commands = defaultCommands.get();
kickPlayers = defaultKickPlayers.get();
}
}
@@ -47,16 +47,19 @@ public class BukkitListener extends VPNExecutor implements Listener {
if(AntiVPN.getInstance().getExecutor().isWhitelisted(event.getUniqueId())) return;
checkIp(event.getAddress().getHostAddress(), AntiVPN.getInstance().getConfig().cachedResults(), result -> {
if(result.isSuccess() && result.isProxy()) {
event.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_OTHER);
event.setKickMessage(ChatColor.translateAlternateColorCodes('&',
AntiVPN.getInstance().getConfig().getKickString()));
if(AntiVPN.getInstance().getConfig().kickPlayersOnDetect()) {
event.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_OTHER);
event.setKickMessage(ChatColor.translateAlternateColorCodes('&',
AntiVPN.getInstance().getConfig().getKickString()));
}
Optional.ofNullable(Bukkit.getPlayer(event.getUniqueId())).ifPresent(player -> {
new BukkitRunnable() {
public void run() {
if(!player.hasPermission("antivpn.bypass") //Has bypass permission
if(AntiVPN.getInstance().getConfig().kickPlayersOnDetect()
&& (!player.hasPermission("antivpn.bypass") //Has bypass permission
//Or has a name that starts with a certain prefix. This is for Bedrock exempting.
|| AntiVPN.getInstance().getConfig().getPrefixWhitelists().stream()
.anyMatch(prefix -> player.getName().startsWith(prefix)))
.anyMatch(prefix -> player.getName().startsWith(prefix))))
player.kickPlayer(ChatColor.translateAlternateColorCodes('&',
AntiVPN.getInstance().getConfig().getKickString()));