diff --git a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/Check.java b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/Check.java index 0c61a5a..5e680ba 100644 --- a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/Check.java +++ b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/Check.java @@ -103,6 +103,7 @@ public class Check { } } } + if (SelectConfig.playerWhithPermissionKick && SelectConfig.permCommandEnable) { T2Ccmd.console(SelectConfig.kickCommand.replace("[player]", player.getName()).replace("[reason]", T2Creplace.replace(Util.getPrefix(), SelectMessages.Perm_kick))); T2Csend.console(T2Creplace.replace(Util.getPrefix(), SelectMessages.Perm_consoleKick.replace("[player]", @@ -120,6 +121,7 @@ public class Check { for (String cmd : SelectConfig.permCommand) { T2Ccmd.console(cmd.replace("[player]", player.getName()).replace("[perm]", s)); } + } return true; } diff --git a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/OPCommand.java b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/OPCommand.java index c61b31f..aad3047 100644 --- a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/OPCommand.java +++ b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/OPCommand.java @@ -40,7 +40,6 @@ public class OPCommand implements Listener { @EventHandler public void onOpPlayer(PlayerCommandPreprocessEvent event) { - if (SelectConfig.opWhitelistEnable) { if ((event.getMessage().toLowerCase().startsWith("/op ") || event.getMessage().toLowerCase().startsWith("/minecraft:op "))) { switch (this.isNotOPWTL(event.getMessage())) { diff --git a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/PlugManCommand.java b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/PlugManCommand.java index b2d78e9..07b78e4 100644 --- a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/PlugManCommand.java +++ b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/PlugManCommand.java @@ -12,7 +12,6 @@ import org.bukkit.event.server.ServerCommandEvent; public class PlugManCommand implements Listener { - @EventHandler public void onOPServer(ServerCommandEvent event) { if ((event.getCommand().toLowerCase().contains("plugman disable") && event.getCommand().toLowerCase().contains(Main.getPlugin().getDescription().getName().toLowerCase())) diff --git a/OpSecurity V3/pom.xml b/OpSecurity V3/pom.xml index ba22d2c..089e2ed 100644 --- a/OpSecurity V3/pom.xml +++ b/OpSecurity V3/pom.xml @@ -6,7 +6,7 @@ net.t2code T2C-OPSecurity - 1.0-SNAPSHOT + 3.0.0-SNAPSHOT-#1 jar T2C-OPSecurity diff --git a/OpSecurity V3/src/main/java/net/t2code/opsecurity/Util.java b/OpSecurity V3/src/main/java/net/t2code/opsecurity/Util.java index 9d2e743..5187171 100644 --- a/OpSecurity V3/src/main/java/net/t2code/opsecurity/Util.java +++ b/OpSecurity V3/src/main/java/net/t2code/opsecurity/Util.java @@ -1,31 +1,28 @@ package net.t2code.opsecurity; +import lombok.Getter; + public class Util { - public static String getInfoText() { - return ""; - } - public static String getRequiredT2CodeLibVersion() { - return "13.0"; - } + @Getter + private static String infoText = ""; - public static String getPrefix() { - return "§8[§T2C§8-§2OP§4Security§8]"; - } + @Getter + private static String requiredT2CodeLibVersion = "13.1"; - public static Integer getSpigotID() { - return 90739; - } + @Getter + private static String prefix = "§8[§4T2C§8-§2OP§4Security§8]"; - public static Integer getBstatsID() { - return 10858; - } + @Getter + private static Integer spigotID = 90739; - public static String getSpigot() { - return "https://www.spigotmc.org/resources/" + getSpigotID(); - } + @Getter + private static Integer bstatsID = 10858; + + @Getter + private static String spigot = "https://www.spigotmc.org/resources/" + getSpigotID(); + + @Getter + private static String discord = "http://dc.t2code.net"; - public static String getDiscord() { - return "http://dc.t2code.net"; - } } diff --git a/OpSecurity V3/src/main/java/net/t2code/opsecurity/check/OpCheck.java b/OpSecurity V3/src/main/java/net/t2code/opsecurity/check/OpCheck.java new file mode 100644 index 0000000..f86d01f --- /dev/null +++ b/OpSecurity V3/src/main/java/net/t2code/opsecurity/check/OpCheck.java @@ -0,0 +1,77 @@ +package net.t2code.opsecurity.check; + +import net.t2code.opsecurity.config.config.Config; +import net.t2code.opsecurity.config.language.Language; +import net.t2code.opsecurity.config.opWhitelist.OPWhitelist; +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 OpCheck { + public static Boolean onCheck(Player player, Boolean join) { + if (!OPWhitelist.enable.valueBoolean) return false; + if (!player.isOp()) return false; + if (opWhitelist(player)) return false; + if (join) T2Csend.console(Language.opWhitelistNotifyOnJoin.value.replace("[player]", player.getName())); + + if (Config.notifyJoinWarning.valueBoolean&& join) { + if (Config.notifyBungee.valueBoolean ) { + BungeeSenderReceiver.sendToBungee(Language.opWhitelistNotifyOnJoin.value.replace("[player]", player.getName())); + } else Events.notifyPlayer(Language.opWhitelistNotifyOnJoin.value.replace("[player]", player.getName())); + } + + if (OPWhitelist.noOpPlayerDeopEnable.valueBoolean) { + player.setOp(false); + if (OPWhitelist.noOpPlayerKickEnable.valueBoolean) { + if (!OPWhitelist.customCommandsEnable.valueBoolean) T2Ccmd.console(Config.kickCommand.path.replace("[player]", player.getName()).replace("[reason]", + OPWhitelist.noOpPlayerKickEnable.valueBoolean && OPWhitelist.noOpPlayerDeopEnable.valueBoolean && OPWhitelist.noOpPlayerDeopPlayerSendMessage.valueBoolean + ? Language.opWhitelistKick.value + "

" + Language.opWhitelistDeop.value : Language.opWhitelistKick.value)); + T2Csend.console(Language.opWhitelistNotifyDeop.value.replace("[player]", player.getName()) + "
" + + Language.opWhitelistNotifyKick.value.replace("[player]", player.getName())); + Events.notifyPlayer(Language.opWhitelistNotifyDeop.value.replace("[player]", player.getName()) + "
" + + Language.opWhitelistNotifyKick.value.replace("[player]", player.getName())); + } else { + T2Csend.console(Language.opWhitelistNotifyDeop.value.replace("[player]", player.getName())); + Events.notifyPlayer(Language.opWhitelistNotifyDeop.value.replace("[player]", player.getName())); + + if (OPWhitelist.noOpPlayerDeopPlayerSendMessage.valueBoolean) { + Bukkit.getScheduler().runTaskLater(Main.getPlugin(), new Runnable() { + @Override + public void run() { + T2Csend.player(player, Language.opWhitelistDeop.value); + } + }, 5L); + } + } + } + if (OPWhitelist.noOpPlayerKickEnable.valueBoolean) { + if (!OPWhitelist.customCommandsEnable.valueBoolean) + T2Ccmd.console(Config.kickCommand.path.replace("[player]", player.getName()).replace("[reason]", Language.opWhitelistKick.value)); + T2Csend.console(Language.opWhitelistNotifyKick.value.replace("[player]", player.getName())); + Events.notifyPlayer(Language.opWhitelistNotifyKick.value.replace("[player]", player.getName())); + } + if (OPWhitelist.customCommandsEnable.valueBoolean) { + for (String cmd : OPWhitelist.customCommandsCommands.valueStringList) { + T2Ccmd.console(cmd.replace("[player]", player.getName())); + } + } + return true; + } + + private static Boolean opWhitelist(Player player) { + for (Map.Entry playerObject : PlayerCash.getOpHashMap().entrySet()){ + if (playerObject.getValue().playerName.equals(player.getName())) return true; + if (playerObject.getValue().uuid.equals(player.getUniqueId().toString())) return true; + } + T2Csend.console(Language.exactKickReason.value.replace("[reason]", "Player UUID: " + player.getUniqueId().toString() + " not whitelisted (opWhitelist)")); + return false; + } +} diff --git a/OpSecurity V3/src/main/java/net/t2code/opsecurity/check/PermissionCheck.java b/OpSecurity V3/src/main/java/net/t2code/opsecurity/check/PermissionCheck.java new file mode 100644 index 0000000..d64f1d2 --- /dev/null +++ b/OpSecurity V3/src/main/java/net/t2code/opsecurity/check/PermissionCheck.java @@ -0,0 +1,53 @@ +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.t2codelib.SPIGOT.api.commands.T2Ccmd; +import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; +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)) continue; + if (permWhitelist(player)) continue; + + if (join) T2Csend.console(Language.permissionWhitelistNotifyKick.value.replace("[player]", player.getName())); + if (Config.notifyJoinWarning.valueBoolean && join) { + if (Config.notifyBungee.valueBoolean) { + BungeeSenderReceiver.sendToBungee(Language.permissionWhitelistNotifyOnJoin.value.replace("[player]", player.getName())); + } else Events.notifyPlayer(Language.permissionWhitelistNotifyOnJoin.value.replace("[player]", player.getName())); + } + + if (PermissionWhitelist.playerWithPermissionKick.valueBoolean) { + T2Ccmd.console(Config.kickCommand.valueString.replace("[player]", player.getName()).replace("[reason]", Language.permissionWhitelistKick.value)); + T2Csend.console(Language.permissionWhitelistNotifyKick.value.replace("[player]", + player.getName()).replace("[perm]", perm)); + } + if (PermissionWhitelist.customCommandsCommands.valueBoolean) { + for (String cmd : PermissionWhitelist.customCommandsCommands.valueStringList) { + T2Ccmd.console(cmd.replace("[player]", player.getName()).replace("[perm]", perm)); + } + } + return true; + } + return false; + } + + private static Boolean permWhitelist(Player player) { + for (Map.Entry playerObject : PlayerCash.getPermissionHashMap().entrySet()){ + if (playerObject.getValue().playerName.equals(player.getName())) return true; + if (playerObject.getValue().uuid.equals(player.getUniqueId().toString())) return true; + } + T2Csend.console(Language.exactKickReason.value.replace("[reason]", "Player UUID: " + player.getUniqueId().toString() + " not whitelisted (permissionWhitelist)")); + return false; + } +} diff --git a/OpSecurity V3/src/main/java/net/t2code/opsecurity/check/Timer.java b/OpSecurity V3/src/main/java/net/t2code/opsecurity/check/Timer.java new file mode 100644 index 0000000..7928e38 --- /dev/null +++ b/OpSecurity V3/src/main/java/net/t2code/opsecurity/check/Timer.java @@ -0,0 +1,29 @@ +// This claas was created by JaTiTV + + +package net.t2code.opsecurity.check; + +import net.t2code.opsecurity.config.config.Config; +import net.t2code.opsecurity.config.opWhitelist.OPWhitelist; +import net.t2code.opsecurity.config.permissionWhitelist.PermissionWhitelist; +import net.t2code.opsecurity.system.Main; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +public class Timer { + + public static void refreshTimer() { + if (!(OPWhitelist.enable.valueBoolean && PermissionWhitelist.enable.valueBoolean)) return; + if (!Config.checkTimerEnable.valueBoolean) return; + + Bukkit.getScheduler().scheduleAsyncRepeatingTask(Main.getPlugin(), new Runnable() { + @Override + public void run() { + for (Player player : Bukkit.getOnlinePlayers()) { + OpCheck.onCheck(player, false); + PermissionCheck.onCheck(player, false); + } + } + }, 0, 20L * Config.checkTimerRefreshInSec.valueInt); + } +} diff --git a/OpSecurity V3/src/main/java/net/t2code/opsecurity/command/CmdExecuter.java b/OpSecurity V3/src/main/java/net/t2code/opsecurity/command/CmdExecuter.java index 78c2bbf..058692d 100644 --- a/OpSecurity V3/src/main/java/net/t2code/opsecurity/command/CmdExecuter.java +++ b/OpSecurity V3/src/main/java/net/t2code/opsecurity/command/CmdExecuter.java @@ -4,15 +4,15 @@ package net.t2code.opsecurity.command; import net.t2code.opsecurity.Util; import net.t2code.opsecurity.config.config.Config; -import net.t2code.opsecurity.config.language.Language; +import net.t2code.opsecurity.config.opWhitelist.OPWhitelist; +import net.t2code.opsecurity.system.Main; import net.t2code.opsecurity.system.Permissions; +import net.t2code.t2codelib.SPIGOT.api.commands.T2Ctab; import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; -import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; -import org.bukkit.entity.Player; import java.util.ArrayList; import java.util.HashMap; @@ -42,6 +42,11 @@ public class CmdExecuter implements CommandExecutor, TabCompleter { case "version": case "ver": Commands.info(sender); + break; + case "test": + T2Csend.debugmsg(Main.getPlugin(), OPWhitelist.enable.valueBoolean.toString()); + T2Csend.debugmsg(Main.getPlugin(), Config.onlyOPcanUseThePlugin.valueBoolean.toString()); + break; case "help": default: @@ -61,63 +66,7 @@ public class CmdExecuter implements CommandExecutor, TabCompleter { @Override public List onTabComplete(CommandSender sender, Command cmd, String s, String[] args) { List list = new ArrayList<>(); - if (sender instanceof Player) { - Player p = (Player) sender; - if (args.length == 1) { - for (String command : arg1.keySet()) { - Boolean passend = true; - for (int i = 0; i < args[0].length(); i++) { - if (args[0].length() >= command.length()) { - passend = false; - } else { - if (args[0].charAt(i) != command.charAt(i)) { - passend = false; - } - } - } - if (hasPermission(p, arg1.get(command)) && passend) { - list.add(command); - } - } - } - - if (args.length == 2) { - switch (args[0]) { - case "give": - if (hasPermission(p, arg1.get("give"))) { - for (Player player : Bukkit.getOnlinePlayers()) { - Boolean passend = true; - for (int i = 0; i < args[1].length(); i++) { - if (args[1].length() >= player.getName().length()) { - passend = false; - } else { - if (args[1].charAt(i) != player.getName().charAt(i)) { - passend = false; - } - } - } - if (hasPermission(p, arg1.get(player)) && passend) { - list.add(player.getName()); - } - } - } - break; - } - } - } + T2Ctab.tab(list,sender,0,args,arg1); return list; } - - public static boolean hasPermission(Player player, String permission) { - if (player.isOp()) { - return true; - } - String[] Permissions = permission.split(";"); - for (String perm : Permissions) { - if (player.hasPermission(perm)) { - return true; - } - } - return false; - } } diff --git a/OpSecurity V3/src/main/java/net/t2code/opsecurity/command/Commands.java b/OpSecurity V3/src/main/java/net/t2code/opsecurity/command/Commands.java index efcb1ab..d0f2752 100644 --- a/OpSecurity V3/src/main/java/net/t2code/opsecurity/command/Commands.java +++ b/OpSecurity V3/src/main/java/net/t2code/opsecurity/command/Commands.java @@ -1,11 +1,14 @@ package net.t2code.opsecurity.command; import net.t2code.opsecurity.Util; +import net.t2code.opsecurity.config.FileSelect; import net.t2code.opsecurity.config.config.Config; import net.t2code.opsecurity.config.language.Language; import net.t2code.opsecurity.objects.PlayerCash; +import net.t2code.opsecurity.system.Main; import net.t2code.opsecurity.system.Permissions; import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; +import net.t2code.t2codelib.SPIGOT.api.messages.T2Ctemplate; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -49,21 +52,25 @@ public class Commands { } if (sender instanceof Player) { Player player = (Player) sender; - if (!PlayerCash.opHashMap.containsKey(player.getName().toLowerCase())) { + if (!PlayerCash.getOpHashMap().containsKey(player.getName().toLowerCase())) { sender.sendMessage(Util.getPrefix() + " §4You are not on the Whitelist!"); return; } - if (!PlayerCash.opHashMap.get(player.getName().toLowerCase()).UUID.equals(player.getUniqueId().toString().replace("-", ""))) { + if (!PlayerCash.getOpHashMap().get(player.getName().toLowerCase()).uuid.equals(player.getUniqueId().toString().replace("-", ""))) { sender.sendMessage(Util.getPrefix() + " §4You are not on the Whitelist!"); return; } T2Csend.player(player, Language.reloadStart.value); } - if (sender instanceof Player) T2Csend.player((Player) sender, SelectMessages.ReloadEnd); + if (sender instanceof Player) T2Csend.player((Player) sender, Language.reloadEnd.value); Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + "§8-------------------------------"); Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + " §6Plugin reload..."); Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + "§8-------------------------------"); - Load.loadReload(); + // Load.onLoad(Main.getPlugin(),Main.getAutor(),Main.getVersion()); + FileSelect.selectConfig(); + FileSelect.selectLanguage(); + FileSelect.selectOpWhitelist(); + FileSelect.selectPermissionWhitelist(); Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + "§8-------------------------------"); Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + " §2Plugin successfully reloaded."); Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + "§8-------------------------------"); @@ -75,6 +82,6 @@ public class Commands { sender.sendMessage(Util.getPrefix() + "§cYou do not have permission for OPSecurity! §7<" + Permissions.info + ">"); return; } - T2CodeTemplate.sendInfo(sender, Util.getPrefix(), Util.getSpigot(), Util.getDiscord(), Main.autor, Main.version, UpdateAPI.PluginVersionen.get(Main.plugin.getName()).publicVersion); + T2Ctemplate.sendInfo(sender,Main.getPlugin(),Util.getSpigotID(),Util.getDiscord(),Util.getInfoText()); } } diff --git a/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/FileSelect.java b/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/FileSelect.java index a8976f3..3d39f06 100644 --- a/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/FileSelect.java +++ b/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/FileSelect.java @@ -4,12 +4,14 @@ import net.t2code.opsecurity.Util; import net.t2code.opsecurity.config.config.Config; import net.t2code.opsecurity.config.language.Language; import net.t2code.opsecurity.config.opWhitelist.OPWhitelist; +import net.t2code.opsecurity.config.permissionWhitelist.PermissionWhitelist; import net.t2code.opsecurity.objects.PlayerCash; import net.t2code.opsecurity.objects.PlayerObject; import net.t2code.opsecurity.system.Main; +import net.t2code.t2codelib.SPIGOT.api.messages.T2Creplace; import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; -import net.t2code.t2codelib.SPIGOT.system.T2CodeLibMain; import net.t2code.t2codelib.SPIGOT.system.config.languages.SelectLibMsg; +import org.bukkit.Sound; import org.bukkit.configuration.file.YamlConfiguration; import java.io.File; @@ -26,14 +28,14 @@ public class FileSelect { if (!yamlConfiguration.contains(value.path)) { yamlConfiguration.set(value.path, value.valueString); } - value.valueString = yamlConfiguration.getString(value.path); + value.valueString = T2Creplace.replace(Util.getPrefix(), yamlConfiguration.getString(value.path)); break; case SOUND: if (!yamlConfiguration.contains(value.path)) { - yamlConfiguration.set(value.path, value.valueString); + yamlConfiguration.set(value.path, value.sound.toString()); } try { - value.valueString = yamlConfiguration.getString(value.path); + value.sound = Sound.valueOf(yamlConfiguration.getString(value.path)); } catch (Exception ex) { T2Csend.console("§4\n§4\n§4\n" + SelectLibMsg.soundNotFound.replace("[prefix]", Util.getPrefix()) .replace("[sound]", "§8" + value.path + ": §6" + yamlConfiguration.getString(value.path)) + "§4\n§4\n§4\n"); @@ -49,6 +51,7 @@ public class FileSelect { if (!yamlConfiguration.contains(value.path)) { yamlConfiguration.set(value.path, value.valueInt); } + value.valueInt = yamlConfiguration.getInt(value.path); break; } @@ -64,34 +67,34 @@ public class FileSelect { public static void selectLanguage() { long long_ = System.currentTimeMillis(); - File directory = new File(Main.getPath(), "languages"); - if (!directory.exists()) { - for (String language : defaultLanguages) { - File config = new File(Main.getPath(), "languages/" + language + ".yml"); - YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config); - for (Language value : Language.values()) { - if (!yamlConfiguration.contains(value.path)) { - switch (language) { - case "german": - yamlConfiguration.set(value.path, value.german); - break; - case "english": - yamlConfiguration.set(value.path, value.english); - break; - } + + for (String language : defaultLanguages) { + File config = new File(Main.getPath(), "languages/" + language + ".yml"); + YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config); + for (Language value : Language.values()) { + if (!yamlConfiguration.contains(value.path)) { + switch (language) { + case "german": + yamlConfiguration.set(value.path, value.german); + break; + case "english": + yamlConfiguration.set(value.path, value.english); + break; } } - T2Csend.debugmsg(Main.getPlugin(),"save: "+language); - try { - yamlConfiguration.save(config); - } catch (IOException e) { - e.printStackTrace(); - } + } + T2Csend.debug(Main.getPlugin(), "save: " + language); + try { + yamlConfiguration.save(config); + } catch (IOException e) { + e.printStackTrace(); } } + String selectMSG; - File config = new File(Main.getPath(), "languages/" + Config.language + ".yml"); + File config = new File(Main.getPath(), "languages/" + Config.language.valueString + ".yml"); + T2Csend.debug(Main.getPlugin(), config.getAbsolutePath()); if (!config.isFile()) { T2Csend.console(Util.getPrefix()); T2Csend.console(Util.getPrefix() + " §4!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); @@ -99,13 +102,14 @@ public class FileSelect { T2Csend.console(Util.getPrefix() + " §6The default language §eEnglish §6is used!"); T2Csend.console(Util.getPrefix() + " §4!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); T2Csend.console(Util.getPrefix()); - config = new File(Main.getPath(), "languages/" + "english_messages.yml"); + config = new File(Main.getPath(), "languages/" + "english.yml"); selectMSG = "english"; } else selectMSG = Config.language.valueString; YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config); for (Language value : Language.values()) { - value.value = yamlConfiguration.getString(value.path); + T2Csend.debug(Main.getPlugin(), "Select: File: " + config.getName() + " Path: " + value.path); + value.value = T2Creplace.replace(Util.getPrefix(), yamlConfiguration.getString(value.path)); } T2Csend.console(Util.getPrefix() + " §2Language successfully selected to: §6" + selectMSG + " §7- §e" + (System.currentTimeMillis() - long_) + "ms"); } @@ -125,7 +129,7 @@ public class FileSelect { if (!yamlConfiguration.contains(value.path)) { yamlConfiguration.set(value.path, value.valueBoolean); } - value.valueStringList = yamlConfiguration.getStringList(value.path); + value.valueStringList = T2Creplace.replace(Util.getPrefix(), yamlConfiguration.getStringList(value.path)); break; case PLAYERLIST: if (!yamlConfiguration.contains(value.pathPlayerListPath)) { @@ -137,11 +141,10 @@ public class FileSelect { for (String key : yamlConfiguration.getConfigurationSection(value.pathPlayerListPath).getKeys(false)) { PlayerObject playerObject = new PlayerObject( yamlConfiguration.getString(value.pathPlayerName.replace("KEY", key)), - yamlConfiguration.getString(value.pathPlayerUuid.replace("KEY", key).replace("-", ""))); - PlayerCash.opHashMap.put(key, playerObject); + yamlConfiguration.getString(value.pathPlayerUuid.replace("KEY", key).replace("-", ""))); + PlayerCash.getOpHashMap().put(key, playerObject); } break; - } } try { @@ -154,7 +157,7 @@ public class FileSelect { public static void selectPermissionWhitelist() { File config = new File(Main.getPath(), "permissionWhitelist.yml"); YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config); - for (OPWhitelist value : OPWhitelist.values()) { + for (PermissionWhitelist value : PermissionWhitelist.values()) { switch (value.cEnum) { case BOOLEAN: if (!yamlConfiguration.contains(value.path)) { @@ -166,7 +169,7 @@ public class FileSelect { if (!yamlConfiguration.contains(value.path)) { yamlConfiguration.set(value.path, value.valueBoolean); } - value.valueStringList = yamlConfiguration.getStringList(value.path); + value.valueStringList = T2Creplace.replace(Util.getPrefix(), yamlConfiguration.getStringList(value.path)); break; case PLAYERLIST: if (!yamlConfiguration.contains(value.pathPlayerListPath)) { @@ -178,8 +181,8 @@ public class FileSelect { for (String key : yamlConfiguration.getConfigurationSection(value.pathPlayerListPath).getKeys(false)) { PlayerObject playerObject = new PlayerObject( yamlConfiguration.getString(value.pathPlayerName.replace("KEY", key)), - yamlConfiguration.getString(value.pathPlayerUuid.replace("KEY", key).replace("-", ""))); - PlayerCash.opHashMap.put(key, playerObject); + yamlConfiguration.getString(value.pathPlayerUuid.replace("KEY", key).replace("-", ""))); + PlayerCash.getPermissionHashMap().put(key, playerObject); } break; } @@ -190,6 +193,4 @@ public class FileSelect { e.printStackTrace(); } } - - } diff --git a/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/config/Config.java b/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/config/Config.java index a3a03ad..28b8c5f 100644 --- a/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/config/Config.java +++ b/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/config/Config.java @@ -1,28 +1,31 @@ package net.t2code.opsecurity.config.config; -import net.t2code.opsecurity.config.ConfigParam; +import net.t2code.opsecurity.enums.ConfigParam; import net.t2code.t2codelib.SPIGOT.api.minecraftVersion.T2CmcVersion; +import org.bukkit.Sound; public enum Config { - language("Plugin.Language", "english", ConfigParam.STRING), - onlyOPcanUseThePlugin("Plugin.OnlyOPcanUseThePlugin", true, ConfigParam.BOOLEAN), + language("plugin.language", "english", ConfigParam.STRING), + onlyOPcanUseThePlugin("plugin.onlyOPcanUseThePlugin", true, ConfigParam.BOOLEAN), - checkOnJoin("Check.OnJoin", true, ConfigParam.BOOLEAN), - checkOnInteract("Check.OnInteract", true, ConfigParam.BOOLEAN), - checkOnCommand("Check.OnCommand", true, ConfigParam.BOOLEAN), - checkOnChat("Check.OnChat", true, ConfigParam.BOOLEAN), - checkTimerEnable("Check.Timer.Enable", true, ConfigParam.BOOLEAN), - checkTimerRefreshInSec("Check.Timer.RefreshInSec", 60, ConfigParam.INTEGER), - kickCommand("Kick.Command", "minecraft:kick [player] [reason]", ConfigParam.STRING), - notifyJoinWarning("Notify.JoinWarn.Enable", true, ConfigParam.BOOLEAN), - notifySoundEnable("Notify.SoundEnable", true, ConfigParam.BOOLEAN), - notifySoundValue("Notify.SoundEnable", sound(), ConfigParam.SOUND); + checkOnJoin("check.onJoin", true, ConfigParam.BOOLEAN), + checkOnInteract("check.onInteract", true, ConfigParam.BOOLEAN), + checkOnCommand("check.onCommand", true, ConfigParam.BOOLEAN), + checkOnChat("check.onChat", true, ConfigParam.BOOLEAN), + checkTimerEnable("check.timer.enable", true, ConfigParam.BOOLEAN), + checkTimerRefreshInSec("check.timer.refreshInSec", 60, ConfigParam.INTEGER), + kickCommand("kick.command", "minecraft:kick [player] [reason]", ConfigParam.STRING), + notifyJoinWarning("notify.joinWarn.enable", true, ConfigParam.BOOLEAN), + notifyBungee("notify.allBungeePlayer.enable", false, ConfigParam.BOOLEAN), + notifySoundEnable("notify.soundEnable", true, ConfigParam.BOOLEAN), + notifySoundValue("notify.sound", sound(), ConfigParam.SOUND); public String path; public String valueString; public Integer valueInt; public Boolean valueBoolean; + public Sound sound; public ConfigParam cEnum; Config(String path, String value, ConfigParam cEnum) { @@ -31,6 +34,12 @@ public enum Config { this.cEnum = cEnum; } + Config(String path, Sound value, ConfigParam cEnum) { + this.path = path; + this.sound = value; + this.cEnum = cEnum; + } + Config(String path, Integer value, ConfigParam cEnum) { this.path = path; this.valueInt = value; @@ -42,12 +51,13 @@ public enum Config { this.valueBoolean = value; this.cEnum = cEnum; } - public static String sound(){ - if (T2CmcVersion.isMc1_8()){ - return "NOTE_PIANO"; - } else if (T2CmcVersion.isMc1_9()||T2CmcVersion.isMc1_10()||T2CmcVersion.isMc1_11()||T2CmcVersion.isMc1_12()){ - return "BLOCK_NOTE_HARP"; - } else return "BLOCK_NOTE_BLOCK_HARP"; + + public static Sound sound() { + if (T2CmcVersion.isMc1_8()) { + return Sound.valueOf("NOTE_PIANO"); + } else if (T2CmcVersion.isMc1_9() || T2CmcVersion.isMc1_10() || T2CmcVersion.isMc1_11() || T2CmcVersion.isMc1_12()) { + return Sound.valueOf("BLOCK_NOTE_HARP"); + } else return Sound.valueOf("BLOCK_NOTE_BLOCK_HARP"); } } diff --git a/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/config/Converter.java b/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/config/Converter.java index 27953b2..a70060d 100644 --- a/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/config/Converter.java +++ b/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/config/Converter.java @@ -4,7 +4,6 @@ import net.t2code.opsecurity.config.opWhitelist.OPWhitelist; import net.t2code.opsecurity.config.permissionWhitelist.PermissionWhitelist; import net.t2code.opsecurity.objects.PlayerObject; import net.t2code.opsecurity.system.Main; -import net.t2code.opsecurity.system.Permissions; import org.bukkit.configuration.file.YamlConfiguration; import java.io.File; diff --git a/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/language/Language.java b/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/language/Language.java index a630b22..c57ceb7 100644 --- a/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/language/Language.java +++ b/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/language/Language.java @@ -13,7 +13,7 @@ public enum Language { "[prefix] Du hast keine Berechtigung für OPSecurity!", "[prefix] You do not have permission for OPSecurity!"), - PlayerMustBeOnlineToOp("plugin.PlayerMustBeOnlineToOp",null, + playerMustBeOnlineToOp("plugin.PlayerMustBeOnlineToOp",null, "[prefix] Der Spieler muss online sein, um OP zu erhalten!", "[prefix] Player must be online to get op!"), @@ -29,38 +29,37 @@ public enum Language { "[prefix] Der angegebene Spieler befindet sich nicht auf der OP_Whitelist!", "[prefix] The specified player is not on the OP_Whitelist!"), - opWhitelistConsoleOnJoin("opWhitelist.consoleOnJoin",null, + opWhitelistNotifyOnJoin("opWhitelist.notify.onJoin",null, "[prefix] Spieler [player] ist dem Server beigetreten, befindet sich aber nicht auf der OP_Whitelist!", "[prefix] Player [player] is joined to the server but is not on the OP_Whitelist!"), + opWhitelistNotifyDeop("opWhitelist.notify.deop",null, + "[prefix] Spieler [player] wurde OP entfernt da er nicht auf der Spielerliste steht!", + "[prefix] Player [player] was removed OP because he is not on the playerlist!"), + + opWhitelistNotifyKick("opWhitelist.notify.kick",null, + "[prefix] Spieler [player] wurde gekickt, da er nicht auf der OP_Whitelist steht!", + "[prefix] Player [player] was kicked because he is not on the OP_Whitelist!"), + opWhitelistDeop("opWhitelist.deop",null, "[prefix] Dir wurde OP entfernt da du dazu keine Permission besitzt.", "[prefix] You have been removed from OP because you do not have permission."), - opWhitelistConsoleDeop("opWhitelist.consoleDeop",null, - "[prefix] Spieler [player] wurde OP entfernt da er nicht auf der Spielerliste steht!", - "[prefix] Player [player] was removed OP because he is not on the playerlist!"), - opWhitelistKick("opWhitelist.kick",null, "Du hast op bist dazu aber nicht berechtigt, deswegen wurdest du gekickt!", "You have op but are not authorized to do so, that's why you were kicked!"), - opWhitelistConsoleKick("opWhitelist.consoleKick",null, - "[prefix] Spieler [player] wurde gekickt, da er nicht auf der OP_Whitelist steht!", - "[prefix] Player [player] was kicked because he is not on the OP_Whitelist!"), - - permissionWhitelistConsoleOnJoin("permissionWhitelist.consoleOnJoin",null, + permissionWhitelistNotifyOnJoin("permissionWhitelist.notify.onJoin",null, "[prefix] Player [player] hat die Permission [perm] und ist dazu nicht berechtigt! [player] ist nicht in der Spielerliste!", "[prefix] Player [player] has permission [perm] and is not authorized to do so! [player] is not on the Player list!"), + permissionWhitelistNotifyKick("permissionWhitelist.notify.kick",null, + "[prefix] Spieler [player] hat die Permission [perm] und ist dazu nicht berechtigt! Daher wurde er gekickt! [player] ist nicht in der Spielerliste!", + "[prefix] Player [player] has permission [perm] and is not authorized to do so! Therefore he was kicked! [player] is not on the Player list!"), + permissionWhitelistKick("permissionWhitelist.kick",null, "Du wurdest gekickt, da du Permissions besitzt, für die du keine Berechtigung besitzt!", "You were kicked because you have permissions to which you do not have permission!"), - - permissionWhitelistConsoleKick("permissionWhitelist.consoleKick",null, - "[prefix] Spieler [player] hat die Permission [perm] und ist dazu nicht berechtigt! Daher wurde er gekickt! [player] ist nicht in der Spielerliste!", - "[prefix] Player [player] has permission [perm] and is not authorized to do so! Therefore he was kicked! [player] is not on the Player list!"), - exactKickReason("console.exactKickReason", null, "[prefix] Genauer Grund: [reason]", "[prefix] Exact reason: [reason]"); diff --git a/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/opWhitelist/OPWhitelist.java b/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/opWhitelist/OPWhitelist.java index f7eb85e..54bd465 100644 --- a/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/opWhitelist/OPWhitelist.java +++ b/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/opWhitelist/OPWhitelist.java @@ -1,6 +1,6 @@ package net.t2code.opsecurity.config.opWhitelist; -import net.t2code.opsecurity.config.ConfigParam; +import net.t2code.opsecurity.enums.ConfigParam; import java.util.Arrays; import java.util.List; @@ -23,6 +23,7 @@ public enum OPWhitelist { public String valuePlayerName; public String valuePlayerUuid; public List valueStringList; + public Boolean valueBoolean; public ConfigParam cEnum; diff --git a/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/permissionWhitelist/PermissionWhitelist.java b/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/permissionWhitelist/PermissionWhitelist.java index f0e95ca..692497f 100644 --- a/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/permissionWhitelist/PermissionWhitelist.java +++ b/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/permissionWhitelist/PermissionWhitelist.java @@ -1,6 +1,6 @@ package net.t2code.opsecurity.config.permissionWhitelist; -import net.t2code.opsecurity.config.ConfigParam; +import net.t2code.opsecurity.enums.ConfigParam; import java.util.Arrays; import java.util.List; diff --git a/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/ConfigParam.java b/OpSecurity V3/src/main/java/net/t2code/opsecurity/enums/ConfigParam.java similarity index 74% rename from OpSecurity V3/src/main/java/net/t2code/opsecurity/config/ConfigParam.java rename to OpSecurity V3/src/main/java/net/t2code/opsecurity/enums/ConfigParam.java index b8fe1ef..fc8b15c 100644 --- a/OpSecurity V3/src/main/java/net/t2code/opsecurity/config/ConfigParam.java +++ b/OpSecurity V3/src/main/java/net/t2code/opsecurity/enums/ConfigParam.java @@ -1,4 +1,4 @@ -package net.t2code.opsecurity.config; +package net.t2code.opsecurity.enums; public enum ConfigParam { STRING, diff --git a/OpSecurity V3/src/main/java/net/t2code/opsecurity/enums/OpCommandRequest.java b/OpSecurity V3/src/main/java/net/t2code/opsecurity/enums/OpCommandRequest.java new file mode 100644 index 0000000..fcbb7d5 --- /dev/null +++ b/OpSecurity V3/src/main/java/net/t2code/opsecurity/enums/OpCommandRequest.java @@ -0,0 +1,7 @@ +package net.t2code.opsecurity.enums; + +public enum OpCommandRequest { + ok, + mustOnline, + notWhitelisted +} diff --git a/OpSecurity V3/src/main/java/net/t2code/opsecurity/events/Events.java b/OpSecurity V3/src/main/java/net/t2code/opsecurity/events/Events.java new file mode 100644 index 0000000..e5213ea --- /dev/null +++ b/OpSecurity V3/src/main/java/net/t2code/opsecurity/events/Events.java @@ -0,0 +1,83 @@ +package net.t2code.opsecurity.events; + +import net.t2code.opsecurity.Util; +import net.t2code.opsecurity.config.config.Config; +import net.t2code.opsecurity.check.OpCheck; +import net.t2code.opsecurity.check.PermissionCheck; +import net.t2code.opsecurity.system.Main; +import net.t2code.opsecurity.system.Permissions; +import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; +import net.t2code.t2codelib.SPIGOT.api.update.T2CupdateAPI; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.*; + +public class Events implements Listener { + public static void notifyPlayer(String msg) { + if (!Config.notifyJoinWarning.valueBoolean) return; + for (Player notifyPlayer : Bukkit.getOnlinePlayers()) { + if (!notifyPlayer.hasPermission(Permissions.notify)) continue; + T2Csend.player(notifyPlayer, msg); + if (Config.notifySoundEnable.valueBoolean) notifyPlayer.playSound(notifyPlayer.getLocation(), Config.notifySoundValue.sound, 3, 1); + } + } + + @EventHandler + public void CommandSendEvent(PlayerCommandPreprocessEvent event) { + if (!Config.checkOnCommand.valueBoolean) return; + Player player = event.getPlayer(); + T2Csend.debugmsg(Main.getPlugin(), "1 "+ OpCheck.onCheck(player,false)); + T2Csend.debugmsg(Main.getPlugin(), "1 "+ PermissionCheck.onCheck(player,false)); + if (OpCheck.onCheck(player, false) || PermissionCheck.onCheck(player, false)) { + if (event.isCancelled()) return; + event.setCancelled(true); + } + } + + @EventHandler + public void PlayerChatEvent(PlayerChatEvent event) { + if (!Config.checkOnChat.valueBoolean) return; + Player player = event.getPlayer(); + T2Csend.debugmsg(Main.getPlugin(), "2 "+OpCheck.onCheck(player,false)); + T2Csend.debugmsg(Main.getPlugin(), "2 "+PermissionCheck.onCheck(player,false)); + if (OpCheck.onCheck(player, false) || PermissionCheck.onCheck(player, false)) { + if (event.isCancelled()) return; + event.setCancelled(true); + } + } + + @EventHandler + public void onInteract(PlayerInteractEvent event) { + if (!Config.checkOnInteract.valueBoolean) return; + Player player = event.getPlayer(); + Bukkit.getScheduler().runTaskLaterAsynchronously(Main.getPlugin(), new Runnable() { + @Override + public void run() { + if (OpCheck.onCheck(player, false) || PermissionCheck.onCheck(player, false)) { + event.setCancelled(true); + } + } + }, 1L); + } + + @EventHandler + public void onJoinCheck(PlayerJoinEvent event) { + if (!Config.checkOnJoin.valueBoolean) return; + Player player = event.getPlayer(); + Bukkit.getScheduler().runTaskLaterAsynchronously(Main.getPlugin(), new Runnable() { + @Override + public void run() { + OpCheck.onCheck(player, true); + PermissionCheck.onCheck(player, true); + } + }, 1L); + } + + @EventHandler + public void onJoinEvent(PlayerLoginEvent event) { + Player player = event.getPlayer(); + T2CupdateAPI.join(Main.getPlugin(), Util.getPrefix(), Permissions.updatemsg, player, Util.getSpigotID(), Util.getDiscord()); + } +} diff --git a/OpSecurity V3/src/main/java/net/t2code/opsecurity/events/OpCommand.java b/OpSecurity V3/src/main/java/net/t2code/opsecurity/events/OpCommand.java new file mode 100644 index 0000000..f387896 --- /dev/null +++ b/OpSecurity V3/src/main/java/net/t2code/opsecurity/events/OpCommand.java @@ -0,0 +1,76 @@ +package net.t2code.opsecurity.events; + +import net.t2code.opsecurity.config.language.Language; +import net.t2code.opsecurity.config.opWhitelist.OPWhitelist; +import net.t2code.opsecurity.enums.OpCommandRequest; +import net.t2code.opsecurity.objects.PlayerCash; +import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; +import net.t2code.t2codelib.SPIGOT.api.player.T2CnameHistory; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; +import org.bukkit.event.server.ServerCommandEvent; + +import java.io.IOException; + +public class OpCommand implements Listener { + @EventHandler + public void onOPServer(ServerCommandEvent event) { + if (!OPWhitelist.enable.valueBoolean) return; + if ((event.getCommand().toLowerCase().startsWith("op ") || event.getCommand().toLowerCase().startsWith("minecraft:op "))) { + switch (isNotOPWTL(event.getCommand())) { + case mustOnline: + T2Csend.sender(event.getSender(), Language.playerMustBeOnlineToOp.value); + event.setCancelled(true); + break; + case notWhitelisted: + T2Csend.sender(event.getSender(), Language.opWhitelistOpCommand.value); + event.setCancelled(true); + break; + } + } + } + + @EventHandler + public void onOpPlayer(PlayerCommandPreprocessEvent event) { + if (!OPWhitelist.enable.valueBoolean) return; + if ((event.getMessage().toLowerCase().startsWith("/op ") || event.getMessage().toLowerCase().startsWith("/minecraft:op "))) { + switch (isNotOPWTL(event.getMessage())) { + case mustOnline: + T2Csend.player(event.getPlayer(), Language.playerMustBeOnlineToOp.value); + event.setCancelled(true); + break; + case notWhitelisted: + T2Csend.player(event.getPlayer(), Language.opWhitelistOpCommand.value); + event.setCancelled(true); + break; + } + } + } + + private OpCommandRequest isNotOPWTL(String command) { + if (command.charAt(0) == '/') command = command.replaceFirst("/", ""); + String arg = command.replace("op ", ""); + Player target = Bukkit.getPlayer(arg); + if (OPWhitelist.playerMustBeOnlineToOp.valueBoolean) { + if (target == null) return OpCommandRequest.mustOnline; + if (!PlayerCash.getOpHashMap().get(target.getName()).playerName.equals(target.getName())) return OpCommandRequest.notWhitelisted; + if (!PlayerCash.getOpHashMap().get(target.getName()).uuid.equals(target.getUniqueId().toString().replace("-", ""))) return OpCommandRequest.notWhitelisted; + } + String targetUUID; + if (target != null) { + targetUUID = target.getUniqueId().toString(); + } else { + try { + targetUUID = T2CnameHistory.NameLookup.getPlayerUUID(arg); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + if (!PlayerCash.getOpHashMap().get(target.getName()).playerName.equals(arg)) return OpCommandRequest.notWhitelisted; + if (!PlayerCash.getOpHashMap().get(target.getName()).uuid.equals(targetUUID.replace("-", ""))) return OpCommandRequest.notWhitelisted; + return OpCommandRequest.ok; + } +} diff --git a/OpSecurity V3/src/main/java/net/t2code/opsecurity/events/PlugManCommand.java b/OpSecurity V3/src/main/java/net/t2code/opsecurity/events/PlugManCommand.java new file mode 100644 index 0000000..35acc1d --- /dev/null +++ b/OpSecurity V3/src/main/java/net/t2code/opsecurity/events/PlugManCommand.java @@ -0,0 +1,38 @@ +// This claas was created by JaTiTV + +package net.t2code.opsecurity.events; + +import net.t2code.opsecurity.Util; +import net.t2code.opsecurity.system.Main; +import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; +import org.bukkit.event.server.ServerCommandEvent; + +public class PlugManCommand implements Listener { + + @EventHandler + public void onOPServer(ServerCommandEvent event) { + if ((event.getCommand().toLowerCase().contains("plugman disable") && event.getCommand().toLowerCase().contains(Main.getPlugin().getDescription().getName().toLowerCase())) + || (event.getCommand().toLowerCase().contains("plugman reload") && event.getCommand().toLowerCase().contains(Main.getPlugin().getDescription().getName().toLowerCase())) + || (event.getCommand().toLowerCase().contains("plugman unload") && event.getCommand().toLowerCase().contains(Main.getPlugin().getDescription().getName().toLowerCase())) + || (event.getCommand().toLowerCase().contains("plugman restart") && event.getCommand().toLowerCase().contains(Main.getPlugin().getDescription().getName().toLowerCase())) + ) { + event.setCancelled(true); + T2Csend.console(Util.getPrefix() + " §4OPSecurity cannot be deactivated!"); + } + } + + @EventHandler + public void onOpPlayer(PlayerCommandPreprocessEvent event) { + if (event.getMessage().toLowerCase().startsWith("/plugman disable") && event.getMessage().toLowerCase().contains(Main.getPlugin().getDescription().getName().toLowerCase()) + || (event.getMessage().toLowerCase().startsWith("/plugman reload") && event.getMessage().toLowerCase().contains(Main.getPlugin().getDescription().getName().toLowerCase())) + || (event.getMessage().toLowerCase().startsWith("/plugman unload") && event.getMessage().toLowerCase().contains(Main.getPlugin().getDescription().getName().toLowerCase())) + || (event.getMessage().toLowerCase().startsWith("/plugman restart") && event.getMessage().toLowerCase().contains(Main.getPlugin().getDescription().getName().toLowerCase())) + ) { + event.setCancelled(true); + T2Csend.player(event.getPlayer(), Util.getPrefix() + " §4OPSecurity cannot be deactivated!"); + } + } +} diff --git a/OpSecurity V3/src/main/java/net/t2code/opsecurity/objects/PlayerCash.java b/OpSecurity V3/src/main/java/net/t2code/opsecurity/objects/PlayerCash.java index d95245c..05e5826 100644 --- a/OpSecurity V3/src/main/java/net/t2code/opsecurity/objects/PlayerCash.java +++ b/OpSecurity V3/src/main/java/net/t2code/opsecurity/objects/PlayerCash.java @@ -1,8 +1,12 @@ package net.t2code.opsecurity.objects; +import lombok.Getter; + import java.util.HashMap; public class PlayerCash { - public static HashMap opHashMap = new HashMap(); - public static HashMap permissionHashMap = new HashMap(); + @Getter + private static HashMap opHashMap = new HashMap(); + @Getter + private static HashMap permissionHashMap = new HashMap(); } diff --git a/OpSecurity V3/src/main/java/net/t2code/opsecurity/objects/PlayerObject.java b/OpSecurity V3/src/main/java/net/t2code/opsecurity/objects/PlayerObject.java index 55bd1cf..03233d9 100644 --- a/OpSecurity V3/src/main/java/net/t2code/opsecurity/objects/PlayerObject.java +++ b/OpSecurity V3/src/main/java/net/t2code/opsecurity/objects/PlayerObject.java @@ -1,7 +1,5 @@ package net.t2code.opsecurity.objects; -import java.util.UUID; - public class PlayerObject { public String playerName; public String uuid; diff --git a/OpSecurity V3/src/main/java/net/t2code/opsecurity/system/BungeeSenderReceiver.java b/OpSecurity V3/src/main/java/net/t2code/opsecurity/system/BungeeSenderReceiver.java new file mode 100644 index 0000000..ac27372 --- /dev/null +++ b/OpSecurity V3/src/main/java/net/t2code/opsecurity/system/BungeeSenderReceiver.java @@ -0,0 +1,41 @@ +package net.t2code.opsecurity.system; + +import net.t2code.opsecurity.events.Events; +import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.plugin.messaging.PluginMessageListener; + +import java.io.*; + +public class BungeeSenderReceiver implements PluginMessageListener { + + public static void sendToBungee(String information) { + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + DataOutputStream output = new DataOutputStream(stream); + try { + output.writeUTF(information.toString()); + } catch (IOException e) { + e.printStackTrace(); + } + for (Player player : Bukkit.getOnlinePlayers()) { + player.sendPluginMessage(Main.getPlugin(), "t2c:opsec", stream.toByteArray()); + return; + } + } + + @Override + public void onPluginMessageReceived(String channel, Player player, byte[] message) { + DataInputStream stream = new DataInputStream(new ByteArrayInputStream(message)); + T2Csend.debug(Main.getPlugin(), "stream: " + stream.toString()); + try { + String subChannel = stream.readUTF(); + String information = stream.readUTF(); + if (subChannel.equals("T2Cconsole")) { + Events.notifyPlayer(information); + } + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/OpSecurity V3/src/main/java/net/t2code/opsecurity/system/Load.java b/OpSecurity V3/src/main/java/net/t2code/opsecurity/system/Load.java index 5d969be..d93ccff 100644 --- a/OpSecurity V3/src/main/java/net/t2code/opsecurity/system/Load.java +++ b/OpSecurity V3/src/main/java/net/t2code/opsecurity/system/Load.java @@ -1,12 +1,15 @@ package net.t2code.opsecurity.system; import net.t2code.opsecurity.Util; +import net.t2code.opsecurity.command.CmdExecuter; import net.t2code.opsecurity.config.FileSelect; import net.t2code.opsecurity.config.config.Converter; -import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; +import net.t2code.opsecurity.events.Events; +import net.t2code.opsecurity.events.OpCommand; +import net.t2code.opsecurity.events.PlugManCommand; +import net.t2code.opsecurity.check.Timer; import net.t2code.t2codelib.SPIGOT.api.messages.T2Ctemplate; -import net.t2code.t2codelib.SPIGOT.api.plugins.T2CpluginCheck; -import net.t2code.t2codelib.SPIGOT.api.plugins.T2CpluginManager; +import net.t2code.t2codelib.SPIGOT.api.register.T2Cregister; import net.t2code.t2codelib.SPIGOT.api.update.T2CupdateAPI; import java.util.List; @@ -16,25 +19,25 @@ public class Load { public static void onLoad(Main plugin, List autor, String version) { long long_ = T2Ctemplate.onLoadHeader(Util.getPrefix(), autor, version, Util.getSpigot(), Util.getDiscord()); - if (T2CpluginCheck.opSec()){ - T2CpluginManager.disable("OPSecurity"); - T2Csend.warning(plugin,"OPSecurity has been deactivated, because T2C-OPSecurity is a newer version!"); - } try { Converter.convert(); - } catch (Exception ex){ - plugin.getLogger().log(Level.SEVERE,ex.getMessage()); + } catch (Exception ex) { + plugin.getLogger().log(Level.SEVERE, ex.getMessage()); ex.printStackTrace(); } - FileSelect.selectConfig(); FileSelect.selectLanguage(); FileSelect.selectOpWhitelist(); FileSelect.selectPermissionWhitelist(); - //plugin.getCommand("t2c-opsecurity").setExecutor(new CmdExecuter()); + plugin.getCommand("t2c-opsecurity").setExecutor(new CmdExecuter()); + T2Cregister.listener(new OpCommand(), plugin); + T2Cregister.listener(new PlugManCommand(), plugin); + T2Cregister.listener(new Events(), plugin); + + Timer.refreshTimer(); Permissions.register(); T2CupdateAPI.onUpdateCheck(plugin, Util.getPrefix(), Util.getSpigotID(), Util.getDiscord()); Metrics.Bstats(plugin, Util.getBstatsID()); diff --git a/OpSecurity V3/src/main/java/net/t2code/opsecurity/system/Main.java b/OpSecurity V3/src/main/java/net/t2code/opsecurity/system/Main.java index 2ae2a3a..ea221aa 100644 --- a/OpSecurity V3/src/main/java/net/t2code/opsecurity/system/Main.java +++ b/OpSecurity V3/src/main/java/net/t2code/opsecurity/system/Main.java @@ -42,7 +42,7 @@ public final class Main extends JavaPlugin { if (t2codeLib) T2Ctemplate.onDisable(Util.getPrefix(), autor, version, Util.getSpigot(), Util.getDiscord()); } - public static Boolean pluginNotFound(String pl, Integer spigotID, String ver) { + private static Boolean pluginNotFound(String pl, Integer spigotID, String ver) { if (Bukkit.getPluginManager().getPlugin(pl) == null) { plugin.getLogger().log(Level.SEVERE, "Plugin can not be loaded!"); Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + " §e" + pl + " §4could not be found. Please download it here: " diff --git a/OpSecurity V3/src/main/resources/config.yml b/OpSecurity V3/src/main/resources/config.yml deleted file mode 100644 index 038d58e..0000000 --- a/OpSecurity V3/src/main/resources/config.yml +++ /dev/null @@ -1,19 +0,0 @@ -Plugin: - Language: english - OnlyOPcanUseThePlugin: true -Check: - OnJoin: true - OnInteract: true - OnCommand: true - OnChat: true - Timer: - Enable: true - RefreshInSec: 60 -Kick: - Command: minecraft:kick [player] [reason] -Notify: - JoinWarn: - Enable: true - Sound: - Enable: true - Sound: BLOCK_NOTE_BLOCK_HARP \ No newline at end of file diff --git a/OpSecurity V3/src/main/resources/opWhitelist.yml b/OpSecurity V3/src/main/resources/opWhitelist.yml deleted file mode 100644 index b36bd9c..0000000 --- a/OpSecurity V3/src/main/resources/opWhitelist.yml +++ /dev/null @@ -1,20 +0,0 @@ -opWhitelist: - enable: false - playerMustBeOnlineToOp: true - noOpPlayerDeop: - enable: true - playerSendMessage: true - noOpPlayerKick: - enable: true - customCommands: - enable: false - commands: - - kick [player] &4You have op but are not authorized to do so, that's why you - were kicked! - whitelist: - player1: - name: 'PlayerName' - uuid: '00000000000000000000000000000000' - player2: - name: 'PlayerName' - uuid: '00000000000000000000000000000000' \ No newline at end of file diff --git a/OpSecurity V3/src/main/resources/permissionWhitelist.yml b/OpSecurity V3/src/main/resources/permissionWhitelist.yml deleted file mode 100644 index 06c68f1..0000000 --- a/OpSecurity V3/src/main/resources/permissionWhitelist.yml +++ /dev/null @@ -1,18 +0,0 @@ -permissionWhitelist: - enable: false - playerWithPermissionKick: true - permissions: - - '*' - - opsecurity.admin - customCommands: - enable: false - commands: - - lp user [player] permission unset * - - lp user [player] permission unset opsecurity.admin - whitelist: - player1: - name: 'PlayerName' - uuid: '00000000000000000000000000000000' - player2: - name: 'PlayerName' - uuid: '00000000000000000000000000000000' diff --git a/OpSecurity V3/src/main/resources/plugin.yml b/OpSecurity V3/src/main/resources/plugin.yml index d9766c1..936db6c 100644 --- a/OpSecurity V3/src/main/resources/plugin.yml +++ b/OpSecurity V3/src/main/resources/plugin.yml @@ -1,4 +1,5 @@ name: T2C-OPSecurity +provides: [OPSecurity] version: '${project.version}' main: net.t2code.opsecurity.system.Main api-version: 1.13