Stage 2-3: Player states and Killer system

This commit is contained in:
loki5512344 2026-05-31 20:49:28 +02:00
parent 5a53620b3a
commit d1f854fc79
14 changed files with 1095 additions and 0 deletions

View file

@ -0,0 +1,60 @@
package dev.loki.perk;
import dev.loki.mdbd;
import dev.loki.perk.killer.BBQChiliPerk;
import dev.loki.perk.killer.CorruptInterventionPerk;
import dev.loki.perk.killer.HexRuinPerk;
import dev.loki.perk.survivor.BorrowedTimePerk;
import dev.loki.perk.survivor.DeadHardPerk;
import dev.loki.perk.survivor.SelfCarePerk;
import dev.loki.perk.survivor.SprintBurstPerk;
import java.util.HashMap;
import java.util.Map;
public class PerkRegistry {
private final Map<String, IPerk> perks = new HashMap<>();
private final mdbd plugin;
public PerkRegistry(mdbd plugin) {
this.plugin = plugin;
registerDefaultPerks();
}
private void registerDefaultPerks() {
register(new SelfCarePerk(plugin));
register(new DeadHardPerk(plugin));
register(new SprintBurstPerk(plugin));
register(new BorrowedTimePerk(plugin));
register(new HexRuinPerk(plugin));
register(new CorruptInterventionPerk(plugin));
register(new BBQChiliPerk(plugin));
}
public void register(IPerk perk) {
perks.put(perk.getId().toLowerCase(), perk);
plugin.getLogger().info("Registered perk: " + perk.getName());
}
public IPerk getPerk(String id) {
return perks.get(id.toLowerCase());
}
public Map<String, IPerk> getAllPerks() {
return new HashMap<>(perks);
}
public Map<String, IPerk> getPerksByType(PerkType type) {
Map<String, IPerk> result = new HashMap<>();
for (Map.Entry<String, IPerk> entry : perks.entrySet()) {
if (entry.getValue().getType() == type) {
result.put(entry.getKey(), entry.getValue());
}
}
return result;
}
public boolean hasPerk(String id) {
return perks.containsKey(id.toLowerCase());
}
}