Leveling API
Overview
The leveling system supports multiple independent progression tracks, each with configurable rewards, costs, and progression mechanics. Players can advance through various skill trees, unlock abilities, and receive rewards at specific milestones.
Level Management
Player Level Operations
void setLevel(UUID uuid, String levelId, double level)
Description: Sets a player's level in a specific leveling track
Parameters:
uuid- Player's unique identifierlevelId- Leveling track identifierlevel- Level to set (can be fractional)
Usage: Administrative level setting, progression resets, initialization
double getLevel(UUID uuid, String levelId)
Description: Gets a player's current level in a leveling track
Parameters:
uuid- Player's unique identifierlevelId- Leveling track identifier
Returns: Current level (with decimal precision)
Usage: Display progression, requirement checking, calculation inputs
void addLevel(UUID uuid, String levelId, double level)
Description: Increases a player's level in a leveling track
Parameters:
uuid- Player's unique identifierlevelId- Leveling track identifierlevel- Levels to add (can be fractional)
Usage: Reward progression, experience gains, level advancement
void removeLevel(UUID uuid, String levelId, double level)
Description: Decreases a player's level in a leveling track
Parameters:
uuid- Player's unique identifierlevelId- Leveling track identifierlevel- Levels to remove (can be fractional)
Usage: Penalties, level loss mechanics, rebalancing
Level Configuration
Validation and Properties
boolean isLevel(String level)
Description: Checks if a leveling track exists in the system
Parameters:
level- Leveling track identifier to validateReturns: True if the leveling track is configured
Usage: Input validation, configuration checking
double getStartingLevel(String level)
Description: Gets the starting level for new players in this track
Parameters:
level- Leveling track identifierReturns: Initial level value
Usage: New player initialization, reset operations
boolean isAutomaticLeveling(String level)
Description: Checks if this leveling track auto-levels when requirements are met
Parameters:
level- Leveling track identifierReturns: True if automatic leveling is enabled
Usage: Determine if manual leveling is required, UI decisions
String getLevelName(String level)
Description: Gets the display name for a leveling track
Parameters:
level- Leveling track identifierReturns: Human-readable name for the leveling track
Usage: User interfaces, progression displays, notifications
Reward System
Reward Types
List<String> getForEachRewards(String level)
Description: Gets rewards given for every level gained in this track
Parameters:
level- Leveling track identifierReturns: List of reward commands/actions
Usage: Consistent progression rewards, per-level bonuses
Map<Double, List<String>> getIntervalRewards(String level)
Description: Gets rewards given at specific level intervals
Parameters:
level- Leveling track identifierReturns: Map of interval levels to reward lists
Usage: Milestone rewards, periodic bonuses (every 5 levels, etc.)
Map<Double, List<String>> getSpecificRewards(String level)
Description: Gets rewards given at specific exact levels
Parameters:
level- Leveling track identifierReturns: Map of specific levels to reward lists
Usage: Special milestone rewards, unlock achievements
Usage Examples
Basic Level Management
EdDungeonsLevelingAPI levelingAPI = EdDungeonsAPI.getInstance().getLevelingAPI();
UUID playerUUID = player.getUniqueId();
// Check player's current level
double swordLevel = levelingAPI.getLevel(playerUUID, "sword_mastery");
player.sendMessage("§6Sword Mastery Level: §f" + swordLevel);
// Add levels as rewards
levelingAPI.addLevel(playerUUID, "sword_mastery", 1.5);
player.sendMessage("§a+1.5 Sword Mastery levels!");
// Check if it's an automatic leveling system
boolean isAuto = levelingAPI.isAutomaticLeveling("sword_mastery");
if (!isAuto) {
player.sendMessage("§eUse /swordmastery to level up!");
}Last updated
Was this helpful?