ModCommand #445
@ -63,8 +63,8 @@ public class ModCommand extends SWCommand {
|
||||
swStreamInv.open();
|
||||
}
|
||||
|
||||
public void updateAndCloseGui(Mod.ModType modType,String modName,Mod.Platform modPlatform,SWInventory toClose,ProxiedPlayer p) {
|
||||
Mod.getOrCreate(modName,modPlatform).setModType(modType);
|
||||
public void updateAndCloseGui(Mod.ModType modType, Mod mod, SWInventory toClose, ProxiedPlayer p) {
|
||||
mod.setModType(modType);
|
||||
toClose.close();
|
||||
openGui(p);
|
||||
}
|
||||
@ -74,8 +74,8 @@ public class ModCommand extends SWCommand {
|
||||
|
||||
inv.addItem(1, new SWItem(Message.parse("MOD_UNCLASSIFIED",p),8), click -> playerFilterType.replace(p, Mod.ModType.UNKLASSIFIED));
|
||||
inv.addItem(2, new SWItem(Message.parse("MOD_ALLOWED",p),2), click -> playerFilterType.replace(p, Mod.ModType.GREEN));
|
||||
inv.addItem(3, new SWItem(Message.parse("MOD_PENDING",p), 11),click -> playerFilterType.replace(p, Mod.ModType.YELLOW));
|
||||
inv.addItem(4, new SWItem(Message.parse("MOD_FORBIDDEN",p),1), click -> playerFilterType.replace(p, Mod.ModType.RED));
|
||||
inv.addItem(3, new SWItem(Message.parse("MOD_FORBIDDEN",p), 11), click -> playerFilterType.replace(p, Mod.ModType.YELLOW));
|
||||
inv.addItem(4, new SWItem(Message.parse("MOD_AUTOBAN",p),1), click -> playerFilterType.replace(p, Mod.ModType.RED));
|
||||
inv.addItem(5, new SWItem(Message.parse("MOD_YT",p),13), click -> playerFilterType.replace(p, Mod.ModType.YOUTUBER_ONLY));
|
||||
|
||||
inv.addItem(8, new SWItem("ARROW", Message.parse("MOD_ITEM_BACK",p)), click -> {
|
||||
@ -89,14 +89,11 @@ public class ModCommand extends SWCommand {
|
||||
private void openClassificationGui(ProxiedPlayer p,Mod element) {
|
||||
SWInventory swInventory = new SWInventory(p,9,Message.parse("MOD_COMMAND_CLASSICIATION_GUI",p));
|
||||
|
||||
String modName = element.getModName();
|
||||
Mod.Platform modPlatform = element.getPlatform();
|
||||
|
||||
swInventory.addItem(2, new SWItem(Message.parse("MOD_UNCLASSIFIED",p),8), (click1 -> updateAndCloseGui(Mod.ModType.UNKLASSIFIED,modName,modPlatform,swInventory,p)));
|
||||
swInventory.addItem(3, new SWItem(Message.parse("MOD_ALLOWED",p), 2), (click1 -> updateAndCloseGui(Mod.ModType.GREEN,modName,modPlatform,swInventory,p)));
|
||||
swInventory.addItem(4, new SWItem(Message.parse("MOD_PENDING",p), 11), (click1 -> updateAndCloseGui(Mod.ModType.YELLOW,modName,modPlatform,swInventory,p)));
|
||||
swInventory.addItem(5, new SWItem(Message.parse("MOD_FORBIDDEN",p),1), (click1 -> updateAndCloseGui(Mod.ModType.RED,modName,modPlatform,swInventory,p)));
|
||||
swInventory.addItem(6, new SWItem(Message.parse("MOD_YT",p), 13), (click1 -> updateAndCloseGui(Mod.ModType.YOUTUBER_ONLY,modName,modPlatform,swInventory,p)));
|
||||
swInventory.addItem(2, new SWItem(Message.parse("MOD_UNCLASSIFIED",p),8), (click1 -> updateAndCloseGui(Mod.ModType.UNKLASSIFIED,element,swInventory,p)));
|
||||
swInventory.addItem(3, new SWItem(Message.parse("MOD_ALLOWED",p), 2), (click1 -> updateAndCloseGui(Mod.ModType.GREEN,element,swInventory,p)));
|
||||
swInventory.addItem(4, new SWItem(Message.parse("MOD_FORBIDDEN",p), 11), (click1 -> updateAndCloseGui(Mod.ModType.YELLOW,element,swInventory,p)));
|
||||
swInventory.addItem(5, new SWItem(Message.parse("MOD_AUTOBAN",p),1), (click1 -> updateAndCloseGui(Mod.ModType.RED,element,swInventory,p)));
|
||||
swInventory.addItem(6, new SWItem(Message.parse("MOD_YT",p), 13), (click1 -> updateAndCloseGui(Mod.ModType.YOUTUBER_ONLY,element,swInventory,p)));
|
||||
|
||||
swInventory.addItem(8,new SWItem("ARROW",Message.parse("MOD_ITEM_BACK",p)), click1 -> {
|
||||
swInventory.close();
|
||||
@ -116,27 +113,30 @@ public class ModCommand extends SWCommand {
|
||||
|
||||
@Register(value = {"set"},description = "MOD_COMMAND_SET_USAGE")
|
||||
public void set(ProxiedPlayer p,String modName,Mod.Platform platform,Mod.ModType newModType) {
|
||||
boolean modExists = Mod.doesModExist(modName,platform);
|
||||
|
||||
if(!modExists) {
|
||||
Message.send("MOD_COMMAND_NOT_FOUND_IN_DATABASE",p,modName);
|
||||
Mod mod = Mod.get(modName, platform);
|
||||
if(mod == null) {
|
||||
Message.send("MOD_COMMAND_NOT_FOUND_IN_DATABASE",p,modName, platform.name());
|
||||
return;
|
||||
}
|
||||
|
||||
Mod.getOrCreate(modName,platform).setModType(newModType);
|
||||
|
||||
mod.setModType(newModType);
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
|
||||
Message.send("MOD_CHANGED_TYPE",p,modName,platform.name(),newModType.name());
|
||||
}
|
||||
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Chaoscaot
hat
Kann auch durch Mod klasse ersetzt werden Kann auch durch Mod klasse ersetzt werden
|
||||
@Register(value = {"get"},description = "MOD_COMMAND_GET_USAGE")
|
||||
public void get(ProxiedPlayer p,String modName,Mod.Platform platform) {
|
||||
Message.send("MOD_COMMAND_INFO",p,modName,platform.name(),Mod.getModType(modName,platform).name());
|
||||
Mod mod = Mod.get(modName, platform);
|
||||
if(mod == null) {
|
||||
Message.send("MOD_COMMAND_NOT_FOUND_IN_DATABASE", p, modName, platform.name());
|
||||
return;
|
||||
}
|
||||
|
||||
Message.send("MOD_COMMAND_INFO", p, modName, platform.name(), mod.getModType().name());
|
||||
}
|
||||
|
||||
@Register(value = {"next"})
|
||||
public void next(ProxiedPlayer p) {
|
||||
Mod mod = Mod.findFirstMod();
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Wenn du das Mod-Object hast, weißt du schon, welcher Typ das ganze ist... Wenn du das Mod-Object hast, weißt du schon, welcher Typ das ganze ist...
|
||||
|
||||
if(mod == null) {
|
||||
Message.send("MOD_NO_MORE_UNCLASSIFIED_MODS",p);
|
||||
return;
|
||||
|
@ -34,9 +34,7 @@ public class Mod {
|
||||
private static final Statement set = new Statement("UPDATE Mods Set ModType = ? WHERE ModName = ? AND Platform = ?");
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Auch hier alle private. Das SQL-Zeugs bleibt in .sql. Du reichst dann wenn eine List<Mod> nach draußen, alles außerhalb hat nichts mit SQL am Hut. Auch hier alle private. Das SQL-Zeugs bleibt in .sql. Du reichst dann wenn eine List\<Mod> nach draußen, alles außerhalb hat nichts mit SQL am Hut.
|
||||
private static final Statement findFirst = new Statement("SELECT * FROM Mods WHERE ModType = 0 LIMIT 1");
|
||||
|
||||
private static final Statement getAll = new Statement("SELECT * FROM Mods ORDER BY ModName DESC LIMIT ?, ?");
|
||||
|
||||
private static final Statement getAllFiltered = new Statement("SELECT * FROM Mods WHERE ModType = ? ORDER BY ModName DESC LIMIT ?, ?");
|
||||
private static final Statement getPageOfType = new Statement("SELECT * FROM Mods WHERE ModType = ? ORDER BY ModName DESC LIMIT ?, ?");
|
||||
|
||||
private final String modName;
|
||||
private final Platform platform;
|
||||
@ -49,51 +47,46 @@ public class Mod {
|
||||
}
|
||||
|
||||
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"));
|
||||
this(resultSet.getString("ModName"), Mod.Platform.values()[resultSet.getInt("Platform")], ModType.values()[resultSet.getInt("ModType")]);
|
||||
}
|
||||
|
||||
public static Mod getOrCreate(String modName, Platform platform){
|
||||
Mod mod = get.select(rs -> {
|
||||
public static Mod get(String name, Platform platform) {
|
||||
return get.select(rs -> {
|
||||
if(rs.next())
|
||||
return new Mod(modName, platform, ModType.valueOf(rs.getInt("ModType")));
|
||||
return new Mod(rs);
|
||||
return null;
|
||||
}, modName, platform.value);
|
||||
}, name, platform.ordinal());
|
||||
}
|
||||
|
||||
public static Mod getOrCreate(String name, Platform platform) {
|
||||
Mod mod = get(name, platform);
|
||||
if(mod != null)
|
||||
return mod;
|
||||
|
||||
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.
|
||||
insert.update(modName, platform.value);
|
||||
return new Mod(modName, platform, ModType.UNKLASSIFIED);
|
||||
}
|
||||
|
||||
public static ModType getModType(String modName,Mod.Platform platform) {
|
||||
return getOrCreate(modName,platform).modType;
|
||||
insert.update(name, platform.ordinal());
|
||||
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).
|
||||
return new Mod(name, platform, ModType.UNKLASSIFIED);
|
||||
}
|
||||
|
||||
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) {
|
||||
set.update(newModType.value ,modName,platform.value);
|
||||
set.update(newModType.ordinal(), modName, platform.ordinal());
|
||||
}
|
||||
|
||||
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.
|
||||
public static boolean doesModExist(String modName,Mod.Platform modPlatform) {
|
||||
return get.select(ResultSet::next,modName,modPlatform.value);
|
||||
}
|
||||
public static List<Mod> getAllModsFiltered(int page,int elementsPerPage, Mod.ModType filter) {
|
||||
return Mod.getAllFiltered.select(rs -> {
|
||||
return Mod.getPageOfType.select(rs -> {
|
||||
List<Mod> f = new ArrayList<>();
|
||||
while(rs.next()){
|
||||
Mod entry = new Mod(rs);
|
||||
f.add(entry);
|
||||
}
|
||||
|
||||
Lixfel markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Schöner wäre (weil ansonsten doppelter Datenbankzugriff) wenn du die derzeitige get()-Methode umbennenen würdest in z.B. getOrCreate() und den eigentlichen get() Anteil der Methode in eine neue get()-Methode auslagerst, welche einfach null zurückliefert, wenn der Mod nicht existiert. (Weniger Codeduplication, weniger DB-Calls) Schöner wäre (weil ansonsten doppelter Datenbankzugriff) wenn du die derzeitige get()-Methode umbennenen würdest in z.B. getOrCreate() und den eigentlichen get() Anteil der Methode in eine neue get()-Methode auslagerst, welche einfach null zurückliefert, wenn der Mod nicht existiert. (Weniger Codeduplication, weniger DB-Calls)
|
||||
while(rs.next())
|
||||
f.add(new Mod(rs));
|
||||
|
||||
return f;
|
||||
},filter.value, page * elementsPerPage, elementsPerPage);
|
||||
},filter.ordinal(), page * elementsPerPage, elementsPerPage);
|
||||
}
|
||||
|
||||
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.
|
||||
public static Mod findFirstMod() {
|
||||
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 findFirst.select(rs -> {
|
||||
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...))
|
||||
String name = rs.getString("ModName");
|
||||
int platform = rs.getInt("Platform");
|
||||
return new Mod(name,Platform.valueOf(platform),ModType.UNKLASSIFIED);
|
||||
if(rs.next())
|
||||
return new Mod(rs);
|
||||
return null;
|
||||
});
|
||||
}
|
||||
|
||||
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.
|
||||
@ -110,48 +103,22 @@ public class Mod {
|
||||
}
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Gib hier doch einfach einen Mod zurück. Spart die obskuren apache-Imports und macht dir doch auch sonst das Leben einfacher, oder? Gib hier doch einfach einen Mod zurück. Spart die obskuren apache-Imports und macht dir doch auch sonst das Leben einfacher, oder?
|
||||
|
||||
public enum Platform{
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Chaoscaot
hat
In Zeile 71 gibts so etwas ähnliches, wird auch oben genutzt anstatt In Zeile 71 gibts so etwas ähnliches, wird auch oben genutzt anstatt `getValue`
|
||||
FORGE(0),
|
||||
LABYMOD(1),
|
||||
FABRIC(2);
|
||||
|
||||
Platform(int value){
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
static Platform valueOf(int value){
|
||||
for(Platform mt : values()){
|
||||
if(value == mt.value)
|
||||
return mt;
|
||||
}
|
||||
throw new EnumConstantNotPresentException(Platform.class, Integer.toString(value));
|
||||
}
|
||||
int value;
|
||||
public int get() {
|
||||
return value;
|
||||
}
|
||||
FORGE,
|
||||
LABYMOD,
|
||||
FABRIC
|
||||
}
|
||||
|
||||
public enum ModType {
|
||||
UNKLASSIFIED(0,"7"),
|
||||
GREEN(1,"a"),
|
||||
YELLOW(2,"e"),
|
||||
RED(3,"c"),
|
||||
YOUTUBER_ONLY(4,"6");
|
||||
UNKLASSIFIED("7"),
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Dann nicht mehr benötigt. Dann nicht mehr benötigt.
|
||||
GREEN("a"),
|
||||
YELLOW("e"),
|
||||
RED("c"),
|
||||
YOUTUBER_ONLY("6");
|
||||
|
||||
static ModType valueOf(int value){
|
||||
for(ModType mt : values()){
|
||||
if(value == mt.value)
|
||||
return mt;
|
||||
}
|
||||
throw new EnumConstantNotPresentException(ModType.class, Integer.toString(value));
|
||||
}
|
||||
|
||||
ModType(int value,String colorcode){
|
||||
this.value = value;
|
||||
ModType(String colorcode) {
|
||||
this.colorcode = colorcode;
|
||||
}
|
||||
int value;
|
||||
String colorcode;
|
||||
private final String colorcode;
|
||||
|
||||
public String getColorCode() {
|
||||
return colorcode;
|
||||
|
@ -674,7 +674,7 @@ MOD_COMMAND_CLASSICIATION_GUI=Mod Type Changer
|
||||
MOD_OPEN_GUI=§7Open Gui
|
||||
MOD_UNCLASSIFIED=§7Unclassified
|
||||
MOD_ALLOWED=§aAllowed
|
||||
MOD_PENDING=§ePending
|
||||
MOD_FORBIDDEN=§cForbidden
|
||||
MOD_FORBIDDEN=§eForbidden
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Color-Coding bei diesem Eintrag und den Vorhergehenden fehlend. Und bitte auch eine deutsche Übersetzung! Color-Coding bei diesem Eintrag und den Vorhergehenden fehlend.
Und bitte auch eine deutsche Übersetzung!
zOnlyKroks
hat
jap, die sind noch wip jap, die sind noch wip
|
||||
MOD_AUTOBAN=§cAutoban
|
||||
MOD_YT=§5YT Only
|
||||
MOD_ITEM_BACK=§7Back
|
||||
|
Hier sollten noch Klickbare Nachrichten zum einstufen hinzukommen