Fix round not stopping after everyone is dead except winner
This commit is contained in:
parent
f6c819b99b
commit
fc4a033d8e
4 changed files with 24 additions and 5 deletions
|
|
@ -1,15 +1,15 @@
|
|||
package me.firephoenix.ps3minigames.listener;
|
||||
|
||||
import me.firephoenix.ps3minigames.PS3Minigames;
|
||||
import me.firephoenix.ps3minigames.game.Game;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @author NieGestorben
|
||||
* Copyright© (c) 2023, All Rights Reserved.
|
||||
|
|
@ -24,8 +24,13 @@ public class DeathListener implements Listener {
|
|||
Player killer = e.getEntity().getKiller();
|
||||
|
||||
player.getWorld().getPlayers().forEach(players -> players.sendMessage(ChatColor.translateAlternateColorCodes('&', config.getString("messages.player-death").replace("%player%", player.getDisplayName()).replace("%cause%", killer == null ? "enviroment" : killer.getDisplayName()))));
|
||||
if (player.getWorld().getPlayers().size() == 1) {
|
||||
PS3Minigames.INSTANCE.getGameUtil().stopGame(Objects.requireNonNull(PS3Minigames.INSTANCE.getGameUtil().getGameByWorld(player.getWorld())));
|
||||
player.setGameMode(GameMode.SPECTATOR);
|
||||
Game game = PS3Minigames.INSTANCE.getGameUtil().getGameByWorld(player.getWorld());
|
||||
if (game != null) {
|
||||
game.getPlayers().remove(player.getUniqueId());
|
||||
if (game.getPlayers().size() <= 1) {
|
||||
PS3Minigames.INSTANCE.getGameUtil().stopGame(game);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package me.firephoenix.ps3minigames.listener;
|
||||
|
||||
import me.firephoenix.ps3minigames.PS3Minigames;
|
||||
import me.firephoenix.ps3minigames.game.Game;
|
||||
import me.firephoenix.ps3minigames.states.LobbyState;
|
||||
import me.firephoenix.ps3minigames.util.GameUtil;
|
||||
import me.firephoenix.ps3minigames.util.Timer;
|
||||
|
|
@ -13,6 +14,7 @@ import org.bukkit.event.player.PlayerJoinEvent;
|
|||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
|
|
@ -79,7 +81,13 @@ public class JoinQuitListener implements Listener {
|
|||
|
||||
@EventHandler
|
||||
public void onQuit(PlayerQuitEvent e) {
|
||||
Game game = PS3Minigames.INSTANCE.getGameUtil().getGameByWorld(e.getPlayer().getWorld());
|
||||
if (game != null) {
|
||||
game.getPlayers().remove(e.getPlayer().getUniqueId());
|
||||
if (game.getPlayers().size() <= 1) {
|
||||
PS3Minigames.INSTANCE.getGameUtil().stopGame(game);
|
||||
}
|
||||
}
|
||||
lobbyPlayers.remove(e.getPlayer().getUniqueId());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import me.firephoenix.ps3minigames.game.Game;
|
|||
import me.firephoenix.ps3minigames.states.GameState;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.block.Chest;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
|
|
@ -78,6 +79,10 @@ public class GameUtil {
|
|||
System.out.println("Someone tried to stop a game which is currently stopping, not possible, ignoring.");
|
||||
return;
|
||||
}
|
||||
if (Bukkit.getServer().getPlayer(game.getPlayers().get(0)) != null) {
|
||||
Player winner = Bukkit.getPlayer(game.getPlayers().get(0));
|
||||
game.getPlayers().forEach(uuid -> Bukkit.getServer().getPlayer(uuid).sendMessage(ChatColor.translateAlternateColorCodes('&', PS3Minigames.INSTANCE.getConfig().getString("messages.game-won").replace("%winner%", winner.getDisplayName()))));
|
||||
}
|
||||
game.setGameState(GameState.STOPPING);
|
||||
// Teleport all players + Clear inv + Reset Effects + Unfreeze
|
||||
game.getPlayers().forEach(uuid -> {
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ messages:
|
|||
force-starting-game: "&7Starting game on map &6%map%&7..."
|
||||
force-stopping-game: "&7Stopping game on map &6%map%&7..."
|
||||
cant-stop-game: "&7Cant stop game because it's already &6stopping&7!"
|
||||
game-won: "%winner% &7won the game!"
|
||||
|
||||
# Maps
|
||||
maps:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue