SteamWar/BungeeCore
Archiviert
13
2

Add BauLock #415

Zusammengeführt
Lixfel hat 20 Commits von BauLock nach master 2022-09-14 11:51:49 +02:00 zusammengeführt
7 geänderte Dateien mit 144 neuen und 1 gelöschten Zeilen

Datei anzeigen

@ -23,8 +23,10 @@ import de.steamwar.bungeecore.*;
import de.steamwar.bungeecore.inventory.SWInventory;
import de.steamwar.bungeecore.inventory.SWItem;
import de.steamwar.bungeecore.network.NetworkSender;
import de.steamwar.bungeecore.sql.BauLockState;
import de.steamwar.bungeecore.sql.BauweltMember;
import de.steamwar.bungeecore.sql.SteamwarUser;
import de.steamwar.bungeecore.sql.UserConfig;
import de.steamwar.bungeecore.util.Chat19;
import de.steamwar.messages.ChatSender;
import de.steamwar.network.packets.server.BaumemberUpdatePacket;
@ -80,6 +82,17 @@ public class BauCommand extends BasicCommand {
case "test":
testarena(p, args);
break;
xSpw markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

siehe unten

siehe unten
Veraltet
Review

Hier fliegt eine ArrayIndexOutOfBoundsException, wenn der User einfach nur /bau lock eingibt. Zudem solltest du auf das Argument noch .toUpperCase() ausführen, ansonsten muss der User den Lockzustand immer in Capslock schreiben.

Hier fliegt eine ArrayIndexOutOfBoundsException, wenn der User einfach nur /bau lock eingibt. Zudem solltest du auf das Argument noch .toUpperCase() ausführen, ansonsten muss der User den Lockzustand immer in Capslock schreiben.
case "lock":
if(args.length < 2) {
Message.send("BAU_LOCKED_OPTIONS", p);
return;
xSpw markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Warum nimmt setLocked nicht genau einen String?

Warum nimmt setLocked nicht genau einen String?
}
setLocked(p, args[1].toUpperCase());
break;
case "unlock":
setLocked(p, "OPEN");
break;
default:
HelpCommand.sendBauHelp(ChatSender.of(p));
}
@ -129,6 +142,11 @@ public class BauCommand extends BasicCommand {
return;
}
if(isLocked(worldOwner, SteamwarUser.get(p))) {
Message.send("BAU_LOCKED_NOALLOWED", p);
return;
}
versionSelector(p, args, 2,
() -> new ServerStarter().build19(worldOwner.getUuid()).send(p).start(),
() -> new ServerStarter().build15(worldOwner.getUuid()).send(p).start(),
@ -307,4 +325,35 @@ public class BauCommand extends BasicCommand {
Message.send("BAU_MEMBER_TOGGLE_OFF", p, Message.parse(what, p));
}
}
private static final String BAU_LOCK_CONFIG_NAME = "baulockstate";
private static void setLocked(ProxiedPlayer p, String arg) {
SteamwarUser owner = SteamwarUser.get(p.getUniqueId());
BauLockState state;
try {
xSpw markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Hier wird nie auf die Länge des Array geprüft! Wird Fehler werfen.

Hier wird nie auf die Länge des Array geprüft! Wird Fehler werfen.
state = BauLockState.valueOf(arg);
xSpw markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Hier bekommst du nicht so ganz die Teams zurück ;). Du versuchst hier UserIDs als TeamIDs zu verwenden. Das funktioniert nicht so ganz... Du kannst auch einfach die TeamIDs vergleichen, das wäre dann (SteamWarUser u).getTeam() oder so ähnlich (Kein Team.get nötig, der Vergleich der Teamobjekte mit == würde zudem immer fehlschlagen, weil dabei bei Objekten nur die Objektadresse verglichen wird und in dem Fall 2x zwar das gleiche Team, aber unterschiedliche Objekte zurückgegeben werden würde).

Hier bekommst du nicht so ganz die Teams zurück ;). Du versuchst hier UserIDs als TeamIDs zu verwenden. Das funktioniert nicht so ganz... Du kannst auch einfach die TeamIDs vergleichen, das wäre dann (SteamWarUser u).getTeam() oder so ähnlich (Kein Team.get nötig, der Vergleich der Teamobjekte mit == würde zudem immer fehlschlagen, weil dabei bei Objekten nur die Objektadresse verglichen wird und in dem Fall 2x zwar das gleiche Team, aber unterschiedliche Objekte zurückgegeben werden würde).
} catch (IllegalArgumentException e) {
Message.send("BAU_LOCKED_OPTIONS", owner.getPlayer());
return;
xSpw markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Werte haben ist eine Sache diese zu nutzen ist eine andere.

Werte haben ist eine Sache diese zu nutzen ist eine andere.
}
UserConfig.updateUserConfig(owner.getId(), BAU_LOCK_CONFIG_NAME, state == BauLockState.OPEN ? null : state.name());
Message.send("BAU_LOCKED_" + state.name(), owner.getPlayer());
}
xSpw markierte diese Unterhaltung als gelöst
Review

