Joining game fix
This commit is contained in:
parent
a73fa3a0d3
commit
efca505643
|
@ -61,20 +61,16 @@ public class GameManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// public void initGame(Minigame game, CommandSender owner, String level) {
|
|
||||||
// try {
|
|
||||||
// game.init(owner, level);
|
|
||||||
// } catch (IOException e) {
|
|
||||||
// SGM.getInstance().getCLogger().error(e.getMessage());
|
|
||||||
// owner.sendMessage(ChatUtils.translate(PlaceholderManager.setPlaceholders(SGM.getInstance().getMessages().getString("sgm.game.cant-start"), owner)));
|
|
||||||
// }
|
|
||||||
// activeGames.put(game.getGameId(), game);
|
|
||||||
// }
|
|
||||||
|
|
||||||
public void addPlayerToGame(Player player, UUID gameId) {
|
public void addPlayerToGame(Player player, UUID gameId) {
|
||||||
Minigame game = findGame(gameId);
|
Minigame game = findGame(gameId);
|
||||||
if (game.getState() == Minigame.GameState.READY && !game.getPlayers().contains(player) && !isInGame(player)) {
|
if (game.getState() == Minigame.GameState.READY && !game.getPlayers().contains(player)) {
|
||||||
|
if (isInGame(player)) {
|
||||||
|
findGame(player).removePlayer(player);
|
||||||
|
}
|
||||||
game.addPlayer(player);
|
game.addPlayer(player);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
SGM.getInstance().getCLogger().log(game.getState().toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,13 +44,14 @@ import xyz.twovb.toolbox.utils.ChatUtils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
public class CTB implements Minigame {
|
public class CTB implements Minigame {
|
||||||
|
|
||||||
final static String name = "CaptureTheBrick";
|
final static String name = "CaptureTheBrick";
|
||||||
private final UUID uuid;
|
private final UUID uuid;
|
||||||
private final List<Player> players;
|
private ArrayList<Player> players = new ArrayList<Player>();
|
||||||
private final ArrayList<Location> redBrickSpawns = new ArrayList<Location>();
|
private final ArrayList<Location> redBrickSpawns = new ArrayList<Location>();
|
||||||
private final ArrayList<Location> blueBrickSpawns = new ArrayList<Location>();
|
private final ArrayList<Location> blueBrickSpawns = new ArrayList<Location>();
|
||||||
private final ArrayList<Location> redSpawnArea = new ArrayList<Location>();
|
private final ArrayList<Location> redSpawnArea = new ArrayList<Location>();
|
||||||
|
@ -67,20 +68,14 @@ public class CTB implements Minigame {
|
||||||
private ScoreboardTeam blueTeam;
|
private ScoreboardTeam blueTeam;
|
||||||
private Sidebar sb;
|
private Sidebar sb;
|
||||||
private SidebarAnimation<Component> titleAnimation;
|
private SidebarAnimation<Component> titleAnimation;
|
||||||
// private @NotNull SidebarComponent title;
|
|
||||||
private ComponentSidebarLayout layout;
|
private ComponentSidebarLayout layout;
|
||||||
|
private CommandSender owner;
|
||||||
|
|
||||||
private int taskId;
|
private int taskId;
|
||||||
|
|
||||||
// private List<Player> redTeam = new ArrayList<Player>();
|
|
||||||
// private List<Player> blueTeam = new ArrayList<Player>();
|
|
||||||
// private Sidebar sb;
|
|
||||||
|
|
||||||
|
|
||||||
public CTB() {
|
public CTB() {
|
||||||
this.uuid = UUID.randomUUID();
|
this.uuid = UUID.randomUUID();
|
||||||
this.state = GameState.PRESTART;
|
this.state = GameState.PRESTART;
|
||||||
this.players = new ArrayList<>();
|
|
||||||
this.messages = SGM.getInstance().getConfigManager().loadConfig("games/" + name.toLowerCase() + "/messages.yml");
|
this.messages = SGM.getInstance().getConfigManager().loadConfig("games/" + name.toLowerCase() + "/messages.yml");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,6 +84,7 @@ public class CTB implements Minigame {
|
||||||
gameWorld = createGameWorld(world, uuid);
|
gameWorld = createGameWorld(world, uuid);
|
||||||
gameWorld.setAutoSave(false);
|
gameWorld.setAutoSave(false);
|
||||||
if (applyOptions(world)) {
|
if (applyOptions(world)) {
|
||||||
|
this.owner = owner;
|
||||||
teamManager = SGM.getInstance().getScoreboardLibrary().createTeamManager();
|
teamManager = SGM.getInstance().getScoreboardLibrary().createTeamManager();
|
||||||
this.redTeam = teamManager.createIfAbsent("red_team");
|
this.redTeam = teamManager.createIfAbsent("red_team");
|
||||||
this.blueTeam = teamManager.createIfAbsent("blue_team");
|
this.blueTeam = teamManager.createIfAbsent("blue_team");
|
||||||
|
@ -101,12 +97,21 @@ public class CTB implements Minigame {
|
||||||
this.titleAnimation = createGradientAnimation(Component.text("Capture The Brick", Style.style(TextDecoration.BOLD)));
|
this.titleAnimation = createGradientAnimation(Component.text("Capture The Brick", Style.style(TextDecoration.BOLD)));
|
||||||
var title = SidebarComponent.animatedLine(titleAnimation);
|
var title = SidebarComponent.animatedLine(titleAnimation);
|
||||||
|
|
||||||
SidebarComponent gameInfo = SidebarComponent.builder().addDynamicLine(() -> Component.text("Players Alive: " + getAlivePlayersCount(), NamedTextColor.YELLOW)).addDynamicLine(() -> Component.text("Red Team: " + getTeamSize(redTeam), NamedTextColor.RED)).addDynamicLine(() -> Component.text("Blue Team: " + getTeamSize(blueTeam), NamedTextColor.BLUE)).addDynamicLine(() -> Component.text("Bricks Remaining: " + bricks, NamedTextColor.GREEN)).build();
|
SimpleDateFormat dtf = new SimpleDateFormat("dd/MM/yy | HH:mm:ss");
|
||||||
|
|
||||||
|
SidebarComponent gameInfo = SidebarComponent.builder()
|
||||||
|
.addDynamicLine(() -> {
|
||||||
|
var time = dtf.format(new Date());
|
||||||
|
return Component.text(time, NamedTextColor.DARK_GRAY);
|
||||||
|
})
|
||||||
|
.addBlankLine()
|
||||||
|
.addDynamicLine(() -> Component.text("Red Team: " + getBrickCount(redTeam), NamedTextColor.RED))
|
||||||
|
.addDynamicLine(() -> Component.text("Blue Team: " + getBrickCount(blueTeam), NamedTextColor.BLUE))
|
||||||
|
.build();
|
||||||
|
|
||||||
this.layout = new ComponentSidebarLayout(title, gameInfo);
|
this.layout = new ComponentSidebarLayout(title, gameInfo);
|
||||||
layout.apply(sb);
|
layout.apply(sb);
|
||||||
|
|
||||||
// buildScoreboard();
|
|
||||||
// Ready
|
// Ready
|
||||||
state = GameState.READY;
|
state = GameState.READY;
|
||||||
owner.sendMessage(ChatUtils.translate(messages.getString("system.game.ready").replace("%game%", name)));
|
owner.sendMessage(ChatUtils.translate(messages.getString("system.game.ready").replace("%game%", name)));
|
||||||
|
@ -116,37 +121,199 @@ public class CTB implements Minigame {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getBrickCount(ScoreboardTeam team) {
|
||||||
|
String icon = "\uD83E\uDDF1";
|
||||||
|
return icon;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void start() {
|
||||||
|
if (checkStart()) {
|
||||||
|
state = GameState.STARTED;
|
||||||
|
sendMessageToAllPlayers("The game has started!");
|
||||||
|
for (Player player : players) {
|
||||||
|
player.teleport(this.spawnLoc);
|
||||||
|
sb.addPlayer(player);
|
||||||
|
}
|
||||||
|
for (int i = 0; i <= bricks; i++) {
|
||||||
|
for (Location brickLoc : redBrickSpawns) {
|
||||||
|
placeBrick(brickLoc, redTeam);
|
||||||
|
}
|
||||||
|
for (Location brickLoc : blueBrickSpawns) {
|
||||||
|
placeBrick(brickLoc, blueTeam);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
BukkitTask task = Bukkit.getScheduler().runTaskTimer(SGM.getInstance(), this::onTick, 0L, 1L);
|
||||||
|
this.taskId = task.getTaskId();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if we should be starting rn
|
||||||
|
private boolean checkStart() {
|
||||||
|
if (state != GameState.READY) return false;
|
||||||
|
for (Player player : players) {
|
||||||
|
if (!redTeam.teamManager().players().contains(player) && !blueTeam.teamManager().players().contains(player)) {
|
||||||
|
this.owner.sendMessage("All players need to be on a team!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stop() {
|
||||||
|
// TODO: make it wait before unloading world
|
||||||
|
// Stop game logic
|
||||||
|
state = GameState.ENDING;
|
||||||
|
Player winner;
|
||||||
|
if (players.size() <= 1) {
|
||||||
|
winner = players.get(0);
|
||||||
|
winner.sendMessage("Congratulations on winning the game!");
|
||||||
|
}
|
||||||
|
players.clear(); // Clear player list
|
||||||
|
GameManager.getActiveGames().remove(uuid);
|
||||||
|
HandlerList.unregisterAll(this);
|
||||||
|
for (Player player : gameWorld.getPlayers()) {
|
||||||
|
player.teleport(Bukkit.getServer().getWorlds().get(0).getSpawnLocation());
|
||||||
|
}
|
||||||
|
Bukkit.unloadWorld(gameWorld, false);
|
||||||
|
if (teamManager != null) {
|
||||||
|
teamManager.close();
|
||||||
|
}
|
||||||
|
if (sb != null) {
|
||||||
|
sb.close();
|
||||||
|
}
|
||||||
|
Bukkit.getScheduler().cancelTask(this.taskId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTick() {
|
||||||
|
for (Player player : gameWorld.getPlayers()) {
|
||||||
|
if (!players.contains(player)) {
|
||||||
|
sendMessageToAllPlayers(player.getName() + " IS A IMPOSTER");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (state == GameState.STARTED && players.size() <= 1) {
|
||||||
|
this.stop();
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
titleAnimation.nextFrame();
|
||||||
|
layout.apply(sb);
|
||||||
|
} catch (IllegalStateException ignored) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addPlayer(Player player) {
|
||||||
|
player.teleport(this.spawnLoc);
|
||||||
|
players.add(player);
|
||||||
|
sendMessageToAllPlayers(messages.getString("system.player.join").replace("%player%", player.getName()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removePlayer(Player player) {
|
||||||
|
players.remove(player);
|
||||||
|
sb.removePlayer(player);
|
||||||
|
sendMessageToAllPlayers(messages.getString("system.player.left").replace("%player%", player.getName()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
void onPlayerQuit(PlayerQuitEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
if (players.contains(player)) {
|
||||||
|
removePlayer(event.getPlayer());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
void onWorldChange(PlayerChangedWorldEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
if (players.contains(player) && event.getFrom().equals(gameWorld)) {
|
||||||
|
removePlayer(event.getPlayer());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
void onPlayerDeath(PlayerDeathEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
if (players.contains(player) && state == GameState.STARTED) {
|
||||||
|
sendMessageToAllPlayers(player.getName() + " was eliminated!");
|
||||||
|
event.setDeathMessage("");
|
||||||
|
removePlayer(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Player> getPlayers() {
|
||||||
|
return players;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public UUID getGameId() {
|
||||||
|
return uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GameState getState() {
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public World getWorld() {
|
||||||
|
return gameWorld;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void addPlayerToTeam(Player player, boolean isRedTeam) {
|
||||||
|
//TODO: make this shit fuckin better bor
|
||||||
|
if (isRedTeam) {
|
||||||
|
redTeam.defaultDisplay().addEntry(player.getName());
|
||||||
|
} else {
|
||||||
|
blueTeam.defaultDisplay().addEntry(player.getName());
|
||||||
|
}
|
||||||
|
teamManager.addPlayer(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removePlayerFromTeams(Player player) {
|
||||||
|
redTeam.defaultDisplay().removeEntry(player.getName());
|
||||||
|
blueTeam.defaultDisplay().removeEntry(player.getName());
|
||||||
|
teamManager.removePlayer(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void placeBrick(Location location, ScoreboardTeam team) {
|
||||||
|
Block brick = location.getBlock();
|
||||||
|
if (team.equals(redTeam)) {
|
||||||
|
brick.setType(Material.RED_WOOL);
|
||||||
|
}
|
||||||
|
if (team.equals(blueTeam)) {
|
||||||
|
brick.setType(Material.BLUE_WOOL);
|
||||||
|
}
|
||||||
|
SGM.getInstance().getCLogger().log("Placed " + brick.getType() + " at " + location);
|
||||||
|
}
|
||||||
|
|
||||||
private void setupTeamDisplay(ScoreboardTeam team, String displayName, NamedTextColor color) {
|
private void setupTeamDisplay(ScoreboardTeam team, String displayName, NamedTextColor color) {
|
||||||
TeamDisplay display = team.defaultDisplay();
|
TeamDisplay display = team.defaultDisplay();
|
||||||
display.displayName(Component.text(displayName));
|
display.displayName(Component.text(displayName));
|
||||||
display.playerColor(color);
|
display.playerColor(color);
|
||||||
}
|
}
|
||||||
|
|
||||||
// private void buildScoreboard() {
|
|
||||||
// titleAnimation = createGradientAnimation(Component.text("Capture The Brick", Style.style(TextDecoration.BOLD)));
|
|
||||||
// title = SidebarComponent.animatedLine(titleAnimation);
|
|
||||||
// SidebarComponent lines = SidebarComponent.builder().addDynamicLine(() -> Component.text("Red Team: " + redTeam.teamManager().players().size(), NamedTextColor.RED)).addDynamicLine(() -> Component.text("Blue Team: " + blueTeam.teamManager().players().size(), NamedTextColor.BLUE)).addDynamicLine(() -> Component.text("Bricks Remaining: " + bricks, NamedTextColor.GREEN)).build();
|
|
||||||
// layout = new ComponentSidebarLayout(title, lines);
|
|
||||||
// layout.apply(sb);
|
|
||||||
// }
|
|
||||||
|
|
||||||
private @NotNull SidebarAnimation<Component> createGradientAnimation(@NotNull Component text) {
|
private @NotNull SidebarAnimation<Component> createGradientAnimation(@NotNull Component text) {
|
||||||
float step = 1f / 8f;
|
float step = 1f / 8f;
|
||||||
TagResolver.Single textPlaceholder = Placeholder.component("text", text);
|
TagResolver.Single textPlaceholder = Placeholder.component("text", text);
|
||||||
List<Component> frames = new ArrayList<>((int) (2f / step));
|
List<Component> frames = new ArrayList<>((int) (2f / step));
|
||||||
float phase = -1f;
|
float phase = -1f;
|
||||||
|
|
||||||
SGM.getInstance().getCLogger().log("Creating gradient animation");
|
|
||||||
|
|
||||||
while (phase <= 1) {
|
while (phase <= 1) {
|
||||||
String gradientTag = String.format("<gradient:yellow:gold:%.2f>", phase);
|
String gradientTag = String.format("<gradient:#9bf8ad:#00ff04:%.2f>", phase);
|
||||||
Component frame = MiniMessage.miniMessage().deserialize(gradientTag + "<text>", textPlaceholder);
|
Component frame = MiniMessage.miniMessage().deserialize(gradientTag + "<text>", textPlaceholder);
|
||||||
frames.add(frame);
|
frames.add(frame);
|
||||||
SGM.getInstance().getCLogger().log("Phase: " + phase + ", Tag: " + gradientTag);
|
|
||||||
phase += step;
|
phase += step;
|
||||||
}
|
}
|
||||||
|
|
||||||
SGM.getInstance().getCLogger().log("Total frames: " + frames.size());
|
|
||||||
return new CollectionSidebarAnimation<>(frames);
|
return new CollectionSidebarAnimation<>(frames);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,170 +392,4 @@ public class CTB implements Minigame {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void start() {
|
|
||||||
if (state == GameState.READY) {
|
|
||||||
state = GameState.STARTED;
|
|
||||||
sendMessageToAllPlayers("The game has started!");
|
|
||||||
for (Player player : players) {
|
|
||||||
player.teleport(this.spawnLoc);
|
|
||||||
sb.addPlayer(player);
|
|
||||||
}
|
|
||||||
for (int i = 0; i <= bricks; i++) {
|
|
||||||
for (Location brickLoc : redBrickSpawns) {
|
|
||||||
placeBrick(brickLoc, "red");
|
|
||||||
}
|
|
||||||
for (Location brickLoc : blueBrickSpawns) {
|
|
||||||
placeBrick(brickLoc, "blue");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
BukkitTask task = Bukkit.getScheduler().runTaskTimer(SGM.getInstance(), this::onTick, 0L, 1L);
|
|
||||||
this.taskId = task.getTaskId();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addPlayerToTeam(Player player, boolean isRedTeam) {
|
|
||||||
//TODO: make this shit fuckin better bor
|
|
||||||
if (isRedTeam) {
|
|
||||||
redTeam.defaultDisplay().addEntry(player.getName());
|
|
||||||
} else {
|
|
||||||
blueTeam.defaultDisplay().addEntry(player.getName());
|
|
||||||
}
|
|
||||||
teamManager.addPlayer(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removePlayerFromTeams(Player player) {
|
|
||||||
redTeam.defaultDisplay().removeEntry(player.getName());
|
|
||||||
blueTeam.defaultDisplay().removeEntry(player.getName());
|
|
||||||
teamManager.removePlayer(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getAlivePlayersCount() {
|
|
||||||
return (int) players.stream().filter(Player::isOnline).count();
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getTeamSize(ScoreboardTeam team) {
|
|
||||||
return team.defaultDisplay().entries().size();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void placeBrick(Location location, String team) {
|
|
||||||
Block brick = location.getBlock();
|
|
||||||
if (Objects.equals(team, "red")) {
|
|
||||||
brick.setType(Material.RED_WOOL);
|
|
||||||
}
|
|
||||||
if (Objects.equals(team, "blue")) {
|
|
||||||
brick.setType(Material.BLUE_WOOL);
|
|
||||||
}
|
|
||||||
SGM.getInstance().getCLogger().log("Placed " + brick.getType() + " at " + location);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void stop() {
|
|
||||||
// TODO: make it wait before unloading world
|
|
||||||
// Stop game logic
|
|
||||||
state = GameState.ENDING;
|
|
||||||
Player winner;
|
|
||||||
if (players.size() <= 1) {
|
|
||||||
winner = players.get(0);
|
|
||||||
winner.sendMessage("Congratulations on winning the game!");
|
|
||||||
}
|
|
||||||
players.clear(); // Clear player list
|
|
||||||
GameManager.getActiveGames().remove(uuid);
|
|
||||||
HandlerList.unregisterAll(this);
|
|
||||||
for (Player player : gameWorld.getPlayers()) {
|
|
||||||
player.teleport(Bukkit.getServer().getWorlds().get(0).getSpawnLocation());
|
|
||||||
}
|
|
||||||
Bukkit.unloadWorld(gameWorld, false);
|
|
||||||
if (teamManager != null) {
|
|
||||||
teamManager.close();
|
|
||||||
}
|
|
||||||
if (sb != null) {
|
|
||||||
sb.close();
|
|
||||||
}
|
|
||||||
Bukkit.getScheduler().cancelTask(this.taskId);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void addPlayer(Player player) {
|
|
||||||
players.add(player);
|
|
||||||
// sb.addPlayer(player);
|
|
||||||
player.teleport(this.spawnLoc);
|
|
||||||
sendMessageToAllPlayers(messages.getString("system.player.join").replace("%player%", player.getName()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void removePlayer(Player player) {
|
|
||||||
players.remove(player);
|
|
||||||
sb.removePlayer(player);
|
|
||||||
sendMessageToAllPlayers(messages.getString("system.player.left").replace("%player%", player.getName()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
void onPlayerQuit(PlayerQuitEvent event) {
|
|
||||||
Player player = event.getPlayer();
|
|
||||||
if (players.contains(player)) {
|
|
||||||
removePlayer(event.getPlayer());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
void onWorldChange(PlayerChangedWorldEvent event) {
|
|
||||||
Player player = event.getPlayer();
|
|
||||||
if (players.contains(player)) {
|
|
||||||
removePlayer(event.getPlayer());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
void onPlayerDeath(PlayerDeathEvent event) {
|
|
||||||
Player player = event.getPlayer();
|
|
||||||
if (players.contains(player) && state == GameState.STARTED) {
|
|
||||||
sendMessageToAllPlayers(player.getName() + " was eliminated!");
|
|
||||||
event.setDeathMessage("");
|
|
||||||
removePlayer(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<Player> getPlayers() {
|
|
||||||
return players;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public UUID getGameId() {
|
|
||||||
return uuid;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public GameState getState() {
|
|
||||||
return state;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public World getWorld() {
|
|
||||||
return gameWorld;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onTick() {
|
|
||||||
for (Player player : gameWorld.getPlayers()) {
|
|
||||||
if (!players.contains(player)) {
|
|
||||||
sendMessageToAllPlayers(player.getName() + " IS A IMPOSTER");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (state == GameState.STARTED && players.size() <= 1) {
|
|
||||||
this.stop();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
titleAnimation.nextFrame();
|
|
||||||
layout.apply(sb);
|
|
||||||
} catch (IllegalStateException ignored) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -61,46 +61,41 @@ public class ActiveGamesGui {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addMaps() {
|
public void addMaps() {
|
||||||
for (Minigame game : GameManager.getActiveGames().values()) {
|
for (Minigame minigame : GameManager.getActiveGames().values()) {
|
||||||
// SGM.getInstance().getCLogger().log(game.getName());
|
if (minigame.getName().equalsIgnoreCase(game)) {
|
||||||
// SGM.getInstance().getCLogger().log(this.game);
|
Material itemType;
|
||||||
Material itemType;
|
switch (minigame.getState()) {
|
||||||
switch (game.getState()) {
|
case PRESTART:
|
||||||
case PRESTART:
|
itemType = Material.YELLOW_WOOL;
|
||||||
// mapItem.setType(Material.YELLOW_WOOL);
|
break;
|
||||||
itemType = Material.YELLOW_WOOL;
|
case READY:
|
||||||
break;
|
itemType = Material.LIME_WOOL;
|
||||||
case READY:
|
break;
|
||||||
// mapItem.setType(Material.LIME_WOOL);
|
case STARTED:
|
||||||
itemType = Material.LIME_WOOL;
|
case ENDING:
|
||||||
break;
|
default:
|
||||||
case STARTED:
|
itemType = Material.RED_WOOL;
|
||||||
case ENDING:
|
break;
|
||||||
default:
|
|
||||||
// mapItem.setType(Material.RED_WOOL);
|
|
||||||
itemType = Material.RED_WOOL;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
ItemStack joinItem = new ItemStack(itemType);
|
|
||||||
ItemMeta meta = joinItem.getItemMeta();
|
|
||||||
meta.displayName(ChatUtils.translate(game.getName()));
|
|
||||||
List<Component> lore = new ArrayList<Component>();
|
|
||||||
lore.add(0, ChatUtils.translate("&r&7" + game.getGameId().toString()));
|
|
||||||
if (!game.getPlayers().isEmpty()) {
|
|
||||||
lore.add(ChatUtils.translate("&r&7Players:"));
|
|
||||||
for (Player player : game.getPlayers()) {
|
|
||||||
lore.add(ChatUtils.translate("&r&a" + player.getName()));
|
|
||||||
}
|
}
|
||||||
}
|
ItemStack joinItem = new ItemStack(itemType);
|
||||||
meta.lore(lore);
|
ItemMeta meta = joinItem.getItemMeta();
|
||||||
joinItem.setItemMeta(meta);
|
meta.displayName(ChatUtils.translate(minigame.getName()));
|
||||||
mapPane.addItem(new GuiItem(joinItem, event -> {
|
List<Component> lore = new ArrayList<Component>();
|
||||||
Player player = (Player) event.getWhoClicked();
|
lore.add(0, ChatUtils.translate("&r&7" + minigame.getGameId().toString()));
|
||||||
if (game.getState() == Minigame.GameState.READY) {
|
if (!minigame.getPlayers().isEmpty()) {
|
||||||
SGM.getInstance().getGameManager().addPlayerToGame(player, game.getGameId());
|
lore.add(ChatUtils.translate("&r&7Players:"));
|
||||||
|
for (Player player : minigame.getPlayers()) {
|
||||||
|
lore.add(ChatUtils.translate("&r&a" + player.getName()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
player.closeInventory();
|
meta.lore(lore);
|
||||||
}));
|
joinItem.setItemMeta(meta);
|
||||||
|
mapPane.addItem(new GuiItem(joinItem, event -> {
|
||||||
|
Player player = (Player) event.getWhoClicked();
|
||||||
|
SGM.getInstance().getGameManager().addPlayerToGame(player, minigame.getGameId());
|
||||||
|
player.closeInventory();
|
||||||
|
}));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package xyz.twovb.sgm.guis;
|
package xyz.twovb.sgm.guis;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Created by 2vb - 5/7/2024
|
* Created by 2vb - 5/7/2024
|
||||||
*/
|
*/
|
||||||
|
@ -48,7 +47,7 @@ public class JoinGameGui {
|
||||||
String itemName = event.getCurrentItem().getItemMeta().getDisplayName().replaceAll("\\W+", "");
|
String itemName = event.getCurrentItem().getItemMeta().getDisplayName().replaceAll("\\W+", "");
|
||||||
player.closeInventory();
|
player.closeInventory();
|
||||||
if (SGM.getInstance().getGameManager().getRegisteredGames().contains(itemName.toLowerCase())) {
|
if (SGM.getInstance().getGameManager().getRegisteredGames().contains(itemName.toLowerCase())) {
|
||||||
new ActiveGamesGui(itemName).getGui().show(player);
|
new ActiveGamesGui(itemName.toLowerCase()).getGui().show(player);
|
||||||
} else {
|
} else {
|
||||||
player.sendMessage("Please check xml");
|
player.sendMessage("Please check xml");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user