# Fixed NPE when interacting with an ArmorStand.
This commit is contained in:
Unknown 2018-12-10 01:21:48 +00:00
parent b37038ffd1
commit f74746b27f
3 changed files with 19 additions and 3 deletions

View File

@ -143,6 +143,18 @@ public class SkyBlockAPI {
return implementation.getIslandManager().hasPermission(player, setting);
}
/**
* Checks if a player has permission at a location at an Island for a Setting
*
* @return true of conditions met, false otherwise
*/
public static boolean hasPermission(Player player, Location location, String setting) {
Preconditions.checkArgument(player != null, "Cannot check permission to null player");
Preconditions.checkArgument(location != null, "Cannot check permission to null location");
return implementation.getIslandManager().hasPermission(player, location, setting);
}
/**
* Checks the permission of a Setting for a Role at a Location
*

View File

@ -766,11 +766,15 @@ public class IslandManager {
}
public boolean hasPermission(Player player, String setting) {
return hasPermission(player, player.getLocation(), setting);
}
public boolean hasPermission(Player player, org.bukkit.Location location, String setting) {
if (hasIsland(player)) {
Island island = getIsland(skyblock.getPlayerDataManager().getPlayerData(player).getOwner());
for (Location.World worldList : Location.World.values()) {
if (LocationUtil.isLocationAtLocationRadius(player.getLocation(),
if (LocationUtil.isLocationAtLocationRadius(location,
island.getLocation(worldList, Location.Environment.Island), island.getRadius())) {
if (island.hasRole(IslandRole.Member, player.getUniqueId())) {
if (!island.getSetting(IslandRole.Member, setting).getStatus()) {
@ -787,7 +791,7 @@ public class IslandManager {
Island island = getIslands().get(islandList);
for (Location.World worldList : Location.World.values()) {
if (LocationUtil.isLocationAtLocationRadius(player.getLocation(),
if (LocationUtil.isLocationAtLocationRadius(location,
island.getLocation(worldList, Location.Environment.Island), island.getRadius())) {
if (player.hasPermission("skyblock.bypass." + setting.toLowerCase())
|| player.hasPermission("skyblock.bypass.*") || player.hasPermission("skyblock.*")) {

View File

@ -719,7 +719,7 @@ public class Interact implements Listener {
if (player.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Normal).getName())
|| player.getWorld().getName()
.equals(skyblock.getWorldManager().getWorld(Location.World.Nether).getName())) {
if (!islandManager.hasPermission(player, "ArmorStand")) {
if (!islandManager.hasPermission(player, "ArmorStandUse")) {
event.setCancelled(true);
skyblock.getMessageManager().sendMessage(player,