From e42989fa603a991c4fff63f2e3ae4e0c4eca9e29 Mon Sep 17 00:00:00 2001 From: Sven Arends Date: Sun, 1 Jun 2025 23:28:17 +0200 Subject: [PATCH 1/5] Added @a, @r and @p selector for /pr startother --- .../subcommand/SubcommandStartOther.java | 99 +++++++++++++++---- 1 file changed, 79 insertions(+), 20 deletions(-) diff --git a/src/main/java/nl/svenar/powercamera/commands/subcommand/SubcommandStartOther.java b/src/main/java/nl/svenar/powercamera/commands/subcommand/SubcommandStartOther.java index 9f5db25..046be88 100644 --- a/src/main/java/nl/svenar/powercamera/commands/subcommand/SubcommandStartOther.java +++ b/src/main/java/nl/svenar/powercamera/commands/subcommand/SubcommandStartOther.java @@ -1,18 +1,26 @@ package nl.svenar.powercamera.commands.subcommand; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Location; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + import nl.svenar.powercamera.CameraHandler; import nl.svenar.powercamera.PowerCamera; import nl.svenar.powercamera.commands.PowerCameraCommand; import nl.svenar.powercamera.commands.structure.CommandExecutionContext; import nl.svenar.powercamera.data.CameraMode; import nl.svenar.powercamera.data.PlayerCameraData; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -@SuppressWarnings({"PMD.AvoidLiteralsInIfCondition", "PMD.CommentRequired", "PMD.LocalVariableCouldBeFinal", "PMD.MethodArgumentCouldBeFinal"}) +@SuppressWarnings({ "PMD.AvoidLiteralsInIfCondition", "PMD.CommentRequired", "PMD.LocalVariableCouldBeFinal", + "PMD.MethodArgumentCouldBeFinal" }) public class SubcommandStartOther extends PowerCameraCommand { public SubcommandStartOther(PowerCamera plugin, String commandName) { @@ -22,7 +30,8 @@ public SubcommandStartOther(PowerCamera plugin, String commandName) { @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if (args.length != 2) { - sendMessage(sender, ChatColor.DARK_RED + "Usage: /" + commandLabel + " startother "); + sendMessage(sender, + ChatColor.DARK_RED + "Usage: /" + commandLabel + " startother "); return false; } @@ -34,27 +43,77 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, return false; } - Player targetPlayer = Bukkit.getPlayer(targetName); + List targetPlayers = getPlayersFromSelector(sender, targetName); - if (targetPlayer == null) { - sendMessage(sender, ChatColor.DARK_RED + "Player '" + targetName + "' not found or is offline!"); + if (targetPlayers.isEmpty()) { + sendMessage(sender, ChatColor.DARK_RED + "No matching players found for selector '" + targetName + "'"); return false; } - PlayerCameraData cameraData = plugin.getPlayerData().get(targetPlayer); + for (Player targetPlayer : targetPlayers) { + PlayerCameraData cameraData = plugin.getPlayerData().get(targetPlayer); - if (cameraData.getCameraMode() != CameraMode.NONE) { - sendMessage(sender, ChatColor.DARK_RED + "Player '" + targetPlayer.getName() + "' already has a camera active!"); - return false; - } + if (cameraData.getCameraMode() != CameraMode.NONE) { + sendMessage(sender, + ChatColor.DARK_RED + "Player '" + targetPlayer.getName() + "' already has a camera active!"); + continue; + } - if (this.plugin.getConfigCameras().cameraExists(cameraName)) { - cameraData.setCameraHandler(new CameraHandler(plugin, targetPlayer, cameraName).generatePath().start()); - sender.sendMessage(plugin.getPluginChatPrefix() + ChatColor.GREEN + "Playing '" + cameraName + "' on player: " + targetPlayer.getName()); - } else { - sendMessage(sender, ChatColor.RED + "Camera '" + cameraName + "' not found!"); + if (this.plugin.getConfigCameras().cameraExists(cameraName)) { + cameraData.setCameraHandler(new CameraHandler(plugin, targetPlayer, cameraName).generatePath().start()); + sender.sendMessage(plugin.getPluginChatPrefix() + ChatColor.GREEN + "Playing '" + cameraName + + "' on player: " + targetPlayer.getName()); + } else { + sendMessage(sender, ChatColor.RED + "Camera '" + cameraName + "' not found!"); + break; + } } return false; } + + private List getPlayersFromSelector(CommandSender sender, String selector) { + selector = selector.replace("@", "").toLowerCase(); + + if (selector.equals("a")) { + // All online players + return new ArrayList<>(Bukkit.getOnlinePlayers()); + } + + if (selector.equals("r")) { + // Random online player + List players = new ArrayList<>(Bukkit.getOnlinePlayers()); + if (!players.isEmpty()) { + return List.of(players.get(new Random().nextInt(players.size()))); + } + return List.of(); + } + + if (selector.equals("p")) { + // Nearest player to the command block or sender + if (sender instanceof BlockCommandSender blockSender) { + Location blockLocation = blockSender.getBlock().getLocation(); + double closestDistance = Double.MAX_VALUE; + Player closestPlayer = null; + + for (Player player : Bukkit.getOnlinePlayers()) { + double distance = player.getLocation().distanceSquared(blockLocation); + if (distance < closestDistance) { + closestDistance = distance; + closestPlayer = player; + } + } + + return closestPlayer != null ? List.of(closestPlayer) : List.of(); + } + + if (sender instanceof Player player) { + return List.of(player); + } + } + + Player namedPlayer = Bukkit.getPlayer(selector); + return namedPlayer != null ? List.of(namedPlayer) : List.of(); + } + } From f1b8406598036b4cc3fbe45f98ffe7047d8f9d3f Mon Sep 17 00:00:00 2001 From: Sven Arends Date: Mon, 2 Jun 2025 21:24:52 +0200 Subject: [PATCH 2/5] Removed patreon link --- src/main/java/nl/svenar/powercamera/PowerCamera.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/main/java/nl/svenar/powercamera/PowerCamera.java b/src/main/java/nl/svenar/powercamera/PowerCamera.java index ec3bcc5..b4e3216 100644 --- a/src/main/java/nl/svenar/powercamera/PowerCamera.java +++ b/src/main/java/nl/svenar/powercamera/PowerCamera.java @@ -26,7 +26,7 @@ public class PowerCamera extends JavaPlugin { public static final String WEBSITE_URL = "https://svenar.nl/powercamera"; - public static final List DONATION_URLS = Arrays.asList("https://ko-fi.com/svenar", "https://patreon.com/svenar"); + public static final String DONATION_URL = "https://ko-fi.com/svenar"; // public Map playerSelectedCamera = new HashMap<>(); // Selected camera name // public Map playerCameraMode = new HashMap<>(); // When the player is viewing the camera (/pc start & /pc preview) @@ -76,7 +76,7 @@ public void onEnable() { setupConfig(); getLogger().info("Enabled " + getPluginDescriptionFile().getName() + " v" + getPluginDescriptionFile().getVersion()); - getLogger().info("If you'd like to donate, please visit " + DONATION_URLS.get(0) + " or " + DONATION_URLS.get(1)); + getLogger().info("If you'd like to donate, please visit " + DONATION_URL); int pluginId = 9107; @SuppressWarnings("unused") @@ -145,11 +145,6 @@ private void setupConfig() { } newPoints.add(point); -// if (point.contains(":")) { -// newPoints.add(point); -// } else { -// newPoints.add("location:" + point); -// } } configCameras.getConfig().set("cameras." + cameraName + ".points", newPoints); } From 7ee2139f64f1d53e6952d0896c8b6c82a3f0aa2c Mon Sep 17 00:00:00 2001 From: Sven Arends Date: Mon, 2 Jun 2025 21:25:25 +0200 Subject: [PATCH 3/5] Added svenar repo & upgraded paper to 1.21.5 --- pom.xml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 21c8da3..8b8ef67 100644 --- a/pom.xml +++ b/pom.xml @@ -17,11 +17,15 @@ - 0.9.0 + 0.9.1 -SNAPSHOT + + svenar-repo + https://repo.svenar.nl/ + reload-repo https://nexus.reloadkube.managedservices.resilient-teched.com/repository/reload/ @@ -44,12 +48,14 @@ io.papermc.paper paper-api - 1.20.4-R0.1-20241030.192207-176 + 1.21.5-R0.1-SNAPSHOT provided - + + clean compile package + ${project.name} org.apache.maven.plugins From 8a05baa120df5f91623b47b7e939393d38aaea59 Mon Sep 17 00:00:00 2001 From: Sven Arends Date: Mon, 2 Jun 2025 21:26:06 +0200 Subject: [PATCH 4/5] Removed some parts from the PR template that are not relevant --- .github/pull_request_template.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 9ab1b7e..854d4a3 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -3,7 +3,6 @@ --- -- [ ] The main commit(s) reference the Fibery ticket via a `TASK-NNNN` prefix in the commit message subject - [ ] Include a human-readable description of what the pull request is trying to accomplish - [ ] The CI build passes --- @@ -19,8 +18,6 @@ --- - [ ] Classes and public methods have documentation (that doesn't just repeat the technical subject in English) -- [ ] Logging is implemented to monitor feature usage and troubleshoot problems in production -- [ ] These ReWiki pages are affected by this change and will be adapted: --- From 993de0b54161390807e9238d3de07d42e954fde6 Mon Sep 17 00:00:00 2001 From: Sven Arends Date: Mon, 2 Jun 2025 22:45:46 +0200 Subject: [PATCH 5/5] Updated build to run using ubuntu-latest and JDK 21 --- .github/workflows/build.yml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ed9d2f5..86ff88d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,7 +10,15 @@ on: jobs: build: - uses: ResilientGroup/MavenSetup/.github/workflows/build.yml@1.9.0 - with: - javadoc-project-name: PowerCamera - secrets: inherit + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 21 + uses: actions/setup-java@v3 + with: + java-version: '21' + distribution: 'temurin' + cache: maven + - name: Build with Maven + run: mvn -B package --file pom.xml \ No newline at end of file