diff --git a/pom.xml b/pom.xml index 424c581..66ae93a 100644 --- a/pom.xml +++ b/pom.xml @@ -6,14 +6,14 @@ net.noodles.pl NoPluginsCommand - 1.2 + 1.4 jar NoPluginsCommand Blocks /plugin, /about, /version, and more! - 1.8 + 21 UTF-8 https://bghddevelopment.com @@ -56,10 +56,6 @@ - - papermc-repo - https://papermc.io/repo/repository/maven-public/ - sonatype https://oss.sonatype.org/content/groups/public/ @@ -70,7 +66,7 @@ org.spigotmc spigot-api - 1.12-R0.1-SNAPSHOT + 1.21.3-R0.1-SNAPSHOT provided diff --git a/src/main/java/net/noodles/pl/nopluginscommand/Color.java b/src/main/java/net/noodles/pl/nopluginscommand/Color.java deleted file mode 100644 index b3b78bc..0000000 --- a/src/main/java/net/noodles/pl/nopluginscommand/Color.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.noodles.pl.nopluginscommand; - -import org.bukkit.ChatColor; - -import java.util.List; -import java.util.stream.Collectors; - -public class Color { - - public static String translate(String source) { - return ChatColor.translateAlternateColorCodes('&', source); - } - - public static String translate(String player, String source) { - source = translate(source); - return translate(source); - } - - public static List translate(List source) { - return source.stream().map(Color::translate).collect(Collectors.toList()); - } -} diff --git a/src/main/java/net/noodles/pl/nopluginscommand/NoPluginsCommand.java b/src/main/java/net/noodles/pl/nopluginscommand/NoPluginsCommand.java index 923813d..2fa3253 100644 --- a/src/main/java/net/noodles/pl/nopluginscommand/NoPluginsCommand.java +++ b/src/main/java/net/noodles/pl/nopluginscommand/NoPluginsCommand.java @@ -1,85 +1,26 @@ package net.noodles.pl.nopluginscommand; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; +import net.noodles.pl.nopluginscommand.listener.CommandListener; +import net.noodles.pl.nopluginscommand.listener.ServerCommandsListener; +import net.noodles.pl.nopluginscommand.util.UpdateChecker; import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.plugin.java.JavaPlugin; -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.Arrays; -import java.util.List; - public final class NoPluginsCommand extends JavaPlugin implements Listener { - @Override - public void onEnable() { - getServer().getPluginManager().registerEvents(this, this); - updateCheck(Bukkit.getConsoleSender()); + public static JavaPlugin getPlugin() { + return plugin; } + private static JavaPlugin plugin; - public void updateCheck(CommandSender sender) { - try { - String urlString = "https://updatecheck.bghddevelopment.com"; - URL url = new URL(urlString); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.setRequestMethod("GET"); - connection.setRequestProperty("User-Agent", "Mozilla/5.0"); - BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); - String input; - StringBuffer response = new StringBuffer(); - while ((input = reader.readLine()) != null) { - response.append(input); - } - reader.close(); - JsonObject object = new JsonParser().parse(response.toString()).getAsJsonObject(); - - if (object.has("plugins")) { - JsonObject plugins = object.get("plugins").getAsJsonObject(); - JsonObject info = plugins.get("NoPluginCommand").getAsJsonObject(); - String version = info.get("version").getAsString(); - if (version.equals(getDescription().getVersion())) { - sender.sendMessage(Color.translate("&aNoPluginCommand is on the latest version.")); - } else { - sender.sendMessage(Color.translate("")); - sender.sendMessage(Color.translate("")); - sender.sendMessage(Color.translate("&cYour NoPluginCommand version is out of date!")); - sender.sendMessage(Color.translate("&cWe recommend updating ASAP!")); - sender.sendMessage(Color.translate("")); - sender.sendMessage(Color.translate("&cYour Version: &e" + getDescription().getVersion())); - sender.sendMessage(Color.translate("&aNewest Version: &e" + version)); - sender.sendMessage(Color.translate("")); - sender.sendMessage(Color.translate("")); - return; - } - return; - } else { - sender.sendMessage(Color.translate("&cWrong response from update API, contact plugin developer!")); - return; - } - } catch ( - Exception ex) { - sender.sendMessage(Color.translate("&cFailed to get updater check. (" + ex.getMessage() + ")")); - return; - } - } - - @EventHandler - public void onCommandUse(PlayerCommandPreprocessEvent event) { - List commands = Arrays.asList("?", "pl", "about", "version", "ver", "plugins", "bukkit:?", "bukkit:pl", "bukkit:about", "bukkit:version", "bukkit:ver", "bukkit:plugins", "minecraft:pl", "minecraft:plugins", "minecraft:about", "minecraft:version", "minecraft:ver"); - commands.forEach(all -> { - String[] arrCommand = event.getMessage().toLowerCase().split(" ", 2); - if (arrCommand[0].equalsIgnoreCase("/" + all.toLowerCase())) { - event.setCancelled(true); - } - }); + @Override + public void onEnable() { + plugin = this; + getServer().getPluginManager().registerEvents(new CommandListener(), this); + getServer().getPluginManager().registerEvents(new ServerCommandsListener(), this); + UpdateChecker.updateCheck(Bukkit.getConsoleSender()); } } diff --git a/src/main/java/net/noodles/pl/nopluginscommand/listener/CommandListener.java b/src/main/java/net/noodles/pl/nopluginscommand/listener/CommandListener.java new file mode 100644 index 0000000..f46208c --- /dev/null +++ b/src/main/java/net/noodles/pl/nopluginscommand/listener/CommandListener.java @@ -0,0 +1,20 @@ +package net.noodles.pl.nopluginscommand.listener; + +import net.noodles.pl.nopluginscommand.util.CommandSet; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; + +public class CommandListener implements Listener { + + @EventHandler + public void onCommandUse(PlayerCommandPreprocessEvent event) { + if (event.getPlayer().hasPermission("nopluginscommand.bypass")) + return; + + String command = event.getMessage().split(" ", 2)[0].substring(1).toLowerCase(); + if (CommandSet.set.contains(command)) + event.setCancelled(true); + } + +} diff --git a/src/main/java/net/noodles/pl/nopluginscommand/listener/ServerCommandsListener.java b/src/main/java/net/noodles/pl/nopluginscommand/listener/ServerCommandsListener.java new file mode 100644 index 0000000..9ef7f22 --- /dev/null +++ b/src/main/java/net/noodles/pl/nopluginscommand/listener/ServerCommandsListener.java @@ -0,0 +1,18 @@ +package net.noodles.pl.nopluginscommand.listener; + +import net.noodles.pl.nopluginscommand.util.CommandSet; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerCommandSendEvent; + +public class ServerCommandsListener implements Listener { + + @EventHandler + public void onServerCommandSend(PlayerCommandSendEvent event) { + if (event.getPlayer().hasPermission("nopluginscommand.bypass")) + return; + + event.getCommands().removeAll(CommandSet.set); + } + +} diff --git a/src/main/java/net/noodles/pl/nopluginscommand/util/CommandSet.java b/src/main/java/net/noodles/pl/nopluginscommand/util/CommandSet.java new file mode 100644 index 0000000..6f72aa6 --- /dev/null +++ b/src/main/java/net/noodles/pl/nopluginscommand/util/CommandSet.java @@ -0,0 +1,10 @@ +package net.noodles.pl.nopluginscommand.util; + +import java.util.Arrays; +import java.util.HashSet; + +public class CommandSet { + + public static final HashSet set = new HashSet<>(Arrays.asList("?", "pl", "about", "version", "ver", "plugins", "bukkit:?", "bukkit:pl", "bukkit:about", "bukkit:version", "bukkit:ver", "bukkit:plugins", "minecraft:pl", "minecraft:plugins", "minecraft:about", "minecraft:version", "minecraft:ver")); + +} diff --git a/src/main/java/net/noodles/pl/nopluginscommand/util/UpdateChecker.java b/src/main/java/net/noodles/pl/nopluginscommand/util/UpdateChecker.java new file mode 100644 index 0000000..8165bff --- /dev/null +++ b/src/main/java/net/noodles/pl/nopluginscommand/util/UpdateChecker.java @@ -0,0 +1,63 @@ +package net.noodles.pl.nopluginscommand.util; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import net.noodles.pl.nopluginscommand.NoPluginsCommand; +import org.bukkit.command.CommandSender; +import org.bukkit.scheduler.BukkitRunnable; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URI; +import java.net.URL; + +public class UpdateChecker { + + public static void updateCheck(CommandSender sender) { + new BukkitRunnable() { + @Override + public void run() { + try { + String urlString = "https://updatecheck.bghddevelopment.com"; + URL url = URI.create(urlString).toURL(); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("GET"); + connection.setRequestProperty("User-Agent", "Mozilla/5.0"); + BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); + String input; + StringBuilder response = new StringBuilder(); + while ((input = reader.readLine()) != null) { + response.append(input); + } + reader.close(); + JsonObject object = JsonParser.parseString(response.toString()).getAsJsonObject(); + + if (object.has("plugins")) { + JsonObject plugins = object.get("plugins").getAsJsonObject(); + JsonObject info = plugins.get("NoPluginCommand").getAsJsonObject(); + String version = info.get("version").getAsString(); + if (version.equals(NoPluginsCommand.getPlugin().getDescription().getVersion())) { + sender.sendMessage("§aNoPluginCommand is on the latest version."); + } else { + sender.sendMessage(""); + sender.sendMessage(""); + sender.sendMessage("§cYour NoPluginCommand version is out of date!"); + sender.sendMessage("§cWe recommend updating ASAP!"); + sender.sendMessage(""); + sender.sendMessage("§cYour Version: §e" + NoPluginsCommand.getPlugin().getDescription().getVersion()); + sender.sendMessage("§aNewest Version: §e" + version); + sender.sendMessage(""); + sender.sendMessage(""); + } + } else { + sender.sendMessage("§cWrong response from update API, contact plugin developer!"); + } + } catch (Exception ex) { + sender.sendMessage("§cFailed to get updater check. (" + ex.getMessage() + ")"); + } + } + }.runTaskAsynchronously(NoPluginsCommand.getPlugin()); + } + +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index da7d029..00c6e5c 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,7 +1,11 @@ name: NoPluginsCommand -version: 1.2 +version: ${project.version} main: net.noodles.pl.nopluginscommand.NoPluginsCommand authors: [BGHDDevelopmentLLC] description: Blocks /plugin, /about, /version, and more! website: https://bghddevelopment.com -api-version: 1.18 +api-version: 1.20 +permissions: + nopluginscommand.bypass: + default: false + description: allows access to forbidden commands