join anytime #359
@ -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
|
||||
Chaoscaot
hat
...requests joining your team? ...requests joining your team?
Lixfel
hat
Nein, kann auch das andere Team sein (nach Kampfbeginn) Nein, kann auch das andere Team sein (nach Kampfbeginn)
|
||||
|
||||
REQUESTS=§7Open join requests
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
Chaoscaot
hat
Weiß nicht, ob es so geil ist, das Interface des geleavten Spielers immer noch herauszugeben. Weiß nicht, ob es so geil ist, das Interface des geleavten Spielers immer noch herauszugeben.
Lixfel
hat
Das ist zwingend notwendig für das korrekte Funktionieren des Kampfsystems und war auch bislang immer so, nur dass beim Rejoin des Spielers der dann halt nichts mehr mit dem alten Spieler zu tun hatte (was mit diesem PR dann allerdings katastrophal wäre). Das ist zwingend notwendig für das korrekte Funktionieren des Kampfsystems und war auch bislang immer so, nur dass beim Rejoin des Spielers der dann halt nichts mehr mit dem alten Spieler zu tun hatte (was mit diesem PR dann allerdings katastrophal wäre).
|
||||
}
|
||||
|
||||
public boolean isLiving() {
|
||||
|
@ -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());
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,7 @@ api-version: "1.13"
|
||||
|
||||
commands:
|
||||
ak:
|
||||
request:
|
||||
Chaoscaot
hat
Die sind doch mit dem CommandFramework garnicht nötig? Die sind doch mit dem CommandFramework garnicht nötig?
Lixfel
hat
Das FightSystem nutzt das CommandFramework aufgrund der komplexeren (De-)Aktivierungs- und Initialisierungsbedingungen nicht. Das FightSystem nutzt das CommandFramework aufgrund der komplexeren (De-)Aktivierungs- und Initialisierungsbedingungen nicht.
|
||||
requests:
|
||||
leave:
|
||||
ready:
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren
§7Join §e{0}
?Colorcode vor dem Parameter macht keinen Sinn, da der gefärbte Teamname eingesetzt wird.