ModsJava
LevelSystemAPI
A powerful and modular Level & XP API for Minecraft (Spigot/Paper). Plug & Play – zero boilerplate for other plugin developers. Quick Start (für…
⬇ Download on SpigotA powerful and modular Level & XP API for Minecraft (Spigot/Paper).
Plug & Play – zero boilerplate for other plugin developers.
Quick Start (für Plugin-Entwickler)
// Minimal – fertig
LevelAPI api = LevelAPI.get();
api.addXP(player, 25);
// Mit Source-Tracking
api.addXP(player, 100, XPSource.MOB_KILL);
// Skill XP
Skill mining = api.getSkill("mining");
api.addXP(player, mining, 20, XPSource.ORE_MINE);
// Player-Daten lesen
LevelPlayer lp = api.getPlayer(player);
lp.getLevel(); // globales Level
lp.getXP(); // globale XP
lp.getLevel(mining); // Skill-Level
Events
@EventHandler
public void onLevelUp(LevelUpEvent event) {
Player p = event.getPlayer();
int newLevel = event.getNewLevel();
if (event.isSkillLevelUp()) {
Skill skill = event.getSkill(); // nicht-null bei Skill-Level-Up
}
}
@EventHandler
public void onXPGain(XPGainEvent event) {
// XP-Booster
event.setAmount(event.getAmount() * 2);
// Blocken
if (event.getSource() == XPSource.BLOCK_BREAK) {
event.setCancelled(true);
}
}
Rewards registrieren
LevelAPI api = LevelAPI.get();
// Für jeden Level-Up
api.registerReward(event -> {
if (event.getNewLevel() % 10 == 0) {
event.getPlayer().sendMessage("§6Milestone! Level " + event.getNewLevel());
}
});
// Für einen bestimmten Level
api.registerReward(50, event -> {
giveItem(event.getPlayer(), new ItemStack(Material.DIAMOND, 5));
});
Level-Formel anpassen
In config.yml:
level-formula: "100 * level^2"
Oder programmatisch:
api.setLevelFormula(level -> 100L * level * level);
api.setLevelFormula(LevelFormula.CLASSIC); // Minecraft-Stil
api.setLevelFormula(LevelFormula.LINEAR); // 100 × level
Skill-System
// Eigenen Skill registrieren
Skill woodcutting = new Skill("woodcutting", "Woodcutting", LevelFormula.MODERATE, 50);
api.registerSkill(woodcutting);
// XP hinzufügen
api.addXP(player, woodcutting, 30, XPSource.BLOCK_BREAK);
// Status abfragen
lp.getLevel(woodcutting);
lp.getXP(woodcutting);
PlaceholderAPI
Placeholder Beschreibung
%levelsystem_level% Globales Level
%levelsystem_xp% Aktuelle XP
%levelsystem_xp_required% XP für nächstes Level
%levelsystem_xp_to_next% Fehlende XP
%levelsystem_progress% Fortschritt in %
%levelsystem_multiplier% Aktiver Multiplikator
%levelsystem_skill_mining_level% Skill-Level
%levelsystem_skill_mining_xp% Skill-XP
config.yml Übersicht
max-level: 100
level-formula: "100 * level^2"
xp:
kill-mob: 10
break-block: 2
mine-ore: 8
fish-catch: 15
multipliers:
default: 1.0
vip: 2.0 # Permission: levelsystem.xp.multiplier.vip
mvp: 3.0
storage:
type: sqlite # sqlite | mysql | mariadb
redis:
enabled: false
skills:
enabled: true
list: [ mining, combat, fishing, farming, crafting ]
anti-exploit:
enabled: true
xp-cooldown-ms: 500
max-xp-per-minute: 500
Commands
Command Beschreibung
/level info [player] Level-Status anzeigen
/level set <player> <level> Level setzen (Admin)
/level reset <player> Level zurücksetzen
/xp add <player> <amount> [source] XP hinzufügen
/xp remove <player> <amount> XP entfernen
/xp set <player> <amount> XP setzen
/skill info <skill> [player] Skill-Status
/skill set <skill> <player> <level> Skill-Level setzen
Storage
Backend Config Beschreibung
SQLite type: sqlite Default, kein Setup
MySQL type: mysql Produktiv, multi-server
MariaDB type: mariadb Wie MySQL
Redis redis.enabled: true Cache + Cross-Server Sync
Architektur
LevelPlugin (onEnable)
├── LevelConfig → config.yml parsen
├── StorageProvider → SQLite / MySQL / Redis
├── UIManager → Actionbar, Title, Sound, BossBar
├── AntiExploit → Cooldowns, Caps, Pattern Detection
├── LevelAPI → zentrale Logik, Player-Cache
│ ├── LevelPlayer → gecachter Spielerstatus
│ ├── LevelFormula → konfigurierbare Level-Kurve
│ ├── Skill → Multi-Skill-System
│ └── XPSource → Analytics + Pipeline
├── Events → LevelUpEvent, XPGainEvent
├── Hooks → Vault, PlaceholderAPI
└── Commands → /level, /xp, /skill
Build
mvn clean package
Output: target/LevelSystemAPI-1.0.0.jar
Dependencies (shaded)
Plug & Play – zero boilerplate for other plugin developers.
Quick Start (für Plugin-Entwickler)
// Minimal – fertig
LevelAPI api = LevelAPI.get();
api.addXP(player, 25);
// Mit Source-Tracking
api.addXP(player, 100, XPSource.MOB_KILL);
// Skill XP
Skill mining = api.getSkill("mining");
api.addXP(player, mining, 20, XPSource.ORE_MINE);
// Player-Daten lesen
LevelPlayer lp = api.getPlayer(player);
lp.getLevel(); // globales Level
lp.getXP(); // globale XP
lp.getLevel(mining); // Skill-Level
Events
@EventHandler
public void onLevelUp(LevelUpEvent event) {
Player p = event.getPlayer();
int newLevel = event.getNewLevel();
if (event.isSkillLevelUp()) {
Skill skill = event.getSkill(); // nicht-null bei Skill-Level-Up
}
}
@EventHandler
public void onXPGain(XPGainEvent event) {
// XP-Booster
event.setAmount(event.getAmount() * 2);
// Blocken
if (event.getSource() == XPSource.BLOCK_BREAK) {
event.setCancelled(true);
}
}
Rewards registrieren
LevelAPI api = LevelAPI.get();
// Für jeden Level-Up
api.registerReward(event -> {
if (event.getNewLevel() % 10 == 0) {
event.getPlayer().sendMessage("§6Milestone! Level " + event.getNewLevel());
}
});
// Für einen bestimmten Level
api.registerReward(50, event -> {
giveItem(event.getPlayer(), new ItemStack(Material.DIAMOND, 5));
});
Level-Formel anpassen
In config.yml:
level-formula: "100 * level^2"
Oder programmatisch:
api.setLevelFormula(level -> 100L * level * level);
api.setLevelFormula(LevelFormula.CLASSIC); // Minecraft-Stil
api.setLevelFormula(LevelFormula.LINEAR); // 100 × level
Skill-System
// Eigenen Skill registrieren
Skill woodcutting = new Skill("woodcutting", "Woodcutting", LevelFormula.MODERATE, 50);
api.registerSkill(woodcutting);
// XP hinzufügen
api.addXP(player, woodcutting, 30, XPSource.BLOCK_BREAK);
// Status abfragen
lp.getLevel(woodcutting);
lp.getXP(woodcutting);
PlaceholderAPI
Placeholder Beschreibung
%levelsystem_level% Globales Level
%levelsystem_xp% Aktuelle XP
%levelsystem_xp_required% XP für nächstes Level
%levelsystem_xp_to_next% Fehlende XP
%levelsystem_progress% Fortschritt in %
%levelsystem_multiplier% Aktiver Multiplikator
%levelsystem_skill_mining_level% Skill-Level
%levelsystem_skill_mining_xp% Skill-XP
config.yml Übersicht
max-level: 100
level-formula: "100 * level^2"
xp:
kill-mob: 10
break-block: 2
mine-ore: 8
fish-catch: 15
multipliers:
default: 1.0
vip: 2.0 # Permission: levelsystem.xp.multiplier.vip
mvp: 3.0
storage:
type: sqlite # sqlite | mysql | mariadb
redis:
enabled: false
skills:
enabled: true
list: [ mining, combat, fishing, farming, crafting ]
anti-exploit:
enabled: true
xp-cooldown-ms: 500
max-xp-per-minute: 500
Commands
Command Beschreibung
/level info [player] Level-Status anzeigen
/level set <player> <level> Level setzen (Admin)
/level reset <player> Level zurücksetzen
/xp add <player> <amount> [source] XP hinzufügen
/xp remove <player> <amount> XP entfernen
/xp set <player> <amount> XP setzen
/skill info <skill> [player] Skill-Status
/skill set <skill> <player> <level> Skill-Level setzen
Storage
Backend Config Beschreibung
SQLite type: sqlite Default, kein Setup
MySQL type: mysql Produktiv, multi-server
MariaDB type: mariadb Wie MySQL
Redis redis.enabled: true Cache + Cross-Server Sync
Architektur
LevelPlugin (onEnable)
├── LevelConfig → config.yml parsen
├── StorageProvider → SQLite / MySQL / Redis
├── UIManager → Actionbar, Title, Sound, BossBar
├── AntiExploit → Cooldowns, Caps, Pattern Detection
├── LevelAPI → zentrale Logik, Player-Cache
│ ├── LevelPlayer → gecachter Spielerstatus
│ ├── LevelFormula → konfigurierbare Level-Kurve
│ ├── Skill → Multi-Skill-System
│ └── XPSource → Analytics + Pipeline
├── Events → LevelUpEvent, XPGainEvent
├── Hooks → Vault, PlaceholderAPI
└── Commands → /level, /xp, /skill
Build
mvn clean package
Output: target/LevelSystemAPI-1.0.0.jar
Dependencies (shaded)
- HikariCP 5.1.0
- Jedis 5.1.0
- SQLite JDBC 3.45.1.0
- MySQL Connector 8.3.0
Quick facts
- Edition: Minecraft Java
- File type: .jar
- Minecraft version listed: 1.21
- How to install: Install the matching mod loader (Forge, Fabric or NeoForge) for your Minecraft version. → Download the .jar. → Put it in the .minecraft/mods folder and launch that loader profile.
- Where to get it: Opens on Spigot — not every file is mirrored on our own servers.
Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.
LevelSystemAPI is a free Minecraft Java mod. Compatible with Minecraft 1.21. Downloaded 13 times (via Spigot). Download it and open it directly in the game.