Commands #427
Keine Reviewer
Label
Kein Label
Bug
Codeverbesserung
Einsteiger Freundlich
Idee
In Arbeit
Neues Feature
Prio A
Security Breach
Überprüfung notwendig
Verbesserung
Zu Beobachten
Kein Meilenstein
Niemand zuständig
2 Beteiligte
Fällig am
Kein Fälligkeitsdatum gesetzt.
Abhängigkeiten
Keine Abhängigkeiten gesetzt.
Referenz: SteamWar/BungeeCore#427
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren
Keine Beschreibung angegeben.
Branch "Commands" löschen
Das Löschen eines Branches ist permanent. Obwohl der Branch für eine kurze Zeit weiter existieren könnte, kann diese Aktion in den meisten Fällen NICHT rückgängig gemacht werden. Fortfahren?
@ -97,2 +72,2 @@
public static void remove(ProxiedPlayer player){
challenges.remove(player);
@Validator("target")
public TypeValidator<ProxiedPlayer> targetValidator() {
Könnte der Validator nicht noch local sein? Weil targets gibts häufiger mal im BungeeCore und Challenge-Targets gibts halt nur im ChallengeCommand.
@ -129,6 +130,43 @@ public class FightCommand extends BasicCommand {
return false;
}
static void createArena(ProxiedPlayer player, String precommand, boolean allowMerging, ArenaMode arenaMode, String map, boolean historic, FightCallback callback) {
Ich würde das FightCallback hier zu einem Runnable machen, da die Commands (wenn das dann aufgerufen wird) ja selbst auch schon Player, ArenaMode und Map haben. Dann musst du auch nicht überall mit m, p und arenaMode hantieren...
Sicher das das geht, ich weiß nicht ob es wirklich da ist aber sollte gehen, würde ich aber gerne erst machen wenn ich auch den 'bau test' Befehl umgebaut habe.
Ja, ich bin mir sicher, dass das geht (bau test hat ja dann selbe Architektur)
Darf ich das auch erst dann machen?
Ja
Bzw. erst danach (nicht zeitgleich mit Baucommand, der wird so schon Kopfzerbrechend genug)
ok
@ -131,1 +132,4 @@
static void createArena(ProxiedPlayer player, String precommand, boolean allowMerging, ArenaMode arenaMode, String map, boolean historic, FightCallback callback) {
ChatSender sender = ChatSender.of(player);
if (sender.user().isPunishedWithMessage(sender, Punishment.PunishmentType.NoFightServer)) {
Könnte man diese Prüfung nicht in den "fabric" Validator packen? (Bzw. ihn dann arenaPlayer nennen oder so)
@ -132,0 +139,4 @@
if(alreadyInArena(player))
return;
if(ModLoaderBlocker.isFabric(player) && !precommand.equals("/bau testarena ")) {
Prüfst du das nicht schon immer mit dem Fabric-Validator?
@ -220,3 +257,1 @@
public void execute(CommandSender sender, String[] args) {
createArena(sender, "/fight ", true, args, 0, false, (player, mode, map) -> {
Subserver arena = new ServerStarter().arena(mode, map).blueLeader(player).start();
@Register(description = "CHALLENGE_USAGE")
CHALLENGE_USAGE? Meines Wissens nach gibt es keine Möglichkeit, den Fight-Command zu einem Fehler zu bringen.
@ -222,1 +257,3 @@
Subserver arena = new ServerStarter().arena(mode, map).blueLeader(player).start();
@Register(description = "CHALLENGE_USAGE")
public void challenge(@Validator("fabric") ProxiedPlayer player, @Mapper("nonHistoricArenaMode") @OptionalValue("") @AllowNull ArenaMode arenaMode, @Mapper("arenaMap") @OptionalValue("") @AllowNull String map) {
createArena(player, "/fight", true, arenaMode, map, false, (p, mode, m) -> {
Leerzeichen nach /fight!
@ -39,3 +35,1 @@
Subserver arena = new ServerStarter().arena(mode, map).blueLeader(player).start();
Message.broadcast("HISTORIC_BROADCAST", "HISTORIC_BROADCAST_HOVER"
, new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/arena " + arena.getServer().getName()), mode.getDisplayName(), player.getName());
@Register(description = "CHALLENGE_USAGE")
Auch hier wieder so eine merkwürdige CHALLENGE_USAGE.
@ -41,1 +35,3 @@
, new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/arena " + arena.getServer().getName()), mode.getDisplayName(), player.getName());
@Register(description = "CHALLENGE_USAGE")
public void challenge(@Validator("fabric") ProxiedPlayer player, @Mapper("nonHistoricArenaMode") @OptionalValue("") @AllowNull ArenaMode arenaMode, @Mapper("arenaMap") @OptionalValue("") @AllowNull String map) {
FightCommand.createArena(player, "/historic", true, arenaMode, map, true, (p, mode, m) -> {
Leerzeichen nach /historic!
@ -42,0 +36,4 @@
public void challenge(@Validator("fabric") ProxiedPlayer player, @Mapper("nonHistoricArenaMode") @OptionalValue("") @AllowNull ArenaMode arenaMode, @Mapper("arenaMap") @OptionalValue("") @AllowNull String map) {
FightCommand.createArena(player, "/historic", true, arenaMode, map, true, (p, mode, m) -> {
Subserver arena = new ServerStarter().arena(mode, m).blueLeader(p).start();
Message.broadcast("CHALLENGE_BROADCAST", "CHALLENGE_BROADCAST_HOVER",
Wie wäre es mit HISTORIC statt CHALLENGE?
@ -0,0 +42,4 @@
SWCommandUtils.addMapper("arenaMap", arenaMapTypeMapper());
}
public static TypeValidator<ProxiedPlayer> fabricChecker() {
Könnte man diese Konstruktoren nicht private machen?
@ -0,0 +79,4 @@
@Override
public Collection<String> tabCompletes(CommandSender sender, String[] previousArguments, String s) {
ArenaMode arenaMode = ArenaMode.getByChat(previousArguments[previousArguments.length - 1]);
List<String> stringList = new ArrayList<>(arenaMode.getMaps());
Könnte hier nicht eine NPE fliegen, wenn der User keinen gültigen ArenaMode angegeben hat?
Da der ArenaMode nicht matched bevor das hier genutzt wird sollte es nicht so das problem sein, und wenn dann matched der command halt nicht