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.
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 = SuperiorSkyblockAPI.getUpgrades().getUpgrade("crop-growth");
island.setUpgradeLevel(upgrade, 5);
getUpgrades()
Get all upgrades with their levels.
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.
Timestamp of last upgrade in milliseconds
long lastUpgrade = island.getLastTimeUpgrade();
hasActiveUpgradeCooldown()
Check if the island has an active upgrade cooldown.
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.
The crop growth multiplier
double cropMultiplier = island.getCropGrowthMultiplier();
setCropGrowthMultiplier(double cropGrowth)
Set the crop growth multiplier.
island.setCropGrowthMultiplier(2.0); // 2x crop growth
getCropGrowthRaw()
Get the crop growth multiplier that was set using a command.
The raw crop growth multiplier
Spawner Rates
getSpawnerRatesMultiplier()
Get the spawner rates multiplier for the island.
The spawner rates multiplier
double spawnerMultiplier = island.getSpawnerRatesMultiplier();
setSpawnerRatesMultiplier(double spawnerRates)
Set the spawner rates multiplier.
island.setSpawnerRatesMultiplier(1.5); // 1.5x spawner rates
getSpawnerRatesRaw()
Get the spawner rates multiplier that was set using a command.
The raw spawner rates multiplier
Mob Drops
getMobDropsMultiplier()
Get the mob drops multiplier for the island.
double mobDropsMultiplier = island.getMobDropsMultiplier();
setMobDropsMultiplier(double mobDrops)
Set the mob drops multiplier.
island.setMobDropsMultiplier(3.0); // 3x mob drops
getMobDropsRaw()
Get the mob drops multiplier that was set using a command.
The raw mob drops multiplier
Limit Upgrades
Team Limit
getTeamLimit()
Get the team size limit.
int teamLimit = island.getTeamLimit();
setTeamLimit(int teamLimit)
Set the team limit.
getTeamLimitRaw()
Get the team limit that was set using a command.
Warps Limit
getWarpsLimit()
Get the warps limit.
The maximum number of warps
int warpsLimit = island.getWarpsLimit();
setWarpsLimit(int warpsLimit)
Set the warps limit.
getWarpsLimitRaw()
Get the warps limit that was set using a command.
Co-op Limit
getCoopLimit()
Get the co-op players limit.
The maximum co-op players
int coopLimit = island.getCoopLimit();
setCoopLimit(int coopLimit)
Set the co-op players limit.
Island Size
getIslandSize()
Get the island radius/size.
int size = island.getIslandSize();
setIslandSize(int islandSize)
Set the island radius/size.
island.setIslandSize(200);
Upgrade Interface
The Upgrade interface represents an upgrade type.
getName()
Get the name of the upgrade.
getUpgradeLevel(int level)
Get the upgrade level object for a specific level.
The upgrade level object (level 0 if not found)
getMaxUpgradeLevel()
Get the maximum level that exists for the upgrade.
The maximum upgrade level
UpgradeLevel Interface
The UpgradeLevel interface represents a specific level of an upgrade.
getLevel()
Get the level number.
getCost()
Get the cost required to upgrade to this level.
getCommands()
Get commands that execute when upgrading to this level.
List of commands to execute
getPermission()
Get the permission required to upgrade to this level.
checkRequirements(SuperiorPlayer superiorPlayer)
Check all custom requirements for the upgrade.
The player to check requirements for
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());
}
}