From 72ab3dae5dcb2fc170fa897390dd96351ad333e9 Mon Sep 17 00:00:00 2001 From: Bradley Hilton Date: Thu, 15 Jun 2017 12:21:03 -0500 Subject: [PATCH] Update to the latest Minecraft version --- pom.xml | 4 ++-- .../com/graywolf336/jail/PrisonerManager.java | 19 +++++++++++++++++-- src/main/java/com/graywolf336/jail/Util.java | 18 ++++++++++++++++++ .../jail/util/TestInstanceCreator.java | 2 +- 4 files changed, 38 insertions(+), 5 deletions(-) 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;