Update to the latest Minecraft version

This commit is contained in:
Bradley Hilton 2017-06-15 12:21:03 -05:00
parent a37907ece9
commit 72ab3dae5d
No known key found for this signature in database
GPG Key ID: 0666B2C24C43C358
4 changed files with 38 additions and 5 deletions

View File

@ -56,14 +56,14 @@
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>bukkit</artifactId>
<version>1.9-R0.1-SNAPSHOT</version>
<version>1.12-R0.1-SNAPSHOT</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>craftbukkit</artifactId>
<version>1.9-R0.1-SNAPSHOT</version>
<version>1.12-R0.1-SNAPSHOT</version>
<type>jar</type>
<scope>provided</scope>
</dependency>

View File

@ -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();
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();
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();
}

View File

@ -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;
}
}
}

View File

@ -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;