Commands
Every skyblock command shares one ACF base command registered with three interchangeable aliases: /skyblock, /is, /island (@CommandAlias("skyblock|is|island"), declared identically on SkyblockCommand, InvitationCommand, MemberCommand and CoopCommand). This page uses /is in examples. All subcommands below are player-only except /is reload, which also accepts the console.
Most subcommands are not gated by a Bukkit permission node at all — access is controlled by the caller's in-island permission (an IslandPermission value checked against their role via Island#hasPermission), not by @CommandPermission. See Permissions below for the one exception and for the skyblock.admin bypass node.
Island
Registered by SkyblockCommand.
Command | Description | In-island permission |
|---|---|---|
| Opens the | — |
| Creates a new island. | — |
| Deletes an island (database row and world). | — |
| Loads and teleports the caller to an island. | — |
| Reloads the plugin configuration. |
|
/is— resolves the caller's island viamembers().findPlayerIsland(...)and opens theisland-mainmenu with it. If the caller has no island, the command currently does nothing: the creation-menu fallback is a// TODO: Open creation menuin source and is not implemented in this version./is create [name] [blueprint]— both arguments are optional (@Nullable @Optional) despite the<name> <blueprint>syntax hint. Ifnameis omitted or blank, it defaults to the caller's username; ifblueprintis omitted, it defaults toBlueprintService#defaultBlueprint()(the blueprint flaggeddefault: truein its file — see Islands). Fails withNAME_ALREADY_TAKENif the resolved name is already in use. The command does not check whether the caller already owns an island before creating another one. Tab-completes<blueprint>with@islandBlueprints./is delete <island>— resolves<island>by exact name (see Argument resolution) and callsIslandService#deletedirectly. Neither the command nor the service performs an ownership or permission check — any player who can name (or tab-complete via@islands) an island can request its deletion./is go <island>— resolves the island's host server (or loads it on the network's emptiest island-capable server if it isn't hosted anywhere), then teleports the caller there through the coreTeleportationService. Likedelete, no ownership check is performed./is reload— works for console senders too (CommandSender, notPlayer). Re-invokesAstralSkyblock#loadConfiguration(), which reloadsconfig.yml,loader.yml,roles.yml,block-values.yml,messages.yml,settings.ymlandpermissions.yml. See Configuration.
Invitations
Registered by InvitationCommand. Invitations expire 15 minutes after creation (IslandInvitation.create, hardcoded — not a config value).
Command | Description | In-island permission |
|---|---|---|
| Sends a member invitation. |
|
| Sends a co-op invitation. |
|
| Accepts a pending invitation. | — |
| Declines a pending invitation. | — |
| Cancels an invitation the caller sent. | — |
/is invite//is coop— both fail withNO_ISLANDif the caller has no island, and withNO_PERMISSIONif the caller's role lacksINVITE_MEMBER/COOP_MEMBER. Both delegate toInvitationService#create, which silently no-ops (no message) if the recipient is already a member (or already coop, forCOOPinvitations) or already has a non-expired invitation from that island./is accept [player]//is decline [player]— with<player>given, resolves that sender's non-expired invitation specifically and fails withNO_PENDING_INVITATIONif none exists. Without an argument, looks at all of the caller's non-expired invitations: zero sendsNO_PENDING_INVITATION, exactly one is auto-accepted/declined, and more than one sendsMULTIPLE_PENDING_INVITATIONS(the caller must re-run with a sender specified)./is cancel <player>— fails withNO_ISLANDif the caller has no island.InvitationService#canceladditionally requires the caller to be the original sender of the pending invitation, otherwise it behaves as if no invitation exists (INVITATION_NOT_FOUND).
All four target-taking subcommands tab-complete <player> with @networkPlayers.
Members
Registered by MemberCommand. Role comparisons use each IslandRole's weight(); the promote/demote ladder is the island's non-owner (MEMBER-kind) roles sorted ascending by weight.
Command | Description | In-island permission |
|---|---|---|
| Removes a member from the island. |
|
| Leaves the caller's island. | — |
| Promotes a member one step up the role ladder. |
|
| Demotes a member one step down the role ladder. |
|
| Transfers island ownership to a member. | owner only |
/is kick— the island owner can never be kicked (MEMBER_HIGHER_ROLE); a non-owner kicker must also outrank the target's role weight./is leave— blocked for the island owner (OWNER_CANNOT_LEAVE); the owner must/is transferfirst./is promote//is demote— fail withMEMBER_ALREADY_HIGHEST_ROLE/MEMBER_ALREADY_LOWEST_ROLEat the ends of the ladder; a non-owner sender cannot promote a target to or above their own role weight, and must outrank the target to demote them (MEMBER_HIGHER_ROLE/MEMBER_PROMOTE_HIGHER)./is transfer— checked directly againstisland.owner()rather than anIslandPermission(NOT_ISLAND_OWNERif the caller isn't the owner).<player>must already be a member (MEMBER_NOT_FOUNDotherwise). On success the ex-owner is demoted to the island's highest-weightMEMBER-kind role and the target becomes owner.
<player> tab-completes with @islandMembers on all five subcommands (members of the caller's island, excluding the caller).
Co-ops
Registered by CoopCommand. See Members, Co-ops & Invitations for how co-op players differ from full members.
Command | Description | In-island permission |
|---|---|---|
| Removes a co-op player from the island. |
|
Fails with NO_ISLAND if the caller has no island, NO_PERMISSION if the caller's role lacks UNCOOP_MEMBER, and COOP_NOT_FOUND if <player> isn't currently a co-op of the island. Unlike the member-management subcommands, <player> tab-completes with the generic @players (any online player), not @islandMembers.
Permissions
Node | Kind | Grants |
|---|---|---|
| Bukkit ( |
|
| Bukkit (checked directly in code, not via ACF) | Bypasses every in-island |
Neither node is declared in plugin.yml (no permissions: block), so both fall back to Bukkit's default behavior for undeclared permissions (operators only).
Everything else is gated by the island's own role system — an IslandPermission value looked up on the caller's IslandRole (owners always pass; co-op players are checked against the island's COOP-kind role). See Roles, Permissions & Settings for the full IslandPermission list and how roles assign them.
Argument resolution
Two custom ACF context resolvers back the command arguments above:
Type | Resolver | Behavior |
|---|---|---|
|
| Pops the first argument and resolves it with |
|
| Pops the first argument. If it's absent and the parameter is |
MinecraftPlayer arguments (used by invite/coop/accept/decline/cancel/kick/promote/demote/transfer/uncoop) resolve through AstralCore's context resolver, not one registered by this plugin.
Tab completion
Handler | Registered as | Source |
|---|---|---|
|
|
|
|
|
|
|
| Names of the caller's island's members, excluding the caller; empty if the caller has no island. |
@networkPlayers and @players are AstralCore-provided completions, not registered by this plugin.