package net.t2code.opsecurity.check; import net.t2code.opsecurity.config.config.Config; import net.t2code.opsecurity.config.language.Language; import net.t2code.opsecurity.config.permissionWhitelist.PermissionWhitelist; import net.t2code.opsecurity.events.Events; import net.t2code.opsecurity.objects.PlayerCash; import net.t2code.opsecurity.objects.PlayerObject; import net.t2code.opsecurity.system.BungeeSenderReceiver; import net.t2code.opsecurity.system.Main; import net.t2code.t2codelib.SPIGOT.api.commands.T2Ccmd; import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import java.util.Map; public class PermissionCheck { public static Boolean onCheck(Player player, Boolean join) { if (!PermissionWhitelist.enable.valueBoolean) return false; for (String perm : PermissionWhitelist.permissions.valueStringList) { if (!player.hasPermission(perm)) return false; if (permWhitelist(player)) return false; Bukkit.getScheduler().runTask(Main.getPlugin(), new Runnable() { @Override public void run() { execute(player, join, perm); } }); return true; } return false; } private static void execute(Player player, Boolean join, String perm) { if (join) T2Csend.console(Language.permissionWhitelistNotifyKick.value.replace("[player]", player.getName()).replace("[uuid]",String.valueOf(player.getUniqueId()))); if (Config.notifyJoinWarning.valueBoolean && join) { if (Config.notifyBungee.valueBoolean) { BungeeSenderReceiver.sendToBungee(Language.permissionWhitelistNotifyOnJoin.value.replace("[player]", player.getName()).replace("[uuid]",String.valueOf(player.getUniqueId()))); } else Events.notifyPlayer(Language.permissionWhitelistNotifyOnJoin.value.replace("[player]", player.getName()).replace("[uuid]",String.valueOf(player.getUniqueId()))); } if (PermissionWhitelist.playerWithPermissionKick.valueBoolean) { if (Config.kickCustomCommand.valueBoolean) { T2Ccmd.console(Config.kickCommand.valueString.replace("[perm]", perm).replace("[player]", player.getName()).replace("[reason]", Language.permissionWhitelistKick.value)); } else player.kickPlayer(Language.permissionWhitelistKick.value); T2Csend.console(Language.permissionWhitelistNotifyKick.value.replace("[player]", player.getName()).replace("[perm]", perm).replace("[uuid]",String.valueOf(player.getUniqueId()))); } if (PermissionWhitelist.customCommandsEnable.valueBoolean) { for (String cmd : PermissionWhitelist.customCommandsCommands.valueStringList) { T2Ccmd.console(cmd.replace("[player]", player.getName()).replace("[perm]", perm)); } } } private static Boolean permWhitelist(Player player) { for (Map.Entry playerObject : PlayerCash.getPermissionHashMap().entrySet()) { T2Csend.debug(Main.getPlugin(), "--------- " + player.getName()); T2Csend.debug(Main.getPlugin(),"permWhitelist playerObject Name: "+playerObject.getValue().playerName ); T2Csend.debug(Main.getPlugin(),"permWhitelist Player Name: "+player.getName() ); T2Csend.debug(Main.getPlugin(),"permWhitelist playerObject UUID: "+playerObject.getValue().uuid ); T2Csend.debug(Main.getPlugin(),"permWhitelist Player UUID: "+player.getUniqueId().toString().replace("-","") ); if (playerObject.getValue().playerName.equals(player.getName()) && playerObject.getValue().uuid.equals(player.getUniqueId().toString().replace("-",""))){ T2Csend.debug(Main.getPlugin(),"permWhitelist Player on list!"); return true; } } return false; } }