ModCommand #445
@ -28,7 +28,7 @@ import de.steamwar.bungeecore.sql.*;
|
||||
import de.steamwar.command.SWCommand;
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Auch hier. Auch hier.
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Klammer hier unnötig. Klammer hier unnötig.
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Chaoscaot
hat
Das Inventar im aktuellen Status ist etwas Fraglich, es zeigt einem alle Mods an (ca. 1700, 38 Seiten). Es sollte nur die nicht-Klassifizierten anzeigen oder alle mit ein Paar Filter funktionen eg. Name, Klassifizierung Das Inventar im aktuellen Status ist etwas Fraglich, es zeigt einem alle Mods an (ca. 1700, 38 Seiten).
Es sollte nur die nicht-Klassifizierten anzeigen oder alle mit ein Paar Filter funktionen eg. Name, Klassifizierung
|
||||
@ -64,7 +64,7 @@ public class ModCommand extends SWCommand {
|
||||
}
|
||||
|
||||
public void updateAndCloseGui(Mod.ModType modType,String modName,Mod.Platform modPlatform,SWInventory toClose,ProxiedPlayer p) {
|
||||
Mod.get(modName,modPlatform).setModType(modType,modName,modPlatform);
|
||||
Mod.getOrCreate(modName,modPlatform).setModType(modType);
|
||||
toClose.close();
|
||||
openGui(p);
|
||||
}
|
||||
@ -123,7 +123,7 @@ public class ModCommand extends SWCommand {
|
||||
return;
|
||||
}
|
||||
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Chaoscaot
hat
Kann auch durch Mod klasse ersetzt werden Kann auch durch Mod klasse ersetzt werden
|
||||
Mod.get(modName,platform).setModType(newModType,modName,platform);
|
||||
Mod.getOrCreate(modName,platform).setModType(newModType);
|
||||
|
||||
Message.send("MOD_CHANGED_TYPE",p,modName,platform.name(),newModType.name());
|
||||
}
|
||||
|
@ -119,7 +119,7 @@ public class Fabric extends BasicListener {
|
||||
}
|
||||
|
||||
for(JsonElement mod : array) {
|
||||
mods.add(Mod.get(mod.getAsString(), Mod.Platform.FABRIC));
|
||||
mods.add(Mod.getOrCreate(mod.getAsString(), Mod.Platform.FABRIC));
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -26,9 +26,7 @@ import io.netty.channel.ChannelPipeline;
|
||||
import net.md_5.bungee.api.chat.TextComponent;
|
||||
import net.md_5.bungee.api.connection.PendingConnection;
|
||||
import net.md_5.bungee.api.event.LoginEvent;
|
||||
import net.md_5.bungee.api.event.ProxyPingEvent;
|
||||
import net.md_5.bungee.connection.InitialHandler;
|
||||
import net.md_5.bungee.event.EventHandler;
|
||||
import net.md_5.bungee.netty.ChannelWrapper;
|
||||
import net.md_5.bungee.netty.HandlerBoss;
|
||||
import net.md_5.bungee.netty.PacketHandler;
|
||||
@ -135,7 +133,7 @@ public class Forge extends BasicListener {
|
||||
Utils.VarInt nameLength = Utils.readVarInt(data, pos);
|
||||
pos += nameLength.length;
|
||||
|
||||
mods.add(Mod.get(new String(data, pos, nameLength.value), Mod.Platform.FORGE));
|
||||
mods.add(Mod.getOrCreate(new String(data, pos, nameLength.value), Mod.Platform.FORGE));
|
||||
pos += nameLength.value;
|
||||
}
|
||||
|
||||
|
@ -92,7 +92,7 @@ public class Forge12 extends BasicListener {
|
||||
//Version information is unused
|
||||
bytePos += 1 + data[bytePos];
|
||||
|
||||
mods.add(Mod.get(new String(name), Mod.Platform.FORGE));
|
||||
mods.add(Mod.getOrCreate(new String(name), Mod.Platform.FORGE));
|
||||
}
|
||||
|
||||
if (Utils.handleMods(p, mods)) {
|
||||
|
@ -67,7 +67,7 @@ public class LabyMod extends BasicListener {
|
||||
try{
|
||||
InfoPacket info = new InfoPacket(value.value);
|
||||
for(InfoPacket.Addon addon : info.addons) {
|
||||
mods.add(Mod.get(addon.name, Mod.Platform.LABYMOD));
|
||||
mods.add(Mod.getOrCreate(addon.name, Mod.Platform.LABYMOD));
|
||||
}
|
||||
}catch(IOException e){
|
||||
BungeeCore.log("Could not read JSON", e);
|
||||
|
@ -28,6 +28,6 @@ public class WorldDownloader extends BasicListener {
|
||||
return;
|
||||
|
||||
event.setCancelled(true);
|
||||
Utils.handleMods((ProxiedPlayer) sender, Lists.newArrayList(Mod.get("wdl", Mod.Platform.FORGE)));
|
||||
Utils.handleMods((ProxiedPlayer) sender, Lists.newArrayList(Mod.getOrCreate("wdl", Mod.Platform.FORGE)));
|
||||
}
|
||||
}
|
||||
|
@ -19,11 +19,8 @@
|
||||
|
||||
package de.steamwar.bungeecore.sql;
|
||||
|
||||
import lombok.Getter;
|
||||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Unused imports bitte verwerfen. Unused imports bitte verwerfen.
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Nein, das bleibt definitiv private. Nein, das bleibt definitiv private.
|
||||
@ -49,7 +46,13 @@ public class Mod {
|
||||
this.modType = modType;
|
||||
}
|
||||
|
||||
public static Mod get(String modName, Platform platform){
|
||||
private Mod(ResultSet resultSet) throws SQLException {
|
||||
this.modName = resultSet.getString("ModName");
|
||||
this.platform = Mod.Platform.valueOf(resultSet.getInt("Platform"));
|
||||
this.modType = ModType.valueOf(resultSet.getInt("ModType"));
|
||||
}
|
||||
|
||||
public static Mod getOrCreate(String modName, Platform platform){
|
||||
Mod mod = get.select(rs -> {
|
||||
if(rs.next())
|
||||
return new Mod(modName, platform, ModType.valueOf(rs.getInt("ModType")));
|
||||
@ -62,15 +65,11 @@ public class Mod {
|
||||
return new Mod(modName, platform, ModType.UNKLASSIFIED);
|
||||
Lixfel markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Die Methode dürfte nach den anderen Änderungen nicht mehr nötig sein. Die Methode dürfte nach den anderen Änderungen nicht mehr nötig sein.
|
||||
}
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Hier wird ggf immer noch der Mod erstellt! Bitte benenne die andere Methode getOrCreate um, rufe diese hier nicht auf und nimm hier keinen int als Argument! Nutze dann stattdessen in getOrCreate diese get-Methode (keine Code duplication). Hier wird ggf immer noch der Mod erstellt! Bitte benenne die andere Methode getOrCreate um, rufe diese hier nicht auf und nimm hier keinen int als Argument! Nutze dann stattdessen in getOrCreate diese get-Methode (keine Code duplication).
|
||||
|
||||
public static Mod get(String modName, int platform) {
|
||||
return get(modName,Mod.Platform.valueOf(platform));
|
||||
}
|
||||
|
||||
public static ModType getModType(String modName,Mod.Platform platform) {
|
||||
return get(modName,platform).modType;
|
||||
return getOrCreate(modName,platform).modType;
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Mach daraus doch bitte eine normale Member-Methode. (also getModType(){return modType;}) Mach daraus doch bitte eine normale Member-Methode. (also getModType(){return modType;})
|
||||
}
|
||||
|
||||
public void setModType(Mod.ModType newModType,String modName,Mod.Platform platform) {
|
||||
public void setModType(Mod.ModType newModType) {
|
||||
set.update(newModType.value ,modName,platform.value);
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Bitte umbenennen in setModType und in Member-Funktion umwandeln (wie getModType)! Bitte umbenennen in setModType und in Member-Funktion umwandeln (wie getModType)!
Lixfel
hat
Bitte modName und platform aus den Argumenten entfernen und von dieser Mod-Instanz verwenden. Bitte modName und platform aus den Argumenten entfernen und von dieser Mod-Instanz verwenden.
|
||||
}
|
||||
|
||||
@ -81,7 +80,7 @@ public class Mod {
|
||||
return Mod.getAllFiltered.select(rs -> {
|
||||
List<Mod> f = new ArrayList<>();
|
||||
while(rs.next()){
|
||||
Mod entry = new Mod(rs.getString("ModName"), Mod.Platform.valueOf(rs.getInt("Platform")),Mod.ModType.valueOf(rs.getInt("ModType")));
|
||||
Mod entry = new Mod(rs);
|
||||
f.add(entry);
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Die Methode braucht es nicht, schließlich sind Mod-Objects schon entsprechend geparst. Die Methode braucht es nicht, schließlich sind Mod-Objects schon entsprechend geparst.
|
||||
}
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Es wäre evtl. geschickt, einen neuen Konstruktor, welcher ein ResultSet nimmt und SQLExceptions wirft zu machen. Es wäre evtl. geschickt, einen neuen Konstruktor, welcher ein ResultSet nimmt und SQLExceptions wirft zu machen.
|
||||
return f;
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
du kannst das new inlinen (also f.add(new Mod...)) du kannst das new inlinen (also f.add(new Mod...))
|
||||
@ -89,12 +88,11 @@ public class Mod {
|
||||
}
|
||||
|
||||
public static Mod findFirstMod() {
|
||||
findFirst.select(rs -> {
|
||||
return findFirst.select(rs -> {
|
||||
String name = rs.getString("ModName");
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Statt filtered würde ich eher getAllModsOfType verwenden... (auch SQL-Statement so umbenennen) Statt filtered würde ich eher getAllModsOfType verwenden... (auch SQL-Statement so umbenennen)
zOnlyKroks
hat
damit würde ich aber permanent einen filter applien. wenn ich dies aber nicht möchte, brauch ich das statement ohne filter damit würde ich aber permanent einen filter applien. wenn ich dies aber nicht möchte, brauch ich das statement ohne filter
Lixfel
hat
Was ja auch der Methodenname "ofType" impliziert. Damit ändert sich ja nichts am Methodeninhalt, nur statt filtered - ofType im Namen. Was ja auch der Methodenname "ofType" impliziert. Damit ändert sich ja nichts am Methodeninhalt, nur statt filtered - ofType im Namen.
|
||||
int platform = rs.getInt("Platform");
|
||||
return get(name,Platform.valueOf(platform));
|
||||
return new Mod(name,Platform.valueOf(platform),ModType.UNKLASSIFIED);
|
||||
});
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Du hast hier doch bereits schon auch den ModType, warum erstellst du nicht direkt ein Mod-Objekt? So machst du stattdessen nochmal einen Datenbankaufruf! Du hast hier doch bereits schon auch den ModType, warum erstellst du nicht direkt ein Mod-Objekt? So machst du stattdessen nochmal einen Datenbankaufruf!
|
||||
return null;
|
||||
}
|
||||
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Wie wäre es, statt immer null zu returnen, dein Ergebnis von findFirst zu returnen? Wie wäre es, statt immer null zu returnen, dein Ergebnis von findFirst zu returnen?
|
||||
public String getModName() {
|
||||
|
Das das dann der Filter für alle Nutzer zeitgleich angepasst/gesetzt wird, halte ich für ziemlich problematisch.