SteamWar/SpigotCore
Archiviert
13
0

MultiKits #88

Manuell gemergt
Lixfel hat 10 Commits von multi-kit nach master 2021-01-30 16:42:25 +01:00 zusammengeführt
Besitzer
Keine Beschreibung angegeben.
Lixfel hat 2021-01-09 17:55:29 +01:00 Änderungen angefragt
@ -36,2 +40,4 @@
private boolean inUse;
private PersonalKit(ResultSet rs) throws SQLException {
kitID = rs.getInt("KitID");
Besitzer

Es fällt mir kein Anwendungsfall ein, für den wir eine KitID benötigen würden. Dir etwa? PK wäre UserID, GameMode, Name

Es fällt mir kein Anwendungsfall ein, für den wir eine KitID benötigen würden. Dir etwa? PK wäre UserID, GameMode, Name
Autor
Besitzer

Die ID wird der neue PK, hiermit wird es möglich Kits mit dem gleichen Name und Gamemode zu haben

Die ID wird der neue PK, hiermit wird es möglich Kits mit dem gleichen Name und Gamemode zu haben
Besitzer

Mehrere Kits mit gleichem Spieler, GameMode und Namen finde ich nicht sinnvoll, das erlaubt nur Verwirrung.

Mehrere Kits mit gleichem Spieler, GameMode und Namen finde ich nicht sinnvoll, das erlaubt nur Verwirrung.
@ -40,2 +46,4 @@
inventory = rs.getString("Inventory");
armor = rs.getString("Armor");
name = rs.getString("Name");
inUse = rs.getBoolean("InUse");
Besitzer

Ich verstehe zwar, was du damit bezwecken möchtest, jedoch ist das mMn. nicht sauber & kann schnell zu einem korrupten Datenbankzustand führen. Wenn, dann müsste man eigentlich eine Tabelle InUse mit User, GameMode, KitName machen, dann kann ein Spieler auch nur ein Kit "in use" haben, oder wir lassen das einfach und der Spieler hat Standardmäßig immer erstmal das default-Kit und muss dann halt sein "derzeitiges" Kit erst manuell auswählen.

Ich verstehe zwar, was du damit bezwecken möchtest, jedoch ist das mMn. nicht sauber & kann schnell zu einem korrupten Datenbankzustand führen. Wenn, dann müsste man eigentlich eine Tabelle InUse mit User, GameMode, KitName machen, dann kann ein Spieler auch nur ein Kit "in use" haben, oder wir lassen das einfach und der Spieler hat Standardmäßig immer erstmal das default-Kit und muss dann halt sein "derzeitiges" Kit erst manuell auswählen.
Autor
Besitzer

In der Methode wo dieser Zustand abgerufen wird, gibt es auch einen Failsafe welcher so fern mehrere Elemente mit diesem Zustand existieren werden die mit der höheren ID zurückgesetzt.

In der Methode wo dieser Zustand abgerufen wird, gibt es auch einen Failsafe welcher so fern mehrere Elemente mit diesem Zustand existieren werden die mit der höheren ID zurückgesetzt.
@ -49,2 +62,3 @@
}
return new PersonalKit(rs);
public static List<PersonalKit> get(int userID, String gamemode, String name) {
Besitzer

Das sollte nur ein Kit zurückliefern oder null.

Das sollte nur ein Kit zurückliefern oder null.
Autor
Besitzer

Wie gesagt, Kits können den gleichen Namen haben

Wie gesagt, Kits können den gleichen Namen haben
Besitzer

Mehrere Kits mit gleichem Spieler, GameMode und Namen finde ich nicht sinnvoll, das erlaubt nur Verwirrung.

Mehrere Kits mit gleichem Spieler, GameMode und Namen finde ich nicht sinnvoll, das erlaubt nur Verwirrung.
@ -75,2 +113,4 @@
return Objects.requireNonNull(config.getList("Armor")).toArray(new ItemStack[0]);
}
public int getUserID() {
Besitzer

Wurde bislang nicht benötigt, warum jetzt?

Wurde bislang nicht benötigt, warum jetzt?
Autor
Besitzer

Same as getGamemode

Same as getGamemode
@ -77,0 +121,4 @@
return name;
}
public String getGamemode() {
Besitzer

Wurde bislang nicht benötigt, warum jetzt?

Wurde bislang nicht benötigt, warum jetzt?
Autor
Besitzer

Habe es einfach mal Präventiv reingepackt, weil ich zu diesem Zeitpunkt noch nicht ganz wusste, ob ich es brauchen würde. Kann eigentlich weg.

Habe es einfach mal Präventiv reingepackt, weil ich zu diesem Zeitpunkt noch nicht ganz wusste, ob ich es brauchen würde. Kann eigentlich weg.
@ -77,0 +134,4 @@
SQL.update("UPDATE PersonalKit SET InUse = ? WHERE KitID = ?", this.inUse, kitID);
}
public void setName(String name) {
Besitzer

Namen nachträglich zu ändern ist glaube ich UI-Technisch etwas umständlich. Es wird kaum jemanden stören, wenn wir das Feature einfach nicht anbieten.

Namen nachträglich zu ändern ist glaube ich UI-Technisch etwas umständlich. Es wird kaum jemanden stören, wenn wir das Feature einfach nicht anbieten.
Autor
Besitzer

Die Möglichkeit, dass Kit umzubenennen ist im FightSystem schon implementiert.

Die Möglichkeit, dass Kit umzubenennen ist im FightSystem schon implementiert.
@ -77,0 +139,4 @@
SQL.update("UPDATE PersonalKit SET Name = ? WHERE KitID = ?", this.name, kitID);
}
public void setInventory(ItemStack[] inventory) {
Besitzer

Dazu hat die Create-Methode eigentlich auch ON DUPLICATE KEY Update & man wird wsl. immer auch zeitgleich die Armor setzen. Es erscheint mir daher zielführender, ein Update nicht vom Neuerstellen zu unterscheiden (also beim ändern create aufzurufen)

Dazu hat die Create-Methode eigentlich auch ON DUPLICATE KEY Update & man wird wsl. immer auch zeitgleich die Armor setzen. Es erscheint mir daher zielführender, ein Update nicht vom Neuerstellen zu unterscheiden (also beim ändern create aufzurufen)
Lixfel hat 2021-01-24 14:46:20 +01:00 Änderungen angefragt
@ -63,3 +98,1 @@
SQL.update("INSERT INTO PersonalKit (UserID, GameMode, Inventory, Armor) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE Inventory = VALUES(Inventory), Armor = VALUES(Armor)",
userID, gamemode, inventoryConfig.saveToString(), armorConfig.saveToString());
return get(userID, gamemode);
public static boolean nameInUse(int userID, String gamemode, String name) {
Besitzer

Ich weiß jetzt nicht ganz den Sinn dieser "NameInUse" Funktion, um Abzufragen, ob dieser Name derzeit verwendet wird, ist das denkbar ungeeignet.

Sinnvoller wäre denke ich ein getInUse(), um das derzeitige Kit in Benutzung zu bekommen. (Es sei denn, du hast da einen sehr speziellen Anwendungsfall)

Ich weiß jetzt nicht ganz den Sinn dieser "NameInUse" Funktion, um Abzufragen, ob dieser Name derzeit verwendet wird, ist das denkbar ungeeignet. Sinnvoller wäre denke ich ein getInUse(), um das derzeitige Kit in Benutzung zu bekommen. (Es sei denn, du hast da einen sehr speziellen Anwendungsfall)
@ -77,0 +130,4 @@
public void setInUse(boolean inUse) {
this.inUse = inUse;
updateDB();
Besitzer

Hier würde ich mir wünschen, dass automatisch alle anderen Kits desselben Spielers desselben Moduses inUse=False gestellt werden.

Hier würde ich mir wünschen, dass automatisch alle anderen Kits desselben Spielers desselben Moduses inUse=False gestellt werden.
@ -77,0 +138,4 @@
updateDB();
}
public void setInventory(ItemStack[] inventory) {
Besitzer

Wenn, wird immer Inventory und Armor zeitgleich geupdated, daher auch bitte zeitgleich setzen, das macht einen Datenbankaufruf weniger.

Wenn, wird immer Inventory und Armor zeitgleich geupdated, daher auch bitte zeitgleich setzen, das macht einen Datenbankaufruf weniger.
Lixfel hat 2021-01-26 13:38:30 +01:00 Änderungen angefragt
@ -77,0 +131,4 @@
public void setInUse(boolean inUse) {
PersonalKit kit = getKitInUse(userID, gamemode);
if(kit != null)
kit.setUse(inUse);
Besitzer

Whops! Fehlende invertierung!

Whops! Fehlende invertierung!
@ -77,0 +176,4 @@
YamlConfiguration armorConfig = new YamlConfiguration();
armorConfig.set("Armor", armor);
return armorConfig.saveToString();
Besitzer

Wenn du hier schon 2 extramethoden draus machst, könnte man diese auch noch zu einer einzelnen zusammenfassen (+ String als parameter)

Wenn du hier schon 2 extramethoden draus machst, könnte man diese auch noch zu einer einzelnen zusammenfassen (+ String als parameter)
Lixfel hat die Änderungen 2021-01-28 20:19:23 +01:00 genehmigt
Lixfel hat einen Kommentar hinterlassen
Besitzer

Muss zeitgleich mit der FightSystem-Änderung gepusht werden + DB-Anpassung

Muss zeitgleich mit der FightSystem-Änderung gepusht werden + DB-Anpassung
Lixfel hat diesen Pull-Request 2021-01-30 16:42:25 +01:00 geschlossen
Dieses Repo ist archiviert. Du kannst Pull-Requests nicht kommentieren.
Keine Beschreibung angegeben.