SteamWar/SpigotCore
Archiviert
13
0

CMD #141

Zusammengeführt
YoyoNow hat 29 Commits von CMD nach master 2021-12-12 15:58:20 +01:00 zusammengeführt
2 geänderte Dateien mit 23 neuen und 6 gelöschten Zeilen
Nur Änderungen aus Commit cd90cba7d5 werden angezeigt - Alle Commits anzeigen

Datei anzeigen

@ -72,17 +72,23 @@ public class SWCommandUtils {
if (s.equals("a") || s.equals("adventure") || s.equals("2")) return GameMode.ADVENTURE;
return null;
}, s -> Arrays.asList("s", "survival", "0", "c", "creative", "1", "sp", "spectator", "3", "a", "adventure", "2")));
MAPPER_FUNCTIONS.put(SteamwarUser.class.getTypeName(), createMapper(SteamwarUser::get, s -> Bukkit.getOnlinePlayers().stream().map(Player::getName).collect(Collectors.toList())));
MAPPER_FUNCTIONS.put(SchematicNode.class.getTypeName(), new TypeMapper<SchematicNode>() {
@Override
public List<String> tabCompletes(CommandSender commandSender, String[] strings, String s) {
return SchematicNode.getNodeTabcomplete(SteamwarUser.get(((Player) commandSender).getUniqueId()), s);
MAPPER_FUNCTIONS.put(SteamwarUser.class.getTypeName(), createMapper(SteamwarUser::get, s -> {
if (s.length() < 1) {
return Bukkit.getOnlinePlayers().stream().map(Player::getName).collect(Collectors.toList());
}
List<SteamwarUser> steamwarUsers = SteamwarUser.startsWithName(s);
return steamwarUsers.stream().map(SteamwarUser::getUserName).limit(40).collect(Collectors.toList());
}));
MAPPER_FUNCTIONS.put(SchematicNode.class.getTypeName(), new TypeMapper<SchematicNode>() {
@Override
public SchematicNode map(CommandSender commandSender, String[] previousArguments, String s) {
return SchematicNode.getNodeFromPath(SteamwarUser.get(((Player) commandSender).getUniqueId()), s);
}
@Override
public List<String> tabCompletes(CommandSender commandSender, String[] strings, String s) {
return SchematicNode.getNodeTabcomplete(SteamwarUser.get(((Player) commandSender).getUniqueId()), s);
}
});
}

Datei anzeigen

@ -32,6 +32,7 @@ public class SteamwarUser {
private static final SQL.Statement getId = new SQL.Statement("SELECT * FROM UserData WHERE id = ?");
private static final SQL.Statement getUUID = new SQL.Statement("SELECT * FROM UserData WHERE UUID = ?");
private static final SQL.Statement getName = new SQL.Statement("SELECT * FROM UserData WHERE lower(UserName) = ?");
private static final SQL.Statement startWithName = new SQL.Statement("SELECT * FROM UserData WHERE lower(UserName) LIKE ?");
private static final Map<UUID, SteamwarUser> byUUID = new HashMap<>();
private static final Map<String, SteamwarUser> byName = new HashMap<>();
@ -93,6 +94,16 @@ public class SteamwarUser {
return bedrock;
}
public static List<SteamwarUser> startsWithName(String userName){
return startWithName.select(rs -> {
List<SteamwarUser> steamwarUsers = new ArrayList<>();
while (rs.next()) {
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Bitte hier unbedingt ausgibige Filterung (., %, zu kurze userNames) einbauen, damit unsere DB nicht so extensiv gequeriet wird.

Falls du diese Funktion für Tab-Completion einbaust: Generell bei Tab-Completion nur die User anbieten, die derzeit auf dem selben Server sind. Der Rest wird deutlich seltener gebraucht und würde nur die Datenbank (und Userverbindung) zuspammen. Wir würden auch dadurch einem User verraten, welche User alles schon mal bei uns waren (und welche nicht).

Bitte hier unbedingt ausgibige Filterung (., %, zu kurze userNames) einbauen, damit unsere DB nicht so extensiv gequeriet wird. Falls du diese Funktion für Tab-Completion einbaust: Generell bei Tab-Completion nur die User anbieten, die derzeit auf dem selben Server sind. Der Rest wird deutlich seltener gebraucht und würde nur die Datenbank (und Userverbindung) zuspammen. Wir würden auch dadurch einem User verraten, welche User alles schon mal bei uns waren (und welche nicht).
Veraltet
Review

Wie unten schon gesagt, würde ich ganz gerne alle User die gerade auf dem Bungee sind tabCompleten und nicht nur die die auf dem Server selber sind, dafür gibt es Player.

Wie unten schon gesagt, würde ich ganz gerne alle User die gerade auf dem Bungee sind tabCompleten und nicht nur die die auf dem Server selber sind, dafür gibt es Player.
steamwarUsers.add(new SteamwarUser(rs));
}
return steamwarUsers;
}, userName.toLowerCase() + "%");
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Warum nur nach dem ersten Buchstaben suchen?

Warum nur nach dem ersten Buchstaben suchen?
}
public static SteamwarUser get(String userName){
SteamwarUser user = byName.get(userName.toLowerCase());
if(user == null)