Merge pull request 'You can now ban and mute Users who never joined the server, HOOZAH' (#202) from BanOfflinePlayers into master
Reviewed-on: #202 Reviewed-by: YoyoNow <jwsteam@nidido.de>
Dieser Commit ist enthalten in:
Commit
13a0b8e9e9
@ -42,7 +42,7 @@ public class BanCommand extends BasicCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SteamwarUser target = user(sender, args[0]);
|
SteamwarUser target = unsafeUser(sender, args[0]);
|
||||||
if(target == null)
|
if(target == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -53,10 +53,17 @@ abstract class BasicCommand extends Command implements TabExecutor {
|
|||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected SteamwarUser user(CommandSender sender, String arg){
|
protected SteamwarUser existingUser(CommandSender sender, String arg){
|
||||||
SteamwarUser target = SteamwarUser.get(arg);
|
SteamwarUser target = SteamwarUser.get(arg);
|
||||||
if(target == null)
|
if(target == null)
|
||||||
Message.send("UNKNOWN_PLAYER", sender);
|
Message.send("UNKNOWN_PLAYER", sender);
|
||||||
return target;
|
return target;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected SteamwarUser unsafeUser(CommandSender sender, String arg){
|
||||||
|
SteamwarUser target = SteamwarUser.getOrCreateOfflinePlayer(arg);
|
||||||
|
if(target == null)
|
||||||
|
Message.send("UNKNOWN_PLAYER", sender);
|
||||||
|
return target;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ public class MuteCommand extends BasicCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SteamwarUser target = user(sender, args[0]);
|
SteamwarUser target = unsafeUser(sender, args[0]);
|
||||||
if(target == null)
|
if(target == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ public class UnbanCommand extends BasicCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SteamwarUser target = user(sender, args[0]);
|
SteamwarUser target = existingUser(sender, args[0]);
|
||||||
if(target == null)
|
if(target == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -19,10 +19,15 @@
|
|||||||
|
|
||||||
package de.steamwar.bungeecore.sql;
|
package de.steamwar.bungeecore.sql;
|
||||||
|
|
||||||
|
import com.google.gson.JsonParser;
|
||||||
import de.steamwar.bungeecore.BungeeCore;
|
import de.steamwar.bungeecore.BungeeCore;
|
||||||
import de.steamwar.bungeecore.Message;
|
import de.steamwar.bungeecore.Message;
|
||||||
import de.steamwar.bungeecore.commands.WebregisterCommand;
|
import de.steamwar.bungeecore.commands.WebregisterCommand;
|
||||||
import de.steamwar.bungeecore.listeners.ConnectionListener;
|
import de.steamwar.bungeecore.listeners.ConnectionListener;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.Scanner;
|
||||||
import net.md_5.bungee.api.ProxyServer;
|
import net.md_5.bungee.api.ProxyServer;
|
||||||
import net.md_5.bungee.api.chat.TextComponent;
|
import net.md_5.bungee.api.chat.TextComponent;
|
||||||
import net.md_5.bungee.api.connection.PendingConnection;
|
import net.md_5.bungee.api.connection.PendingConnection;
|
||||||
@ -38,6 +43,7 @@ import java.util.HashMap;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
||||||
public class SteamwarUser {
|
public class SteamwarUser {
|
||||||
private final int id;
|
private final int id;
|
||||||
private final UUID uuid;
|
private final UUID uuid;
|
||||||
@ -51,6 +57,8 @@ public class SteamwarUser {
|
|||||||
private static final Map<UUID, SteamwarUser> usersByUUID = new HashMap<>();
|
private static final Map<UUID, SteamwarUser> usersByUUID = new HashMap<>();
|
||||||
private static final Map<Integer, SteamwarUser> usersById = new HashMap<>();
|
private static final Map<Integer, SteamwarUser> usersById = new HashMap<>();
|
||||||
private static final InetAddress LIXFEL_DE;
|
private static final InetAddress LIXFEL_DE;
|
||||||
|
private static final String API_URL = "https://api.mojang.com/users/profiles/minecraft/";
|
||||||
|
private static final JsonParser jsonParser = new JsonParser();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
try {
|
try {
|
||||||
@ -85,8 +93,7 @@ public class SteamwarUser {
|
|||||||
user.userName = userName;
|
user.userName = userName;
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
SQL.update("INSERT INTO UserData (UUID, UserName, UserGroup) VALUES (?, ?, 'Member')", connection.getUniqueId().toString(), connection.getName());
|
user = SteamwarUser.createUserInDatabase(connection.getUniqueId(), connection.getName());
|
||||||
user = dbInit(SQL.select("SELECT * FROM UserData WHERE UUID = ?", connection.getUniqueId().toString()));
|
|
||||||
if(user == null)
|
if(user == null)
|
||||||
throw new SecurityException("user == null");
|
throw new SecurityException("user == null");
|
||||||
ConnectionListener.newPlayer(user.uuid);
|
ConnectionListener.newPlayer(user.uuid);
|
||||||
@ -97,6 +104,25 @@ public class SteamwarUser {
|
|||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static SteamwarUser getOrCreateOfflinePlayer(String name){
|
||||||
|
SteamwarUser user = SteamwarUser.get(name);
|
||||||
|
if (user != null) {
|
||||||
|
return user;
|
||||||
|
}
|
||||||
|
|
||||||
|
UUID uuid = SteamwarUser.loadUUID(name);
|
||||||
|
if (uuid == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return SteamwarUser.createUserInDatabase(uuid, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static SteamwarUser createUserInDatabase(UUID uuid, String name) {
|
||||||
|
SQL.update("INSERT INTO UserData (UUID, UserName, UserGroup) VALUES (?, ?, 'Member')", uuid.toString(), name);
|
||||||
|
return dbInit(SQL.select("SELECT * FROM UserData WHERE UUID = ?", uuid.toString()));
|
||||||
|
}
|
||||||
|
|
||||||
public static SteamwarUser get(String userName){
|
public static SteamwarUser get(String userName){
|
||||||
userName = userName.toLowerCase();
|
userName = userName.toLowerCase();
|
||||||
if(usersByName.containsKey(userName))
|
if(usersByName.containsKey(userName))
|
||||||
@ -126,6 +152,22 @@ public class SteamwarUser {
|
|||||||
usersByUUID.clear();
|
usersByUUID.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static UUID loadUUID(String playerName) {
|
||||||
|
try {
|
||||||
|
final URL url = new URL(API_URL + playerName);
|
||||||
|
return getUniqueIdFromString(jsonParser.parse(new Scanner(url.openConnection().getInputStream()).nextLine()).getAsJsonObject().get("id").getAsString());
|
||||||
|
} catch (MalformedURLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static UUID getUniqueIdFromString(String uuid) {
|
||||||
|
return UUID.fromString(uuid.replaceFirst("(\\w{8})(\\w{4})(\\w{4})(\\w{4})(\\w{12})", "$1-$2-$3-$4-$5"));
|
||||||
|
}
|
||||||
|
|
||||||
public void setTeam(int team){
|
public void setTeam(int team){
|
||||||
this.team = team;
|
this.team = team;
|
||||||
SQL.update("Update UserData SET Team = ? WHERE id = ?", team, id);
|
SQL.update("Update UserData SET Team = ? WHERE id = ?", team, id);
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren