SteamWar/FightSystem
Archiviert
13
1

Bugfixes: No multiple player instances, spectator kit after death, confirmation message, allow request command while in team
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful

Signed-off-by: Lixfel <agga-games@gmx.de>
Dieser Commit ist enthalten in:
Lixfel 2023-06-06 11:47:37 +02:00
Ursprung 98a376a62b
Commit 1a2eabaea4
8 geänderte Dateien mit 49 neuen und 18 gelöschten Zeilen

Datei anzeigen

@ -251,6 +251,7 @@ JOIN_REQUEST=§7Request join
JOIN_REQUEST_TITLE=Request join
JOIN_REQUEST_ALREADY=§cYou have already sent a join request
JOIN_REQUEST_TEAM=§eJoin {0}
JOIN_REQUEST_CONFIRMATION=§7Join request submitted
JOIN_REQUEST_NOTIFICATION=§e{0} §7requests joining team {1}§8. §7Accept or decline using §8/§erequests
REQUESTS=§7Open join requests

Datei anzeigen

@ -235,6 +235,7 @@ JOIN_REQUEST=§7Teambeitritt anfragen
JOIN_REQUEST_TITLE=Teambeitritt anfragen
JOIN_REQUEST_ALREADY=§cDu hast bereits ein Team um Beitritt angefragt
JOIN_REQUEST_TEAM={0} §ebeitreten
JOIN_REQUEST_CONFIRMATION=§7Teambeitritt angefragt
JOIN_REQUEST_NOTIFICATION=§e{0} §7möchte Team {1} §7beitreten§8. §7Akzeptiere oder lehne ab mit §8/§erequests
REQUESTS=§7Offene Beitrittsanfragen

Datei anzeigen