Keine Individuellen Nachrichten für die einzelnen States?

Keine Individuellen Nachrichten für die einzelnen States?
private static boolean isLocked(SteamwarUser owner, SteamwarUser target) {
xSpw markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Kann man mit einem Ternary operator inlinen

Kann man mit einem Ternary operator inlinen
if (owner.getId() == target.getId())
return false;
String state = UserConfig.getConfig(owner.getId(), BAU_LOCK_CONFIG_NAME);
switch (state == null ? BauLockState.OPEN : BauLockState.valueOf(state)) {
case NOBODY:
return true;
case TEAM:
return owner.getTeam() != target.getTeam();
case OPEN:
default:
return false;
}
}
}

Datei anzeigen

@ -101,7 +101,9 @@ public class HelpCommand extends BasicCommand {
"HELP_BAU_TOGGLEWE", "/build togglewe ",
"HELP_BAU_TOGGLEWORLD", "/build toggleworld ",
"HELP_BAU_DELETE", "/build delete ",
"HELP_BAU_TESTARENA", "/build testarena ");
"HELP_BAU_TESTARENA", "/build testarena ",
"HELP_BAU_LOCK", "/build lock ",
"HELP_BAU_UNLOCK", "/build unlock");
}
private static void printPage(ChatSender sender, ClickEvent.Action action, String... args) {

Datei anzeigen

@ -0,0 +1,27 @@
/*
This file is a part of the SteamWar software.
Copyright (C) 2022 SteamWar.de-Serverteam
xSpw markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

All klingt wie alle können drauf vllt eher zu (none) umbenenen

All klingt wie alle können drauf vllt eher zu (none) umbenenen
Veraltet
Review

Ich fände NOBODY oder NOMEMBERS treffender.

Ich fände NOBODY oder NOMEMBERS treffender.
This program is free software: you can redistribute it and/or modify
xSpw markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Kommentar passt nicht zum namen!

Kommentar passt nicht zum namen!
it under the terms of the GNU Affero General Public License as published by
xSpw markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Reihenfolge ist etwas komisch

Reihenfolge ist etwas komisch
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bungeecore.sql;
public enum BauLockState {
NOBODY, // Locks the build server for all users
TEAM, //opens the build server only for every added user which is in the same team as the buildOwner
OPEN //unlocks the build server for all users
}

Datei anzeigen

@ -268,6 +268,7 @@ public class SteamwarUser {
return team;
}
@Deprecated
public ProxiedPlayer getPlayer() {
return ProxyServer.getInstance().getPlayer(uuid);
}

Datei anzeigen

@ -0,0 +1,46 @@
/*
This file is a part of the SteamWar software.
Copyright (C) 2022 SteamWar.de-Serverteam
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
xSpw markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Bitte diesen String hier rausbewegen (z.B. zum Baucommand). Die SQL-Klasse soll generisch bleiben, insbesondere mit dem kommenden CommonDB im Hintergrund.

Bitte diesen String hier rausbewegen (z.B. zum Baucommand). Die SQL-Klasse soll generisch bleiben, insbesondere mit dem kommenden CommonDB im Hintergrund.
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
xSpw markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Diese Wrappermethode ebenso verschieben.

Diese Wrappermethode ebenso verschieben.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bungeecore.sql;
public class UserConfig {
private UserConfig() {}
private static final Statement insert = new Statement("INSERT INTO UserConfig (User, Config, Value) VALUES (?,?,?) ON DUPLICATE KEY UPDATE Value = VALUES(Value)");
private static final Statement select = new Statement("SELECT Value FROM UserConfig WHERE User = ? AND Config = ?");
private static final Statement delete = new Statement("DELETE FROM UserConfig WHERE User = ? AND Config = ?");
public static String getConfig(int userID, String config) {
return select.select(rs -> {
if(rs.next())
return rs.getString("Value");
return null;
}, userID, config);
}
public static void updateUserConfig(int userID, String config, String value) {
if(value == null) {
delete.update(userID, config);
return;
}
insert.update(userID, config, value);
}
}

Datei anzeigen

@ -101,6 +101,10 @@ HELP_BAU_DELETE=§8/§ebuild delete §8- §7Reset your entire build server
HELP_BAU_DELETE_HOVER=§eReset build server
HELP_BAU_TESTARENA=§8/§ebuild testarena §8- §7Start a test arena
HELP_BAU_TESTARENA_HOVER=§eStart test arena
HELP_BAU_LOCK=§8/§ebuild lock §8- §7Locks the build server for a specified group of players
HELP_BAU_LOCK_HOVER=§eLock your build server
HELP_BAU_UNLOCK=§8/§ebuild unlock §8- §7Unlocks the buildserver for added users
HELP_BAU_UNLOCK_HOVER=§eUnlock your build server
#Usage description of various commands
USAGE_ALERT=§8/§7alert §8[§emessage§8]
@ -198,6 +202,11 @@ BAU_ADDMEMBER_ADDED=§aThe player was added to your world.
BAU_ADDMEMBER_ADDED_TARGET=§aYou have been added to the world of §e{0}§a.
BAU_TP_USAGE=§8/§7build tp §8[§eplayer§8]
xSpw markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Im englischen musst du build und server trennen (zwei Wörter, betrifft auch die folgenden Zeilen)

Im englischen musst du build und server trennen (zwei Wörter, betrifft auch die folgenden Zeilen)
BAU_TP_NOALLOWED=§cYou are not allowed to teleport to this player's world.
BAU_LOCKED_NOALLOWED=§cThe build server is currently locked.
BAU_LOCKED_OPTIONS=§7Build server lock options§8: §cnobody§8, §eteam§8, §aopen
BAU_LOCKED_NOBODY=§7You have locked your build server for all players.
BAU_LOCKED_TEAM=§7You've locked your build server for all players except added team members.
BAU_LOCKED_OPEN=§7You have opened your build server for all added players.
BAU_DELMEMBER_USAGE=§8/§7build delmember §8[§eplayer§8]
BAU_DELMEMBER_SELFDEL=§cYou cannot remove yourself!
BAU_DELMEMBER_DELETED=§cPlayer was removed.

Datei anzeigen

@ -87,6 +87,10 @@ HELP_BAU_DELETE=§8/§ebau delete §8- §7Setzt deine Bauwelt zurück
HELP_BAU_DELETE_HOVER=§eBauwelt zurücksetzen
HELP_BAU_TESTARENA=§8/§ebau testarena §8- §7Starte eine Testarena
HELP_BAU_TESTARENA_HOVER=§eTestarena starten
HELP_BAU_LOCK=§8/§ebau lock §8- §7Sperre deinen Bauserver für bestimmte Spielergruppen
HELP_BAU_LOCK_HOVER=§eSperre deinen Bau
HELP_BAU_UNLOCK=§8/§ebau unlock §8- §7Öffne deinen Bauserver für alle hinzugefügten Spieler
HELP_BAU_UNLOCK_HOVER=§eÖffne deinen Bau
#Usage description of various commands
USAGE_ALERT=§8/§7alert §8[§eNachricht§8]
@ -182,6 +186,11 @@ BAU_ADDMEMBER_ADDED=§aDer Spieler wurde zu deiner Welt hinzugefügt.
BAU_ADDMEMBER_ADDED_TARGET=§aDu wurdest zu der Welt von §e{0} §ahinzugefügt.
BAU_TP_USAGE=§8/§7bau tp §8[§eSpieler§8]
xSpw markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Auf Deutsch ist es der Bauserver

Auf Deutsch ist es der Bauserver
BAU_TP_NOALLOWED=§cDu darfst dich nicht auf diese Welt teleportieren.
xSpw markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Im Deutschen wäre Bauserverschließoptionen ein Wort.

Im Deutschen wäre Bauserverschließoptionen ein Wort.
BAU_LOCKED_NOALLOWED=§cDer Bauserver ist momentan gesperrt.
BAU_LOCKED_OPTIONS=§7Bauserver-Sperroptionen§8: §cnobody§8, §eteam§8, §aopen
BAU_LOCKED_NOBODY=§7Du hast deinen Bau für alle Spieler geschlossen.
xSpw markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Das wieder ist ein bisschen doppelt gemoppelt.

Das wieder ist ein bisschen doppelt gemoppelt.
BAU_LOCKED_TEAM=§7Du hast deinen Bau für alle außer hinzugefügte Teammitglieder gesperrt.
BAU_LOCKED_OPEN=§7Du hast deinen Bau für alle hinzugefügten Spieler geöffnet.
BAU_DELMEMBER_USAGE=§8/§7bau delmember §8[§eSpieler§8]
BAU_DELMEMBER_SELFDEL=§cDu kannst dich nicht selbst entfernen!
BAU_DELMEMBER_DELETED=§cDer Spieler wurde entfernt.