diff --git a/Spigot/pom.xml b/Spigot/pom.xml index 71e32f58..794c7019 100644 --- a/Spigot/pom.xml +++ b/Spigot/pom.xml @@ -5,7 +5,7 @@ net.goldtreeservers worldguardextraflags - 4.2.5-SNAPSHOT + 4.2.6-SNAPSHOT net.goldtreeservers.worldguardextraflags @@ -105,12 +105,12 @@ 7.0.6 provided - - com.comphenix.protocol - ProtocolLib - 4.5.0 - provided - + + net.dmulloy2 + ProtocolLib + 5.4.0 + provided + org.bstats bstats-bukkit diff --git a/Spigot/src/main/resources/plugin.yml b/Spigot/src/main/resources/plugin.yml index b7227c05..3d8c12c9 100644 --- a/Spigot/src/main/resources/plugin.yml +++ b/Spigot/src/main/resources/plugin.yml @@ -1,7 +1,7 @@ name: WorldGuardExtraFlags description: Adds more flags to WorldGuard to help manage your server easily! -version: 4.2.5-SNAPSHOT +version: 4.2.6-SNAPSHOT api-version: 1.13 author: isokissa3 diff --git a/WG/pom.xml b/WG/pom.xml index 0460fa0d..cfbeb400 100644 --- a/WG/pom.xml +++ b/WG/pom.xml @@ -1,55 +1,83 @@ - 4.0.0 - - net.goldtreeservers - worldguardextraflags - 4.2.5-SNAPSHOT - + 4.0.0 + + net.goldtreeservers + worldguardextraflags + 4.2.6-SNAPSHOT + - net.goldtreeservers.worldguardextraflags - wg + net.goldtreeservers.worldguardextraflags + wg - - - spigot-repo - https://hub.spigotmc.org/nexus/content/repositories/snapshots/ - - - sk89q-repo - https://maven.enginehub.org/repo/ - - + + + spigot-repo + https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + + sk89q-repo + https://maven.enginehub.org/repo/ + + - - - org.spigotmc - spigot-api - 1.20.6-R0.1-SNAPSHOT - provided - - - com.sk89q.worldedit - worldedit-core - 7.2.8 - provided - - - com.sk89q.worldedit - worldedit-bukkit - 7.2.8 - provided - - - com.sk89q.worldguard - worldguard-core - 7.0.6 - provided - - - com.sk89q.worldguard - worldguard-bukkit - 7.0.6 - provided - - + + + org.projectlombok + lombok + 1.18.42 + provided + + + + org.spigotmc + spigot-api + 1.20.6-R0.1-SNAPSHOT + provided + + + com.sk89q.worldedit + worldedit-core + 7.2.8 + provided + + + com.sk89q.worldedit + worldedit-bukkit + 7.2.8 + provided + + + com.sk89q.worldguard + worldguard-core + 7.0.6 + provided + + + com.sk89q.worldguard + worldguard-bukkit + 7.0.6 + provided + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + 21 + 21 + + + org.projectlombok + lombok + 1.18.42 + + + + + + \ No newline at end of file diff --git a/WG/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/ConsoleCommandOnEntryFlagHandler.java b/WG/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/ConsoleCommandOnEntryFlagHandler.java index 6fd09dcd..af898630 100644 --- a/WG/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/ConsoleCommandOnEntryFlagHandler.java +++ b/WG/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/ConsoleCommandOnEntryFlagHandler.java @@ -9,6 +9,9 @@ import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.session.handler.Handler; import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.java.JavaPlugin; import com.sk89q.worldguard.protection.ApplicableRegionSet; import com.sk89q.worldguard.protection.regions.ProtectedRegion; @@ -49,13 +52,68 @@ public boolean onCrossBoundary(LocalPlayer player, Location from, Location to, A if (!this.getSession().getManager().hasBypass(player, (World) to.getExtent())) { - for(Set commands_ : commands) + for (Set commands_ : commands) { if (!this.lastCommands.contains(commands_)) { - for(String command : commands_) + Plugin plugin; + try { - Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), command.substring(1).replace("%username%", player.getName())); //TODO: Make this better + plugin = JavaPlugin.getProvidingPlugin(this.getClass()); + } + catch (IllegalArgumentException | IllegalStateException e) + { + plugin = Bukkit.getPluginManager().getPlugin("WorldGuardExtraFlags"); + } + + if (plugin == null) + { + Bukkit.getLogger().severe("[WGEF-DEBUG] CRITICAL: Plugin instance is NULL! Commands cannot run."); + break; + } + + if (!plugin.isEnabled()) + { + Bukkit.getLogger().warning("[WGEF-DEBUG] Plugin is disabled, skipping commands."); + break; + } + + final Set commandsToRun = commands_; + final String playerName = player.getName(); + final Plugin pluginFinal = plugin; + + Runnable commandTask = () -> + { + ConsoleCommandSender console = Bukkit.getConsoleSender(); + for (String command : commandsToRun) + { + try + { + if (command == null || command.trim().isEmpty()) continue; + + String cmdToRun = command.replace("%username%", playerName).trim(); + if (cmdToRun.startsWith("/")) + { + cmdToRun = cmdToRun.substring(1); + } + + Bukkit.dispatchCommand(console, cmdToRun); + } + catch (Throwable t) + { + pluginFinal.getLogger().warning("[WGEF-Error] Failed to execute command '" + command + "' for " + playerName); + t.printStackTrace(); + } + } + }; + + if (Bukkit.isPrimaryThread()) + { + commandTask.run(); + } + else + { + Bukkit.getScheduler().runTask(pluginFinal, commandTask); } break; diff --git a/WG/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/ConsoleCommandOnExitFlagHandler.java b/WG/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/ConsoleCommandOnExitFlagHandler.java index ce097627..1604edac 100644 --- a/WG/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/ConsoleCommandOnExitFlagHandler.java +++ b/WG/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/ConsoleCommandOnExitFlagHandler.java @@ -10,6 +10,8 @@ import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.session.handler.Handler; import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.plugin.Plugin; import com.sk89q.worldguard.protection.ApplicableRegionSet; import com.sk89q.worldguard.protection.regions.ProtectedRegion; @@ -76,9 +78,47 @@ public boolean onCrossBoundary(LocalPlayer player, Location from, Location to, A { if (!commands.contains(commands_)) { - for (String command : commands_) + final Plugin plugin = Bukkit.getPluginManager().getPlugin("WorldGuardExtraFlags"); + if (plugin == null || !plugin.isEnabled()) { - Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), command.substring(1).replace("%username%", player.getName())); //TODO: Make this better + break; + } + + final Set commandsToRun = commands_; + final String playerName = player.getName(); + + Runnable commandTask = () -> + { + ConsoleCommandSender console = Bukkit.getConsoleSender(); + for (String command : commandsToRun) + { + try + { + if (command == null || command.trim().isEmpty()) continue; + + String cmdToRun = command.replace("%username%", playerName).trim(); + if (cmdToRun.startsWith("/")) + { + cmdToRun = cmdToRun.substring(1); + } + + Bukkit.dispatchCommand(console, cmdToRun); + } + catch (Throwable t) + { + plugin.getLogger().warning("Error executing console command '" + command + "' for player " + playerName); + t.printStackTrace(); + } + } + }; + + if (Bukkit.isPrimaryThread()) + { + commandTask.run(); + } + else + { + Bukkit.getScheduler().runTask(plugin, commandTask); } break; diff --git a/pom.xml b/pom.xml index bf5cd704..199b90ee 100644 --- a/pom.xml +++ b/pom.xml @@ -1,38 +1,60 @@ - 4.0.0 - net.goldtreeservers - worldguardextraflags - WorldGuardExtraFlags - 4.2.5-SNAPSHOT - - pom - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.13.0 - - 21 - 21 - - - - - - - - org.projectlombok - lombok - 1.18.32 - provided - - - - - WG - Spigot - + 4.0.0 + net.goldtreeservers + worldguardextraflags + WorldGuardExtraFlags + 4.2.6-SNAPSHOT + + pom + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + 21 + 21 + UTF-8 + + + + org.projectlombok + lombok + 1.18.42 + + + + + -J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED + -J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED + -J--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED + -J--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED + -J--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED + -J--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED + -J--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED + -J--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED + -J--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED + -J--add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED + + + + + + + + + org.projectlombok + lombok + 1.18.42 + provided + + + + + WG + Spigot + \ No newline at end of file