@ -22,6 +22,7 @@ package de.steamwar.fightsystem.commands;
import de.steamwar.fightsystem.ArenaMode;
import de.steamwar.fightsystem.FightSystem;
import de.steamwar.fightsystem.fight.Fight;
import de.steamwar.fightsystem.fight.FightPlayer;
import de.steamwar.fightsystem.fight.FightTeam;
import de.steamwar.fightsystem.fight.JoinRequest;
import de.steamwar.fightsystem.states.FightState;
@ -36,7 +37,8 @@ import java.util.function.BiConsumer;
public class RequestsCommand implements CommandExecutor {
public RequestsCommand() {
new StateDependentCommand(ArenaMode.VariableTeams, FightState.Setup, "requests", this);
new StateDependentCommand(ArenaMode.VariableTeams, FightState.AntiSpectate, "request", this);
new StateDependentCommand(ArenaMode.VariableTeams, FightState.AntiSpectate, "requests", this);
}
@Override
@ -44,6 +46,11 @@ public class RequestsCommand implements CommandExecutor {
if(!(sender instanceof Player))
return false;
Player player = (Player) sender;
FightPlayer fp = Fight.getFightPlayer(player);
if(fp == null || !(fp.isLeader() || fp.isLiving())) {
GUI.joinRequest(player);
return false;
}
if(Commands.checkGetLeader(player) == null)
return false;

Datei anzeigen

@ -23,11 +23,15 @@ import de.steamwar.fightsystem.Config;
import de.steamwar.fightsystem.countdown.EnternCountdown;
import de.steamwar.sql.PersonalKit;
import de.steamwar.sql.SteamwarUser;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import java.util.UUID;
public class FightPlayer {
private final Player player;
private final UUID uuid;
private Player player;
private final FightTeam team;
private boolean isOut;
private Kit kit;
@ -35,6 +39,7 @@ public class FightPlayer {
private EnternCountdown enternCountdown = null;
FightPlayer(Player player, FightTeam team) {
this.uuid = player.getUniqueId();
this.player = player;
this.team = team;
this.isOut = false;
@ -70,7 +75,10 @@ public class FightPlayer {
}
public Player getPlayer() {
return this.player;
Player bukkit = Bukkit.getPlayer(uuid);
if(bukkit != player)
player = bukkit;
return player;
}
public boolean isLiving() {

Datei anzeigen

@ -46,6 +46,7 @@ import org.bukkit.scoreboard.NameTagVisibility;
import org.bukkit.scoreboard.Team;
import java.util.*;
import java.util.function.Consumer;
public class FightTeam {
@ -90,7 +91,7 @@ public class FightTeam {
private FightPlayer leader;
private int schemRank;
private final Map<Player, FightPlayer> players = new HashMap<>();
private final Map<UUID, FightPlayer> players = new HashMap<>();
private String name;
private String prefix;
@ -164,11 +165,11 @@ public class FightTeam {
}
public void teleportToSpawn(){
players.forEach((player, fp) -> player.teleport(spawn));
players.forEach((player, fp) -> Objects.requireNonNull(Bukkit.getPlayer(player)).teleport(spawn));
}
public FightPlayer getFightPlayer(Player player) {
return players.get(player);
return players.get(player.getUniqueId());
}
public boolean allPlayersOut() {
@ -180,7 +181,7 @@ public class FightTeam {
}
public boolean isPlayerInTeam(Player player) {
return players.containsKey(player);
return players.containsKey(player.getUniqueId());
}
public boolean canPlayerEntern(Player player) {
@ -199,22 +200,23 @@ public class FightTeam {
ready = false;
schematic.reset();
Set<Player> playerSet = new HashSet<>(players.keySet());
for(Player player : playerSet){
if(!Bukkit.getOnlinePlayers().contains(player))
Set<UUID> playerSet = new HashSet<>(players.keySet());
for(UUID uuid : playerSet){
Player player = Bukkit.getPlayer(uuid);
if(player != null)
removePlayer(player);
}
FightPlayer leaderBackup = leader;
playerSet.removeIf(player -> !Bukkit.getOnlinePlayers().contains(player));
playerSet.removeIf(uuid -> Bukkit.getPlayer(uuid) == null);
players.clear();
leader = null;
if(leaderBackup != null){
playerSet.remove(leaderBackup.getPlayer());
playerSet.remove(leaderBackup.getPlayer().getUniqueId());
addMember(leaderBackup.getPlayer(), true);
}
playerSet.forEach(p -> addMember(p, true));
playerSet.forEach(uuid -> addMember(Bukkit.getPlayer(uuid), true));
if(ArenaMode.VariableTeams.contains(Config.mode) && isLeaderless()){
List<Player> onlinePlayers = new ArrayList<>(Bukkit.getOnlinePlayers());
@ -229,15 +231,23 @@ public class FightTeam {
}
public void broadcast(String message, Object... params) {
players.forEach((player, fp) -> FightSystem.getMessage().sendPrefixless(message, player, ChatMessageType.ACTION_BAR, params));
broadcast(player -> FightSystem.getMessage().sendPrefixless(message, player, ChatMessageType.ACTION_BAR, params));
}
public void broadcastSystem(String message, Object... params) {
players.forEach((player, fp) -> FightSystem.getMessage().send(message, player, params));
broadcast(player -> FightSystem.getMessage().send(message, player, params));
}
public void broadcastChat(Player sender, String message) {
players.forEach((player, fp) -> FightSystem.getMessage().sendPrefixless("TEAM_CHAT", player, ChatMessageType.CHAT, prefix, sender.getName(), message));
broadcast(player -> FightSystem.getMessage().sendPrefixless("TEAM_CHAT", player, ChatMessageType.CHAT, prefix, sender.getName(), message));
}
private void broadcast(Consumer<Player> f) {
players.forEach((uuid, fightPlayer) -> {
Player player = Bukkit.getPlayer(uuid);
if(player != null)
f.accept(player);
});
}
public void addMember(Player player) {
@ -248,7 +258,7 @@ public class FightTeam {
final List<ProtocolUtils.ChunkPos> chunksToReload = FightSystem.getTechHider().prepareChunkReload(player, false);
FightPlayer fightPlayer = getFightPlayer(player) != null ? getFightPlayer(player) : new FightPlayer(player, this);
fightPlayer.revive();
players.put(player, fightPlayer);
players.put(player.getUniqueId(), fightPlayer);
Permanent.getSpectatorTeam().removeEntry(player.getName());
team.addEntry(player.getName());
@ -281,7 +291,7 @@ public class FightTeam {
PersonalKitCreator.closeIfInKitCreator(player);
List<ProtocolUtils.ChunkPos> chunksToReload = FightSystem.getTechHider().prepareChunkReload(player, true);
players.remove(player);
players.remove(player.getUniqueId());
team.removeEntry(player.getName());
Permanent.getSpectatorTeam().addEntry(player.getName());

Datei anzeigen

@ -76,6 +76,7 @@ public class JoinRequest {
}
activeRequests.put(player, this);
FightSystem.getMessage().sendPrefixless("JOIN_REQUEST_CONFIRMATION", player, ChatMessageType.ACTION_BAR);
}
public boolean required(FightTeam decider) {

Datei anzeigen

@ -25,6 +25,7 @@ import de.steamwar.fightsystem.FightSystem;
import de.steamwar.fightsystem.fight.Fight;
import de.steamwar.fightsystem.fight.FightPlayer;
import de.steamwar.fightsystem.fight.FightTeam;
import de.steamwar.fightsystem.fight.HotbarKit;
import de.steamwar.fightsystem.states.FightState;
import de.steamwar.fightsystem.states.StateDependentListener;
import de.steamwar.fightsystem.utils.BountifulWrapper;
@ -76,6 +77,7 @@ public class Permanent implements Listener {
FightTeam team = Fight.getPlayerTeam(player);
event.setRespawnLocation(team == null ? Config.SpecSpawn : team.getSpawn());
HotbarKit.spectatorKit.loadToPlayer(player);
}
}

Datei anzeigen

@ -12,6 +12,7 @@ api-version: "1.13"
commands:
ak:
request:
requests:
leave:
ready: