feat: DBD custom items - medkit/flashlight/toolbox/key/map with charges, ItemUseListener, starting items for survivors
This commit is contained in:
parent
371384ca8a
commit
f9847dbb73
4 changed files with 495 additions and 57 deletions
|
|
@ -66,6 +66,7 @@ public class GameplayPhase implements Phase {
|
|||
private KillerController killerController;
|
||||
private AttackListener attackListener;
|
||||
private Listener vanillaDamageBlocker;
|
||||
private dev.loki.item.ItemUseListener itemUseListener;
|
||||
|
||||
// Listener references grabbed from plugin
|
||||
private PlayerMoveListener moveListener;
|
||||
|
|
@ -155,6 +156,12 @@ public class GameplayPhase implements Phase {
|
|||
|
||||
killerController.initialize();
|
||||
|
||||
// --- Give starting items to survivors & register item use ---
|
||||
itemUseListener = new dev.loki.item.ItemUseListener(plugin, session);
|
||||
itemUseListener.register();
|
||||
|
||||
giveStartingItems(session);
|
||||
|
||||
// --- Wire listeners ---
|
||||
moveListener = plugin.getMoveListener();
|
||||
interactListener = plugin.getInteractListener();
|
||||
|
|
@ -215,6 +222,9 @@ public class GameplayPhase implements Phase {
|
|||
if (killerController != null) {
|
||||
killerController.shutdown();
|
||||
}
|
||||
if (itemUseListener != null) {
|
||||
itemUseListener.unregister();
|
||||
}
|
||||
if (playerManager != null) {
|
||||
playerManager.clear();
|
||||
}
|
||||
|
|
@ -234,6 +244,23 @@ public class GameplayPhase implements Phase {
|
|||
return shouldEnd;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Starting items
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
private void giveStartingItems(GameSession session) {
|
||||
var loot = new dev.loki.item.ChestLoot();
|
||||
for (BasePlayer bp : session.getPlayers().values()) {
|
||||
if (bp.isKiller()) continue;
|
||||
Player p = bp.getPlayer();
|
||||
if (p == null || !p.isOnline()) continue;
|
||||
// Clear hotbar slots 0-3, give a random item in slot 0
|
||||
p.getInventory().clear();
|
||||
p.getInventory().setItem(0, loot.rollLoot());
|
||||
p.sendMessage(Component.text("[DBD] Вы получили стартовый предмет!", NamedTextColor.YELLOW));
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Hook ticking
|
||||
// -------------------------------------------------------------------------
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue