diff options
Diffstat (limited to 'src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/StreamerMode.java')
-rw-r--r-- | src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/StreamerMode.java | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/StreamerMode.java b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/StreamerMode.java new file mode 100644 index 00000000..40b75e50 --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/StreamerMode.java @@ -0,0 +1,40 @@ +package io.github.moulberry.notenoughupdates.miscfeatures; + +import io.github.moulberry.notenoughupdates.util.Utils; + +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class StreamerMode { + + private static final Pattern lobbyPattern = Pattern.compile("(mini|mega|m|M)([0-9]{1,3}[A-Z])"); + + public static String filterLobbyNames(String line) { + Matcher matcher = lobbyPattern.matcher(line); + if(matcher.find() && matcher.groupCount() == 2) { + String lobbyType = matcher.group(1); + String lobbyId = matcher.group(2); + long lobbyNum = Long.parseLong(lobbyId.substring(0, lobbyId.length()-1)); + + long obfLobbyNum = (lobbyNum*9182739 + 11) % 500; + char obfLobbyLetter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".charAt((int)(obfLobbyNum%26)); + + line = line.replaceAll("(mini|mega|m|M)([0-9]{1,3}[A-Z])", lobbyType+obfLobbyNum+obfLobbyLetter); + } + return line; + } + + public static String filterScoreboard(String line) { + line = filterLobbyNames(Utils.cleanDuplicateColourCodes(line)); + return line; + } + + public static String filterChat(String line) { + line = filterLobbyNames(line); + return line; + } + +} |