Arena Merging 2.0 #329
@ -43,7 +43,7 @@ public class ServerStarter {
|
||||
private boolean allowMerge = false;
|
||||
private String fightMap = null;
|
||||
private String gameMode = null;
|
||||
private ServerConstructor constructor = (serverName, port, allowMerge, builder, shutdownCallback) -> new Arenaserver(serverName, gameMode, fightMap, false, port, builder, shutdownCallback);
|
||||
private ServerConstructor constructor = (serverName, port, builder, shutdownCallback) -> new Arenaserver(serverName, gameMode, fightMap, allowMerge, port, builder, shutdownCallback);
|
||||
|
||||
|
||||
private final Set<ProxiedPlayer> playersToSend = new HashSet<>();
|
||||
private final Map<String, String> arguments = new HashMap<>();
|
||||
@ -192,7 +192,7 @@ public class ServerStarter {
|
||||
}
|
||||
|
||||
private void build(UUID owner) {
|
||||
constructor = (serverName, port, allowMerge, builder, shutdownCallback) -> new Bauserver(serverName, owner, port, builder, shutdownCallback);
|
||||
constructor = (serverName, port, builder, shutdownCallback) -> new Bauserver(serverName, owner, port, builder, shutdownCallback);
|
||||
serverNameProvider = port -> bauServerName(SteamwarUser.get(owner));
|
||||
}
|
||||
|
||||
@ -216,7 +216,7 @@ public class ServerStarter {
|
||||
worldSetup.run();
|
||||
arguments.put("logPath", worldName);
|
||||
|
||||
Subserver subserver = constructor.construct(serverName, port, allowMerge, node.startServer(
|
||||
Subserver subserver = constructor.construct(serverName, port, node.startServer(
|
||||
serverJar, directory, worldDir, worldName, port, xmx, arguments.entrySet().stream().map(entry -> entry.getKey() + "=" + entry.getValue()).toArray(String[]::new)
|
||||
), worldCleanup);
|
||||
|
||||
@ -249,7 +249,7 @@ public class ServerStarter {
|
||||
}
|
||||
|
||||
private interface ServerConstructor {
|
||||
Subserver construct(String serverName, int port, boolean merge, ProcessBuilder builder, Runnable shutdownCallback);
|
||||
Subserver construct(String serverName, int port, ProcessBuilder builder, Runnable shutdownCallback);
|
||||
}
|
||||
|
||||
private static class Portrange {
|
||||
|
@ -168,12 +168,14 @@ public class FightCommand extends BasicCommand {
|
||||
if(map == null)
|
||||
return;
|
||||
|
||||
if(!allowMerging || suggestMerging(player, mode, map, callback)) {
|
||||
if(!allowMerging) {
|
||||
callback.run(player, mode, map);
|
||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Bitte mal an andere Stellen schauen, aber ich glaube, hier fehlt ein synchronized Bitte mal an andere Stellen schauen, aber ich glaube, hier fehlt ein synchronized
|
||||
} else {
|
||||
suggestMerging(player, mode, map, callback);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean suggestMerging(ProxiedPlayer player, ArenaMode mode, String map, FightCallback declineMerge) {
|
||||
public static void suggestMerging(ProxiedPlayer player, ArenaMode mode, String map, FightCallback declineMerge) {
|
||||
Arenaserver mergable = null;
|
||||
synchronized (Subserver.getServerList()) {
|
||||
for (Subserver subserver : Subserver.getServerList()) {
|
||||
@ -188,7 +190,8 @@ public class FightCommand extends BasicCommand {
|
||||
}
|
||||
|
||||
Lixfel
hat
Mir gefällt es nicht ganz, dass die Methode sowohl durch den Returnwert als auch über declineMerge das gleiche mache n kann (wobei die Booleanrichtung auch durch den Methodennamen unklar ist). (Würde ich auch so akzeptieren, aber schöner wäre es anders). Evtl. die createArena-Methode sofort eine Arena starten lassen, wenn merging nicht allowed ist (und returnen) und dann die suggestMerging-Methode am Ende der Methode ausführen. Mir gefällt es nicht ganz, dass die Methode sowohl durch den Returnwert als auch über declineMerge das gleiche mache n kann (wobei die Booleanrichtung auch durch den Methodennamen unklar ist). (Würde ich auch so akzeptieren, aber schöner wäre es anders).
Evtl. die createArena-Methode sofort eine Arena starten lassen, wenn merging nicht allowed ist (und returnen) und dann die suggestMerging-Methode am Ende der Methode ausführen.
|
||||
if(mergable == null) {
|
||||
Lixfel markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Error? Hackts? Dann werf wenn schon einen richtigen Fehler! Error? Hackts? Dann werf wenn schon einen richtigen Fehler!
|
||||
return true;
|
||||
declineMerge.run(player, mode, map);
|
||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Das wirkt mir nach einem sehr merkwürdigen Check, ob der Server noch online ist. Entweder wir haben dafür eine Funktion im Subserver oder du machst das über Spieler == 0 Das wirkt mir nach einem sehr merkwürdigen Check, ob der Server noch online ist. Entweder wir haben dafür eine Funktion im Subserver oder du machst das über Spieler == 0
|
||||
return;
|
||||
}
|
||||
|
||||
SWInventory inventory = new SWInventory(player, 9, Message.parse("FIGHT_MERGE_TITLE", player));
|
||||
@ -209,7 +212,6 @@ public class FightCommand extends BasicCommand {
|
||||
}
|
||||
});
|
||||
inventory.open();
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren
Du hast allowMerge bereits im Objekt, allowMerge ist nicht Startablaufdynamisch, daher bitte aus dem Interface raushalten! (also kein allowMerge im Interface als parameter)