From e5f4321320b53c9ccd60e014d0c0832302dd613a Mon Sep 17 00:00:00 2001 From: Wolf2323 Date: Wed, 29 Jan 2025 14:08:54 +0100 Subject: [PATCH] TASK-4950 PowerCamera is now a Paper only plugin to fix that you can spectate entities while a camera is active --- pom.xml | 12 ++++++------ .../java/nl/svenar/powercamera/PowerCamera.java | 15 +++++++++++++++ .../powercamera/events/PlayerMoveHandler.java | 11 ++++++++++- 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index a4f2b8b..21c8da3 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,7 @@ - 0.8.1 + 0.9.0 -SNAPSHOT @@ -27,8 +27,8 @@ https://nexus.reloadkube.managedservices.resilient-teched.com/repository/reload/ - spigotmc-repo - https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + papermc + https://repo.papermc.io/repository/maven-public/ @@ -42,9 +42,9 @@ - org.spigotmc - spigot-api - 1.20.4-R0.1-20240423.152506-123 + io.papermc.paper + paper-api + 1.20.4-R0.1-20241030.192207-176 provided diff --git a/src/main/java/nl/svenar/powercamera/PowerCamera.java b/src/main/java/nl/svenar/powercamera/PowerCamera.java index 7f4be91..ec3bcc5 100644 --- a/src/main/java/nl/svenar/powercamera/PowerCamera.java +++ b/src/main/java/nl/svenar/powercamera/PowerCamera.java @@ -47,8 +47,23 @@ public class PowerCamera extends JavaPlugin { private MainCommand mainCommand; + private static boolean hasClass(final String className) { + try { + Class.forName(className); + return true; + } catch (ClassNotFoundException e) { + return false; + } + } + @Override public void onEnable() { + if (!(hasClass("com.destroystokyo.paper.PaperConfig") || hasClass("io.papermc.paper.configuration.Configuration"))) { + getLogger().severe("This plugin requires Paper to run. Please install Paper and restart your server."); + getServer().getPluginManager().disablePlugin(this); + return; + } + pdf = this.getDescription(); pluginChatPrefix = pluginChatPrefix.replace("%pluginName%", pdf.getName()); diff --git a/src/main/java/nl/svenar/powercamera/events/PlayerMoveHandler.java b/src/main/java/nl/svenar/powercamera/events/PlayerMoveHandler.java index 0a56cbd..743e1af 100644 --- a/src/main/java/nl/svenar/powercamera/events/PlayerMoveHandler.java +++ b/src/main/java/nl/svenar/powercamera/events/PlayerMoveHandler.java @@ -1,5 +1,6 @@ package nl.svenar.powercamera.events; +import com.destroystokyo.paper.event.player.PlayerStartSpectatingEntityEvent; import nl.svenar.powercamera.PowerCamera; import nl.svenar.powercamera.data.CameraMode; import nl.svenar.powercamera.data.PlayerCameraData; @@ -21,9 +22,17 @@ public PlayerMoveHandler(PowerCamera plugin) { public void onPlayerMove(PlayerMoveEvent event) { PlayerCameraData playerCameraData = plugin.getPlayerData().get(event.getPlayer()); - if (playerCameraData.getCameraMode() == CameraMode.PREVIEW) { + if (playerCameraData.getCameraMode() != CameraMode.NONE) { event.setCancelled(true); } + } + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = false) + public void onPlayerSpectate(PlayerStartSpectatingEntityEvent event) { + PlayerCameraData playerCameraData = plugin.getPlayerData().get(event.getPlayer()); + if (playerCameraData.getCameraMode() != CameraMode.NONE) { + event.setCancelled(true); + } } }