Skip to main content

Overview

Islands are the fundamental building blocks of SuperiorSkyblock2. Each island represents a player-owned territory in the skyblock world, complete with member management, permissions, upgrades, and tracking systems.

Island Structure

Every island in SuperiorSkyblock2 has:
  • Unique Identity: Each island has a UUID and creation timestamp
  • Owner: The island owner who has full control
  • Members: Players who belong to the island with specific roles
  • Territory: Defined boundaries across multiple dimensions (Normal, Nether, End)
  • Persistence: All data is stored and can be accessed through the database bridge

Core Components

Location & Boundaries

Islands have distinct location properties:
// Get the center position of the island
BlockPosition getCenterPosition();
Location getCenter(Dimension dimension);

// Get island boundaries
Location getMinimum();
Location getMaximum();
Location getMinimumProtected();
Location getMaximumProtected();

// Check if location is inside island
boolean isInside(Location location);
boolean isInsideRange(Location location); // Protected area
The island system distinguishes between:
  • Island Area: The full claimed territory
  • Protected Area: The inner region where building/breaking rules apply

Multi-Dimension Support

Islands span across three dimensions:

Normal World

The overworld dimension where islands are created

Nether

Optional nether dimension for each island

End

Optional end dimension for each island
// Check if dimension is enabled
boolean isNormalEnabled();
boolean isNetherEnabled();
boolean isEndEnabled();
boolean isDimensionEnabled(Dimension dimension);

// Enable/disable dimensions
void setDimensionEnabled(Dimension dimension, boolean enabled);

Member Management

Member Types

Islands support different member types:
  1. Owner: The island creator with full permissions
  2. Members: Regular island members with role-based permissions
  3. Co-op Players: Temporary members with limited access
  4. Visitors: Players currently on the island
  5. Banned Players: Players prohibited from entering
// Get members
List<SuperiorPlayer> getIslandMembers(boolean includeOwner);
List<SuperiorPlayer> getIslandMembers(PlayerRole... playerRoles);

// Add/remove members
void addMember(SuperiorPlayer player, PlayerRole role);
void removeMember(SuperiorPlayer player, MemberRemoveReason reason);

// Check membership
boolean isMember(SuperiorPlayer player);

Permissions System

Islands use a sophisticated permission system with role-based and player-specific permissions:
// Check permissions
boolean hasPermission(SuperiorPlayer player, IslandPrivilege privilege);
boolean hasPermission(PlayerRole role, IslandPrivilege privilege);

// Set permissions
void setPermission(PlayerRole role, IslandPrivilege privilege);
void setPermission(SuperiorPlayer player, IslandPrivilege privilege, boolean value);

// Get required role for privilege
PlayerRole getRequiredPlayerRole(IslandPrivilege privilege);

// Reset permissions
void resetPermissions();
void resetPermissions(SuperiorPlayer player);
Role permissions define the minimum role required for an action, while player permissions override role-based permissions for specific players.

Island Properties

Size & Limits

// Island radius/size
int getIslandSize();
void setIslandSize(int size);

// Team size limit
int getTeamLimit(); // From upgrades

Customization

// Basic properties
void setName(String name);
String getName();
void setDescription(String description);
String getDescription();

// Biome
Biome getBiome();
void setBiome(Biome biome);
void setBiome(Biome biome, boolean updateBlocks);

// Social integration
String getDiscord();
void setDiscord(String discord);
String getPaypal();
void setPaypal(String paypal);

Island Status

// Lock island to visitors
boolean isLocked();
void setLocked(boolean locked);
When locked, only members can enter the island.

Home & Warp System

Island Home Locations

// Get home locations
Location getIslandHome(Dimension dimension);
Map<Dimension, Location> getIslandHomesAsDimensions();

// Set home locations
void setIslandHome(Location location);
void setIslandHome(Dimension dimension, WorldPosition position);

// Visitors location
Location getVisitorsLocation(Dimension dimension);
void setVisitorsLocation(Location location);
Each dimension can have its own home location. The visitors location is where non-members spawn when visiting.

Worth Calculation

Islands track block and entity counts to calculate worth:
// Calculate island worth
void calcIslandWorth(SuperiorPlayer asker);
void calcIslandWorth(SuperiorPlayer asker, Runnable callback);

// Check calculation status
boolean isBeingRecalculated();

// Get calculation algorithm
IslandCalculationAlgorithm getCalculationAlgorithm();

Block & Entity Tracking

// Handle block placement/removal
void handleBlockPlace(Block block);
void handleBlockPlace(Key key, int amount);
BlockChangeResult handleBlockPlaceWithResult(Block block, int amount);

void handleBlockBreak(Block block);
void handleBlockBreak(Key key, int amount);

// Tracking algorithms
IslandBlocksTrackerAlgorithm getBlocksTracker();
IslandEntitiesTrackerAlgorithm getEntitiesTracker();

Island Bank

Each island has an integrated banking system:
// Get island bank
IslandBank getIslandBank();

// Bank limits
BigDecimal getBankLimit();
void setBankLimit(BigDecimal limit);

// Bank interest
boolean giveInterest(boolean checkOnlineOwner);
long getLastInterestTime();
long getNextInterest();
See Island Bank for detailed banking operations.

Chunk Management

// Get chunks
List<Chunk> getAllChunks();
List<Chunk> getAllChunks(Dimension dimension);
List<Chunk> getLoadedChunks();

// Async chunk loading
List<CompletableFuture<Chunk>> getAllChunksAsync(Dimension dimension);

// Reset chunks
void resetChunks();
void resetChunks(Dimension dimension, Runnable onFinish);

Island Lifecycle

Creation & Transfer

// Island creation is handled by IslandCreationAlgorithm
// Transfer leadership
boolean transferIsland(SuperiorPlayer newOwner);

// Replace player (for data migration)
void replacePlayers(SuperiorPlayer original, SuperiorPlayer replacement);

Disbanding

// Disband the island
void disbandIsland();
Disbanding an island is permanent and will remove all island data, kick all members, and clear the territory.

Communication

Islands provide built-in communication to all members:
// Send messages
void sendMessage(String message);
void sendMessage(IMessageComponent component, Object... args);

// Send titles
void sendTitle(String title, String subtitle, int fadeIn, int duration, int fadeOut);

// Execute commands
void executeCommand(String command, boolean onlyOnlineMembers);

Integration Points

Missions

Islands implement IMissionsHolder to track mission progress:
// Mission operations (inherited)
void completeMission(Mission<?> mission);
Map<Mission<?>, Integer> getCompletedMissions();
boolean hasCompletedMission(Mission<?> mission);

Persistent Data

Islands implement IPersistentDataHolder for custom data storage:
// Store custom data
PersistentDataContainer getPersistentDataContainer();

Database

Islands implement IDatabaseBridgeHolder for database operations:
// Database operations
DatabaseBridge getDatabaseBridge();

Best Practices

1

Always check null returns

Methods like getIslandHome() can return null if not set.
2

Use async operations for chunks

Loading chunks synchronously can cause lag. Use getAllChunksAsync() for better performance.
3

Respect member removal reasons

Use appropriate MemberRemoveReason when removing members for proper event handling.
4

Check permissions before operations

Always verify player permissions before allowing island modifications.

See Also

Players

Learn about player management and roles

Upgrades

Understand the island upgrade system

Missions

Explore mission and challenge systems

Modules

Extend functionality with modules