Complete Stage 1: Core Game Loop
- Add GameState enum (LOBBY, ROLE_ASSIGN, IN_GAME, ENDING) - Add Phase interface with enter/tick/exit/isComplete - Add GameSession with tick-based phase machine - Add GameEventBus for internal events - Add GameManager for session lifecycle - Add all phases: LobbyPhase, RoleAssignPhase, GameplayPhase, EndgamePhase - Add role assignment: RoleAssigner, RoleQueue, SpawnPosition - Add BasePlayer, Survivor, Killer, PlayerState - Add DBDCommand with /dbd join/leave/create/forcestart/stop - Update mdbd.java with GameManager and command registration - Add command definition to paper-plugin.yml - Mark Stage 1 complete in PLAN.md
This commit is contained in:
parent
53f3f6e9da
commit
82ed455cd2
20 changed files with 884 additions and 8 deletions
49
src/main/java/dev/loki/player/BasePlayer.java
Normal file
49
src/main/java/dev/loki/player/BasePlayer.java
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
package dev.loki.player;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public abstract class BasePlayer {
|
||||
protected final UUID uuid;
|
||||
protected PlayerState state;
|
||||
protected Location spawnLocation;
|
||||
|
||||
public BasePlayer(UUID uuid) {
|
||||
this.uuid = uuid;
|
||||
this.state = PlayerState.HEALTHY;
|
||||
}
|
||||
|
||||
public UUID getUuid() {
|
||||
return uuid;
|
||||
}
|
||||
|
||||
public Player getPlayer() {
|
||||
return Bukkit.getPlayer(uuid);
|
||||
}
|
||||
|
||||
public PlayerState getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
public void setState(PlayerState state) {
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
public Location getSpawnLocation() {
|
||||
return spawnLocation;
|
||||
}
|
||||
|
||||
public void setSpawnLocation(Location location) {
|
||||
this.spawnLocation = location;
|
||||
}
|
||||
|
||||
public boolean isOnline() {
|
||||
Player player = getPlayer();
|
||||
return player != null && player.isOnline();
|
||||
}
|
||||
|
||||
public abstract boolean isKiller();
|
||||
}
|
||||
25
src/main/java/dev/loki/player/Killer.java
Normal file
25
src/main/java/dev/loki/player/Killer.java
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
package dev.loki.player;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class Killer extends BasePlayer {
|
||||
private boolean carrying;
|
||||
|
||||
public Killer(UUID uuid) {
|
||||
super(uuid);
|
||||
this.carrying = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isKiller() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean isCarrying() {
|
||||
return carrying;
|
||||
}
|
||||
|
||||
public void setCarrying(boolean carrying) {
|
||||
this.carrying = carrying;
|
||||
}
|
||||
}
|
||||
21
src/main/java/dev/loki/player/PlayerState.java
Normal file
21
src/main/java/dev/loki/player/PlayerState.java
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
package dev.loki.player;
|
||||
|
||||
public enum PlayerState {
|
||||
HEALTHY("Здоров"),
|
||||
INJURED("Ранен"),
|
||||
DOWNED("В нокдауне"),
|
||||
HOOKED("На крюке"),
|
||||
CARRIED("Унесен"),
|
||||
DEAD("Мертв"),
|
||||
ESCAPED("Сбежал");
|
||||
|
||||
private final String displayName;
|
||||
|
||||
PlayerState(String displayName) {
|
||||
this.displayName = displayName;
|
||||
}
|
||||
|
||||
public String getDisplayName() {
|
||||
return displayName;
|
||||
}
|
||||
}
|
||||
25
src/main/java/dev/loki/player/Survivor.java
Normal file
25
src/main/java/dev/loki/player/Survivor.java
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
package dev.loki.player;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class Survivor extends BasePlayer {
|
||||
private int hooksTaken;
|
||||
|
||||
public Survivor(UUID uuid) {
|
||||
super(uuid);
|
||||
this.hooksTaken = 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isKiller() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public int getHooksTaken() {
|
||||
return hooksTaken;
|
||||
}
|
||||
|
||||
public void incrementHooks() {
|
||||
hooksTaken++;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue