From 9e579ee3d69107ccdd0010d17ff5c3c68c27e84d Mon Sep 17 00:00:00 2001 From: yoyosource Date: Fri, 9 Sep 2022 16:11:34 +0200 Subject: [PATCH 1/6] Hotfix case sensitive maps --- src/de/steamwar/bungeecore/ArenaMode.java | 6 ++++++ src/de/steamwar/bungeecore/commands/TypeMappers.java | 3 +-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/de/steamwar/bungeecore/ArenaMode.java b/src/de/steamwar/bungeecore/ArenaMode.java index 90576915..abb6b77d 100644 --- a/src/de/steamwar/bungeecore/ArenaMode.java +++ b/src/de/steamwar/bungeecore/ArenaMode.java @@ -94,6 +94,7 @@ public class ArenaMode { private final String serverJar; private final String config; private final List maps; + private final Map lowerToRealMapNames = new HashMap<>(); private final boolean historic; private final String internalName; @@ -106,6 +107,7 @@ public class ArenaMode { this.serverJar = config.getString("Server.ServerJar"); this.config = internalName + ".yml"; this.maps = config.getStringList("Server.Maps"); + maps.forEach(map -> lowerToRealMapNames.put(map.toLowerCase(), map)); this.displayName = config.getString("GameName", internalName); this.chatNames = config.getStringList("Server.ChatNames"); this.schemType = config.getString("Schematic.Type", "").toLowerCase(); @@ -155,6 +157,10 @@ public class ArenaMode { return maps; } + public String convertToRealMapName(String map){ + return lowerToRealMapNames.get(map.toLowerCase()); + } + public String getChatName(){ return chatNames.get(0); } diff --git a/src/de/steamwar/bungeecore/commands/TypeMappers.java b/src/de/steamwar/bungeecore/commands/TypeMappers.java index 94b27e4a..97c510b9 100644 --- a/src/de/steamwar/bungeecore/commands/TypeMappers.java +++ b/src/de/steamwar/bungeecore/commands/TypeMappers.java @@ -80,8 +80,7 @@ public class TypeMappers { if (previousArguments.length == 0) return null; if (s.equalsIgnoreCase("random")) return "random"; ArenaMode arenaMode = ArenaMode.getByChat(previousArguments[previousArguments.length - 1]); - if (arenaMode.getMaps().contains(s)) return s; - return null; + return arenaMode.convertToRealMapName(s); } @Override From eee3dba1de096b960efc1465c882214e43b237f9 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Fri, 9 Sep 2022 16:35:05 +0200 Subject: [PATCH 2/6] Simplify arena map typemapper --- src/de/steamwar/bungeecore/commands/TypeMappers.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/TypeMappers.java b/src/de/steamwar/bungeecore/commands/TypeMappers.java index 97c510b9..3539a0d0 100644 --- a/src/de/steamwar/bungeecore/commands/TypeMappers.java +++ b/src/de/steamwar/bungeecore/commands/TypeMappers.java @@ -79,8 +79,7 @@ public class TypeMappers { public String map(CommandSender commandSender, String[] previousArguments, String s) { if (previousArguments.length == 0) return null; if (s.equalsIgnoreCase("random")) return "random"; - ArenaMode arenaMode = ArenaMode.getByChat(previousArguments[previousArguments.length - 1]); - return arenaMode.convertToRealMapName(s); + return ArenaMode.getByChat(previousArguments[previousArguments.length - 1]).convertToRealMapName(s); } @Override From d7530cae86b4da15d949f37f00e02de3e6451d2a Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Fri, 9 Sep 2022 20:38:37 +0200 Subject: [PATCH 3/6] Add current infos to Whois --- .../bungeecore/commands/WhoisCommand.java | 18 +++++++++++++++--- src/de/steamwar/messages/BungeeCore.properties | 4 ++++ .../steamwar/messages/BungeeCore_de.properties | 4 ++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/WhoisCommand.java b/src/de/steamwar/bungeecore/commands/WhoisCommand.java index 9e25ad25..2aea2588 100644 --- a/src/de/steamwar/bungeecore/commands/WhoisCommand.java +++ b/src/de/steamwar/bungeecore/commands/WhoisCommand.java @@ -20,6 +20,7 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.Message; +import de.steamwar.bungeecore.Storage; import de.steamwar.bungeecore.sql.Punishment; import de.steamwar.bungeecore.sql.SteamwarUser; import de.steamwar.bungeecore.sql.Team; @@ -31,8 +32,10 @@ import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.connection.ProxiedPlayer; +import java.net.InetSocketAddress; import java.sql.Timestamp; import java.text.DecimalFormat; +import java.time.Instant; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -78,15 +81,24 @@ public class WhoisCommand extends SWCommand { Message.send("WHOIS_USERNAME", player, user.getUserName()); Message.send("WHOIS_UUID", player, Message.parse("WHOIS_UUID_HOVER", player), new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, user.getUuid().toString()), user.getUuid().toString()); Message.send("WHOIS_ID", player, user.getId()); + Message.send("WHOIS_GROUP", player, user.getUserGroup().getColorCode(), user.getUserGroup().name()); if (user.getDiscordId() != null) { Message.send("WHOIS_DISCORD_ID", player, user.getDiscordId()); } Timestamp firstJoin = user.getFirstjoin(); - if (firstJoin == null) + if (firstJoin == null) { Message.send("WHOIS_JOINED_FIRST", player, "0000-00-00 00:00:00"); - else + } else { Message.send("WHOIS_JOINED_FIRST", player, firstJoin.toString()); - Message.send("WHOIS_HOURS_PLAYED", player, new DecimalFormat("###.##").format(user.getOnlinetime() / (double) 3600)); + } + Message.send("WHOIS_HOURS_PLAYED", player, new DecimalFormat("###.##").format(user.getOnlinetime() / 3600d)); + + if(BungeeCord.getInstance().getPlayer(user.getUuid()) != null) { + ProxiedPlayer target = BungeeCord.getInstance().getPlayer(user.getUuid()); + Message.send("WHOIS_CURRENT_PLAYED", player, new DecimalFormat("####.##").format(Instant.now().getEpochSecond() - Storage.sessions.get(target).toInstant().getEpochSecond() / 60d)); + Message.send("WHOIS_CURRENT_SERVER", player, target.getServer().getInfo().getName()); + Message.send("WHOIS_CURRENT_PROTOCOL", player, target.getPendingConnection().getVersion()); + } Team team = Team.get(user.getTeam()); Message.send("WHOIS_TEAM", player, Message.parse("WHOIS_TEAM_HOVER", player, team.getTeamName()), new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/team info " + team.getTeamKuerzel()), team.getTeamColor(), team.getTeamKuerzel(), team.getTeamName()); diff --git a/src/de/steamwar/messages/BungeeCore.properties b/src/de/steamwar/messages/BungeeCore.properties index 9872dfea..394e4ea7 100644 --- a/src/de/steamwar/messages/BungeeCore.properties +++ b/src/de/steamwar/messages/BungeeCore.properties @@ -574,9 +574,13 @@ WHOIS_USERNAME=§7Username§8: §e{0} WHOIS_UUID=§7UUID§8: §e{0} WHOIS_UUID_HOVER=§eCopy UUID WHOIS_ID=§7ID§8: §e{0} +WHOIS_GROUP=§7Group§8: §{0}{1} WHOIS_DISCORD_ID=§7Discord-ID§8: §e{0} WHOIS_JOINED_FIRST=§7Joined on§8: §e{0} WHOIS_HOURS_PLAYED=§7Online Time§8: §e{0}h +WHOIS_CURRENT_PLAYED=§7Current Online Time§8: §e{0}m +WHOIS_CURRENT_SERVER=§7Current Server§8: §e{0} +WHOIS_CURRENT_PROTOCOL=§7Current Protocol§8: §e{0} WHOIS_TEAM=§7Team§8: §e[§{0}{1}§e] {2} WHOIS_TEAM_HOVER=§eShow {0} WHOIS_PUNISHMENTS=§7Punish: diff --git a/src/de/steamwar/messages/BungeeCore_de.properties b/src/de/steamwar/messages/BungeeCore_de.properties index e0341a77..aff7e1f6 100644 --- a/src/de/steamwar/messages/BungeeCore_de.properties +++ b/src/de/steamwar/messages/BungeeCore_de.properties @@ -550,12 +550,16 @@ SERVER_WORLD_ERROR=§cDas Erstellen der Welt ist fehlgeschlagen. #WhoisCommand WHOIS_USAGE=§c/whois [Spieler/ID] <-a> WHOIS_USERNAME=§7Username§8: §e{0} +WHOIS_GROUP=§7Gruppe§8: §e{0} WHOIS_UUID=§7UUID§8: §e{0} WHOIS_UUID_HOVER=§eUUID Kopieren WHOIS_ID=§7ID§8: §e{0} WHOIS_DISCORD_ID=§7Discord-ID§8: §e{0} WHOIS_JOINED_FIRST=§7Beigetreten am§8: §e{0} WHOIS_HOURS_PLAYED=§7Spielzeit§8: §e{0}h +WHOIS_CURRENT_PLAYED=§7Aktuell online§8: §e{0}m +WHOIS_CURRENT_SERVER=§7Aktueller Server§8: §e{0} +WHOIS_CURRENT_PROTOCOL=§7Aktuelle Version§8: §e{0} WHOIS_TEAM=§7Team§8: §e[§{0}{1}§e] {2} WHOIS_TEAM_HOVER=§e{0} anzeigen WHOIS_PUNISHMENTS=§7Strafen: From 1af7b0398731ea3f6d134beb363b648c3844b6e3 Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Sun, 11 Sep 2022 15:28:37 +0200 Subject: [PATCH 4/6] Bump JDA & close Inpustream --- build.gradle | 2 +- .../bungeecore/bot/listeners/PrivateMessageListener.java | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index dd9ed88d..789fc216 100644 --- a/build.gradle +++ b/build.gradle @@ -97,7 +97,7 @@ dependencies { compileOnly 'de.steamwar:waterfall:RELEASE' compileOnly 'de.steamwar:persistentbungeecore:RELEASE' - implementation("net.dv8tion:JDA:4.3.0_299") { + implementation("net.dv8tion:JDA:4.4.0_352") { exclude module: 'opus-java' } diff --git a/src/de/steamwar/bungeecore/bot/listeners/PrivateMessageListener.java b/src/de/steamwar/bungeecore/bot/listeners/PrivateMessageListener.java index 8f557314..c458e07b 100644 --- a/src/de/steamwar/bungeecore/bot/listeners/PrivateMessageListener.java +++ b/src/de/steamwar/bungeecore/bot/listeners/PrivateMessageListener.java @@ -25,6 +25,9 @@ import de.steamwar.bungeecore.sql.SteamwarUser; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.events.message.priv.PrivateMessageReceivedEvent; +import java.io.InputStream; +import java.util.concurrent.CompletableFuture; + public class PrivateMessageListener extends BasicDiscordListener { @Override @@ -63,7 +66,9 @@ public class PrivateMessageListener extends BasicDiscordListener { } try { - node.saveFromStream(attachment.retrieveInputStream().get(), newFormat); + InputStream in = attachment.retrieveInputStream().get(); + node.saveFromStream(in, newFormat); + in.close(); event.getMessage().reply("`" + name + "` wurde erfolgreich hochgeladen").queue(); } catch (Exception e) { event.getMessage().reply("`" + name + "` konnte nicht hochgeladen werden, bitte versuche es später nochmal oder wende dich an einen Developer").queue(); From 29192839632505be1ea51fb4dd16add1dde8777a Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Sun, 11 Sep 2022 20:04:24 +0200 Subject: [PATCH 5/6] Whois Fixes --- src/de/steamwar/bungeecore/commands/WhoisCommand.java | 2 +- src/de/steamwar/messages/BungeeCore.properties | 2 +- src/de/steamwar/messages/BungeeCore_de.properties | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/WhoisCommand.java b/src/de/steamwar/bungeecore/commands/WhoisCommand.java index 2aea2588..bf016c3a 100644 --- a/src/de/steamwar/bungeecore/commands/WhoisCommand.java +++ b/src/de/steamwar/bungeecore/commands/WhoisCommand.java @@ -95,7 +95,7 @@ public class WhoisCommand extends SWCommand { if(BungeeCord.getInstance().getPlayer(user.getUuid()) != null) { ProxiedPlayer target = BungeeCord.getInstance().getPlayer(user.getUuid()); - Message.send("WHOIS_CURRENT_PLAYED", player, new DecimalFormat("####.##").format(Instant.now().getEpochSecond() - Storage.sessions.get(target).toInstant().getEpochSecond() / 60d)); + Message.send("WHOIS_CURRENT_PLAYED", player, new DecimalFormat("####.##").format((Instant.now().getEpochSecond() - Storage.sessions.get(target).toInstant().getEpochSecond()) / 60d)); Message.send("WHOIS_CURRENT_SERVER", player, target.getServer().getInfo().getName()); Message.send("WHOIS_CURRENT_PROTOCOL", player, target.getPendingConnection().getVersion()); } diff --git a/src/de/steamwar/messages/BungeeCore.properties b/src/de/steamwar/messages/BungeeCore.properties index 394e4ea7..7b1c74db 100644 --- a/src/de/steamwar/messages/BungeeCore.properties +++ b/src/de/steamwar/messages/BungeeCore.properties @@ -574,7 +574,7 @@ WHOIS_USERNAME=§7Username§8: §e{0} WHOIS_UUID=§7UUID§8: §e{0} WHOIS_UUID_HOVER=§eCopy UUID WHOIS_ID=§7ID§8: §e{0} -WHOIS_GROUP=§7Group§8: §{0}{1} +WHOIS_GROUP=§7Group§8: {0}{1} WHOIS_DISCORD_ID=§7Discord-ID§8: §e{0} WHOIS_JOINED_FIRST=§7Joined on§8: §e{0} WHOIS_HOURS_PLAYED=§7Online Time§8: §e{0}h diff --git a/src/de/steamwar/messages/BungeeCore_de.properties b/src/de/steamwar/messages/BungeeCore_de.properties index aff7e1f6..fc4e57e2 100644 --- a/src/de/steamwar/messages/BungeeCore_de.properties +++ b/src/de/steamwar/messages/BungeeCore_de.properties @@ -550,7 +550,7 @@ SERVER_WORLD_ERROR=§cDas Erstellen der Welt ist fehlgeschlagen. #WhoisCommand WHOIS_USAGE=§c/whois [Spieler/ID] <-a> WHOIS_USERNAME=§7Username§8: §e{0} -WHOIS_GROUP=§7Gruppe§8: §e{0} +WHOIS_GROUP=§7Gruppe§8: {0}{1} WHOIS_UUID=§7UUID§8: §e{0} WHOIS_UUID_HOVER=§eUUID Kopieren WHOIS_ID=§7ID§8: §e{0} From 02c81068e7bb574b8b44ea4ec62e350bb2e23a76 Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Mon, 12 Sep 2022 17:54:42 +0200 Subject: [PATCH 6/6] Fix Double Bans --- src/de/steamwar/bungeecore/sql/SteamwarUser.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/de/steamwar/bungeecore/sql/SteamwarUser.java b/src/de/steamwar/bungeecore/sql/SteamwarUser.java index a5cb6058..4e16de51 100644 --- a/src/de/steamwar/bungeecore/sql/SteamwarUser.java +++ b/src/de/steamwar/bungeecore/sql/SteamwarUser.java @@ -325,14 +325,14 @@ public class SteamwarUser { ProxiedPlayer player = ProxyServer.getInstance().getPlayer(uuid); if (player != null) { - updateBanIP(player.getAddress().getAddress().getHostAddress()); ChatSender.disconnect(player).system(punishmentMessage(punishment)); for (BannedUserIPs banned : BannedUserIPs.get(player.getAddress().getAddress().getHostAddress())) { SteamwarUser bannedUser = SteamwarUser.get(banned.getUserID()); - if (isPunished(punishment) && bannedUser.getPunishment(punishment).getEndTime().before(time)) { + if (bannedUser.isPunished(punishment) && bannedUser.getPunishment(punishment).getEndTime().before(time)) { bannedUser.punish(punishment, time, banReason, from, perma); } } + updateBanIP(player.getAddress().getAddress().getHostAddress()); } else { updateBanIP(""); }