Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bunch of improvements #11

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 3 additions & 7 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -6,14 +6,14 @@

<groupId>net.noodles.pl</groupId>
<artifactId>NoPluginsCommand</artifactId>
<version>1.2</version>
<version>1.4</version>
<packaging>jar</packaging>

<name>NoPluginsCommand</name>

<description>Blocks /plugin, /about, /version, and more!</description>
<properties>
<java.version>1.8</java.version>
<java.version>21</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<url>https://bghddevelopment.com</url>
@@ -56,10 +56,6 @@
</build>

<repositories>
<repository>
<id>papermc-repo</id>
<url>https://papermc.io/repo/repository/maven-public/</url>
</repository>
<repository>
<id>sonatype</id>
<url>https://oss.sonatype.org/content/groups/public/</url>
@@ -70,7 +66,7 @@
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.12-R0.1-SNAPSHOT</version>
<version>1.21.3-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
22 changes: 0 additions & 22 deletions src/main/java/net/noodles/pl/nopluginscommand/Color.java

This file was deleted.

83 changes: 12 additions & 71 deletions src/main/java/net/noodles/pl/nopluginscommand/NoPluginsCommand.java
Original file line number Diff line number Diff line change
@@ -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<String> 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());
}

}
Original file line number Diff line number Diff line change
@@ -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);
}

}
Original file line number Diff line number Diff line change
@@ -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);
}

}
10 changes: 10 additions & 0 deletions src/main/java/net/noodles/pl/nopluginscommand/util/CommandSet.java
Original file line number Diff line number Diff line change
@@ -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<String> 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"));

}
Original file line number Diff line number Diff line change
@@ -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());
}

}
8 changes: 6 additions & 2 deletions src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
@@ -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