Arena Merging 2.0 #329
@ -20,6 +20,8 @@
|
||||
package de.steamwar.bungeecore.commands;
|
||||
|
||||
import de.steamwar.bungeecore.*;
|
||||
import de.steamwar.bungeecore.inventory.SWInventory;
|
||||
import de.steamwar.bungeecore.inventory.SWItem;
|
||||
import de.steamwar.bungeecore.listeners.mods.ModLoaderBlocker;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import net.md_5.bungee.api.CommandSender;
|
||||
@ -161,6 +163,42 @@ public class FightCommand extends BasicCommand {
|
||||
callback.run(player, mode, map);
|
||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
|
||||
}
|
||||
|
||||
Lixfel
hat
else if-Block ist der gleiche wie der if block => Verodern! else if-Block ist der gleiche wie der if block => Verodern!
|
||||
public static boolean suggestMerging(ProxiedPlayer player, ArenaMode mode, String map, FightCallback declineMerge) {
|
||||
Arenaserver mergable = null;
|
||||
for (Subserver subserver : Subserver.getServerList()) {
|
||||
if(subserver instanceof Arenaserver) {
|
||||
Arenaserver arenaserver = (Arenaserver) subserver;
|
||||
if(mode.getDisplayName().equals(arenaserver.getMode()) && map.equals(arenaserver.getMap()) && arenaserver.isAllowMerge() && arenaserver.getServer().getPlayers().size() == 1) {
|
||||
mergable = arenaserver;
|
||||
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
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(mergable != null) {
|
||||
SWInventory inventory = new SWInventory(player, 9, Message.parse("FIGHT_MERGE_TITLE", player));
|
||||
inventory.addItem(0, new SWItem(Message.parse("FIGHT_MERGE_DECLINE", player), 1), click -> {
|
||||
inventory.close();
|
||||
declineMerge.run(player, mode, map);
|
||||
});
|
||||
Arenaserver finalMergable = mergable;
|
||||
Lixfel
hat
Hier evtl. stattdessen if mergable == null return true machen? Macht den Rest einfacher lesbar. Hier evtl. stattdessen if mergable == null return true machen? Macht den Rest einfacher lesbar.
|
||||
SWItem item = new SWItem("§e" + ArenaMode.getByInternal(finalMergable.getMode()).getDisplayName() + "§7: §e" + finalMergable.getMap().toUpperCase(), 11);
|
||||
item.addLore(Message.parse("FIGHT_MERGE_INFO_LORE_1", player, finalMergable.getServer().getPlayers().stream().map(ProxiedPlayer::getDisplayName).reduce((player1, player2) -> player1 + ", " + player2).orElse("Error?")));
|
||||
inventory.addItem(4, item, click -> {});
|
||||
inventory.addItem(8, new SWItem(Message.parse("FIGHT_MERGE_ACCEPT", player), 10), click -> {
|
||||
if(BungeeCore.get().getProxy().getServerInfo(finalMergable.getServer().getName()) != null) {
|
||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Bitte durchgängig Message-System verwenden. Hier verwendest du übrigens den internalMode (nicht nötig, du hast ja schon mode. Bitte nicht die Map zu Uppercase casten. Bitte durchgängig Message-System verwenden. Hier verwendest du übrigens den internalMode (nicht nötig, du hast ja schon mode. Bitte nicht die Map zu Uppercase casten.
|
||||
finalMergable.sendPlayer(player);
|
||||
} else {
|
||||
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.
|
||||
Message.send("FIGHT_MERGE_OFFLINE", player);
|
||||
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!
|
||||
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
|
||||
}
|
||||
});
|
||||
inventory.open();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(CommandSender sender, String[] args) {
|
||||
createArena(sender, "/fight ", args, 0, false, (player, mode, map) -> {
|
||||
|
@ -588,3 +588,10 @@ RANK_NEEDED_FIGHTS_LEFT={0} §8(§7noch §e{1}§7 Kämpfe nötig§8)
|
||||
MODIFICATION_BAN_MESSAGE=Du hast probiert den FabricModSender zu umgehen / zu modifizieren!
|
||||
MODIFICATION_BAN_LOG={0} hat probiert den Fabric Mod Sender zu editieren / umzugehen!
|
||||
MODIFICATION_CHECK_SUCCESS=§eDeine Mods wurden geprüft und du darfst nun auf Arenen joinen!
|
||||
|
||||
#Arena Merging
|
||||
FIGHT_MERGE_TITLE=Gleicher Fight gefunden!
|
||||
FIGHT_MERGE_DECLINE=Neue Arena starten
|
||||
Lixfel
hat
Kampf Kampf
|
||||
FIGHT_MERGE_ACCEPT=Fight beitreten
|
||||
FIGHT_MERGE_INFO_LORE_1=§7Von: §e{0}
|
||||
Lixfel
hat
Kampf Kampf
|
||||
FIGHT_MERGE_OFFLINE=Der Server dem du beitreten wolltest ist nicht mehr online
|
||||
Lixfel
hat
§8: §8:
|
||||
|
So zu filtern ist definitiv unschön, bitte anders lösen. (ggf. mit Methodenargument)