Ignore-System initial push #93
Keine Reviewer
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
2 Beteiligte
Fällig am
Kein Fälligkeitsdatum gesetzt.
Abhängigkeiten
Keine Abhängigkeiten gesetzt.
Referenz: SteamWar/BungeeCore#93
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren
Keine Beschreibung angegeben.
Branch "IgnoreSystem" 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?
Closes #58
@ -52,2 +52,4 @@
setInstance(this);
loadConfig();
IgnoreSystem.folder = new File(getDataFolder() + "/ignoreSystem/"); //folder where the playerdata from the "/ignore" system is saved
Nein, das kommt in die Datenbank (das skaliert schließlich)
@ -0,0 +23,4 @@
return ignorers.get(ignorer).isIgnoring(ignored);
}
public static void load(UUID id) {
Muss diese Funktion public sein?
Besser fände ich, wenn es eine private-Methode IgnoreSystem get(UUID) gibt, die ein IgnoreSystem für die UUID zurückgibt, unabhängig davon, ob sie schon gecached ist, oder ob sie noch aus der Datenbank geladen werden muss. Diese funktion kann dann in isIgnored, ignore und unIgnore verwendet werden.
@ -0,0 +44,4 @@
ignorers.remove(id);
}
public static void ignore(ProxiedPlayer victim, ProxiedPlayer offender) {
Lieber über UUIDs als ProxiedPlayer
@ -0,0 +45,4 @@
}
public static void ignore(ProxiedPlayer victim, ProxiedPlayer offender) {
if (victim==null || offender==null) return;
Warum sollte null hier überhaupt ankommen?
@ -0,0 +51,4 @@
ignorers.get(victim.getUniqueId()).ignore(offender.getUniqueId());
}
public static void unIgnore(ProxiedPlayer victim, ProxiedPlayer offender) {
Auch hier lieber UUIDs
@ -0,0 +52,4 @@
}
public static void unIgnore(ProxiedPlayer victim, ProxiedPlayer offender) {
if (victim==null || offender==null) return;
Warum sollte hier überhaupt null ankommen?
@ -0,0 +63,4 @@
/**
* List of Ignored Players
*/
private ArrayList<UUID> ignored;
Bitte keine ArrayList, sondern ein Set (Performance + keine Dopplungen möglich)
@ -0,0 +79,4 @@
*/
public IgnoreSystem(UUID id) {
ignored = new ArrayList<UUID>();
File f = new File(folder+id.toString()+".cfg");
Wie bereits geschrieben: Eine Datenbank-Tabelle ist da die sauberere Lösung
@ -0,0 +108,4 @@
*/
public void ignore(UUID id) {
if (!ignored.contains(id))
ignored.add(id);
Bei Set ist Überprüfung unnötig
Bei einer Datenbank: Hier mit Datenbank synchronisieren, nicht wenn der Spieler disconnected
@ -0,0 +117,4 @@
*/
public void unIgnore(UUID id) {
if (ignored.contains(id))
ignored.remove(id);
Bei Set ist Überprüfung unnötig
Bei einer Datenbank: Hier mit Datenbank synchronisieren, nicht wenn der Spieler disconnected
@ -24,1 +24,4 @@
}
if (!(sender instanceof ProxiedPlayer)) {
BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "You cant run this from the Console..");
Deutsch bitte.
Bzw. kannst du die Nachricht auch komplett weglassen
@ -25,0 +25,4 @@
if (!(sender instanceof ProxiedPlayer)) {
BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "You cant run this from the Console..");
return;
Tab-spacing verhauen
@ -0,0 +9,4 @@
public class IgnoreCommand extends BasicCommand {
public IgnoreCommand() {
super("ignore", "steamwar.ignore");
Berechtigung null
@ -0,0 +18,4 @@
ProxiedPlayer p = (ProxiedPlayer) s;
ProxiedPlayer target = ProxyServer.getInstance().getPlayer(args[0]);
if(target == null){
BungeeCore.send(p, BungeeCore.CHAT_PREFIX + "§cDieser Spieler ist derzeit nicht online!");
Sollte auch funktionieren, wenn das target nicht online ist. Nutze daher den SteamwarUser statt ProxiedPlayer
@ -0,0 +21,4 @@
BungeeCore.send(p, BungeeCore.CHAT_PREFIX + "§cDieser Spieler ist derzeit nicht online!");
return;
}else if(target.equals(p)){
BungeeCore.send(p, BungeeCore.CHAT_PREFIX + "§cWie willst du dich selber Ignorieren?");
ignorieren kleingeschrieben.
@ -0,0 +26,4 @@
}else {
IgnoreSystem.ignore(p, target);
BungeeCore.send(p, BungeeCore.CHAT_PREFIX + "§7Du ignorierst nun " + target.getDisplayName() + ".");
}
Was ist nur mit deinem Tab-Spacing los?
@ -39,1 +40,4 @@
return;
}else if (IgnoreSystem.isIgnored(target.getUniqueId(), player.getUniqueId())) {
BungeeCore.send(player, BungeeCore.CHAT_PREFIX + "§cDieser Spieler hat dich geblockt!");
return;
Ich weiß nicht, ob auch bei /r diese Zeilen aufgerufen werden (bitte nochmal überprüfen)
die Zeile
if (args.length < 2) { BungeeCore.send(player, BungeeCore.CHAT_PREFIX + "/msg [Benutzer] [Nachricht]"); return; }
lässt mich vermuten, dass es nicht für /r gültig istNein, ich meine, ob das Blocken auch /r Nachrichten blockiert!
@ -0,0 +9,4 @@
public class UnIgnoreCommand extends BasicCommand {
public UnIgnoreCommand() {
super("unignore", "steamwar.ignore");
Auch hier: Berechtigung null
@ -0,0 +17,4 @@
if (!(s instanceof ProxiedPlayer)) return;
ProxiedPlayer p = (ProxiedPlayer) s;
ProxiedPlayer target = ProxyServer.getInstance().getPlayer(args[0]);
if(target == null){
Tab-Spacing
bei mir stimmt das Tab-Spacing überall - villeicht zeigt git es anders an oder ist meine tab-breite im verhältniss zur leerzeichenbreite anders als deine
@ -0,0 +18,4 @@
ProxiedPlayer p = (ProxiedPlayer) s;
ProxiedPlayer target = ProxyServer.getInstance().getPlayer(args[0]);
if(target == null){
BungeeCore.send(p, BungeeCore.CHAT_PREFIX + "§cDieser Spieler ist derzeit nicht online!");
Auch hier: Bitte mit SteamwarUser
diese nachricht wird an den command-sender geschickt -> er ist garantiert online, sonst hätte er den Befehl ja nicht senden können
Ich meine target.
Man kann keinen Spieler blocken, der derzeit offline ist. Das muss geändert werden.
@ -127,3 +129,4 @@
@EventHandler
public void onServerDisconnect(ServerDisconnectEvent e){
IgnoreSystem.onStop(); //save all
Dieses Event wird getriggert, wenn der Subserver beendet wird, nicht wenn der Server runterfährt! Bei Umsetzung in Datenbank sollte das sowieso nicht mehr nötig sein.
gibt es noch irgendein problem hiermit? würde gerne das hier aus den pr raushaben..
Bitte das Tab-Spacing überall fixen!