diff --git a/pom.xml b/pom.xml index b9f5a1b..ae2eb79 100644 --- a/pom.xml +++ b/pom.xml @@ -62,6 +62,10 @@ sonatype https://oss.sonatype.org/content/groups/public/ + + jitpack.io + https://jitpack.io + @@ -77,5 +81,12 @@ 1.15-SNAPSHOT provided + + com.github.PaperMC + Waterfall + 1.16 + system + ${project.basedir}/lib/waterfall-366.jar + diff --git a/src/main/java/eu/endermite/commandwhitelist/CommandWhitelistBungee.java b/src/main/java/eu/endermite/commandwhitelist/bungee/CommandWhitelistBungee.java similarity index 67% rename from src/main/java/eu/endermite/commandwhitelist/CommandWhitelistBungee.java rename to src/main/java/eu/endermite/commandwhitelist/bungee/CommandWhitelistBungee.java index d79b2c6..de0a9b4 100644 --- a/src/main/java/eu/endermite/commandwhitelist/CommandWhitelistBungee.java +++ b/src/main/java/eu/endermite/commandwhitelist/bungee/CommandWhitelistBungee.java @@ -1,35 +1,42 @@ -package eu.endermite.commandwhitelist; +package eu.endermite.commandwhitelist.bungee; import com.google.common.io.ByteStreams; -import eu.endermite.commandwhitelist.config.BungeeConfigCache; -import eu.endermite.commandwhitelist.listeners.BungeeChatEventListener; +import eu.endermite.commandwhitelist.bungee.config.BungeeConfigCache; +import eu.endermite.commandwhitelist.bungee.listeners.BungeeChatEventListener; +import eu.endermite.commandwhitelist.bungee.listeners.BungeeTabCompleteListener; +import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.plugin.Plugin; import net.md_5.bungee.config.Configuration; import net.md_5.bungee.config.ConfigurationProvider; import net.md_5.bungee.config.YamlConfiguration; - import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; + public final class CommandWhitelistBungee extends Plugin { - private static eu.endermite.commandwhitelist.CommandWhitelistBungee plugin; + private static CommandWhitelistBungee plugin; private static BungeeConfigCache configCache; @Override public void onEnable() { plugin = this; - + getLogger().info("Running on "+ ChatColor.DARK_AQUA+getProxy().getName()); loadConfig(); - this.getProxy().getPluginManager().registerListener(this, new BungeeChatEventListener()); + if (this.getProxy().getName().contains("Waterfall") || getProxy().getName().contains("FlameCord")) { + this.getProxy().getPluginManager().registerListener(this, new BungeeTabCompleteListener()); + } else { + getLogger().info("Bungee tab completion requires Waterfall, FlameCord or other Waterfall fork."); + } + } - public static eu.endermite.commandwhitelist.CommandWhitelistBungee getPlugin() { + public static CommandWhitelistBungee getPlugin() { return plugin; } diff --git a/src/main/java/eu/endermite/commandwhitelist/config/BungeeConfigCache.java b/src/main/java/eu/endermite/commandwhitelist/bungee/config/BungeeConfigCache.java similarity index 96% rename from src/main/java/eu/endermite/commandwhitelist/config/BungeeConfigCache.java rename to src/main/java/eu/endermite/commandwhitelist/bungee/config/BungeeConfigCache.java index cd308e7..a90fda2 100644 --- a/src/main/java/eu/endermite/commandwhitelist/config/BungeeConfigCache.java +++ b/src/main/java/eu/endermite/commandwhitelist/bungee/config/BungeeConfigCache.java @@ -1,4 +1,4 @@ -package eu.endermite.commandwhitelist.config; +package eu.endermite.commandwhitelist.bungee.config; import net.md_5.bungee.config.Configuration; diff --git a/src/main/java/eu/endermite/commandwhitelist/listeners/BungeeChatEventListener.java b/src/main/java/eu/endermite/commandwhitelist/bungee/listeners/BungeeChatEventListener.java similarity index 93% rename from src/main/java/eu/endermite/commandwhitelist/listeners/BungeeChatEventListener.java rename to src/main/java/eu/endermite/commandwhitelist/bungee/listeners/BungeeChatEventListener.java index 9882df4..93ca358 100644 --- a/src/main/java/eu/endermite/commandwhitelist/listeners/BungeeChatEventListener.java +++ b/src/main/java/eu/endermite/commandwhitelist/bungee/listeners/BungeeChatEventListener.java @@ -1,17 +1,15 @@ -package eu.endermite.commandwhitelist.listeners; +package eu.endermite.commandwhitelist.bungee.listeners; -import eu.endermite.commandwhitelist.CommandWhitelistBungee; +import eu.endermite.commandwhitelist.bungee.CommandWhitelistBungee; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.event.EventHandler; - import java.util.List; import java.util.Map; public class BungeeChatEventListener implements Listener { - @EventHandler public void onChatEvent(net.md_5.bungee.api.event.ChatEvent event) { @@ -42,13 +40,7 @@ public class BungeeChatEventListener implements Listener { event.setCancelled(true); player.sendMessage(ChatColor.translateAlternateColorCodes('&', CommandWhitelistBungee.getConfigCache().getPrefix() + CommandWhitelistBungee.getConfigCache().getCommandDenied())); } - } - - - } - } - } diff --git a/src/main/java/eu/endermite/commandwhitelist/bungee/listeners/BungeeTabCompleteListener.java b/src/main/java/eu/endermite/commandwhitelist/bungee/listeners/BungeeTabCompleteListener.java new file mode 100644 index 0000000..85dc8c8 --- /dev/null +++ b/src/main/java/eu/endermite/commandwhitelist/bungee/listeners/BungeeTabCompleteListener.java @@ -0,0 +1,41 @@ +package eu.endermite.commandwhitelist.bungee.listeners; + +import eu.endermite.commandwhitelist.bungee.CommandWhitelistBungee; +import net.md_5.bungee.api.connection.ProxiedPlayer; +import net.md_5.bungee.api.plugin.Command; +import net.md_5.bungee.api.plugin.Listener; +import net.md_5.bungee.event.EventHandler; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class BungeeTabCompleteListener implements Listener { + + @EventHandler + public void onProxyDefineCommandsEvent(io.github.waterfallmc.waterfall.event.ProxyDefineCommandsEvent event) { + + if (event.getReceiver() instanceof ProxiedPlayer) { + ProxiedPlayer player = (ProxiedPlayer) event.getReceiver(); + List commandList = new ArrayList<>(); + for (Map.Entry> entry : CommandWhitelistBungee.getConfigCache().getPermList().entrySet()) { + if (player.hasPermission("commandwhitelist.commands."+entry.getKey())) { + commandList.addAll(entry.getValue()); + } + } + HashMap commandHashMap = new HashMap<>(); + for (String s : commandList) { + for (Map.Entry command : CommandWhitelistBungee.getPlugin().getProxy().getPluginManager().getCommands()) { + if (s.equalsIgnoreCase(command.getValue().getName())) { + commandHashMap.put(command.getKey(), command.getValue()); + } + } + } + event.getCommands().values().removeIf((cmd) -> !commandHashMap.containsValue(cmd)); + } + + + + } + +} diff --git a/src/main/java/eu/endermite/commandwhitelist/CommandWhitelist.java b/src/main/java/eu/endermite/commandwhitelist/spigot/CommandWhitelist.java similarity index 81% rename from src/main/java/eu/endermite/commandwhitelist/CommandWhitelist.java rename to src/main/java/eu/endermite/commandwhitelist/spigot/CommandWhitelist.java index 490accd..7d4331f 100644 --- a/src/main/java/eu/endermite/commandwhitelist/CommandWhitelist.java +++ b/src/main/java/eu/endermite/commandwhitelist/spigot/CommandWhitelist.java @@ -1,9 +1,9 @@ -package eu.endermite.commandwhitelist; +package eu.endermite.commandwhitelist.spigot; -import eu.endermite.commandwhitelist.command.MainCommand; -import eu.endermite.commandwhitelist.config.ConfigCache; -import eu.endermite.commandwhitelist.listeners.PlayerCommandPreProcessListener; -import eu.endermite.commandwhitelist.listeners.PlayerCommandSendListener; +import eu.endermite.commandwhitelist.spigot.command.MainCommand; +import eu.endermite.commandwhitelist.spigot.config.ConfigCache; +import eu.endermite.commandwhitelist.spigot.listeners.PlayerCommandPreProcessListener; +import eu.endermite.commandwhitelist.spigot.listeners.PlayerCommandSendListener; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; diff --git a/src/main/java/eu/endermite/commandwhitelist/command/MainCommand.java b/src/main/java/eu/endermite/commandwhitelist/spigot/command/MainCommand.java similarity index 93% rename from src/main/java/eu/endermite/commandwhitelist/command/MainCommand.java rename to src/main/java/eu/endermite/commandwhitelist/spigot/command/MainCommand.java index 4be2cee..7ab96ab 100644 --- a/src/main/java/eu/endermite/commandwhitelist/command/MainCommand.java +++ b/src/main/java/eu/endermite/commandwhitelist/spigot/command/MainCommand.java @@ -1,6 +1,6 @@ -package eu.endermite.commandwhitelist.command; +package eu.endermite.commandwhitelist.spigot.command; -import eu.endermite.commandwhitelist.CommandWhitelist; +import eu.endermite.commandwhitelist.spigot.CommandWhitelist; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; diff --git a/src/main/java/eu/endermite/commandwhitelist/config/ConfigCache.java b/src/main/java/eu/endermite/commandwhitelist/spigot/config/ConfigCache.java similarity index 92% rename from src/main/java/eu/endermite/commandwhitelist/config/ConfigCache.java rename to src/main/java/eu/endermite/commandwhitelist/spigot/config/ConfigCache.java index f8077fb..0292622 100644 --- a/src/main/java/eu/endermite/commandwhitelist/config/ConfigCache.java +++ b/src/main/java/eu/endermite/commandwhitelist/spigot/config/ConfigCache.java @@ -1,6 +1,6 @@ -package eu.endermite.commandwhitelist.config; +package eu.endermite.commandwhitelist.spigot.config; -import eu.endermite.commandwhitelist.CommandWhitelist; +import eu.endermite.commandwhitelist.spigot.CommandWhitelist; import org.bukkit.configuration.Configuration; import java.util.HashMap; diff --git a/src/main/java/eu/endermite/commandwhitelist/listeners/PlayerCommandPreProcessListener.java b/src/main/java/eu/endermite/commandwhitelist/spigot/listeners/PlayerCommandPreProcessListener.java similarity index 92% rename from src/main/java/eu/endermite/commandwhitelist/listeners/PlayerCommandPreProcessListener.java rename to src/main/java/eu/endermite/commandwhitelist/spigot/listeners/PlayerCommandPreProcessListener.java index 3800570..9728f00 100644 --- a/src/main/java/eu/endermite/commandwhitelist/listeners/PlayerCommandPreProcessListener.java +++ b/src/main/java/eu/endermite/commandwhitelist/spigot/listeners/PlayerCommandPreProcessListener.java @@ -1,6 +1,6 @@ -package eu.endermite.commandwhitelist.listeners; +package eu.endermite.commandwhitelist.spigot.listeners; -import eu.endermite.commandwhitelist.CommandWhitelist; +import eu.endermite.commandwhitelist.spigot.CommandWhitelist; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; diff --git a/src/main/java/eu/endermite/commandwhitelist/listeners/PlayerCommandSendListener.java b/src/main/java/eu/endermite/commandwhitelist/spigot/listeners/PlayerCommandSendListener.java similarity index 88% rename from src/main/java/eu/endermite/commandwhitelist/listeners/PlayerCommandSendListener.java rename to src/main/java/eu/endermite/commandwhitelist/spigot/listeners/PlayerCommandSendListener.java index fcd5e28..85938e9 100644 --- a/src/main/java/eu/endermite/commandwhitelist/listeners/PlayerCommandSendListener.java +++ b/src/main/java/eu/endermite/commandwhitelist/spigot/listeners/PlayerCommandSendListener.java @@ -1,6 +1,6 @@ -package eu.endermite.commandwhitelist.listeners; +package eu.endermite.commandwhitelist.spigot.listeners; -import eu.endermite.commandwhitelist.CommandWhitelist; +import eu.endermite.commandwhitelist.spigot.CommandWhitelist; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; diff --git a/src/main/resources/bungee.yml b/src/main/resources/bungee.yml index 4fa6dca..6839dfd 100644 --- a/src/main/resources/bungee.yml +++ b/src/main/resources/bungee.yml @@ -1,4 +1,4 @@ name: CommandWhitelistBungee version: ${project.version} -main: eu.endermite.commandwhitelist.CommandWhitelistBungee +main: eu.endermite.commandwhitelist.bungee.CommandWhitelistBungee author: YouHaveTrouble diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 8660e4f..bf674e0 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: CommandWhitelist version: ${project.version} -main: eu.endermite.commandwhitelist.CommandWhitelist +main: eu.endermite.commandwhitelist.spigot.CommandWhitelist api-version: 1.13 authors: [YouHaveTrouble] description: Control what commands players can use