diff --git a/pandalib-paper-permissions/src/main/java/fr/pandacube/lib/paper/permissions/PermissionsInjectorVault.java b/pandalib-paper-permissions/src/main/java/fr/pandacube/lib/paper/permissions/PermissionsInjectorVault.java index a8ff6dd..272e4c4 100644 --- a/pandalib-paper-permissions/src/main/java/fr/pandacube/lib/paper/permissions/PermissionsInjectorVault.java +++ b/pandalib-paper-permissions/src/main/java/fr/pandacube/lib/paper/permissions/PermissionsInjectorVault.java @@ -7,6 +7,7 @@ import net.milkbowl.vault.chat.Chat; import net.milkbowl.vault.permission.Permission; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; import org.bukkit.plugin.ServicePriority; import java.util.List; @@ -120,6 +121,13 @@ import java.util.List; return true; } + @Override + public boolean playerAdd(Player player, String permission) { + // override because the super class sets the permission on the current world of the player, that is probably + // not intended by the calling plugin + return playerAdd(null, player, permission); + } + @Deprecated @Override public boolean playerRemove(String world, String player, String permission) { @@ -136,6 +144,14 @@ import java.util.List; return true; } + @Override + public boolean playerRemove(Player player, String permission) { + // to stay coherent with the override of #playerAdd(Player, String), we also override this method. + // Will try first to remove the permission on the world itself (like super-method), then if it doesn't exist, + // removes on the server level. + return super.playerRemove(player, permission) || playerRemove(null, player, permission); + } + @Override public boolean groupHas(String world, String group, String permission) { checkEnabled();