diff --git a/OpSecurity V2/pom.xml b/OpSecurity V2/pom.xml index a7a3833..d8b7fb8 100644 --- a/OpSecurity V2/pom.xml +++ b/OpSecurity V2/pom.xml @@ -6,7 +6,7 @@ de.jatitv OPSecurity - 2.4.2 + 2.4.3 jar OPSecurity @@ -73,7 +73,8 @@ net.t2code T2CodeLib - 10.1 + DEV-13.0 + dev-5 diff --git a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/Util.java b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/Util.java index f094cb2..6b71edd 100644 --- a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/Util.java +++ b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/Util.java @@ -1,34 +1,32 @@ package de.jatitv.opsecurity; public class Util { - private static double requiredT2CodeLibVersion = 10.1; - private static String Prefix = "§8[§2OP§4Security§8]"; - private static Integer SpigotID = 90739; - private static Integer BstatsID = 10858; - private static String Spigot = "https://www.spigotmc.org/resources/" + SpigotID; - private static String Discord = "http://dc.t2code.net"; - public static double getRequiredT2CodeLibVersion() { - return requiredT2CodeLibVersion; + public static String getInfoText() { + return ""; + } + + public static String getRequiredT2CodeLibVersion() { + return "13.0"; } public static String getPrefix() { - return Prefix; + return "§8[§2OP§4Security§8]"; } public static Integer getSpigotID() { - return SpigotID; + return 90739; } public static Integer getBstatsID() { - return BstatsID; + return 10858; } public static String getSpigot() { - return Spigot; + return "https://www.spigotmc.org/resources/" + getSpigotID(); } public static String getDiscord() { - return Discord; + return net.t2code.t2codelib.Util.getDiscord(); } } diff --git a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/cmdManagement/CmdExecuter.java b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/cmdManagement/CmdExecuter.java index 39b5c4c..57f183a 100644 --- a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/cmdManagement/CmdExecuter.java +++ b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/cmdManagement/CmdExecuter.java @@ -23,7 +23,7 @@ public class CmdExecuter implements CommandExecutor, TabCompleter { if (args.length == 0) { Commands.mainCommand(sender); } else { - if (SelectConfig.OnlyOPcanUseThePlugin) { + if (SelectConfig.onlyOpCanUseThePlugin) { if (!sender.isOp()) { sender.sendMessage(Util.getPrefix() + "§cOnly OPs can use OPSecurity!"); return false; diff --git a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/cmdManagement/Commands.java b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/cmdManagement/Commands.java index 76d3af6..563375e 100644 --- a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/cmdManagement/Commands.java +++ b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/cmdManagement/Commands.java @@ -6,22 +6,16 @@ import de.jatitv.opsecurity.config.config.SelectConfig; import de.jatitv.opsecurity.system.Load; import de.jatitv.opsecurity.system.Main; import de.jatitv.opsecurity.system.Permissions; -import net.md_5.bungee.api.chat.ClickEvent; -import net.md_5.bungee.api.chat.TextComponent; -import net.t2code.lib.Spigot.Lib.messages.T2CodeTemplate; -import net.t2code.lib.Spigot.Lib.messages.send; -import net.t2code.lib.Spigot.Lib.update.UpdateAPI; +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; -import org.bukkit.plugin.Plugin; - -import java.util.List; public class Commands { public static void mainCommand(CommandSender sender) { - if (SelectConfig.OnlyOPcanUseThePlugin) { + if (SelectConfig.onlyOpCanUseThePlugin) { if (!sender.isOp()) { sender.sendMessage(Util.getPrefix() + "§cOnly OPs can use OPSecurity!"); return; @@ -41,17 +35,17 @@ public class Commands { } if (sender instanceof Player) { Player player = (Player) sender; - if (!Main.opHashMap.containsKey(player.getName().toLowerCase())) { + if (!Main.getOpHashMap().containsKey(player.getName().toLowerCase())) { sender.sendMessage(Util.getPrefix() + " §4You are not on the Whitelist!"); return; } - if (!Main.opHashMap.get(player.getName().toLowerCase()).UUID.equals(player.getUniqueId().toString().replace("-", ""))) { + if (!Main.getOpHashMap().get(player.getName().toLowerCase()).UUID.equals(player.getUniqueId().toString().replace("-", ""))) { sender.sendMessage(Util.getPrefix() + " §4You are not on the Whitelist!"); return; } - send.player(player, SelectMessages.ReloadStart); + T2Csend.player(player, SelectMessages.ReloadStart); } - if (sender instanceof Player) send.player((Player) sender, SelectMessages.ReloadEnd); + if (sender instanceof Player) T2Csend.player((Player) sender, SelectMessages.ReloadEnd); Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + "§8-------------------------------"); Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + " §6Plugin reload..."); Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + "§8-------------------------------"); @@ -67,6 +61,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 V2/src/main/java/de/jatitv/opsecurity/config/config/ConfigConvert.java b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/config/config/ConfigConvert.java index d6be612..b7c4f8c 100644 --- a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/config/config/ConfigConvert.java +++ b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/config/config/ConfigConvert.java @@ -3,7 +3,7 @@ package de.jatitv.opsecurity.config.config; import de.jatitv.opsecurity.Util; import de.jatitv.opsecurity.system.Main; import de.jatitv.opsecurity.system.NameHistory; -import net.t2code.lib.Spigot.Lib.messages.send; +import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; import org.bukkit.configuration.file.YamlConfiguration; import java.io.File; import java.io.IOException; @@ -49,7 +49,7 @@ public class ConfigConvert { } private static void configConvert() { - File config = new File(Main.plugin.getDataFolder().getPath(), "config.yml"); + File config = new File(Main.getPlugin().getDataFolder().getPath(), "config.yml"); YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config); if (yamlConfiguration.get("ConfigVersion") == null) { @@ -121,11 +121,11 @@ public class ConfigConvert { } } public static void convert(String oldConfig, String newConfig) { - send.console(Util.getPrefix() + " §5Convert: §4" + oldConfig + " §5--> §2" + newConfig); + T2Csend.console(Util.getPrefix() + " §5Convert: §4" + oldConfig + " §5--> §2" + newConfig); } public static void convert(String config, String oldConfig, String newConfig) { - send.console(Util.getPrefix() + " §5Convert: §e" + config + " §4" + oldConfig + " §5--> §2" + newConfig); + T2Csend.console(Util.getPrefix() + " §5Convert: §e" + config + " §4" + oldConfig + " §5--> §2" + newConfig); } private static void convertPlayer(String oldPath, String newPath, List oldPlayer, YamlConfiguration yamlConfiguration) { @@ -133,7 +133,7 @@ public class ConfigConvert { try { String uuid = NameHistory.getPlayerUUID(Player); if (uuid == null) { - send.warning(Main.plugin, + T2Csend.warning(Main.getPlugin(), "The UUID of the player §6" + Player + " §ecould not be found. Please check the config.yml and / or if the player exists / if the player name is correct!"); convert("config.yml", oldPath + ": " + Player, newPath + ": " + Player + ": UUID: Player UUID not found!"); yamlConfiguration.set(newPath + Player + ".UUID", "Player UUID not found!"); diff --git a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/config/config/CreateConfig.java b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/config/config/CreateConfig.java index f95a0e3..dfb9fe6 100644 --- a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/config/config/CreateConfig.java +++ b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/config/config/CreateConfig.java @@ -3,7 +3,7 @@ package de.jatitv.opsecurity.config.config; import de.jatitv.opsecurity.system.Main; -import net.t2code.lib.Spigot.Lib.minecraftVersion.MCVersion; +import net.t2code.t2codelib.SPIGOT.api.minecraftVersion.T2CmcVersion; import org.bukkit.Bukkit; import org.bukkit.configuration.file.YamlConfiguration; @@ -68,7 +68,7 @@ public class CreateConfig { public static void configCreate() { Bukkit.getConsoleSender().sendMessage(Prefix + "§4config.yml load..."); - File configYML = new File(Main.plugin.getDataFolder().getPath(), "config.yml"); + File configYML = new File(Main.getPlugin().getDataFolder().getPath(), "config.yml"); YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(configYML); yamlConfiguration.set("ConfigVersion", ConfigVersion); @@ -88,9 +88,9 @@ public class CreateConfig { set("Notify.JoinWarn.Enable", Notify_Warn, yamlConfiguration); set("Notify.Sound.Enable", Notify_Sound_Enable, yamlConfiguration); - if (MCVersion.minecraft1_8) { + if (T2CmcVersion.isMc1_8()) { set("Notify.Sound.Sound", Notify_Sound_1_8, yamlConfiguration); - } else if (MCVersion.minecraft1_9 || MCVersion.minecraft1_10 || MCVersion.minecraft1_11 || MCVersion.minecraft1_12) { + } else if (T2CmcVersion.isMc1_9() || T2CmcVersion.isMc1_10() || T2CmcVersion.isMc1_11() || T2CmcVersion.isMc1_12()) { set("Notify.Sound.Sound", Notify_Sound_1_9_to_1_12, yamlConfiguration); } else set("Notify.Sound.Sound", Notify_Sound_from_1_13, yamlConfiguration); diff --git a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/config/config/SelectConfig.java b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/config/config/SelectConfig.java index 8a742df..9a09182 100644 --- a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/config/config/SelectConfig.java +++ b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/config/config/SelectConfig.java @@ -6,8 +6,7 @@ import de.jatitv.opsecurity.Util; import de.jatitv.opsecurity.objects.PlayerObject; import de.jatitv.opsecurity.system.Main; import de.jatitv.opsecurity.system.Permissions; -import net.t2code.lib.Spigot.Lib.messages.send; -import net.t2code.lib.Spigot.Lib.yamlConfiguration.Config; +import net.t2code.t2codelib.SPIGOT.api.yaml.T2Cconfig; import org.bukkit.Sound; import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.YamlConfiguration; @@ -20,47 +19,43 @@ public class SelectConfig { // Config - public static Integer ConfigVersion; + public static Integer configVersion; - public static Boolean UpdateCheckOnJoin; + public static Boolean updateCheckOnJoin; public static String language; - public static Boolean OnlyOPcanUseThePlugin; - public static Boolean CheckOnJoin; - public static Boolean CheckOnInteract; - public static Boolean CheckOnCommand; - public static Boolean CheckOnChat; + public static Boolean onlyOpCanUseThePlugin; + public static Boolean checkOnJoin; + public static Boolean checkOnInteract; + public static Boolean checkOnCommand; + public static Boolean checkOnChat; - public static String KickCommand; + public static String kickCommand; - public static Boolean Notify_Warn; - public static Boolean Notify_Sound_Enable; - public static Sound Notify_Sound; - public static String Notify_Sound_input; + public static Boolean notifyWarn; + public static Boolean notifySoundEnable; + public static Sound notifySound; + public static String notifySoundInput; - public static Boolean Timer_Enable; - public static int RefreshTime; + public static Boolean timerEnable; + public static int refreshTime; - public static Boolean OP_Whitelist_Enable; - public static Boolean PlayerMustBeOnlineToOp; + public static Boolean opWhitelistEnable; + public static Boolean playerMustBeOnlineToOp; - public static Boolean no_OP_Player_deop; + public static Boolean noOPPlayerDeop; public static Boolean sendPlayerDEOPmsg; - public static Boolean no_OP_Player_kick; - public static Boolean customCommand_Enable; + public static Boolean noOpPlayerKick; + public static Boolean customCommandEnable; public static List customKickCommand; - public static Boolean Permission_Whitelist_Enable; + public static Boolean permissionWhitelistEnable; public static List permissions; - public static Boolean PlayerWhithPermission_kick; - public static Boolean Perm_Command_enable; - public static List Perm_Command; - - public static Boolean LP_Enable; - public static Boolean LP_AllowFromConsole; - public static List LP_Whitelist; + public static Boolean playerWhithPermissionKick; + public static Boolean permCommandEnable; + public static List permCommand; //help @@ -80,44 +75,46 @@ public class SelectConfig { } public static void onSelect() { - File configYML = new File(Main.plugin.getDataFolder().getPath(), "config.yml"); + File configYML = new File(Main.getPlugin().getDataFolder().getPath(), "config.yml"); YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(configYML); - Main.opHashMap.clear(); - Main.permissionHashMap.clear(); + Main.getOpHashMap().clear(); + Main.getPermissionHashMap().clear(); - ConfigVersion = yamlConfiguration.getInt("ConfigVersion"); + configVersion = yamlConfiguration.getInt("ConfigVersion"); - UpdateCheckOnJoin = yamlConfiguration.getBoolean("Plugin.UpdateCheckOnJoin"); + updateCheckOnJoin = yamlConfiguration.getBoolean("Plugin.UpdateCheckOnJoin"); language = yamlConfiguration.getString("Plugin.language"); - OnlyOPcanUseThePlugin = yamlConfiguration.getBoolean("Plugin.OnlyOPcanUseThePlugin"); - CheckOnJoin = yamlConfiguration.getBoolean("Check.OnJoin"); - CheckOnInteract = yamlConfiguration.getBoolean("Check.OnInteract"); - CheckOnCommand = yamlConfiguration.getBoolean("Check.OnCommand"); - CheckOnChat = yamlConfiguration.getBoolean("Check.OnChat"); - Timer_Enable = yamlConfiguration.getBoolean("Check.Timer.Enable"); - RefreshTime = yamlConfiguration.getInt("Check.Timer.RefreshTime_inSec"); + onlyOpCanUseThePlugin = yamlConfiguration.getBoolean("Plugin.OnlyOPcanUseThePlugin"); + checkOnJoin = yamlConfiguration.getBoolean("Check.OnJoin"); + checkOnInteract = yamlConfiguration.getBoolean("Check.OnInteract"); + checkOnCommand = yamlConfiguration.getBoolean("Check.OnCommand"); + checkOnChat = yamlConfiguration.getBoolean("Check.OnChat"); + timerEnable = yamlConfiguration.getBoolean("Check.Timer.Enable"); + refreshTime = yamlConfiguration.getInt("Check.Timer.RefreshTime_inSec"); - KickCommand = yamlConfiguration.getString("Kick.Command"); - Notify_Warn = yamlConfiguration.getBoolean("Notify.JoinWarn.Enable"); - Notify_Sound_Enable = yamlConfiguration.getBoolean("Notify.Sound.Enable"); - Notify_Sound_input = yamlConfiguration.getString("Notify.Sound.Sound"); + kickCommand = yamlConfiguration.getString("Kick.Command"); + notifyWarn = yamlConfiguration.getBoolean("Notify.JoinWarn.Enable"); + notifySoundEnable = yamlConfiguration.getBoolean("Notify.Sound.Enable"); + notifySoundInput = yamlConfiguration.getString("Notify.Sound.Sound"); - OP_Whitelist_Enable = yamlConfiguration.getBoolean("OP_Whitelist.Enable"); - PlayerMustBeOnlineToOp = yamlConfiguration.getBoolean("OP_Whitelist.PlayerMustBeOnlineToOp"); + opWhitelistEnable = yamlConfiguration.getBoolean("OP_Whitelist.Enable"); + playerMustBeOnlineToOp = yamlConfiguration.getBoolean("OP_Whitelist.PlayerMustBeOnlineToOp"); + ArrayList opWhitelist = new ArrayList<>(); for (String key : yamlConfiguration.getConfigurationSection("OP_Whitelist.Whitelist").getKeys(false)) { PlayerObject player = new PlayerObject( yamlConfiguration.getString("OP_Whitelist.Whitelist." + key + ".UUID").replace("-", "")); - Main.opHashMap.put(key.toLowerCase(), player); + opWhitelist.add(player); + Main.getOpHashMap().put(key.toLowerCase(), player); } - no_OP_Player_deop = yamlConfiguration.getBoolean("OP_Whitelist.noOpPlayerDeop.Enable"); + noOPPlayerDeop = yamlConfiguration.getBoolean("OP_Whitelist.noOpPlayerDeop.Enable"); sendPlayerDEOPmsg = yamlConfiguration.getBoolean("OP_Whitelist.noOpPlayerDeop.PlayerSendMessage"); - no_OP_Player_kick = yamlConfiguration.getBoolean("OP_Whitelist.noOpPlayerKick.Enable"); - customCommand_Enable = yamlConfiguration.getBoolean("OP_Whitelist.customCommands.Enable"); + noOpPlayerKick = yamlConfiguration.getBoolean("OP_Whitelist.noOpPlayerKick.Enable"); + customCommandEnable = yamlConfiguration.getBoolean("OP_Whitelist.customCommands.Enable"); customKickCommand = yamlConfiguration.getStringList("OP_Whitelist.customCommands.Commands"); - Permission_Whitelist_Enable = yamlConfiguration.getBoolean("Permission_Whitelist.Enable"); + permissionWhitelistEnable = yamlConfiguration.getBoolean("Permission_Whitelist.Enable"); permissions = yamlConfiguration.getStringList("Permission_Whitelist.Permissions"); ArrayList permWhitelist = new ArrayList<>(); @@ -125,18 +122,15 @@ public class SelectConfig { PlayerObject player = new PlayerObject( yamlConfiguration.getString("Permission_Whitelist.Whitelist." + key + ".UUID").replace("-", "")); permWhitelist.add(player); - Main.permissionHashMap.put(key.toLowerCase(), player); + Main.getPermissionHashMap().put(key.toLowerCase(), player); } - PlayerWhithPermission_kick = yamlConfiguration.getBoolean("Permission_Whitelist.PlayerWhithPermission_kick"); - Perm_Command_enable = yamlConfiguration.getBoolean("Permission_Whitelist.customCommands.Enable"); - Perm_Command = yamlConfiguration.getStringList("Permission_Whitelist.customCommands.Commands"); - LP_Enable = yamlConfiguration.getBoolean("LuckPerms_Whitelist.Enable"); - LP_AllowFromConsole = yamlConfiguration.getBoolean("LuckPerms_Whitelist.AllowFromConsole"); - LP_Whitelist = yamlConfiguration.getStringList("LuckPerms_Whitelist.Whitelist"); + playerWhithPermissionKick = yamlConfiguration.getBoolean("Permission_Whitelist.PlayerWhithPermission_kick"); + permCommandEnable = yamlConfiguration.getBoolean("Permission_Whitelist.customCommands.Enable"); + permCommand = yamlConfiguration.getStringList("Permission_Whitelist.customCommands.Commands"); } public static void sound() { - Notify_Sound = Config.checkSound(CreateConfig.Notify_Sound_1_8, CreateConfig.Notify_Sound_1_9_to_1_12, CreateConfig.Notify_Sound_from_1_13, Notify_Sound_input, Util.getPrefix()); + notifySound = T2Cconfig.checkSound(CreateConfig.Notify_Sound_1_8, CreateConfig.Notify_Sound_1_9_to_1_12, CreateConfig.Notify_Sound_from_1_13, notifySoundInput, Util.getPrefix()); } } diff --git a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/config/languages/LanguagesCreate.java b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/config/languages/LanguagesCreate.java index 1b81816..ad5c88f 100644 --- a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/config/languages/LanguagesCreate.java +++ b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/config/languages/LanguagesCreate.java @@ -5,7 +5,7 @@ package de.jatitv.opsecurity.config.languages; import de.jatitv.opsecurity.Util; import de.jatitv.opsecurity.system.Main; -import net.t2code.lib.Spigot.Lib.messages.send; +import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; import org.bukkit.configuration.file.YamlConfiguration; import java.io.File; @@ -14,8 +14,8 @@ import java.io.IOException; public class LanguagesCreate { public static void messagesCreate() { - send.debug(Main.plugin,"§4Language files are created / updated..."); - Long long_ = Long.valueOf(System.currentTimeMillis()); + T2Csend.debug(Main.getPlugin(),"§4Language files are created / updated..."); + long long_ = System.currentTimeMillis(); File messagesDE = new File(Main.getPath(), "languages/german_messages.yml"); YamlConfiguration yamlConfigurationDE = YamlConfiguration.loadConfiguration(messagesDE); @@ -94,7 +94,7 @@ public class LanguagesCreate { } catch (IOException e) { e.printStackTrace(); } - send.console(Util.getPrefix() + " §2Language files were successfully created / updated." + " §7- §e" + (System.currentTimeMillis() - long_.longValue()) + "ms"); + T2Csend.console(Util.getPrefix() + " §2Language files were successfully created / updated." + " §7- §e" + (System.currentTimeMillis() - long_) + "ms"); } private static void set(String path, String value, YamlConfiguration config) { diff --git a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/config/languages/SelectMessages.java b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/config/languages/SelectMessages.java index 1ac7b32..4a947b4 100644 --- a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/config/languages/SelectMessages.java +++ b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/config/languages/SelectMessages.java @@ -6,8 +6,8 @@ package de.jatitv.opsecurity.config.languages; import de.jatitv.opsecurity.Util; import de.jatitv.opsecurity.config.config.SelectConfig; import de.jatitv.opsecurity.system.Main; -import net.t2code.lib.Spigot.Lib.messages.send; -import net.t2code.lib.Spigot.Lib.replace.Replace; +import net.t2code.t2codelib.SPIGOT.api.messages.T2Creplace; +import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; import org.bukkit.configuration.file.YamlConfiguration; import java.io.File; @@ -39,17 +39,19 @@ public class SelectMessages { public static void selectCreate(String Prefix) { - send.debug(Main.plugin, "§4Select language..."); - Long long_ = Long.valueOf(System.currentTimeMillis()); + T2Csend.debug(Main.getPlugin(), "§4Select language..."); + long long_ = System.currentTimeMillis(); - File msg = new File(Main.getPath(), "languages/" + SelectConfig.language + "_messages.yml"); + File msg; + + msg = new File(Main.getPath(), "languages/" + SelectConfig.language + "_messages.yml"); if (!msg.isFile()) { - send.console(Prefix); - send.console(Prefix + " §4!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); - send.console(Prefix + " §4The selected §c" + SelectConfig.language + " §4language file was not found."); - send.console(Prefix + " §6The default language §eEnglish §6is used!"); - send.console(Prefix + " §4!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); - send.console(Prefix); + T2Csend.console(Prefix); + T2Csend.console(Prefix + " §4!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); + T2Csend.console(Prefix + " §4The selected §c" + SelectConfig.language + " §4language file was not found."); + T2Csend.console(Prefix + " §6The default language §eEnglish §6is used!"); + T2Csend.console(Prefix + " §4!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); + T2Csend.console(Prefix); msg = new File(Main.getPath(), "languages/" + "english_messages.yml"); selectMSG = "english"; } else selectMSG = SelectConfig.language; @@ -74,10 +76,10 @@ public class SelectMessages { Perm_consoleKick = select("Permission_Whitelist.consoleKick", yamlConfiguration); ExactReason = select("Console.ExactKickReason", yamlConfiguration); - send.console(Prefix + " §2Language successfully selected to: §6" + selectMSG + " §7- §e" + (System.currentTimeMillis() - long_.longValue()) + "ms"); + T2Csend.console(Prefix + " §2Language successfully selected to: §6" + selectMSG + " §7- §e" + (System.currentTimeMillis() - long_) + "ms"); } private static String select(String path, YamlConfiguration yamlConfiguration) { - return Replace.replace(Util.getPrefix(),yamlConfiguration.getString(path)); + return T2Creplace.replace(Util.getPrefix(),yamlConfiguration.getString(path)); } } 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 340edd9..0c61a5a 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 @@ -5,129 +5,121 @@ import de.jatitv.opsecurity.config.languages.SelectMessages; import de.jatitv.opsecurity.config.config.SelectConfig; import de.jatitv.opsecurity.system.Main; import de.jatitv.opsecurity.system.Permissions; -import net.t2code.lib.Spigot.Lib.commands.Cmd; -import net.t2code.lib.Spigot.Lib.messages.send; -import net.t2code.lib.Spigot.Lib.replace.Replace; +import net.t2code.t2codelib.SPIGOT.api.commands.T2Ccmd; +import net.t2code.t2codelib.SPIGOT.api.messages.T2Creplace; +import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; public class Check { public static Boolean onCheck(Player player, Boolean join) { - if (SelectConfig.OP_Whitelist_Enable) { + if (SelectConfig.opWhitelistEnable) { if (player.isOp()) { if (opWhitelist(player)) { return false; } + if (join) { - send.console(Replace.replace(Util.getPrefix(),SelectMessages.OP_consoleOnJoin.replace("[player]", player.getName()))); + T2Csend.console(T2Creplace.replace(Util.getPrefix(), SelectMessages.OP_consoleOnJoin.replace("[player]", player.getName()))); } - if (SelectConfig.Notify_Warn) { + + if (SelectConfig.notifyWarn) { for (Player notifyperm : Bukkit.getOnlinePlayers()) { if (notifyperm.hasPermission(Permissions.notify)) { if (join) { - notifyperm.sendMessage(Replace.replace(Util.getPrefix(),SelectMessages.OP_consoleOnJoin.replace("[player]", player.getName()))); - } else notifyperm.sendMessage(Replace.replace(Util.getPrefix(),SelectMessages.OP_consoleKick.replace("[player]", player.getName()))); - if (SelectConfig.Notify_Sound_Enable) { - notifyperm.playSound(player.getLocation(), SelectConfig.Notify_Sound, 3, 1); + notifyperm.sendMessage(T2Creplace.replace(Util.getPrefix(), SelectMessages.OP_consoleOnJoin.replace("[player]", player.getName()))); + } else notifyperm.sendMessage(T2Creplace.replace(Util.getPrefix(), SelectMessages.OP_consoleKick.replace("[player]", player.getName()))); + if (SelectConfig.notifySoundEnable) { + notifyperm.playSound(player.getLocation(), SelectConfig.notifySound, 3, 1); } } } } - if (SelectConfig.no_OP_Player_kick && SelectConfig.no_OP_Player_deop) { + + if (SelectConfig.noOpPlayerKick && SelectConfig.noOPPlayerDeop) { player.setOp(false); - Cmd.console(SelectConfig.KickCommand.replace("[player]", player.getName()) - .replace("[reason]", Replace.replace(Util.getPrefix(),SelectMessages.OP_kick + "\n" + "\n" + SelectMessages.OP_deop))); - send.console(Replace.replace(Util.getPrefix(),SelectMessages.OP_consoleKick.replace("[player]", player.getName()))); - return true; + T2Ccmd.console(SelectConfig.kickCommand.replace("[player]", player.getName()) + .replace("[reason]", T2Creplace.replace(Util.getPrefix(), SelectMessages.OP_kick + "\n" + "\n" + SelectMessages.OP_deop))); + T2Csend.console(T2Creplace.replace(Util.getPrefix(), SelectMessages.OP_consoleKick.replace("[player]", player.getName()))); } else { - if (SelectConfig.no_OP_Player_kick) { - Cmd.console(SelectConfig.KickCommand.replace("[player]", player.getName()).replace("[reason]", Replace.replace(Util.getPrefix(),SelectMessages.OP_kick))); - send.console(Replace.replace(Util.getPrefix(),SelectMessages.OP_consoleKick.replace("[player]", player.getName()))); + if (SelectConfig.noOpPlayerKick) { + T2Ccmd.console(SelectConfig.kickCommand.replace("[player]", player.getName()).replace("[reason]", T2Creplace.replace(Util.getPrefix(), SelectMessages.OP_kick))); + T2Csend.console(T2Creplace.replace(Util.getPrefix(), SelectMessages.OP_consoleKick.replace("[player]", player.getName()))); for (Player notifyperm : Bukkit.getOnlinePlayers()) { if (notifyperm.hasPermission(Permissions.notify)) { - notifyperm.sendMessage(Replace.replace(Util.getPrefix(),SelectMessages.OP_consoleKick.replace("[player]", player.getName()) + notifyperm.sendMessage(T2Creplace.replace(Util.getPrefix(), SelectMessages.OP_consoleKick.replace("[player]", player.getName()) + "\n" + SelectMessages.OP_consoleDeop.replace("[player]", player.getName()))); } } - return true; } - if (SelectConfig.no_OP_Player_deop) { + if (SelectConfig.noOPPlayerDeop) { player.setOp(false); if (SelectConfig.sendPlayerDEOPmsg) { new BukkitRunnable() { @Override public void run() { - player.sendMessage(Replace.replace(Util.getPrefix(),SelectMessages.OP_deop)); + player.sendMessage(T2Creplace.replace(Util.getPrefix(), SelectMessages.OP_deop)); } - }.runTaskLater(Main.plugin, 5L); + }.runTaskLater(Main.getPlugin(), 5L); } - send.console(Replace.replace(Util.getPrefix(),SelectMessages.OP_consoleDeop.replace("[player]", player.getName()))); + T2Csend.console(T2Creplace.replace(Util.getPrefix(), SelectMessages.OP_consoleDeop.replace("[player]", player.getName()))); for (Player notifyperm : Bukkit.getOnlinePlayers()) { if (notifyperm.hasPermission(Permissions.notify)) { - notifyperm.sendMessage(Replace.replace(Util.getPrefix(),SelectMessages.OP_consoleDeop.replace("[player]", player.getName()))); + notifyperm.sendMessage(T2Creplace.replace(Util.getPrefix(), SelectMessages.OP_consoleDeop.replace("[player]", player.getName()))); } } - return true; } } - if (SelectConfig.customCommand_Enable) { - new BukkitRunnable() { - @Override - public void run() { - for (String cmd : SelectConfig.customKickCommand) { - Cmd.console(Replace.replace(Util.getPrefix(),cmd.replace("[player]", player.getName()))); - } - } - }.runTaskLater(Main.plugin, 5L); - return true; + + if (SelectConfig.customCommandEnable) { + for (String cmd : SelectConfig.customKickCommand) { + T2Ccmd.console(T2Creplace.replace(Util.getPrefix(), cmd.replace("[player]", player.getName()))); + } } + return true; } } - if (SelectConfig.Permission_Whitelist_Enable) { + if (SelectConfig.permissionWhitelistEnable) { for (String s : SelectConfig.permissions) { if (player.hasPermission(s)) { if (!permWhitelist(player)) { if (join) { - send.console(Replace.replace(Util.getPrefix(),SelectMessages.Perm_consoleOnJoin.replace("[player]", player.getName()).replace("[perm]", s))); + T2Csend.console(T2Creplace.replace(Util.getPrefix(), SelectMessages.Perm_consoleOnJoin.replace("[player]", player.getName()).replace("[perm]", s))); } - if (SelectConfig.Notify_Warn) { + if (SelectConfig.notifyWarn) { for (Player notifyperm : Bukkit.getOnlinePlayers()) { if (notifyperm.hasPermission(Permissions.notify)) { if (join) { - notifyperm.sendMessage(Replace.replace(Util.getPrefix(),SelectMessages.Perm_consoleOnJoin.replace("[player]", + notifyperm.sendMessage(T2Creplace.replace(Util.getPrefix(), SelectMessages.Perm_consoleOnJoin.replace("[player]", player.getName()).replace("[perm]", s))); - } else notifyperm.sendMessage(Replace.replace(Util.getPrefix(),SelectMessages.Perm_consoleKick.replace("[player]", + } else notifyperm.sendMessage(T2Creplace.replace(Util.getPrefix(), SelectMessages.Perm_consoleKick.replace("[player]", player.getName()).replace("[perm]", s))); - if (SelectConfig.Notify_Sound_Enable) { - notifyperm.playSound(player.getLocation(), SelectConfig.Notify_Sound, 3, 1); + if (SelectConfig.notifySoundEnable) { + notifyperm.playSound(player.getLocation(), SelectConfig.notifySound, 3, 1); } } } } - if (SelectConfig.PlayerWhithPermission_kick && SelectConfig.Perm_Command_enable) { - Cmd.console(SelectConfig.KickCommand.replace("[player]", player.getName()).replace("[reason]", Replace.replace(Util.getPrefix(),SelectMessages.Perm_kick))); - send.console(Replace.replace(Util.getPrefix(),SelectMessages.Perm_consoleKick.replace("[player]", + 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]", player.getName()).replace("[perm]", s))); - for (String cmd : SelectConfig.Perm_Command) { + for (String cmd : SelectConfig.permCommand) { Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), cmd.replace("[player]", player.getName()).replace("[perm]", s)); } - return true; - } - if (SelectConfig.PlayerWhithPermission_kick) { - Cmd.console(SelectConfig.KickCommand.replace("[player]", player.getName()).replace("[reason]", Replace.replace(Util.getPrefix(),SelectMessages.Perm_kick))); - send.console(Replace.replace(Util.getPrefix(),SelectMessages.Perm_consoleKick.replace("[player]", + if (SelectConfig.playerWhithPermissionKick) { + 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]", player.getName()).replace("[perm]", s))); - return true; } - if (SelectConfig.Perm_Command_enable) { - for (String cmd : SelectConfig.Perm_Command) { - Cmd.console(cmd.replace("[player]", player.getName()).replace("[perm]", s)); + if (SelectConfig.permCommandEnable) { + for (String cmd : SelectConfig.permCommand) { + T2Ccmd.console(cmd.replace("[player]", player.getName()).replace("[perm]", s)); } - return true; } return true; } @@ -138,29 +130,29 @@ public class Check { } private static Boolean opWhitelist(Player player) { - if (Main.opHashMap.containsKey(player.getName().toLowerCase())) { - if (Main.opHashMap.get(player.getName().toLowerCase()).UUID.equals(player.getUniqueId().toString().replace("-", ""))) { + if (Main.getOpHashMap().containsKey(player.getName().toLowerCase())) { + if (Main.getOpHashMap().get(player.getName().toLowerCase()).UUID.equals(player.getUniqueId().toString().replace("-", ""))) { return true; } else { - send.console(SelectMessages.ExactReason.replace("[reason]", "Player UUID: " + player.getUniqueId().toString() + " not whitelisted")); + T2Csend.console(SelectMessages.ExactReason.replace("[reason]", "Player UUID: " + player.getUniqueId().toString() + " not whitelisted")); return false; } } else { - send.console(SelectMessages.ExactReason.replace("[reason]", "Player name: " + player.getName() + " not whitelisted")); + T2Csend.console(SelectMessages.ExactReason.replace("[reason]", "Player name: " + player.getName() + " not whitelisted")); return false; } } private static Boolean permWhitelist(Player player) { - if (Main.permissionHashMap.containsKey(player.getName().toLowerCase())) { - if (Main.permissionHashMap.get(player.getName().toLowerCase()).UUID.equals(player.getUniqueId().toString().replace("-", ""))) { + if (Main.getPermissionHashMap().containsKey(player.getName().toLowerCase())) { + if (Main.getPermissionHashMap().get(player.getName().toLowerCase()).UUID.equals(player.getUniqueId().toString().replace("-", ""))) { return true; } else { - send.console(SelectMessages.ExactReason.replace("[reason]", "Player UUID: " + player.getUniqueId().toString() + " not whitelisted")); + T2Csend.console(SelectMessages.ExactReason.replace("[reason]", "Player UUID: " + player.getUniqueId().toString() + " not whitelisted")); return false; } } else { - send.console(SelectMessages.ExactReason.replace("[reason]", "Player name: " + player.getName() + " not whitelisted")); + T2Csend.console(SelectMessages.ExactReason.replace("[reason]", "Player name: " + player.getName() + " not whitelisted")); return false; } } diff --git a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/Events.java b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/Events.java index c613a04..ff6d928 100644 --- a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/Events.java +++ b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/Events.java @@ -5,7 +5,7 @@ package de.jatitv.opsecurity.listener; import de.jatitv.opsecurity.Util; import de.jatitv.opsecurity.config.config.SelectConfig; import de.jatitv.opsecurity.system.Main; -import net.t2code.lib.Spigot.Lib.update.UpdateAPI; +import net.t2code.t2codelib.SPIGOT.api.update.T2CupdateAPI; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.player.*; @@ -15,7 +15,7 @@ public class Events implements org.bukkit.event.Listener { @EventHandler public void CommandSendEvent(PlayerCommandPreprocessEvent event) { - if (SelectConfig.CheckOnCommand) { + if (SelectConfig.checkOnCommand) { Player player = event.getPlayer(); if (Check.onCheck(player, false)) { if (event.isCancelled()) return; @@ -26,7 +26,7 @@ public class Events implements org.bukkit.event.Listener { @EventHandler public void PlayerChatEvent(PlayerChatEvent event) { - if (SelectConfig.CheckOnChat) { + if (SelectConfig.checkOnChat) { Player player = event.getPlayer(); if (Check.onCheck(player, false)) { if (event.isCancelled()) return; @@ -37,33 +37,33 @@ public class Events implements org.bukkit.event.Listener { @EventHandler public void onInteract(PlayerInteractEvent event) { - if (SelectConfig.CheckOnInteract) { + if (SelectConfig.checkOnInteract) { Player player = event.getPlayer(); new BukkitRunnable() { @Override public void run() { event.setCancelled(Check.onCheck(player, false)); } - }.runTaskLater(Main.plugin, 1L); + }.runTaskLater(Main.getPlugin(), 1L); } } @EventHandler public void onJoinCheck(PlayerJoinEvent event) { - if (SelectConfig.CheckOnJoin) { + if (SelectConfig.checkOnJoin) { Player player = event.getPlayer(); new BukkitRunnable() { @Override public void run() { Check.onCheck(player, true); } - }.runTaskLater(Main.plugin, 1L); + }.runTaskLater(Main.getPlugin(), 1L); } } @EventHandler public void onJoinEvent(PlayerLoginEvent event) { Player player = event.getPlayer(); - UpdateAPI.join(Main.plugin, Util.getPrefix(), "opsecurity.updatemsg", player, Util.getSpigot(), Util.getDiscord()); + T2CupdateAPI.join(Main.getPlugin(), Util.getPrefix(), "opsecurity.updatemsg", player, Util.getSpigotID(), Util.getDiscord()); } } diff --git a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/LPCommand.java b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/LPCommand.java index b52978d..941ca65 100644 --- a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/LPCommand.java +++ b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/LPCommand.java @@ -3,16 +3,8 @@ package de.jatitv.opsecurity.listener; -import de.jatitv.opsecurity.Util; -import de.jatitv.opsecurity.config.languages.SelectMessages; -import de.jatitv.opsecurity.config.config.SelectConfig; -import de.jatitv.opsecurity.system.Main; -import net.t2code.lib.Spigot.Lib.replace.Replace; -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.util.Iterator; 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 9265a04..c61b31f 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 @@ -7,8 +7,8 @@ import de.jatitv.opsecurity.config.languages.SelectMessages; import de.jatitv.opsecurity.config.config.SelectConfig; import de.jatitv.opsecurity.system.Main; import de.jatitv.opsecurity.system.NameHistory; -import net.t2code.lib.Spigot.Lib.messages.send; -import net.t2code.lib.Spigot.Lib.replace.Replace; +import net.t2code.t2codelib.SPIGOT.api.messages.T2Creplace; +import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -24,14 +24,14 @@ public class OPCommand implements Listener { @EventHandler public void onOPServer(ServerCommandEvent event) { - if ((event.getCommand().toLowerCase().startsWith("op ") || event.getCommand().toLowerCase().startsWith("minecraft:op ")) && SelectConfig.OP_Whitelist_Enable) { + if ((event.getCommand().toLowerCase().startsWith("op ") || event.getCommand().toLowerCase().startsWith("minecraft:op ")) && SelectConfig.opWhitelistEnable) { switch (this.isNotOPWTL(event.getCommand())) { case 1: - send.sender(event.getSender(), Util.getPrefix() + " " + SelectMessages.PlayerMustBeOnlineToOp); + T2Csend.sender(event.getSender(), Util.getPrefix() + " " + SelectMessages.PlayerMustBeOnlineToOp); event.setCancelled(true); break; case 2: - send.sender(event.getSender(), (Replace.replace(Util.getPrefix(), Util.getPrefix() + " " + SelectMessages.OP_opCommand))); + T2Csend.sender(event.getSender(), (T2Creplace.replace(Util.getPrefix(), Util.getPrefix() + " " + SelectMessages.OP_opCommand))); event.setCancelled(true); break; } @@ -41,15 +41,15 @@ public class OPCommand implements Listener { @EventHandler public void onOpPlayer(PlayerCommandPreprocessEvent event) { - if (SelectConfig.OP_Whitelist_Enable) { + if (SelectConfig.opWhitelistEnable) { if ((event.getMessage().toLowerCase().startsWith("/op ") || event.getMessage().toLowerCase().startsWith("/minecraft:op "))) { switch (this.isNotOPWTL(event.getMessage())) { case 1: - send.sender(event.getPlayer(), Util.getPrefix() + " " + SelectMessages.PlayerMustBeOnlineToOp); + T2Csend.sender(event.getPlayer(), Util.getPrefix() + " " + SelectMessages.PlayerMustBeOnlineToOp); event.setCancelled(true); break; case 2: - send.player(event.getPlayer(), Replace.replace(Util.getPrefix(), Util.getPrefix() + " " + SelectMessages.OP_opCommand)); + T2Csend.player(event.getPlayer(), T2Creplace.replace(Util.getPrefix(), Util.getPrefix() + " " + SelectMessages.OP_opCommand)); event.setCancelled(true); break; } @@ -62,25 +62,25 @@ public class OPCommand implements Listener { if (command.charAt(0) == '/') command = command.replaceFirst("/", ""); String arg = command.replace("op ", ""); - if (SelectConfig.PlayerMustBeOnlineToOp) { - if (Main.opHashMap.containsKey(arg.toLowerCase())) { + if (SelectConfig.playerMustBeOnlineToOp) { + if (Main.getOpHashMap().containsKey(arg.toLowerCase())) { Player target = Bukkit.getPlayer(arg); if (target == null) { return 1; } - if (Main.opHashMap.get(target.getName().toLowerCase()).UUID.equals(target.getUniqueId().toString().replace("-", ""))) { + if (Main.getOpHashMap().get(target.getName().toLowerCase()).UUID.equals(target.getUniqueId().toString().replace("-", ""))) { return 0; } else return 2; } else return 2; } else { - if (Main.opHashMap.containsKey(arg.toLowerCase())) { + if (Main.getOpHashMap().containsKey(arg.toLowerCase())) { String targetUUID = null; try { targetUUID = NameHistory.getPlayerUUID(arg); } catch (IOException e) { e.printStackTrace(); } - if (Main.opHashMap.get(arg.toLowerCase()).UUID.equals(targetUUID)) { + if (Main.getOpHashMap().get(arg.toLowerCase()).UUID.equals(targetUUID)) { return 0; } else return 2; } else return 2; 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 1656d2b..b2d78e9 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 @@ -4,7 +4,7 @@ package de.jatitv.opsecurity.listener; import de.jatitv.opsecurity.Util; import de.jatitv.opsecurity.system.Main; -import net.t2code.lib.Spigot.Lib.messages.send; +import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerCommandPreprocessEvent; @@ -15,25 +15,25 @@ public class PlugManCommand implements Listener { @EventHandler public void onOPServer(ServerCommandEvent event) { - if ((event.getCommand().toLowerCase().contains("plugman disable") && event.getCommand().toLowerCase().contains(Main.plugin.getDescription().getName().toLowerCase())) - || (event.getCommand().toLowerCase().contains("plugman reload") && event.getCommand().toLowerCase().contains(Main.plugin.getDescription().getName().toLowerCase())) - || (event.getCommand().toLowerCase().contains("plugman unload") && event.getCommand().toLowerCase().contains(Main.plugin.getDescription().getName().toLowerCase())) - || (event.getCommand().toLowerCase().contains("plugman restart") && event.getCommand().toLowerCase().contains(Main.plugin.getDescription().getName().toLowerCase())) + 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); - send.console(Util.getPrefix() + " §4OPSecurity cannot be deactivated!"); + 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.plugin.getDescription().getName().toLowerCase()) - || (event.getMessage().toLowerCase().startsWith("/plugman reload") && event.getMessage().toLowerCase().contains(Main.plugin.getDescription().getName().toLowerCase())) - || (event.getMessage().toLowerCase().startsWith("/plugman unload") && event.getMessage().toLowerCase().contains(Main.plugin.getDescription().getName().toLowerCase())) - || (event.getMessage().toLowerCase().startsWith("/plugman restart") && event.getMessage().toLowerCase().contains(Main.plugin.getDescription().getName().toLowerCase())) + 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); - send.player(event.getPlayer(), Util.getPrefix() + " §4OPSecurity cannot be deactivated!"); + T2Csend.player(event.getPlayer(), Util.getPrefix() + " §4OPSecurity cannot be deactivated!"); } } } diff --git a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/Timer.java b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/Timer.java index 79969d6..66feb1c 100644 --- a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/Timer.java +++ b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/listener/Timer.java @@ -11,16 +11,16 @@ import org.bukkit.entity.Player; public class Timer { public static void RefreshTimer() { - if (SelectConfig.OP_Whitelist_Enable || SelectConfig.Permission_Whitelist_Enable) { - if (SelectConfig.Timer_Enable) { - int Count = Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.plugin, new Runnable() { + if (SelectConfig.opWhitelistEnable || SelectConfig.permissionWhitelistEnable) { + if (SelectConfig.timerEnable) { + int Count = Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.getPlugin(), new Runnable() { @Override public void run() { for (Player player : Bukkit.getOnlinePlayers()) { Check.onCheck(player, false); } } - }, 0, SelectConfig.RefreshTime * 20L); + }, 0, SelectConfig.refreshTime * 20L); } } } diff --git a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/system/Load.java b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/system/Load.java index 315bcbf..c54ab6d 100644 --- a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/system/Load.java +++ b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/system/Load.java @@ -13,25 +13,24 @@ import de.jatitv.opsecurity.listener.Events; import de.jatitv.opsecurity.listener.OPCommand; import de.jatitv.opsecurity.listener.PlugManCommand; import de.jatitv.opsecurity.listener.Timer; -import net.t2code.lib.Spigot.Lib.messages.T2CodeTemplate; -import net.t2code.lib.Spigot.Lib.register.Register; -import net.t2code.lib.Spigot.Lib.update.UpdateAPI; -import net.t2code.lib.Spigot.system.Metrics; +import net.t2code.t2codelib.SPIGOT.api.messages.T2Ctemplate; +import net.t2code.t2codelib.SPIGOT.api.register.T2Cregister; +import net.t2code.t2codelib.SPIGOT.api.update.T2CupdateAPI; import java.util.List; public class Load { public static void onLoad(String prefix, List autor, String version, String spigot, int spigotID, String discord, int bstatsID) { - Long long_ = T2CodeTemplate.onLoadHeader(prefix, autor, version, spigot, discord); - UpdateAPI.onUpdateCheck(Main.plugin, prefix, spigot, spigotID, discord); - Metrics.Bstats(Main.plugin, bstatsID); + Long long_ = T2Ctemplate.onLoadHeader(prefix, autor, version, spigot, discord); + T2CupdateAPI.onUpdateCheck(Main.getPlugin(), prefix, spigotID, discord); + Metrics.Bstats(); loadReload(); Permissions.register(); - Main.plugin.getCommand("opsecurity").setExecutor(new CmdExecuter()); - Register.listener(new Events(), Main.plugin); - Register.listener(new OPCommand(), Main.plugin); - Register.listener(new PlugManCommand(), Main.plugin); - T2CodeTemplate.onLoadFooter(prefix, long_); + Main.getPlugin().getCommand("opsecurity").setExecutor(new CmdExecuter()); + T2Cregister.listener(new Events(), Main.getPlugin()); + T2Cregister.listener(new OPCommand(), Main.getPlugin()); + T2Cregister.listener(new PlugManCommand(), Main.getPlugin()); + T2Ctemplate.onLoadFooter(prefix, long_); } public static void loadReload() { diff --git a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/system/Main.java b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/system/Main.java index ec7bcb5..101a9aa 100644 --- a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/system/Main.java +++ b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/system/Main.java @@ -2,29 +2,28 @@ package de.jatitv.opsecurity.system; import de.jatitv.opsecurity.Util; import de.jatitv.opsecurity.objects.PlayerObject; -import net.t2code.lib.Spigot.Lib.messages.T2CodeTemplate; +import net.t2code.t2codelib.SPIGOT.api.messages.T2Ctemplate; import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; import java.io.File; import java.util.HashMap; import java.util.List; -import java.util.Objects; import java.util.logging.Level; public final class Main extends JavaPlugin { - public static List autor; - public static String version; - public static Main plugin; + private static List autor; + private static String version; + private static Main plugin; private static boolean enable; public static File getPath() { return plugin.getDataFolder(); } - public static HashMap opHashMap = new HashMap(); - public static HashMap permissionHashMap = new HashMap(); + private static HashMap opHashMap = new HashMap(); + private static HashMap permissionHashMap = new HashMap(); @Override public void onEnable() { @@ -47,23 +46,51 @@ public final class Main extends JavaPlugin { @Override public void onDisable() { // Plugin shutdown logic - if (enable) T2CodeTemplate.onDisable(Util.getPrefix(), autor, version, Util.getSpigot(), Util.getDiscord()); + if (enable) T2Ctemplate.onDisable(Util.getPrefix(), autor, version, Util.getSpigot(), Util.getDiscord()); } - public static Boolean pluginNotFound(String pl, Integer spigotID, double ver) { + + public 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: " + - "§6https://spigotmc.org/resources/" + pl + "." + spigotID + " §4to be able to use this plugin."); + Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + " §e" + pl + " §4could not be found. Please download it here: " + + "§6https://spigotmc.org/resources/" + pl + "." + spigotID + " §4to be able to use this plugin."); Main.plugin.getPluginLoader().disablePlugin(Main.plugin); return true; } else { - if (Double.parseDouble(Objects.requireNonNull(Bukkit.getPluginManager().getPlugin(pl)).getDescription().getVersion()) < ver) { + String plVer = Bukkit.getPluginManager().getPlugin(pl).getDescription().getVersion(); + if (ver.contains("_")) { + if (!plVer.equals(ver)) { + plugin.getLogger().log(Level.SEVERE, "Plugin can not be loaded!"); + Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + " §e" + pl + " §4is out of date! This plugin requires the version §2" + + ver + " §4of §6" + pl + " §4Please use this version! Please download it here or contact us in Discord: §6https://spigotmc.org/resources/" + + pl + "." + spigotID + " Or contact us in Discord: http://dc.t2code.net"); + Main.plugin.getPluginLoader().disablePlugin(Main.plugin); + return true; + } + return false; + } + String[] split = plVer.split("_"); + if (Double.parseDouble(split[0]) < Double.parseDouble(ver)) { plugin.getLogger().log(Level.SEVERE, "Plugin can not be loaded!"); - Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + " §e" + pl + " §4is out of date! This plugin requires at least version §2" + ver + " §4of §6" + pl + " §4Please update it here: §6https://spigotmc.org/resources/" + pl + "." + spigotID + " §4to use this version of " + plugin.getDescription().getName() + "."); + Bukkit.getConsoleSender().sendMessage(Util.getPrefix() + " §e" + pl + " §4is out of date! This plugin requires at least version §2" + + ver + " §4of §6" + pl + " §4Please update it here: §6https://spigotmc.org/resources/" + pl + "." + spigotID + + " §4to use this version of " + plugin.getDescription().getName() + "."); Main.plugin.getPluginLoader().disablePlugin(Main.plugin); return true; } return false; } } + + public static Main getPlugin() { + return plugin; + } + + public static HashMap getOpHashMap() { + return opHashMap; + } + + public static HashMap getPermissionHashMap() { + return permissionHashMap; + } } diff --git a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/system/Metrics.java b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/system/Metrics.java new file mode 100644 index 0000000..7564cb0 --- /dev/null +++ b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/system/Metrics.java @@ -0,0 +1,846 @@ +// This claas was created by JaTiTV + +package de.jatitv.opsecurity.system; + +import de.jatitv.opsecurity.Util; +import org.bukkit.Bukkit; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.java.JavaPlugin; + +import javax.net.ssl.HttpsURLConnection; +import java.io.*; +import java.lang.reflect.Method; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.util.*; +import java.util.concurrent.Callable; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; +import java.util.function.BiConsumer; +import java.util.function.Consumer; +import java.util.function.Supplier; +import java.util.logging.Level; +import java.util.stream.Collectors; +import java.util.zip.GZIPOutputStream; + +public class Metrics { + + public static void Bstats() { + int pluginId = Util.getBstatsID(); // <-- Replace with the id of your plugin! + Metrics metrics = new Metrics(Main.getPlugin(), pluginId); + } + + private final Plugin plugin; + + private final MetricsBase metricsBase; + + /** + * Creates a new Metrics instance. + * + * @param plugin Your plugin instance. + * @param serviceId The id of the service. It can be found at What is my plugin id? + */ + public Metrics(JavaPlugin plugin, int serviceId) { + this.plugin = plugin; + // Get the config file + File bStatsFolder = new File(plugin.getDataFolder().getParentFile(), "bStats"); + File configFile = new File(bStatsFolder, "config.yml"); + YamlConfiguration config = YamlConfiguration.loadConfiguration(configFile); + if (!config.isSet("serverUuid")) { + config.addDefault("enabled", true); + config.addDefault("serverUuid", UUID.randomUUID().toString()); + config.addDefault("logFailedRequests", false); + config.addDefault("logSentData", false); + config.addDefault("logResponseStatusText", false); + // Inform the server owners about bStats + config + .options() + .header( + "bStats (https://bStats.org) collects some basic information for plugin authors, like how\n" + + "many people use their plugin and their total player count. It's recommended to keep bStats\n" + + "enabled, but if you're not comfortable with this, you can turn this setting off. There is no\n" + + "performance penalty associated with having metrics enabled, and data sent to bStats is fully\n" + + "anonymous.") + .copyDefaults(true); + try { + config.save(configFile); + } catch (IOException ignored) { + } + } + // Load the data + boolean enabled = config.getBoolean("enabled", true); + String serverUUID = config.getString("serverUuid"); + boolean logErrors = config.getBoolean("logFailedRequests", false); + boolean logSentData = config.getBoolean("logSentData", false); + boolean logResponseStatusText = config.getBoolean("logResponseStatusText", false); + metricsBase = + new MetricsBase( + "bukkit", + serverUUID, + serviceId, + enabled, + this::appendPlatformData, + this::appendServiceData, + submitDataTask -> Bukkit.getScheduler().runTask(plugin, submitDataTask), + plugin::isEnabled, + (message, error) -> this.plugin.getLogger().log(Level.WARNING, message, error), + (message) -> this.plugin.getLogger().log(Level.INFO, message), + logErrors, + logSentData, + logResponseStatusText); + } + + /** + * Adds a custom chart. + * + * @param chart The chart to add. + */ + public void addCustomChart(CustomChart chart) { + metricsBase.addCustomChart(chart); + } + + private void appendPlatformData(JsonObjectBuilder builder) { + builder.appendField("playerAmount", getPlayerAmount()); + builder.appendField("onlineMode", Bukkit.getOnlineMode() ? 1 : 0); + builder.appendField("bukkitVersion", Bukkit.getVersion()); + builder.appendField("bukkitName", Bukkit.getName()); + builder.appendField("javaVersion", System.getProperty("java.version")); + builder.appendField("osName", System.getProperty("os.name")); + builder.appendField("osArch", System.getProperty("os.arch")); + builder.appendField("osVersion", System.getProperty("os.version")); + builder.appendField("coreCount", Runtime.getRuntime().availableProcessors()); + } + + private void appendServiceData(JsonObjectBuilder builder) { + builder.appendField("pluginVersion", plugin.getDescription().getVersion()); + } + + private int getPlayerAmount() { + try { + // Around MC 1.8 the return type was changed from an array to a collection, + // This fixes java.lang.NoSuchMethodError: + // org.bukkit.Bukkit.getOnlinePlayers()Ljava/util/Collection; + Method onlinePlayersMethod = Class.forName("org.bukkit.Server").getMethod("getOnlinePlayers"); + return onlinePlayersMethod.getReturnType().equals(Collection.class) + ? ((Collection) onlinePlayersMethod.invoke(Bukkit.getServer())).size() + : ((Player[]) onlinePlayersMethod.invoke(Bukkit.getServer())).length; + } catch (Exception e) { + // Just use the new method if the reflection failed + return Bukkit.getOnlinePlayers().size(); + } + } + + public static class MetricsBase { + + /** The version of the Metrics class. */ + public static final String METRICS_VERSION = "2.2.1"; + + private static final ScheduledExecutorService scheduler = + Executors.newScheduledThreadPool(1, task -> new Thread(task, "bStats-Metrics")); + + private static final String REPORT_URL = "https://bStats.org/api/v2/data/%s"; + + private final String platform; + + private final String serverUuid; + + private final int serviceId; + + private final Consumer appendPlatformDataConsumer; + + private final Consumer appendServiceDataConsumer; + + private final Consumer submitTaskConsumer; + + private final Supplier checkServiceEnabledSupplier; + + private final BiConsumer errorLogger; + + private final Consumer infoLogger; + + private final boolean logErrors; + + private final boolean logSentData; + + private final boolean logResponseStatusText; + + private final Set customCharts = new HashSet<>(); + + private final boolean enabled; + + /** + * Creates a new MetricsBase class instance. + * + * @param platform The platform of the service. + * @param serviceId The id of the service. + * @param serverUuid The server uuid. + * @param enabled Whether or not data sending is enabled. + * @param appendPlatformDataConsumer A consumer that receives a {@code JsonObjectBuilder} and + * appends all platform-specific data. + * @param appendServiceDataConsumer A consumer that receives a {@code JsonObjectBuilder} and + * appends all service-specific data. + * @param submitTaskConsumer A consumer that takes a runnable with the submit task. This can be + * used to delegate the data collection to a another thread to prevent errors caused by + * concurrency. Can be {@code null}. + * @param checkServiceEnabledSupplier A supplier to check if the service is still enabled. + * @param errorLogger A consumer that accepts log message and an error. + * @param infoLogger A consumer that accepts info log messages. + * @param logErrors Whether or not errors should be logged. + * @param logSentData Whether or not the sent data should be logged. + * @param logResponseStatusText Whether or not the response status text should be logged. + */ + public MetricsBase( + String platform, + String serverUuid, + int serviceId, + boolean enabled, + Consumer appendPlatformDataConsumer, + Consumer appendServiceDataConsumer, + Consumer submitTaskConsumer, + Supplier checkServiceEnabledSupplier, + BiConsumer errorLogger, + Consumer infoLogger, + boolean logErrors, + boolean logSentData, + boolean logResponseStatusText) { + this.platform = platform; + this.serverUuid = serverUuid; + this.serviceId = serviceId; + this.enabled = enabled; + this.appendPlatformDataConsumer = appendPlatformDataConsumer; + this.appendServiceDataConsumer = appendServiceDataConsumer; + this.submitTaskConsumer = submitTaskConsumer; + this.checkServiceEnabledSupplier = checkServiceEnabledSupplier; + this.errorLogger = errorLogger; + this.infoLogger = infoLogger; + this.logErrors = logErrors; + this.logSentData = logSentData; + this.logResponseStatusText = logResponseStatusText; + checkRelocation(); + if (enabled) { + startSubmitting(); + } + } + + public void addCustomChart(CustomChart chart) { + this.customCharts.add(chart); + } + + private void startSubmitting() { + final Runnable submitTask = + () -> { + if (!enabled || !checkServiceEnabledSupplier.get()) { + // Submitting data or service is disabled + scheduler.shutdown(); + return; + } + if (submitTaskConsumer != null) { + submitTaskConsumer.accept(this::submitData); + } else { + this.submitData(); + } + }; + // Many servers tend to restart at a fixed time at xx:00 which causes an uneven distribution + // of requests on the + // bStats backend. To circumvent this problem, we introduce some randomness into the initial + // and second delay. + // WARNING: You must not modify and part of this Metrics class, including the submit delay or + // frequency! + // WARNING: Modifying this code will get your plugin banned on bStats. Just don't do it! + long initialDelay = (long) (1000 * 60 * (3 + Math.random() * 3)); + long secondDelay = (long) (1000 * 60 * (Math.random() * 30)); + scheduler.schedule(submitTask, initialDelay, TimeUnit.MILLISECONDS); + scheduler.scheduleAtFixedRate( + submitTask, initialDelay + secondDelay, 1000 * 60 * 30, TimeUnit.MILLISECONDS); + } + + private void submitData() { + final JsonObjectBuilder baseJsonBuilder = new JsonObjectBuilder(); + appendPlatformDataConsumer.accept(baseJsonBuilder); + final JsonObjectBuilder serviceJsonBuilder = new JsonObjectBuilder(); + appendServiceDataConsumer.accept(serviceJsonBuilder); + JsonObjectBuilder.JsonObject[] chartData = + customCharts.stream() + .map(customChart -> customChart.getRequestJsonObject(errorLogger, logErrors)) + .filter(Objects::nonNull) + .toArray(JsonObjectBuilder.JsonObject[]::new); + serviceJsonBuilder.appendField("id", serviceId); + serviceJsonBuilder.appendField("customCharts", chartData); + baseJsonBuilder.appendField("service", serviceJsonBuilder.build()); + baseJsonBuilder.appendField("serverUUID", serverUuid); + baseJsonBuilder.appendField("metricsVersion", METRICS_VERSION); + JsonObjectBuilder.JsonObject data = baseJsonBuilder.build(); + scheduler.execute( + () -> { + try { + // Send the data + sendData(data); + } catch (Exception e) { + // Something went wrong! :( + if (logErrors) { + errorLogger.accept("Could not submit bStats metrics data", e); + } + } + }); + } + + private void sendData(JsonObjectBuilder.JsonObject data) throws Exception { + if (logSentData) { + infoLogger.accept("Sent bStats metrics data: " + data.toString()); + } + String url = String.format(REPORT_URL, platform); + HttpsURLConnection connection = (HttpsURLConnection) new URL(url).openConnection(); + // Compress the data to save bandwidth + byte[] compressedData = compress(data.toString()); + connection.setRequestMethod("POST"); + connection.addRequestProperty("Accept", "application/json"); + connection.addRequestProperty("Connection", "close"); + connection.addRequestProperty("Content-Encoding", "gzip"); + connection.addRequestProperty("Content-Length", String.valueOf(compressedData.length)); + connection.setRequestProperty("Content-Type", "application/json"); + connection.setRequestProperty("User-Agent", "Metrics-Service/1"); + connection.setDoOutput(true); + try (DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream())) { + outputStream.write(compressedData); + } + StringBuilder builder = new StringBuilder(); + try (BufferedReader bufferedReader = + new BufferedReader(new InputStreamReader(connection.getInputStream()))) { + String line; + while ((line = bufferedReader.readLine()) != null) { + builder.append(line); + } + } + if (logResponseStatusText) { + infoLogger.accept("Sent data to bStats and received response: " + builder); + } + } + + /** Checks that the class was properly relocated. */ + private void checkRelocation() { + // You can use the property to disable the check in your test environment + if (System.getProperty("bstats.relocatecheck") == null + || !System.getProperty("bstats.relocatecheck").equals("false")) { + // Maven's Relocate is clever and changes strings, too. So we have to use this little + // "trick" ... :D + final String defaultPackage = + new String(new byte[] {'o', 'r', 'g', '.', 'b', 's', 't', 'a', 't', 's'}); + final String examplePackage = + new String(new byte[] {'y', 'o', 'u', 'r', '.', 'p', 'a', 'c', 'k', 'a', 'g', 'e'}); + // We want to make sure no one just copy & pastes the example and uses the wrong package + // names + if (MetricsBase.class.getPackage().getName().startsWith(defaultPackage) + || MetricsBase.class.getPackage().getName().startsWith(examplePackage)) { + throw new IllegalStateException("bStats Metrics class has not been relocated correctly!"); + } + } + } + + /** + * Gzips the given string. + * + * @param str The string to gzip. + * @return The gzipped string. + */ + private static byte[] compress(final String str) throws IOException { + if (str == null) { + return null; + } + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + try (GZIPOutputStream gzip = new GZIPOutputStream(outputStream)) { + gzip.write(str.getBytes(StandardCharsets.UTF_8)); + } + return outputStream.toByteArray(); + } + } + + public static class AdvancedBarChart extends CustomChart { + + private final Callable> callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public AdvancedBarChart(String chartId, Callable> callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObjectBuilder.JsonObject getChartData() throws Exception { + JsonObjectBuilder valuesBuilder = new JsonObjectBuilder(); + Map map = callable.call(); + if (map == null || map.isEmpty()) { + // Null = skip the chart + return null; + } + boolean allSkipped = true; + for (Map.Entry entry : map.entrySet()) { + if (entry.getValue().length == 0) { + // Skip this invalid + continue; + } + allSkipped = false; + valuesBuilder.appendField(entry.getKey(), entry.getValue()); + } + if (allSkipped) { + // Null = skip the chart + return null; + } + return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build(); + } + } + + public static class SimpleBarChart extends CustomChart { + + private final Callable> callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public SimpleBarChart(String chartId, Callable> callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObjectBuilder.JsonObject getChartData() throws Exception { + JsonObjectBuilder valuesBuilder = new JsonObjectBuilder(); + Map map = callable.call(); + if (map == null || map.isEmpty()) { + // Null = skip the chart + return null; + } + for (Map.Entry entry : map.entrySet()) { + valuesBuilder.appendField(entry.getKey(), new int[] {entry.getValue()}); + } + return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build(); + } + } + + public static class MultiLineChart extends CustomChart { + + private final Callable> callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public MultiLineChart(String chartId, Callable> callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObjectBuilder.JsonObject getChartData() throws Exception { + JsonObjectBuilder valuesBuilder = new JsonObjectBuilder(); + Map map = callable.call(); + if (map == null || map.isEmpty()) { + // Null = skip the chart + return null; + } + boolean allSkipped = true; + for (Map.Entry entry : map.entrySet()) { + if (entry.getValue() == 0) { + // Skip this invalid + continue; + } + allSkipped = false; + valuesBuilder.appendField(entry.getKey(), entry.getValue()); + } + if (allSkipped) { + // Null = skip the chart + return null; + } + return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build(); + } + } + + public static class AdvancedPie extends CustomChart { + + private final Callable> callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public AdvancedPie(String chartId, Callable> callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObjectBuilder.JsonObject getChartData() throws Exception { + JsonObjectBuilder valuesBuilder = new JsonObjectBuilder(); + Map map = callable.call(); + if (map == null || map.isEmpty()) { + // Null = skip the chart + return null; + } + boolean allSkipped = true; + for (Map.Entry entry : map.entrySet()) { + if (entry.getValue() == 0) { + // Skip this invalid + continue; + } + allSkipped = false; + valuesBuilder.appendField(entry.getKey(), entry.getValue()); + } + if (allSkipped) { + // Null = skip the chart + return null; + } + return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build(); + } + } + + public abstract static class CustomChart { + + private final String chartId; + + protected CustomChart(String chartId) { + if (chartId == null) { + throw new IllegalArgumentException("chartId must not be null"); + } + this.chartId = chartId; + } + + public JsonObjectBuilder.JsonObject getRequestJsonObject( + BiConsumer errorLogger, boolean logErrors) { + JsonObjectBuilder builder = new JsonObjectBuilder(); + builder.appendField("chartId", chartId); + try { + JsonObjectBuilder.JsonObject data = getChartData(); + if (data == null) { + // If the data is null we don't send the chart. + return null; + } + builder.appendField("data", data); + } catch (Throwable t) { + if (logErrors) { + errorLogger.accept("Failed to get data for custom chart with id " + chartId, t); + } + return null; + } + return builder.build(); + } + + protected abstract JsonObjectBuilder.JsonObject getChartData() throws Exception; + } + + public static class SingleLineChart extends CustomChart { + + private final Callable callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public SingleLineChart(String chartId, Callable callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObjectBuilder.JsonObject getChartData() throws Exception { + int value = callable.call(); + if (value == 0) { + // Null = skip the chart + return null; + } + return new JsonObjectBuilder().appendField("value", value).build(); + } + } + + public static class SimplePie extends CustomChart { + + private final Callable callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public SimplePie(String chartId, Callable callable) { + super(chartId); + this.callable = callable; + } + + @Override + protected JsonObjectBuilder.JsonObject getChartData() throws Exception { + String value = callable.call(); + if (value == null || value.isEmpty()) { + // Null = skip the chart + return null; + } + return new JsonObjectBuilder().appendField("value", value).build(); + } + } + + public static class DrilldownPie extends CustomChart { + + private final Callable>> callable; + + /** + * Class constructor. + * + * @param chartId The id of the chart. + * @param callable The callable which is used to request the chart data. + */ + public DrilldownPie(String chartId, Callable>> callable) { + super(chartId); + this.callable = callable; + } + + @Override + public JsonObjectBuilder.JsonObject getChartData() throws Exception { + JsonObjectBuilder valuesBuilder = new JsonObjectBuilder(); + Map> map = callable.call(); + if (map == null || map.isEmpty()) { + // Null = skip the chart + return null; + } + boolean reallyAllSkipped = true; + for (Map.Entry> entryValues : map.entrySet()) { + JsonObjectBuilder valueBuilder = new JsonObjectBuilder(); + boolean allSkipped = true; + for (Map.Entry valueEntry : map.get(entryValues.getKey()).entrySet()) { + valueBuilder.appendField(valueEntry.getKey(), valueEntry.getValue()); + allSkipped = false; + } + if (!allSkipped) { + reallyAllSkipped = false; + valuesBuilder.appendField(entryValues.getKey(), valueBuilder.build()); + } + } + if (reallyAllSkipped) { + // Null = skip the chart + return null; + } + return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build(); + } + } + + /** + * An extremely simple JSON builder. + * + *

While this class is neither feature-rich nor the most performant one, it's sufficient enough + * for its use-case. + */ + public static class JsonObjectBuilder { + + private StringBuilder builder = new StringBuilder(); + + private boolean hasAtLeastOneField = false; + + public JsonObjectBuilder() { + builder.append("{"); + } + + /** + * Appends a null field to the JSON. + * + * @param key The key of the field. + * @return A reference to this object. + */ + public JsonObjectBuilder appendNull(String key) { + appendFieldUnescaped(key, "null"); + return this; + } + + /** + * Appends a string field to the JSON. + * + * @param key The key of the field. + * @param value The value of the field. + * @return A reference to this object. + */ + public JsonObjectBuilder appendField(String key, String value) { + if (value == null) { + throw new IllegalArgumentException("JSON value must not be null"); + } + appendFieldUnescaped(key, "\"" + escape(value) + "\""); + return this; + } + + /** + * Appends an integer field to the JSON. + * + * @param key The key of the field. + * @param value The value of the field. + * @return A reference to this object. + */ + public JsonObjectBuilder appendField(String key, int value) { + appendFieldUnescaped(key, String.valueOf(value)); + return this; + } + + /** + * Appends an object to the JSON. + * + * @param key The key of the field. + * @param object The object. + * @return A reference to this object. + */ + public JsonObjectBuilder appendField(String key, JsonObject object) { + if (object == null) { + throw new IllegalArgumentException("JSON object must not be null"); + } + appendFieldUnescaped(key, object.toString()); + return this; + } + + /** + * Appends a string array to the JSON. + * + * @param key The key of the field. + * @param values The string array. + * @return A reference to this object. + */ + public JsonObjectBuilder appendField(String key, String[] values) { + if (values == null) { + throw new IllegalArgumentException("JSON values must not be null"); + } + String escapedValues = + Arrays.stream(values) + .map(value -> "\"" + escape(value) + "\"") + .collect(Collectors.joining(",")); + appendFieldUnescaped(key, "[" + escapedValues + "]"); + return this; + } + + /** + * Appends an integer array to the JSON. + * + * @param key The key of the field. + * @param values The integer array. + * @return A reference to this object. + */ + public JsonObjectBuilder appendField(String key, int[] values) { + if (values == null) { + throw new IllegalArgumentException("JSON values must not be null"); + } + String escapedValues = + Arrays.stream(values).mapToObj(String::valueOf).collect(Collectors.joining(",")); + appendFieldUnescaped(key, "[" + escapedValues + "]"); + return this; + } + + /** + * Appends an object array to the JSON. + * + * @param key The key of the field. + * @param values The integer array. + * @return A reference to this object. + */ + public JsonObjectBuilder appendField(String key, JsonObject[] values) { + if (values == null) { + throw new IllegalArgumentException("JSON values must not be null"); + } + String escapedValues = + Arrays.stream(values).map(JsonObject::toString).collect(Collectors.joining(",")); + appendFieldUnescaped(key, "[" + escapedValues + "]"); + return this; + } + + /** + * Appends a field to the object. + * + * @param key The key of the field. + * @param escapedValue The escaped value of the field. + */ + private void appendFieldUnescaped(String key, String escapedValue) { + if (builder == null) { + throw new IllegalStateException("JSON has already been built"); + } + if (key == null) { + throw new IllegalArgumentException("JSON key must not be null"); + } + if (hasAtLeastOneField) { + builder.append(","); + } + builder.append("\"").append(escape(key)).append("\":").append(escapedValue); + hasAtLeastOneField = true; + } + + /** + * Builds the JSON string and invalidates this builder. + * + * @return The built JSON string. + */ + public JsonObject build() { + if (builder == null) { + throw new IllegalStateException("JSON has already been built"); + } + JsonObject object = new JsonObject(builder.append("}").toString()); + builder = null; + return object; + } + + /** + * Escapes the given string like stated in https://www.ietf.org/rfc/rfc4627.txt. + * + *

This method escapes only the necessary characters '"', '\'. and '\u0000' - '\u001F'. + * Compact escapes are not used (e.g., '\n' is escaped as "\u000a" and not as "\n"). + * + * @param value The value to escape. + * @return The escaped value. + */ + private static String escape(String value) { + final StringBuilder builder = new StringBuilder(); + for (int i = 0; i < value.length(); i++) { + char c = value.charAt(i); + if (c == '"') { + builder.append("\\\""); + } else if (c == '\\') { + builder.append("\\\\"); + } else if (c <= '\u000F') { + builder.append("\\u000").append(Integer.toHexString(c)); + } else if (c <= '\u001F') { + builder.append("\\u00").append(Integer.toHexString(c)); + } else { + builder.append(c); + } + } + return builder.toString(); + } + + /** + * A super simple representation of a JSON object. + * + *

This class only exists to make methods of the {@link JsonObjectBuilder} type-safe and not + * allow a raw string inputs for methods like {@link JsonObjectBuilder#appendField(String, + * JsonObject)}. + */ + public static class JsonObject { + + private final String value; + + private JsonObject(String value) { + this.value = value; + } + + @Override + public String toString() { + return value; + } + } + } +} \ No newline at end of file diff --git a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/system/Permissions.java b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/system/Permissions.java index 83a6b85..132a70a 100644 --- a/OpSecurity V2/src/main/java/de/jatitv/opsecurity/system/Permissions.java +++ b/OpSecurity V2/src/main/java/de/jatitv/opsecurity/system/Permissions.java @@ -1,6 +1,6 @@ package de.jatitv.opsecurity.system; -import net.t2code.lib.Spigot.Lib.register.Register; +import net.t2code.t2codelib.SPIGOT.api.register.T2Cregister; import org.bukkit.permissions.PermissionDefault; public class Permissions { @@ -16,17 +16,17 @@ public class Permissions { public static final PermissionDefault notOp = PermissionDefault.NOT_OP; protected static void register() { - Register.permission(notify, op, Main.plugin); - Register.permissionDescription(notify,"Players with this permission get the update message when joining if an update is available",Main.plugin); - Register.permission(updatemsg, op, Main.plugin); - Register.permission(reload, op, Main.plugin); - Register.permission(info, op, Main.plugin); - Register.permission(help, op, Main.plugin); + T2Cregister.permission(notify, op, Main.getPlugin()); + T2Cregister.permissionDescription(notify,"Players with this permission get the update message when joining if an update is available",Main.getPlugin()); + T2Cregister.permission(updatemsg, op, Main.getPlugin()); + T2Cregister.permission(reload, op, Main.getPlugin()); + T2Cregister.permission(info, op, Main.getPlugin()); + T2Cregister.permission(help, op, Main.getPlugin()); - Register.permission(admin, op, notify, true, Main.plugin); - Register.permission(admin, op, updatemsg, true, Main.plugin); - Register.permission(admin, op, reload, true, Main.plugin); - Register.permission(admin, op, info, true, Main.plugin); - Register.permission(admin, op, help, true, Main.plugin); + T2Cregister.permission(admin, op, notify, true, Main.getPlugin()); + T2Cregister.permission(admin, op, updatemsg, true, Main.getPlugin()); + T2Cregister.permission(admin, op, reload, true, Main.getPlugin()); + T2Cregister.permission(admin, op, info, true, Main.getPlugin()); + T2Cregister.permission(admin, op, help, true, Main.getPlugin()); } }