Documentation Index
Fetch the complete documentation index at: https://mintlify.com/BG-Software-LLC/SuperiorSkyblock2/llms.txt
Use this file to discover all available pages before exploring further.
The Island Permissions API allows you to manage who can perform specific actions on an island. Permissions can be set for player roles or individual players.
Permission System Overview
SuperiorSkyblock2 uses a permission system based on:
- IslandPrivilege - Specific permissions like breaking blocks, opening chests, etc.
- PlayerRole - Roles like Owner, Admin, Member, etc.
- PermissionNode - Individual player permission overrides
Checking Permissions
hasPermission(CommandSender sender, IslandPrivilege islandPrivilege)
Check if a CommandSender has a specific permission.
The command sender to check
True if the sender has the permission
import com.bgsoftware.superiorskyblock.api.island.Island;
import com.bgsoftware.superiorskyblock.api.island.IslandPrivilege;
import org.bukkit.entity.Player;
public boolean canBreakBlocks(Island island, Player player) {
return island.hasPermission(player, IslandPrivilege.getByName("BREAK"));
}
hasPermission(SuperiorPlayer superiorPlayer, IslandPrivilege islandPrivilege)
Check if a SuperiorPlayer has a specific permission.
True if the player has the permission
import com.bgsoftware.superiorskyblock.api.wrappers.SuperiorPlayer;
boolean canUseWarps = island.hasPermission(
superiorPlayer,
IslandPrivilege.getByName("WARP")
);
hasPermission(PlayerRole playerRole, IslandPrivilege islandPrivilege)
Check if a specific role has a permission.
True if the role has the permission
import com.bgsoftware.superiorskyblock.api.island.PlayerRole;
PlayerRole memberRole = PlayerRole.getByName("Member");
boolean memberCanPlace = island.hasPermission(
memberRole,
IslandPrivilege.getByName("PLACE")
);
Setting Role Permissions
setPermission(PlayerRole playerRole, IslandPrivilege islandPrivilege)
Set a permission for a specific role.
The role to set the permission for
// Grant BREAK permission to Member role
island.setPermission(
PlayerRole.getByName("Member"),
IslandPrivilege.getByName("BREAK")
);
resetPermissions()
Reset all role permissions to default values.
// Reset all permissions to default
island.resetPermissions();
getRequiredPlayerRole(IslandPrivilege islandPrivilege)
Get the minimum role required for a specific permission.
The minimum required role
PlayerRole requiredRole = island.getRequiredPlayerRole(
IslandPrivilege.getByName("INVITE_MEMBER")
);
getRolePermissions()
Get all permissions and their required roles.
returns
Map<IslandPrivilege, PlayerRole>
Map of permissions to required roles
Map<IslandPrivilege, PlayerRole> rolePerms = island.getRolePermissions();
for (Map.Entry<IslandPrivilege, PlayerRole> entry : rolePerms.entrySet()) {
System.out.println(entry.getKey().getName() + " requires " + entry.getValue().getName());
}
Setting Player Permissions
setPermission(SuperiorPlayer superiorPlayer, IslandPrivilege islandPrivilege, boolean value)
Set a permission override for a specific player.
The player to set the permission for
True to grant, false to deny
// Grant a specific player BREAK permission regardless of role
island.setPermission(
superiorPlayer,
IslandPrivilege.getByName("BREAK"),
true
);
// Deny a specific player PLACE permission
island.setPermission(
superiorPlayer,
IslandPrivilege.getByName("PLACE"),
false
);
resetPermissions(SuperiorPlayer superiorPlayer)
Reset a player’s permission overrides to default (role-based) values.
The player whose permissions to reset
// Remove all custom permissions for this player
island.resetPermissions(superiorPlayer);
getPermissionNode(SuperiorPlayer superiorPlayer)
Get the permission node for a player, containing all their custom permissions.
The player to get permissions for
The player’s permission node
import com.bgsoftware.superiorskyblock.api.island.PermissionNode;
PermissionNode node = island.getPermissionNode(superiorPlayer);
Map<IslandPrivilege, Boolean> customPerms = node.getCustomPermissions();
getPlayerPermissions()
Get all custom player permissions for the island.
returns
Map<SuperiorPlayer, PermissionNode>
Map of players to their permission nodes
Map<SuperiorPlayer, PermissionNode> playerPerms = island.getPlayerPermissions();
for (Map.Entry<SuperiorPlayer, PermissionNode> entry : playerPerms.entrySet()) {
SuperiorPlayer player = entry.getKey();
PermissionNode node = entry.getValue();
// Process custom permissions
}
IslandPrivilege
Getting Island Privileges
import com.bgsoftware.superiorskyblock.api.island.IslandPrivilege;
import java.util.Collection;
// Get all available privileges
Collection<IslandPrivilege> allPrivileges = IslandPrivilege.values();
// Get a specific privilege by name
IslandPrivilege breakPrivilege = IslandPrivilege.getByName("BREAK");
IslandPrivilege placePrivilege = IslandPrivilege.getByName("PLACE");
IslandPrivilege openChestPrivilege = IslandPrivilege.getByName("CHEST_ACCESS");
Privilege Types
// Check the type of privilege
IslandPrivilege privilege = IslandPrivilege.getByName("BREAK");
IslandPrivilege.Type type = privilege.getType();
if (type == IslandPrivilege.Type.ACTION) {
// Can be given to visitors, coops, non-members
} else if (type == IslandPrivilege.Type.COMMAND) {
// Only for island team members
}
Registering Custom Privileges
// Register a custom ACTION privilege
IslandPrivilege.register("MY_CUSTOM_PRIVILEGE");
// Register a custom COMMAND privilege
IslandPrivilege.register("MY_CUSTOM_COMMAND", IslandPrivilege.Type.COMMAND);
PermissionNode
The PermissionNode interface represents a player’s permission overrides.
hasPermission(IslandPrivilege islandPrivilege)
Check if the node has a specific permission.
True if the permission is granted
setPermission(IslandPrivilege islandPrivilege, boolean value)
Set a permission in the node.
True to grant, false to deny
getCustomPermissions()
Get all custom permissions (not default/role-based).
returns
Map<IslandPrivilege, Boolean>
Map of custom permission overrides
Example: Permission Management System
import com.bgsoftware.superiorskyblock.api.island.Island;
import com.bgsoftware.superiorskyblock.api.island.IslandPrivilege;
import com.bgsoftware.superiorskyblock.api.island.PlayerRole;
import com.bgsoftware.superiorskyblock.api.wrappers.SuperiorPlayer;
import org.bukkit.entity.Player;
public class PermissionManager {
public void setupDefaultPermissions(Island island) {
// Allow Members to break and place blocks
PlayerRole member = PlayerRole.getByName("Member");
island.setPermission(member, IslandPrivilege.getByName("BREAK"));
island.setPermission(member, IslandPrivilege.getByName("PLACE"));
}
public void grantPlayerPermission(Island island, SuperiorPlayer player, String permissionName) {
IslandPrivilege privilege = IslandPrivilege.getByName(permissionName);
island.setPermission(player, privilege, true);
}
public void revokePlayerPermission(Island island, SuperiorPlayer player, String permissionName) {
IslandPrivilege privilege = IslandPrivilege.getByName(permissionName);
island.setPermission(player, privilege, false);
}
public boolean checkPermission(Island island, Player bukkitPlayer, String permissionName) {
IslandPrivilege privilege = IslandPrivilege.getByName(permissionName);
return island.hasPermission(bukkitPlayer, privilege);
}
public void resetAllPlayerPermissions(Island island, SuperiorPlayer player) {
island.resetPermissions(player);
}
}
Common Island Privileges
Here are some commonly used island privileges:
BREAK - Break blocks
PLACE - Place blocks
CHEST_ACCESS - Open chests
INTERACT - Interact with blocks
KILL_MOBS - Kill mobs
USE - Use items
WARP - Use warps
INVITE_MEMBER - Invite players
KICK_MEMBER - Kick members
BAN_MEMBER - Ban players
SET_HOME - Set island home
WITHDRAW_MONEY - Withdraw from bank
DEPOSIT_MONEY - Deposit to bank