Skip to main content
The Island Upgrades API allows you to manage and interact with island upgrade systems, including crop growth multipliers, spawner rates, limits, and more.

Getting Upgrades

getUpgradeLevel(Upgrade upgrade)

Get the current level of a specific upgrade for the island.
upgrade
Upgrade
required
The upgrade to check
returns
UpgradeLevel
The current upgrade level
import com.bgsoftware.superiorskyblock.api.island.Island;
import com.bgsoftware.superiorskyblock.api.upgrades.Upgrade;
import com.bgsoftware.superiorskyblock.api.upgrades.UpgradeLevel;
import com.bgsoftware.superiorskyblock.api.SuperiorSkyblockAPI;

Upgrade cropGrowthUpgrade = SuperiorSkyblockAPI.getUpgrades().getUpgrade("crop-growth");
UpgradeLevel currentLevel = island.getUpgradeLevel(cropGrowthUpgrade);

setUpgradeLevel(Upgrade upgrade, int level)

Set the level of an upgrade for the island.
upgrade
Upgrade
required
The upgrade to set
level
int
required
The level to set
Upgrade upgrade = SuperiorSkyblockAPI.getUpgrades().getUpgrade("crop-growth");
island.setUpgradeLevel(upgrade, 5);

getUpgrades()

Get all upgrades with their levels.
returns
Map<String, Integer>
Map of upgrade names to their levels
Map<String, Integer> upgrades = island.getUpgrades();
for (Map.Entry<String, Integer> entry : upgrades.entrySet()) {
    System.out.println(entry.getKey() + " is at level " + entry.getValue());
}

Upgrade Management

syncUpgrades()

Sync all upgrade values again. This removes custom values set using commands.
// Reset all custom upgrade values
island.syncUpgrades();

updateUpgrades()

Update the upgrade values from default values in config and upgrades file.
// Update upgrades from configuration
island.updateUpgrades();

getLastTimeUpgrade()

Get the last time the island was upgraded.
returns
long
Timestamp of last upgrade in milliseconds
long lastUpgrade = island.getLastTimeUpgrade();

hasActiveUpgradeCooldown()

Check if the island has an active upgrade cooldown.
returns
boolean
True if cooldown is active
if (island.hasActiveUpgradeCooldown()) {
    player.sendMessage("Island is on upgrade cooldown!");
}

Multiplier Upgrades

Crop Growth

getCropGrowthMultiplier()

Get the crop growth multiplier for the island.
returns
double
The crop growth multiplier
double cropMultiplier = island.getCropGrowthMultiplier();

setCropGrowthMultiplier(double cropGrowth)

Set the crop growth multiplier.
cropGrowth
double
required
The multiplier to set
island.setCropGrowthMultiplier(2.0); // 2x crop growth

getCropGrowthRaw()

Get the crop growth multiplier that was set using a command.
returns
double
The raw crop growth multiplier

Spawner Rates

getSpawnerRatesMultiplier()

Get the spawner rates multiplier for the island.
returns
double
The spawner rates multiplier
double spawnerMultiplier = island.getSpawnerRatesMultiplier();

setSpawnerRatesMultiplier(double spawnerRates)

Set the spawner rates multiplier.
spawnerRates
double
required
The multiplier to set
island.setSpawnerRatesMultiplier(1.5); // 1.5x spawner rates

getSpawnerRatesRaw()

Get the spawner rates multiplier that was set using a command.
returns
double
The raw spawner rates multiplier

Mob Drops

getMobDropsMultiplier()

Get the mob drops multiplier for the island.
returns
double
The mob drops multiplier
double mobDropsMultiplier = island.getMobDropsMultiplier();

setMobDropsMultiplier(double mobDrops)

Set the mob drops multiplier.
mobDrops
double
required
The multiplier to set
island.setMobDropsMultiplier(3.0); // 3x mob drops

getMobDropsRaw()

Get the mob drops multiplier that was set using a command.
returns
double
The raw mob drops multiplier

Limit Upgrades

Team Limit

getTeamLimit()

Get the team size limit.
returns
int
The maximum team size
int teamLimit = island.getTeamLimit();

setTeamLimit(int teamLimit)

Set the team limit.
teamLimit
int
required
The team limit to set
island.setTeamLimit(10);

getTeamLimitRaw()

Get the team limit that was set using a command.
returns
int
The raw team limit

Warps Limit

getWarpsLimit()

Get the warps limit.
returns
int
The maximum number of warps
int warpsLimit = island.getWarpsLimit();

setWarpsLimit(int warpsLimit)

Set the warps limit.
warpsLimit
int
required
The limit to set
island.setWarpsLimit(5);

getWarpsLimitRaw()

Get the warps limit that was set using a command.
returns
int
The raw warps limit

Co-op Limit

getCoopLimit()

Get the co-op players limit.
returns
int
The maximum co-op players
int coopLimit = island.getCoopLimit();

setCoopLimit(int coopLimit)

Set the co-op players limit.
coopLimit
int
required
The limit to set
island.setCoopLimit(3);

Island Size

getIslandSize()

