Add perk system with GUI and integrations

Introduce a complete passive perk system: Perk base class, PerkManager (registration, selection, lifecycle, persistence), and PlayerPerksRepository (DB schema + upsert/find). Add four example perks (Oracle, Vampire, Featherweight, Bloodlust) and a single PerkEventDispatcher to route combat/environment/kill events to active perks. Provide PerkSelectorMenu GUI and /perks command, integrate perk initialization, registration, application and cleanup into SpeedHG and GameManager, and hook load/evict into StatsListener. Also add language entries and register the command in plugin.yml. This change enables players to select up to two passive perks, persists selections, and dispatches relevant events to perk implementations.
This commit is contained in:
TDSTOS
2026-04-04 03:16:43 +02:00
parent 88b0ba8b97
commit 8c2ab684bb
15 changed files with 977 additions and 1 deletions

View File

@@ -138,6 +138,48 @@ gui:
input_placeholder: '<gray>Enter search term...</gray>'
confirm_name: '<green>✔ Confirm Search</green>'
confirm_click: '<gray>Click to confirm</gray>'
perk_selector:
title: '<gradient:dark_purple:light_purple><bold>Perk-Auswahl</bold></gradient>'
slot_empty: '<gray>Perk-Slot <slot>: <red>Leer</red></gray>'
slot_hint: '<dark_gray>Klicke einen Perk zum Ausrüsten'
slot_title: '<gray>Slot <slot>: </gray>'
equipped_label: '<green>✔ Ausgerüstet</green>'
click_equip: '<gray>Klick zum Ausrüsten</gray>'
click_deselect: '<gray>Klick zum Abwählen</gray>'
slots_full: '<red>Slots voll! Klicke einen aktiven Perk zum Abwählen.'
game_running: '<red>Perks können während des Spiels nicht geändert werden!'
selected: '<green>Ausgerüstet: <perk><green>!'
deselected: '<red>Abgewählt: <perk><red>!'
close: '<red>✕ Schließen</red>'
perks:
oracle:
name: '<gradient:gold:yellow><bold>Oracle</bold></gradient>'
lore:
- ' '
- '<gray>Zeigt Kit + Distanz des nächsten</gray>'
- '<gray>Gegners (Schleichen / Kompass).</gray>'
- ' '
- '<yellow>Synergie: <gray>Spielo-Kit zeigt Gamble-Ausgang.'
vampire:
name: '<gradient:dark_red:red><bold>Vampire</bold></gradient>'
lore:
- ' '
- '<gray>10% Chance bei Nahkampftreffer:</gray>'
- '<red>½ Herz</red> <gray>heilen.</gray>'
featherweight:
name: '<gradient:white:aqua><bold>Featherweight</bold></gradient>'
lore:
- ' '
- '<gray>Vollständig immun gegen</gray>'
- '<gray>Fallschaden.</gray>'
bloodlust:
name: '<gradient:dark_red:gold><bold>Bloodlust</bold></gradient>'
lore:
- ' '
- '<gray>Nach einem Kill:</gray>'
- '<yellow>Speed I</yellow> <gray>+</gray> <green>Regen I</green> <gray>für 5 Sekunden.</gray>'
message: '<red>⚔ Blutrausch! <yellow>Speed I</yellow> + <green>Regen I</green> für 5 Sekunden!</red>'
kits:
backup:

View File

@@ -31,4 +31,7 @@ commands:
ranking:
description: 'Manage the SpeedHG ranking system'
usage: '/ranking <toggle|status|rank [player]>'
permission: speedhg.admin.ranking
permission: speedhg.admin.ranking
perks:
description: 'Perk-Auswahl öffnen'
usage: '/perks'