From 3811004fda2c883e708d0387526d749bfbfd6b82 Mon Sep 17 00:00:00 2001 From: Bas Themen Date: Sat, 7 Jun 2025 04:07:24 +0200 Subject: [PATCH] No repeat nicknames For real usernames, remove already used nicknames from the list once chosen and update linesSize. To prevent IndexOutOfBoundsException from multi-threading make nextReal method synchronized. --- src/main/java/me/creepermaxcz/mcbots/NickGenerator.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/me/creepermaxcz/mcbots/NickGenerator.java b/src/main/java/me/creepermaxcz/mcbots/NickGenerator.java index 885559b..e08e48c 100644 --- a/src/main/java/me/creepermaxcz/mcbots/NickGenerator.java +++ b/src/main/java/me/creepermaxcz/mcbots/NickGenerator.java @@ -78,10 +78,13 @@ public String nextRandom() { return prefix + generateRandom(nickLen); } - public String nextReal() { - String nick = prefix + lines.get(random.nextInt(linesSize)); - return nick.length() <= 16 ? nick : nick.substring(0, 15); + public synchronized String nextReal() { + + int index = random.nextInt(linesSize); + String nick = prefix + lines.remove(index); // Remove chosen nicknames + linesSize = lines.size(); + return nick.length() <= 16 ? nick : nick.substring(0, 15); } /**