From d1533cd0964f365577de6d0372ee1fe4cdae1097 Mon Sep 17 00:00:00 2001 From: Brianna Date: Tue, 14 Apr 2020 15:27:56 -0400 Subject: [PATCH] Fixed permission check issue. --- .../commands/CommandBan.java | 6 +++-- .../commands/CommandMute.java | 5 ++-- .../utils/VaultPermissions.java | 24 +++++++++++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/songoda/ultimatemoderation/utils/VaultPermissions.java diff --git a/src/main/java/com/songoda/ultimatemoderation/commands/CommandBan.java b/src/main/java/com/songoda/ultimatemoderation/commands/CommandBan.java index 4667c03..b3887e4 100644 --- a/src/main/java/com/songoda/ultimatemoderation/commands/CommandBan.java +++ b/src/main/java/com/songoda/ultimatemoderation/commands/CommandBan.java @@ -1,10 +1,12 @@ package com.songoda.ultimatemoderation.commands; import com.songoda.core.commands.AbstractCommand; +import com.songoda.core.utils.PlayerUtils; import com.songoda.ultimatemoderation.UltimateModeration; import com.songoda.ultimatemoderation.punish.Punishment; import com.songoda.ultimatemoderation.punish.PunishmentType; import com.songoda.ultimatemoderation.utils.Methods; +import com.songoda.ultimatemoderation.utils.VaultPermissions; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; @@ -48,12 +50,12 @@ public class CommandBan extends AbstractCommand { OfflinePlayer player = Bukkit.getOfflinePlayer(args[0]); - if (player == null) { + if (!player.hasPlayedBefore()) { instance.getLocale().newMessage("That player does not exist.").sendMessage(sender); return ReturnType.FAILURE; } - if (sender instanceof Player && player.getPlayer().hasPermission("um.ban.exempt")) { + if (sender instanceof Player && VaultPermissions.hasPermission(Bukkit.getWorlds().get(0).getName(), player, "um.ban.exempt")) { instance.getLocale().newMessage("You cannot ban this player.").sendPrefixedMessage(sender); return ReturnType.FAILURE; } diff --git a/src/main/java/com/songoda/ultimatemoderation/commands/CommandMute.java b/src/main/java/com/songoda/ultimatemoderation/commands/CommandMute.java index c314c93..340b4fc 100644 --- a/src/main/java/com/songoda/ultimatemoderation/commands/CommandMute.java +++ b/src/main/java/com/songoda/ultimatemoderation/commands/CommandMute.java @@ -5,6 +5,7 @@ import com.songoda.ultimatemoderation.UltimateModeration; import com.songoda.ultimatemoderation.punish.Punishment; import com.songoda.ultimatemoderation.punish.PunishmentType; import com.songoda.ultimatemoderation.utils.Methods; +import com.songoda.ultimatemoderation.utils.VaultPermissions; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; @@ -48,12 +49,12 @@ public class CommandMute extends AbstractCommand { OfflinePlayer player = Bukkit.getOfflinePlayer(args[0]); - if (player == null) { + if (!player.hasPlayedBefore()) { instance.getLocale().newMessage("That player does not exist.").sendPrefixedMessage(sender); return ReturnType.FAILURE; } - if (sender instanceof Player && player.getPlayer().hasPermission("um.mute.exempt")) { + if (sender instanceof Player && VaultPermissions.hasPermission(Bukkit.getWorlds().get(0).getName(), player, "um.mute.exempt")) { instance.getLocale().newMessage("You cannot mute that player.").sendPrefixedMessage(sender); return ReturnType.FAILURE; } diff --git a/src/main/java/com/songoda/ultimatemoderation/utils/VaultPermissions.java b/src/main/java/com/songoda/ultimatemoderation/utils/VaultPermissions.java new file mode 100644 index 0000000..8da8525 --- /dev/null +++ b/src/main/java/com/songoda/ultimatemoderation/utils/VaultPermissions.java @@ -0,0 +1,24 @@ +package com.songoda.ultimatemoderation.utils; + +import net.milkbowl.vault.permission.Permission; +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.plugin.RegisteredServiceProvider; + +public class VaultPermissions { + + // Vault + private static Permission vaultPermission = null; + + static { + if (Bukkit.getServer().getPluginManager().getPlugin("Vault") != null) { + RegisteredServiceProvider permissionRsp = Bukkit.getServer().getServicesManager().getRegistration(Permission.class); + if (permissionRsp != null) vaultPermission = permissionRsp.getProvider(); + } + } + + public static boolean hasPermission(String world, OfflinePlayer offlinePlayer, String perm) { + if (vaultPermission != null) return vaultPermission.playerHas(world, offlinePlayer, perm); + return false; + } +}