diff --git a/pom.xml b/pom.xml
index b50c67a..ffe6c96 100644
--- a/pom.xml
+++ b/pom.xml
@@ -56,14 +56,14 @@
org.bukkit
bukkit
- 1.9-R0.1-SNAPSHOT
+ 1.12-R0.1-SNAPSHOT
jar
org.bukkit
craftbukkit
- 1.9-R0.1-SNAPSHOT
+ 1.12-R0.1-SNAPSHOT
jar
provided
diff --git a/src/main/java/com/graywolf336/jail/PrisonerManager.java b/src/main/java/com/graywolf336/jail/PrisonerManager.java
index ae5cb61..9adee89 100644
--- a/src/main/java/com/graywolf336/jail/PrisonerManager.java
+++ b/src/main/java/com/graywolf336/jail/PrisonerManager.java
@@ -7,6 +7,7 @@ import java.util.UUID;
import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
@@ -232,7 +233,14 @@ public class PrisonerManager {
//only eject them if they're inside a vehicle and also eject anyone else on top of them
if(player.isInsideVehicle()) {
player.getVehicle().eject();
- player.getPassenger().eject();
+
+ if (Util.doesClassHaveThisMethod(Entity.class, "getPassengers")) {
+ player.getPassengers().forEach(e -> e.eject());
+ } else {
+ //Ideally we should @SurpressWarnings due to the handling this, but leaving this here for now
+ player.getPassenger().eject();
+ }
+
player.eject();
}
@@ -456,7 +464,14 @@ public class PrisonerManager {
//them so we can possibly teleport them
if(player.isInsideVehicle()) {
player.getVehicle().eject();
- player.getPassenger().eject();
+
+ if (Util.doesClassHaveThisMethod(Entity.class, "getPassengers")) {
+ player.getPassengers().forEach(e -> e.eject());
+ } else {
+ //Ideally we should @SurpressWarnings due to the handling this, but leaving this here for now
+ player.getPassenger().eject();
+ }
+
player.eject();
}
diff --git a/src/main/java/com/graywolf336/jail/Util.java b/src/main/java/com/graywolf336/jail/Util.java
index f03b769..989d810 100644
--- a/src/main/java/com/graywolf336/jail/Util.java
+++ b/src/main/java/com/graywolf336/jail/Util.java
@@ -512,4 +512,22 @@ public class Util {
Bukkit.getLogger().severe("Unable to restore " + player.getName() + "'s inventory.");
}
}
+
+ /**
+ * Checks if the provided class has the provided method.
+ *
+ * @param c The {@link Class} to check on.
+ * @param method The name of the method to check for
+ * @return whether the method exists or not.
+ */
+ public static boolean doesClassHaveThisMethod(Class> c, String method) {
+ try {
+ c.getMethod(method);
+ return true;
+ } catch (NoSuchMethodException e) {
+ return true;
+ } catch (SecurityException e) {
+ return false;
+ }
+ }
}
diff --git a/src/test/java/test/java/com/graywolf336/jail/util/TestInstanceCreator.java b/src/test/java/test/java/com/graywolf336/jail/util/TestInstanceCreator.java
index 6769792..d01af4e 100644
--- a/src/test/java/test/java/com/graywolf336/jail/util/TestInstanceCreator.java
+++ b/src/test/java/test/java/com/graywolf336/jail/util/TestInstanceCreator.java
@@ -30,7 +30,7 @@ import org.bukkit.WorldCreator;
import org.bukkit.WorldType;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
-import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftItemFactory;
+import org.bukkit.craftbukkit.v1_12_R1.inventory.CraftItemFactory;
import org.bukkit.entity.Player;
import org.bukkit.permissions.Permission;
import org.bukkit.plugin.Plugin;