SteamWar/BungeeCore
Archiviert
13
2

Ignore-System initial push #93

Manuell gemergt
Lixfel hat 10 Commits von IgnoreSystem nach master 2020-08-29 11:08:44 +02:00 zusammengeführt
8 geänderte Dateien mit 32 neuen und 167 gelöschten Zeilen
Nur Änderungen aus Commit 42cbf18c27 werden angezeigt - Alle Commits anzeigen

Datei anzeigen

@ -52,8 +52,6 @@ public class BungeeCore extends Plugin {
setInstance(this);
loadConfig();
IgnoreSystem.folder = new File(getDataFolder() + "/ignoreSystem/"); //folder where the playerdata from the "/ignore" system is saved
new ErrorLogger();
Veraltet
Review

Nein, das kommt in die Datenbank (das skaliert schließlich)

Nein, das kommt in die Datenbank (das skaliert schließlich)
new ConnectionListener();
new Forge();

Datei anzeigen

@ -1,157 +0,0 @@
package de.steamwar.bungeecore;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.UUID;
import net.md_5.bungee.api.connection.ProxiedPlayer;
public class IgnoreSystem{
private static HashMap<UUID, IgnoreSystem> ignorers = new HashMap<UUID, IgnoreSystem>();
public static File folder; //FileSystem-Folder: ../ignoreSystem/
//TODO load and unLoad functions - Filesystem
public static boolean isIgnored(UUID ignorer, UUID ignored) {
if (!ignorers.containsKey(ignorer))
ignorers.put(ignorer, new IgnoreSystem(ignorer));
return ignorers.get(ignorer).isIgnoring(ignored);
}
public static void load(UUID id) {
if (!ignorers.containsKey(id))
ignorers.put(id, new IgnoreSystem(id));
}
public static void onStop() {
ignorers.forEach((u,i) -> {
i.saveId(u);
});
}
public static void save(UUID id) {
if (ignorers.containsKey(id))
ignorers.get(id).saveId(id);
}
public static void unLoad(UUID id) {
if (ignorers.containsKey(id))
ignorers.remove(id);
}
public static void ignore(ProxiedPlayer victim, ProxiedPlayer offender) {
if (victim==null || offender==null) return;
if (!ignorers.containsKey(victim.getUniqueId()))
ignorers.put(victim.getUniqueId(), new IgnoreSystem(victim.getUniqueId()));
ignorers.get(victim.getUniqueId()).ignore(offender.getUniqueId());
}
public static void unIgnore(ProxiedPlayer victim, ProxiedPlayer offender) {
if (victim==null || offender==null) return;
if (!ignorers.containsKey(victim.getUniqueId()))
ignorers.put(victim.getUniqueId(), new IgnoreSystem(victim.getUniqueId()));
ignorers.get(victim.getUniqueId()).unIgnore(offender.getUniqueId());
}
//--------Ignoring-Player-Instance-Below-----------------------------
/**
* List of Ignored Players
*/
private ArrayList<UUID> ignored;
/**
* is THIS instance ignoring [id]
* @param id the person, which might get ignored
*/
public boolean isIgnoring(UUID id) {
return ignored.contains(id);
}
/**
*
* @param id
*/
public IgnoreSystem(UUID id) {
ignored = new ArrayList<UUID>();
File f = new File(folder+id.toString()+".cfg");
if (f.exists()) {
try {
FileReader fr = new FileReader(f);
int a=0;
String current="";
try {
while ((a=fr.read())!=-1) {
char c = (char) a;
if (c=='\n') {
if (current!="")
ignored.add(UUID.fromString(current));
current="";
}else
current+=c;
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {} //impossible
}
}
/**
* start ignoring someone
* @param id annoying person
*/
public void ignore(UUID id) {
if (!ignored.contains(id))
ignored.add(id);
}
/**
* stop ignoring someone
* @param id forgiven person
*/
public void unIgnore(UUID id) {
if (ignored.contains(id))
ignored.remove(id);
}
/**
* Save this Users-Data to a File
* @param id UUID of Player -> Filename
*/
public void saveId(UUID id) {
File f = new File(folder+id.toString()+".cfg");
if (!f.exists()) {
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
return;
}
}
if (ignored.size()<1) {
f.delete();
return;
}
try {
FileWriter fw = new FileWriter(f);
String s = "";
for (UUID i : ignored)
s+=i.toString()+'\n';
char[] o = s.toCharArray();
char[] i=new char[o.length+1];
for (int k=0;k<o.length;k++)
i[k]=o[k];
i[i.length]=(char)-1;
fw.write(i);
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

Datei anzeigen

@ -1,6 +1,7 @@
package de.steamwar.bungeecore.commands;
import de.steamwar.bungeecore.*;
import de.steamwar.bungeecore.sql.IgnoreSystem;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.chat.ClickEvent;

Datei anzeigen

@ -1,7 +1,7 @@
package de.steamwar.bungeecore.commands;
import de.steamwar.bungeecore.BungeeCore;
import de.steamwar.bungeecore.IgnoreSystem;
import de.steamwar.bungeecore.sql.IgnoreSystem;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.connection.ProxiedPlayer;
@ -24,7 +24,7 @@ public class IgnoreCommand extends BasicCommand {
BungeeCore.send(p, BungeeCore.CHAT_PREFIX + "§cWie willst du dich selber Ignorieren?");
Veraltet
Review

ignorieren kleingeschrieben.

ignorieren kleingeschrieben.
return;
}else {
IgnoreSystem.ignore(p, target);
IgnoreSystem.ignore(p.getUniqueId(), target.getUniqueId());
BungeeCore.send(p, BungeeCore.CHAT_PREFIX + "§7Du ignorierst nun " + target.getDisplayName() + ".");
}
Veraltet
Review

Was ist nur mit deinem Tab-Spacing los?

Was ist nur mit deinem Tab-Spacing los?
}

Datei anzeigen

@ -1,7 +1,7 @@
package de.steamwar.bungeecore.commands;
import de.steamwar.bungeecore.BungeeCore;
import de.steamwar.bungeecore.IgnoreSystem;
import de.steamwar.bungeecore.sql.IgnoreSystem;
import de.steamwar.bungeecore.sql.SteamwarUser;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.ProxyServer;

Datei anzeigen

@ -1,7 +1,7 @@
package de.steamwar.bungeecore.commands;
import de.steamwar.bungeecore.BungeeCore;
import de.steamwar.bungeecore.IgnoreSystem;
import de.steamwar.bungeecore.sql.IgnoreSystem;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.connection.ProxiedPlayer;
@ -21,7 +21,7 @@ public class UnIgnoreCommand extends BasicCommand {
BungeeCore.send(p, BungeeCore.CHAT_PREFIX + "§cDieser Spieler ist derzeit nicht online!");
Veraltet
Review

Auch hier: Bitte mit SteamwarUser

Auch hier: Bitte mit SteamwarUser
Veraltet
Review

diese nachricht wird an den command-sender geschickt -> er ist garantiert online, sonst hätte er den Befehl ja nicht senden können

diese nachricht wird an den command-sender geschickt -> er ist garantiert online, sonst hätte er den Befehl ja nicht senden können
Veraltet
Review

Ich meine target.

Ich meine target.
Veraltet
Review

Man kann keinen Spieler blocken, der derzeit offline ist. Das muss geändert werden.

Man kann keinen Spieler blocken, der derzeit offline ist. Das muss geändert werden.
return;
}else {
IgnoreSystem.unIgnore(p, target);
IgnoreSystem.unIgnore(p.getUniqueId(), target.getUniqueId());
BungeeCore.send(p, BungeeCore.CHAT_PREFIX + "§7Du beachtest nun " + target.getDisplayName() + " wieder.");
}
}

Datei anzeigen

@ -1,7 +1,6 @@
package de.steamwar.bungeecore.listeners;
import de.steamwar.bungeecore.BungeeCore;
import de.steamwar.bungeecore.IgnoreSystem;
import de.steamwar.bungeecore.Servertype;
import de.steamwar.bungeecore.Subserver;
import de.steamwar.bungeecore.commands.ChallengeCommand;
@ -124,12 +123,10 @@ public class ConnectionListener extends BasicListener {
@EventHandler
public void onDisconnect(PlayerDisconnectEvent e){
ChallengeCommand.remove(e.getPlayer());
IgnoreSystem.unLoad(e.getPlayer().getUniqueId());
}
@EventHandler
public void onServerDisconnect(ServerDisconnectEvent e){
IgnoreSystem.onStop(); //save all
ServerInfo server = e.getTarget();
Subserver subserver = Subserver.getSubserver(server);
if(subserver == null)
Veraltet
Review

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.

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.

Datei anzeigen

@ -0,0 +1,26 @@
package de.steamwar.bungeecore.sql;
import java.sql.SQLException;
import java.util.UUID;
public class IgnoreSystem{
//SQL-Table:
// Name=UserIgnoreSystem
// Content: a ([UUID des Ignoriers]z[UUID des Ignorierten])
// UUID is a HEX-Number -> it cant contain 'z'
public static boolean isIgnored(UUID ignorer, UUID ignored) {
try {
return !(SQL.select("SELECT * FROM UserIgnoreSystem WHERE a = ?", ignorer.toString()+"z"+ignored.toString())).next();
} catch (SQLException e) {return false;}
}
public static void ignore(UUID victim, UUID offender) {
if (victim==null || offender==null) return;
if (!isIgnored(victim,offender))
SQL.update("INSERT INTO UserIgnoreSystem (a) VALUES (?)",victim.toString()+"z"+offender.toString());
}
public static void unIgnore(UUID victim, UUID offender) {
if (victim==null || offender==null) return;
SQL.update("DELETE FROM UserIgnoreSystem WHERE a = " + victim.toString()+"z"+offender.toString());
}
}