Add BauLock #415
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
3 Beteiligte
Fällig am
Kein Fälligkeitsdatum gesetzt.
Abhängigkeiten
Keine Abhängigkeiten gesetzt.
Referenz: SteamWar/BungeeCore#415
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren
Keine Beschreibung angegeben.
Branch "BauLock" 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?
Add BauCommand.isLocked
Add BauLockState
Add "BAU_LOCKED" and "BAU_UNLOCKED" in BungeeCore_de.properties
Add "Bau_LOCKED" and "BAU_UNLOCKED" in BungeeCore.properties
@ -120,10 +128,14 @@ public class BauCommand extends BasicCommand {
}
SteamwarUser worldOwner = SteamwarUser.get(args[1]);
if (worldOwner == null) {
Warum ist dieser check rausgefallen?
@ -82,1 +81,4 @@
break;
case "lock":
setLocked(SteamwarUser.get(p), args);
siehe unten
@ -83,0 +85,4 @@
break;
case "unlock":
setLocked(SteamwarUser.get(p), new String[]{"", "OPEN"});
Warum nimmt setLocked nicht genau einen String?
@ -309,1 +321,4 @@
}
private static boolean isLocked(SteamwarUser owner, SteamwarUser target) {
if (owner == null) {
Dieser check gehört hier nicht rein.
@ -310,0 +330,4 @@
return (activeLockState == BauLockState.TEAM && !(Team.get(owner.getId()) == Team.get(target.getId()))) || activeLockState == BauLockState.ALL;
}
private static void setLocked(SteamwarUser owner, String[] args) {
Hier wird nie auf die Länge des Array geprüft! Wird Fehler werfen.
@ -310,0 +334,4 @@
BauLockState newState = BauLockState.OPEN;
if(args[1] != null) {
BauLockState.valueOf(args[1].toUpperCase());
Werte haben ist eine Sache diese zu nutzen ist eine andere.
@ -310,0 +340,4 @@
BauLock.updateUserConfig(owner.getId(), newState);
String messageKey = "BAU_LOCKED";
Keine Individuellen Nachrichten für die einzelnen States?
@ -310,0 +341,4 @@
BauLock.updateUserConfig(owner.getId(), newState);
String messageKey = "BAU_LOCKED";
if(newState == BauLockState.OPEN)
Kann man mit einem Ternary operator inlinen
@ -0,0 +1,38 @@
package de.steamwar.bungeecore.sql;
public class BauLock {
Du hast die UserConfig nicht so ganz verstanden. Du sollst kein BauLock hinzufügen sondern ein UserConfig, wo du dann alles mit dem Key 'baulock' nutzt oder so.
@ -0,0 +10,4 @@
private static final Statement selectAll = new Statement("SELECT * FROM `UserConfig` WHERE 'User' = ? AND Config' = ?");
public static BauLockState getUserLockState(int userID) {
select.select(rs -> {
Select returned auch was? Wieso wird hier immer 'BauLockState.OPEN' aus der methode gereicht?
@ -0,0 +21,4 @@
public static void updateUserConfig(int userID, BauLockState state) {
if(!exists(userID)) {
insert.update(userID, configName, String.valueOf(state));
Ich weiß nicht ob es im SpigotCore ähnlich gemacht ist, sollte so aber nicht nötig sein.
@ -0,0 +27,4 @@
}
private static boolean exists(int userID) {
selectAll.select(rs -> {
Der key existiert also nie? und warum mal '!= null' und mal direkt einfach 'null'?
@ -0,0 +2,4 @@
public enum BauLockState {
ALL, // Locks the build server for all users
All klingt wie alle können drauf vllt eher zu (none) umbenenen
@ -0,0 +3,4 @@
public enum BauLockState {
ALL, // Locks the build server for all users
OPEN, //locks the build server for every user
Kommentar passt nicht zum namen!
@ -0,0 +4,4 @@
ALL, // Locks the build server for all users
OPEN, //locks the build server for every user
TEAM //opens the build server only for every added user which is in the same team as the buildOwner
Reihenfolge ist etwas komisch
@ -196,6 +196,9 @@ 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]
BAU_TP_NOALLOWED=§cYou are not allowed to teleport to this player's world.
BAU_LOCKED_NOALLOWED=&cThe buildserver is currently locked.
Keine & in Nachrichten. Nutze § bitte.
@ -197,2 +197,4 @@
BAU_TP_USAGE=§8/§7build tp §8[§eplayer§8]
BAU_TP_NOALLOWED=§cYou are not allowed to teleport to this player's world.
BAU_LOCKED_NOALLOWED=&cThe buildserver is currently locked.
BAU_LOCKED=&eYou have locked your buildserver.
Keine & in Nachrichten. Nutze § bitte.
Ich würde persönlich das 'have' rausnehmen.
@ -198,1 +198,4 @@
BAU_TP_NOALLOWED=§cYou are not allowed to teleport to this player's world.
BAU_LOCKED_NOALLOWED=&cThe buildserver is currently locked.
BAU_LOCKED=&eYou have locked your buildserver.
BAU_UNLOCKED=&eYou have unlocked your buildserver.
Keine & in Nachrichten. Nutze § bitte.
Ich würde persönlich das 'have' rausnehmen.
@ -180,6 +180,9 @@ 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]
BAU_TP_NOALLOWED=§cDu darfst dich nicht auf diese Welt teleportieren.
BAU_LOCKED_NOALLOWED=&cDer Buildserver ist momentan gelocked.
Keine & in Nachrichten. Nutze § bitte.
@ -181,2 +181,4 @@
BAU_TP_USAGE=§8/§7bau tp §8[§eSpieler§8]
BAU_TP_NOALLOWED=§cDu darfst dich nicht auf diese Welt teleportieren.
BAU_LOCKED_NOALLOWED=&cDer Buildserver ist momentan gelocked.
BAU_LOCKED=&eDu hast dein Bau geschlossen.
Keine & in Nachrichten. Nutze § bitte.
@ -182,1 +182,4 @@
BAU_TP_NOALLOWED=§cDu darfst dich nicht auf diese Welt teleportieren.
BAU_LOCKED_NOALLOWED=&cDer Buildserver ist momentan gelocked.
BAU_LOCKED=&eDu hast dein Bau geschlossen.
BAU_UNLOCKED=&eDu hast dein Bau wieder freigegeben.
Keine & in Nachrichten. Nutze § bitte.
Ich würde nach nochmaliger Überlegung eigentlich dazu tendieren, zu sagen, dass wir dieses Feature nicht umsetzen.
Warum genau?
Verstehe ich auch nicht, da ich schon von mehreren leuten gewünscht wurde dies umzusetzen um z.b. tech klau zu verhinder wenn man inaktiv wird
Dass ist das falsche Feature dazu. Dazu sollten sie einfach ihre Bauwelt löschen...
Warum nicht implementieren? Komplexität für ein Feature, was zwar nicht so angenehm, aber dennoch mit bereits vorhandenen Hausmitteln umsetzbar ist (entfernen der unerwünschten geaddeten Leute vom Bau).
Nein dies sollten sie nicht machen. Wenn sie eben einfach alleine für eine Aufnahme sein wollen oder so, ist das nicht möglich einfach die Bauwelt zu löschen, außerdem haben Spieler dort die Bauten zum Teil drauf, auch ohne Schem.
Auch keine Sinnvolle Lösung, weil dieser das nur temporär haben will und nicht wieder alle hinzufügen will, wenn er fertig ist, weil er es dann vergisst und dann andere nicht weiter arbeiten können wenn der Owner off ist!
Ich teile die gleiche meinung. Wir könnten ja mal im Teamchat nachfragen.
Ansonsten bitte noch einmal den Master in diesen Branch mergen (geht am besten in IntelliJ unten rechts), es hat sich nämlich ein Merge-Conflict entwickelt.
@ -82,1 +81,4 @@
break;
case "lock":
setLocked(SteamwarUser.get(p), args[1]);
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.
@ -310,0 +331,4 @@
if(activeLockState == null)
activeLockState = BauLockState.OPEN;
return activeLockState == BauLockState.NONE || (activeLockState == BauLockState.TEAM && !(Team.get(owner.getId()) == Team.get(target.getId())));
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).
@ -0,0 +2,4 @@
public enum BauLockState {
NONE, // Locks the build server for all users
Ich fände NOBODY oder NOMEMBERS treffender.
@ -0,0 +4,4 @@
public class UserConfig {
public static final String lockConfigName = "baulockstate";
Bitte diesen String hier rausbewegen (z.B. zum Baucommand). Die SQL-Klasse soll generisch bleiben, insbesondere mit dem kommenden CommonDB im Hintergrund.
@ -0,0 +11,4 @@
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 BauLockState getUserLockState(int userID) {
Diese Wrappermethode ebenso verschieben.
@ -196,6 +200,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]
BAU_TP_NOALLOWED=§cYou are not allowed to teleport to this player's world.
BAU_LOCKED_NOALLOWED=&cThe buildserver is currently locked.
Im englischen musst du build und server trennen (zwei Wörter, betrifft auch die folgenden Zeilen)
@ -39,2 +39,4 @@
HELP_LOCAL=§7Schreibe mit §8/§elocal §7nur auf dem lokalen Server!
HELP_LOCAL_HOVER=§eLokaler Chat
HELP_BAU_LOCK=§8/§ebuild lock §8- §7Schließe den Bauserver für bestimmte Spieler.
HELP_BAU_LOCK_HOVER=§eSchließe deinen bau
Schließen klingt irgendwie leicht falsch (für mich). Wie wäre es mit sperren?
@ -180,6 +184,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]
BAU_TP_NOALLOWED=§cDu darfst dich nicht auf diese Welt teleportieren.
BAU_LOCKED_NOALLOWED=&cDer Buildserver ist momentan gelocked.
Auf Deutsch ist es der Bauserver
@ -181,2 +185,4 @@
BAU_TP_USAGE=§8/§7bau tp §8[§eSpieler§8]
BAU_TP_NOALLOWED=§cDu darfst dich nicht auf diese Welt teleportieren.
BAU_LOCKED_NOALLOWED=&cDer Buildserver ist momentan gelocked.
BAU_LOCKED_OPTIONS=§eBauserver schließ optionen: §cnone§8, §eteam§8, §aopen§8.
Im Deutschen wäre Bauserverschließoptionen ein Wort.
@ -183,0 +188,4 @@
BAU_LOCKED_OPTIONS=§eBauserver schließ optionen: §cnone§8, §eteam§8, §aopen§8.
BAU_LOCKED_NONE=§eDu hast dein Bau für alle Spieler geschlossen.
BAU_LOCKED_TEAM=§eDu hast dein Bau für alle außer hinzugefügte Teammitglieder geschlossen.
BAU_LOCKED_OPEN=§eDu hast dein Bau für alle hinzugefügten Spieler wieder geöffnet.
Das wieder ist ein bisschen doppelt gemoppelt.