Get the island radius/size.
returns
int
The island size
int size = island.getIslandSize();

setIslandSize(int islandSize)

Set the island radius/size.
islandSize
int
required
The size to set
island.setIslandSize(200);

Upgrade Interface

The Upgrade interface represents an upgrade type.

getName()

Get the name of the upgrade.
returns
String
The upgrade name

getUpgradeLevel(int level)

Get the upgrade level object for a specific level.
level
int
required
The level to get
returns
UpgradeLevel
The upgrade level object (level 0 if not found)

getMaxUpgradeLevel()

Get the maximum level that exists for the upgrade.
returns
int
The maximum upgrade level

UpgradeLevel Interface

The UpgradeLevel interface represents a specific level of an upgrade.

getLevel()

Get the level number.
returns
int
The level number

getCost()

Get the cost required to upgrade to this level.
returns
UpgradeCost
The upgrade cost

getCommands()

Get commands that execute when upgrading to this level.
returns
List<String>
List of commands to execute

getPermission()

Get the permission required to upgrade to this level.
returns
String
The required permission

checkRequirements(SuperiorPlayer superiorPlayer)

Check all custom requirements for the upgrade.
superiorPlayer
SuperiorPlayer
required
The player to check requirements for
returns
String
Error message if requirements failed, empty string if passed

Multipliers

UpgradeLevel level = upgrade.getUpgradeLevel(5);

// Check if has custom values
boolean hasCropGrowth = level.hasCropGrowth();
boolean hasSpawnerRates = level.hasSpawnerRates();
boolean hasMobDrops = level.hasMobDrops();

// Get multipliers
double cropGrowth = level.getCropGrowth();
double spawnerRates = level.getSpawnerRates();
double mobDrops = level.getMobDrops();

Limits

import com.bgsoftware.superiorskyblock.api.key.Key;
import org.bukkit.entity.EntityType;

// Block limits
int blockLimit = level.getBlockLimit(Key.of("STONE"));
Map<Key, Integer> blockLimits = level.getBlockLimits();

// Entity limits
int entityLimit = level.getEntityLimit(EntityType.COW);
Map<Key, Integer> entityLimits = level.getEntityLimitsAsKeys();

// Team and warps
boolean hasTeamLimit = level.hasTeamLimit();
int teamLimit = level.getTeamLimit();
int warpsLimit = level.getWarpsLimit();
int coopLimit = level.getCoopLimit();

// Border size
boolean hasBorderSize = level.hasBorderSize();
int borderSize = level.getBorderSize();

// Bank limit
boolean hasBankLimit = level.hasBankLimit();
BigDecimal bankLimit = level.getBankLimit();

Example: Upgrade Management System

import com.bgsoftware.superiorskyblock.api.island.Island;
import com.bgsoftware.superiorskyblock.api.upgrades.Upgrade;
import com.bgsoftware.superiorskyblock.api.upgrades.UpgradeLevel;
import com.bgsoftware.superiorskyblock.api.SuperiorSkyblockAPI;
import com.bgsoftware.superiorskyblock.api.wrappers.SuperiorPlayer;
import org.bukkit.entity.Player;

public class UpgradeManager {
    
    public void purchaseUpgrade(Island island, SuperiorPlayer player, String upgradeName) {
        Upgrade upgrade = SuperiorSkyblockAPI.getUpgrades().getUpgrade(upgradeName);
        if (upgrade == null) {
            player.asPlayer().sendMessage("Invalid upgrade!");
            return;
        }
        
        UpgradeLevel currentLevel = island.getUpgradeLevel(upgrade);
        int nextLevel = currentLevel.getLevel() + 1;
        
        if (nextLevel > upgrade.getMaxUpgradeLevel()) {
            player.asPlayer().sendMessage("Already at max level!");
            return;
        }
        
        if (island.hasActiveUpgradeCooldown()) {
            player.asPlayer().sendMessage("Upgrade cooldown active!");
            return;
        }
        
        UpgradeLevel nextUpgradeLevel = upgrade.getUpgradeLevel(nextLevel);
        
        // Check requirements
        String requirements = nextUpgradeLevel.checkRequirements(player);
        if (!requirements.isEmpty()) {
            player.asPlayer().sendMessage(requirements);
            return;
        }
        
        // Upgrade
        island.setUpgradeLevel(upgrade, nextLevel);
        player.asPlayer().sendMessage("Upgraded " + upgradeName + " to level " + nextLevel);
    }
    
    public void displayUpgradeInfo(Island island, Player player) {
        player.sendMessage("=== Island Upgrades ===");
        player.sendMessage("Crop Growth: " + island.getCropGrowthMultiplier() + "x");
        player.sendMessage("Spawner Rates: " + island.getSpawnerRatesMultiplier() + "x");
        player.sendMessage("Mob Drops: " + island.getMobDropsMultiplier() + "x");
        player.sendMessage("Team Limit: " + island.getTeamLimit());
        player.sendMessage("Warps Limit: " + island.getWarpsLimit());
        player.sendMessage("Island Size: " + island.getIslandSize());
    }
}