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);
+ }
}
}