From 81daa2f46fa25474ee01ddfe17fbbc6a7fa9611c Mon Sep 17 00:00:00 2001 From: Loki Rautio Date: Tue, 7 Nov 2023 10:25:12 -0600 Subject: [PATCH 1/3] Respect Essentials Commands on Bukkit Servers CommandBook compat within WorldGuard was gutted some time ago, but the commands don't register when CommandBook is present. Make this functionally identical with the similar-featured and popular plugin Essentials. --- .../worldguard/bukkit/BukkitConfigurationManager.java | 9 +++++++++ .../com/sk89q/worldguard/bukkit/WorldGuardPlugin.java | 7 ++++--- .../bukkit/listener/WorldGuardServerListener.java | 8 ++++++++ worldguard-bukkit/src/main/resources/defaults/config.yml | 2 +- worldguard-bukkit/src/main/resources/plugin.yml | 2 +- 5 files changed, 23 insertions(+), 5 deletions(-) diff --git a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/BukkitConfigurationManager.java b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/BukkitConfigurationManager.java index 3e898e19..bb0c69cf 100644 --- a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/BukkitConfigurationManager.java +++ b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/BukkitConfigurationManager.java @@ -37,6 +37,7 @@ public class BukkitConfigurationManager extends YamlConfigurationManager { private boolean hasCommandBookGodMode; boolean extraStats; + private boolean hasEssentialsGodMode; /** * Construct the object. @@ -124,4 +125,12 @@ public void updateCommandBookGodMode() { public boolean hasCommandBookGodMode() { return hasCommandBookGodMode; } + + public void updateEssentialsGodMode() { + hasEssentialsGodMode = plugin.getServer().getPluginManager().isPluginEnabled("Essentials"); + } + + public boolean hasEssentialsGodMode() { + return hasEssentialsGodMode; + } } diff --git a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java index 3ba99792..df4517cf 100644 --- a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java +++ b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java @@ -160,7 +160,10 @@ public void onEnable() { reg.register(ToggleCommands.class); reg.register(ProtectionCommands.class); - if (!platform.getGlobalStateManager().hasCommandBookGodMode()) { + platform.getGlobalStateManager().updateCommandBookGodMode(); + platform.getGlobalStateManager().updateEssentialsGodMode(); + + if (!platform.getGlobalStateManager().hasCommandBookGodMode() && !platform.getGlobalStateManager().hasEssentialsGodMode()) { reg.register(GeneralCommands.class); } @@ -192,8 +195,6 @@ public void onEnable() { (new DebuggingListener(this, WorldGuard.logger)).registerEvents(); } - platform.getGlobalStateManager().updateCommandBookGodMode(); - if (getServer().getPluginManager().isPluginEnabled("CommandBook")) { getServer().getPluginManager().registerEvents(new WorldGuardCommandBookListener(this), this); } diff --git a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardServerListener.java b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardServerListener.java index 27923286..98f48960 100644 --- a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardServerListener.java +++ b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardServerListener.java @@ -35,6 +35,10 @@ public void onPluginEnable(PluginEnableEvent event) { if (event.getPlugin().getDescription().getName().equalsIgnoreCase("CommandBook")) { getConfig().updateCommandBookGodMode(); } + + if(event.getPlugin().getDescription().getName().equalsIgnoreCase("Essentials")){ + getConfig().updateEssentialsGodMode(); + } } @EventHandler @@ -42,5 +46,9 @@ public void onPluginDisable(PluginDisableEvent event) { if (event.getPlugin().getDescription().getName().equalsIgnoreCase("CommandBook")) { getConfig().updateCommandBookGodMode(); } + + if(event.getPlugin().getDescription().getName().equalsIgnoreCase("Essentials")){ + getConfig().updateEssentialsGodMode(); + } } } diff --git a/worldguard-bukkit/src/main/resources/defaults/config.yml b/worldguard-bukkit/src/main/resources/defaults/config.yml index 4501e6fb..cc38d855 100644 --- a/worldguard-bukkit/src/main/resources/defaults/config.yml +++ b/worldguard-bukkit/src/main/resources/defaults/config.yml @@ -12,7 +12,7 @@ # - If you want to check the format of this file before putting it # into WorldGuard, paste it into http://yaml-online-parser.appspot.com/ # and see if it gives "ERROR:". -# - Lines starting with # are commentsand so they are ignored. +# - Lines starting with # are comments and so they are ignored. # # WARNING: # Remember to check the compatibility spreadsheet for WorldGuard to see diff --git a/worldguard-bukkit/src/main/resources/plugin.yml b/worldguard-bukkit/src/main/resources/plugin.yml index 223be72f..2134a320 100644 --- a/worldguard-bukkit/src/main/resources/plugin.yml +++ b/worldguard-bukkit/src/main/resources/plugin.yml @@ -2,5 +2,5 @@ name: WorldGuard main: com.sk89q.worldguard.bukkit.WorldGuardPlugin version: "${internalVersion}" depend: [WorldEdit] -softdepend: [CommandBook] +softdepend: [CommandBook, Essentials] api-version: "1.20" From bf396488b7eb639c2d0051c8e64b74475be3a014 Mon Sep 17 00:00:00 2001 From: Loki Rautio Date: Tue, 7 Nov 2023 10:37:01 -0600 Subject: [PATCH 2/3] Fall back to compatability layer when any command plugin is present --- .../worldguard/bukkit/WorldGuardPlugin.java | 3 ++ .../worldguard/commands/GeneralCommands.java | 14 ++--- .../commands/GeneralCompatibleCommands.java | 51 +++++++++++++++++++ 3 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 worldguard-core/src/main/java/com/sk89q/worldguard/commands/GeneralCompatibleCommands.java diff --git a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java index df4517cf..a4f80382 100644 --- a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java +++ b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java @@ -63,6 +63,7 @@ import com.sk89q.worldguard.bukkit.util.Entities; import com.sk89q.worldguard.bukkit.util.Events; import com.sk89q.worldguard.commands.GeneralCommands; +import com.sk89q.worldguard.commands.GeneralCompatibleCommands; import com.sk89q.worldguard.commands.ProtectionCommands; import com.sk89q.worldguard.commands.ToggleCommands; import com.sk89q.worldguard.domains.registry.SimpleDomainRegistry; @@ -165,6 +166,8 @@ public void onEnable() { if (!platform.getGlobalStateManager().hasCommandBookGodMode() && !platform.getGlobalStateManager().hasEssentialsGodMode()) { reg.register(GeneralCommands.class); + }else{ + reg.register(GeneralCompatibleCommands.class); } getServer().getScheduler().scheduleSyncRepeatingTask(this, sessionManager, BukkitSessionManager.RUN_DELAY, BukkitSessionManager.RUN_DELAY); diff --git a/worldguard-core/src/main/java/com/sk89q/worldguard/commands/GeneralCommands.java b/worldguard-core/src/main/java/com/sk89q/worldguard/commands/GeneralCommands.java index 1b8fffce..1227c355 100644 --- a/worldguard-core/src/main/java/com/sk89q/worldguard/commands/GeneralCommands.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/commands/GeneralCommands.java @@ -39,7 +39,7 @@ public GeneralCommands(WorldGuard worldGuard) { this.worldGuard = worldGuard; } - @Command(aliases = {"god"}, usage = "[player]", + @Command(aliases = {"god", "wggod"}, usage = "[player]", desc = "Enable godmode on a player", flags = "s", max = 1) public void god(CommandContext args, Actor sender) throws CommandException, AuthorizationException { Iterable targets = null; @@ -84,7 +84,7 @@ public void god(CommandContext args, Actor sender) throws CommandException, Auth } } - @Command(aliases = {"ungod"}, usage = "[player]", + @Command(aliases = {"ungod", "wgungod"}, usage = "[player]", desc = "Disable godmode on a player", flags = "s", max = 1) public void ungod(CommandContext args, Actor sender) throws CommandException, AuthorizationException { Iterable targets; @@ -127,7 +127,7 @@ public void ungod(CommandContext args, Actor sender) throws CommandException, Au } } - @Command(aliases = {"heal"}, usage = "[player]", desc = "Heal a player", flags = "s", max = 1) + @Command(aliases = {"heal", "wgheal"}, usage = "[player]", desc = "Heal a player", flags = "s", max = 1) public void heal(CommandContext args, Actor sender) throws CommandException, AuthorizationException { Iterable targets = null; @@ -171,7 +171,7 @@ public void heal(CommandContext args, Actor sender) throws CommandException, Aut } } - @Command(aliases = {"slay"}, usage = "[player]", desc = "Slay a player", flags = "s", max = 1) + @Command(aliases = {"slay", "wgslay"}, usage = "[player]", desc = "Slay a player", flags = "s", max = 1) public void slay(CommandContext args, Actor sender) throws CommandException, AuthorizationException { Iterable targets = Lists.newArrayList(); @@ -212,7 +212,7 @@ public void slay(CommandContext args, Actor sender) throws CommandException, Aut } } - @Command(aliases = {"locate"}, usage = "[player]", desc = "Locate a player", max = 1) + @Command(aliases = {"locate", "locate"}, usage = "[player]", desc = "Locate a player", max = 1) @CommandPermissions({"worldguard.locate"}) public void locate(CommandContext args, Actor sender) throws CommandException { LocalPlayer player = worldGuard.checkPlayer(sender); @@ -229,7 +229,7 @@ public void locate(CommandContext args, Actor sender) throws CommandException { } } - @Command(aliases = {"stack", ";"}, usage = "", desc = "Stack items", max = 0) + @Command(aliases = {"stack", "wgstack", ";"}, usage = "", desc = "Stack items", max = 0) @CommandPermissions({"worldguard.stack"}) public void stack(CommandContext args, Actor sender) throws CommandException { LocalPlayer player = worldGuard.checkPlayer(sender); @@ -238,4 +238,6 @@ public void stack(CommandContext args, Actor sender) throws CommandException { player.print("Items compacted into stacks!"); } + + } diff --git a/worldguard-core/src/main/java/com/sk89q/worldguard/commands/GeneralCompatibleCommands.java b/worldguard-core/src/main/java/com/sk89q/worldguard/commands/GeneralCompatibleCommands.java new file mode 100644 index 00000000..6fc6e299 --- /dev/null +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/commands/GeneralCompatibleCommands.java @@ -0,0 +1,51 @@ +package com.sk89q.worldguard.commands; + +import com.sk89q.minecraft.util.commands.Command; +import com.sk89q.minecraft.util.commands.CommandContext; +import com.sk89q.minecraft.util.commands.CommandException; +import com.sk89q.minecraft.util.commands.CommandPermissions; +import com.sk89q.worldedit.extension.platform.Actor; +import com.sk89q.worldedit.util.auth.AuthorizationException; +import com.sk89q.worldguard.WorldGuard; + +public class GeneralCompatibleCommands { + private final GeneralCommands generalCommands; + + public GeneralCompatibleCommands(WorldGuard worldGuard) { + this.generalCommands = new GeneralCommands(worldGuard); + } + + @Command(aliases = {"wggod"}, usage = "[player]", + desc = "Enable godmode on a player", flags = "s", max = 1) + public void god(CommandContext args, Actor sender) throws CommandException, AuthorizationException { + generalCommands.god(args, sender); + } + + @Command(aliases = {"wgungod"}, usage = "[player]", + desc = "Disable godmode on a player", flags = "s", max = 1) + public void ungod(CommandContext args, Actor sender) throws CommandException, AuthorizationException { + generalCommands.ungod(args, sender); + } + + @Command(aliases = {"wgheal"}, usage = "[player]", desc = "Heal a player", flags = "s", max = 1) + public void heal(CommandContext args, Actor sender) throws CommandException, AuthorizationException { + generalCommands.heal(args, sender); + } + + @Command(aliases = {"wgslay"}, usage = "[player]", desc = "Slay a player", flags = "s", max = 1) + public void slay(CommandContext args, Actor sender) throws CommandException, AuthorizationException { + generalCommands.slay(args, sender); + } + + @Command(aliases = {"wglocate"}, usage = "[player]", desc = "Locate a player", max = 1) + @CommandPermissions({"worldguard.locate"}) + public void locate(CommandContext args, Actor sender) throws CommandException { + generalCommands.locate(args, sender); + } + + @Command(aliases = {"wgstack", ";"}, usage = "", desc = "Stack items", max = 0) + @CommandPermissions({"worldguard.stack"}) + public void stack(CommandContext args, Actor sender) throws CommandException { + generalCommands.stack(args, sender); + } +} From f0cebc4b10eae9b86915afb189f81afaf05686cb Mon Sep 17 00:00:00 2001 From: Loki Rautio Date: Tue, 7 Nov 2023 10:41:45 -0600 Subject: [PATCH 3/3] Fix license violation in GeneralCompatibleCommands --- .../commands/GeneralCompatibleCommands.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/worldguard-core/src/main/java/com/sk89q/worldguard/commands/GeneralCompatibleCommands.java b/worldguard-core/src/main/java/com/sk89q/worldguard/commands/GeneralCompatibleCommands.java index 6fc6e299..53ad7e17 100644 --- a/worldguard-core/src/main/java/com/sk89q/worldguard/commands/GeneralCompatibleCommands.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/commands/GeneralCompatibleCommands.java @@ -1,3 +1,22 @@ +/* + * WorldGuard, a suite of tools for Minecraft + * Copyright (C) sk89q + * Copyright (C) WorldGuard team and contributors + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + package com.sk89q.worldguard.commands; import com.sk89q.minecraft.util.commands.Command;