Modified GameLobby, Added Queue Command
This commit is contained in:
parent
9b387efe7e
commit
ed6c8fba77
8 changed files with 110 additions and 75 deletions
|
@ -1,10 +1,10 @@
|
|||
package dev.cfox.gamejam.game.classes;
|
||||
|
||||
import dev.cfox.gamejam.game.managers.GameManager;
|
||||
import dev.cfox.gamejam.game.phases.Phase;
|
||||
import dev.cfox.gamejam.utils.Misc;
|
||||
import dev.cfox.gamejam.utils.classes.Randomized;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.ComponentLike;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import net.kyori.adventure.text.format.TextDecoration;
|
||||
import net.minestom.server.MinecraftServer;
|
||||
|
@ -21,12 +21,11 @@ import java.util.ArrayList;
|
|||
import java.util.UUID;
|
||||
|
||||
public class GameLobby {
|
||||
private static final Logger logger = LoggerFactory.getLogger(GameLobby.class);
|
||||
private final Logger logger = LoggerFactory.getLogger(GameLobby.class);
|
||||
private final ArrayList<UUID> players = new ArrayList<>();
|
||||
Team team = MinecraftServer.getTeamManager().createTeam("team_" + getName());
|
||||
private final ArrayList<UUID> eliminated = new ArrayList<>();
|
||||
private final ArrayList<UUID> eliminatedThisRound = new ArrayList<>();
|
||||
|
||||
private Phase phase;
|
||||
private Instance instance;
|
||||
private String name = "";
|
||||
|
||||
|
@ -41,8 +40,7 @@ public class GameLobby {
|
|||
public void eliminate(Player player) {
|
||||
if (!eliminated.contains(player)) {
|
||||
eliminated.add(player.getUuid());
|
||||
eliminatedThisRound.add(player.getUuid());
|
||||
logger.info("Player " + player.getUsername() + " got eliminated (GameLobby: " + name + ")");
|
||||
logger.debug("Player " + player.getUsername() + " got eliminated (GameLobby: " + name + ")");
|
||||
sendMessage(Randomized.elimination(player));
|
||||
player.sendMessage(Component.text("You've got eliminated!", NamedTextColor.RED, TextDecoration.BOLD));
|
||||
player.setGameMode(GameMode.SPECTATOR);
|
||||
|
@ -63,8 +61,12 @@ public class GameLobby {
|
|||
return eliminated;
|
||||
}
|
||||
|
||||
public ArrayList<UUID> getEliminatedThisRound() {
|
||||
return eliminatedThisRound;
|
||||
public void setPhase(Phase newPhase) {
|
||||
phase = newPhase;
|
||||
}
|
||||
|
||||
public Phase getPhase() {
|
||||
return phase;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
|
@ -86,10 +88,8 @@ public class GameLobby {
|
|||
|
||||
public void setInstance(Instance instance, Pos pos) {
|
||||
this.instance = instance;
|
||||
players.forEach(uuid -> {
|
||||
Misc.getPlayer(uuid).setInstance(instance)
|
||||
.thenRun(() -> Misc.getPlayer(uuid).teleport(pos));
|
||||
});
|
||||
players.forEach(uuid ->
|
||||
Misc.getPlayer(uuid).setInstance(instance).thenRun(() -> Misc.getPlayer(uuid).teleport(pos)));
|
||||
}
|
||||
|
||||
public Instance getInstance() {
|
||||
|
@ -97,12 +97,10 @@ public class GameLobby {
|
|||
}
|
||||
|
||||
public void teleport(Pos pos) {
|
||||
players.forEach(uuid -> {
|
||||
Misc.getPlayer(uuid).teleport(pos);
|
||||
});
|
||||
players.forEach(uuid -> Misc.getPlayer(uuid).teleport(pos));
|
||||
}
|
||||
|
||||
public void sendMessage(ComponentLike component) {
|
||||
public void sendMessage(Component component) {
|
||||
players.forEach(uuid -> Misc.getPlayer(uuid).sendMessage(component));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
package dev.cfox.gamejam.game.commands;
|
||||
|
||||
import dev.cfox.gamejam.game.managers.QueueManager;
|
||||
import net.minestom.server.command.builder.Command;
|
||||
import net.minestom.server.command.builder.arguments.ArgumentType;
|
||||
import net.minestom.server.entity.Player;
|
||||
|
||||
public class QueueCommand extends Command {
|
||||
public QueueCommand() {
|
||||
super("queue", "q");
|
||||
addSyntax(((sender, context) -> {
|
||||
final String arg1 = context.get("arg1");
|
||||
if (sender instanceof Player player) {
|
||||
if (arg1.equals("join")) {
|
||||
QueueManager.joinPlayer(player);
|
||||
} else if (arg1.equals("leave")) {
|
||||
QueueManager.removePlayer(player);
|
||||
}
|
||||
}
|
||||
}), ArgumentType.String("arg1"));
|
||||
}
|
||||
}
|
|
@ -55,21 +55,19 @@ public class GameManager {
|
|||
public static void sendEndTitles(GameLobby game) {
|
||||
Instance instance = game.getInstance();
|
||||
List<String> winners = new ArrayList<>();
|
||||
List<UUID> eliminatedThisRound = game.getEliminatedThisRound();
|
||||
List<UUID> eliminated = game.getEliminated();
|
||||
|
||||
for (Player player : instance.getPlayers()) {
|
||||
if (eliminatedThisRound.contains(player.getUuid())) {
|
||||
if (eliminated.contains(player.getUuid())) {
|
||||
player.showTitle(Title.title(Component.text("Eliminated!", NamedTextColor.RED, TextDecoration.BOLD), Component.text("")));
|
||||
} else {
|
||||
// Player is a winner if they were not eliminated this round
|
||||
if (!game.getEliminated().contains(player.getUuid())) {
|
||||
// Player is a winner if they were not eliminated
|
||||
player.showTitle(Title.title(Component.text("Qualified!", NamedTextColor.GREEN, TextDecoration.BOLD), Component.text("")));
|
||||
winners.add(player.getUsername());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Announce winners
|
||||
instance.sendMessage(Component.text("Winner(s): " + winners, NamedTextColor.YELLOW, TextDecoration.BOLD));
|
||||
instance.sendMessage(Component.text("Winner(s): " + winners, NamedTextColor.YELLOW));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,41 +1,9 @@
|
|||
package dev.cfox.gamejam.game.phases;
|
||||
|
||||
import dev.cfox.gamejam.utils.events.StartEvents;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class Phase {
|
||||
private static final Logger logger = LoggerFactory.getLogger(Phase.class);
|
||||
|
||||
public static void random() {
|
||||
Phases[] phases = Phases.values();
|
||||
int randomIndex = new Random().nextInt(phases.length);
|
||||
Phases selectedPhase = phases[randomIndex];
|
||||
|
||||
switch (selectedPhase) {
|
||||
case RED -> red();
|
||||
case BLUE -> blue();
|
||||
case GREEN -> green();
|
||||
case YELLOW -> yellow();
|
||||
case PURPLE -> purple();
|
||||
}
|
||||
}
|
||||
|
||||
public static void red() {
|
||||
// Handle red phase logic
|
||||
}
|
||||
public static void blue() {
|
||||
// Handle blue phase logic
|
||||
}
|
||||
public static void green() {
|
||||
// Handle green phase logic
|
||||
}
|
||||
public static void yellow() {
|
||||
// Handle yellow phase logic
|
||||
}
|
||||
public static void purple() {
|
||||
// Handle purple phase logic
|
||||
}
|
||||
public enum Phase {
|
||||
RED,
|
||||
BLUE,
|
||||
GREEN,
|
||||
YELLOW,
|
||||
PURPLE;
|
||||
}
|
||||
|
|
42
src/main/java/dev/cfox/gamejam/game/phases/PhaseLogic.java
Normal file
42
src/main/java/dev/cfox/gamejam/game/phases/PhaseLogic.java
Normal file
|
@ -0,0 +1,42 @@
|
|||
package dev.cfox.gamejam.game.phases;
|
||||
|
||||
import dev.cfox.gamejam.game.classes.GameLobby;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class PhaseLogic {
|
||||
private static final Logger logger = LoggerFactory.getLogger(PhaseLogic.class);
|
||||
|
||||
public static void random(GameLobby game) {
|
||||
Phase[] phases = Phase.values();
|
||||
int randomIndex = new Random().nextInt(phases.length);
|
||||
Phase selectedPhase = phases[randomIndex];
|
||||
logger.info("Picking random color phase for GameLobby: " + game.getName());
|
||||
|
||||
switch (selectedPhase) {
|
||||
case RED -> red(game);
|
||||
case BLUE -> blue(game);
|
||||
case GREEN -> green(game);
|
||||
case YELLOW -> yellow(game);
|
||||
case PURPLE -> purple(game);
|
||||
}
|
||||
}
|
||||
|
||||
public static void red(GameLobby game) {
|
||||
// Handle red phase logic
|
||||
}
|
||||
public static void blue(GameLobby game) {
|
||||
// Handle blue phase logic
|
||||
}
|
||||
public static void green(GameLobby game) {
|
||||
// Handle green phase logic
|
||||
}
|
||||
public static void yellow(GameLobby game) {
|
||||
// Handle yellow phase logic
|
||||
}
|
||||
public static void purple(GameLobby game) {
|
||||
// Handle purple phase logic
|
||||
}
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
package dev.cfox.gamejam.game.phases;
|
||||
|
||||
public enum Phases {
|
||||
RED,
|
||||
BLUE,
|
||||
GREEN,
|
||||
YELLOW,
|
||||
PURPLE;
|
||||
}
|
20
src/main/java/dev/cfox/gamejam/utils/events/MiscEvents.java
Normal file
20
src/main/java/dev/cfox/gamejam/utils/events/MiscEvents.java
Normal file
|
@ -0,0 +1,20 @@
|
|||
package dev.cfox.gamejam.utils.events;
|
||||
|
||||
import net.minestom.server.MinecraftServer;
|
||||
import net.minestom.server.entity.Player;
|
||||
import net.minestom.server.event.GlobalEventHandler;
|
||||
import net.minestom.server.event.player.PlayerMoveEvent;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class MiscEvents {
|
||||
static GlobalEventHandler globalEventHandler = MinecraftServer.getGlobalEventHandler();
|
||||
private static final Logger logger = LoggerFactory.getLogger(MiscEvents.class);
|
||||
|
||||
public static void register() {
|
||||
logger.debug("Registering Misc Listeners");
|
||||
globalEventHandler.addListener(PlayerMoveEvent.class, event -> {
|
||||
Player player = event.getPlayer();
|
||||
});
|
||||
}
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
package dev.cfox.gamejam.utils.events;
|
||||
|
||||
public class PhaseEvents {
|
||||
}
|
Loading…
Add table
Reference in a new issue