From c9db022e6be3d54d670571a52a8433444a616201 Mon Sep 17 00:00:00 2001 From: Aurora Date: Sat, 4 Oct 2025 21:47:17 +0100 Subject: [PATCH] Add suffix --- .../floodgate/addon/data/HandshakeDataImpl.java | 4 +++- .../floodgate/command/WhitelistCommand.java | 14 +++++++++++--- .../geysermc/floodgate/config/FloodgateConfig.java | 1 + core/src/main/resources/config.yml | 5 ++++- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/org/geysermc/floodgate/addon/data/HandshakeDataImpl.java b/core/src/main/java/org/geysermc/floodgate/addon/data/HandshakeDataImpl.java index 480175e9f..b7a6f1c17 100644 --- a/core/src/main/java/org/geysermc/floodgate/addon/data/HandshakeDataImpl.java +++ b/core/src/main/java/org/geysermc/floodgate/addon/data/HandshakeDataImpl.java @@ -68,7 +68,9 @@ public HandshakeDataImpl( if (bedrockData != null) { String prefix = config.getUsernamePrefix(); int usernameLength = Math.min(bedrockData.getUsername().length(), 16 - prefix.length()); - javaUsername = prefix + bedrockData.getUsername().substring(0, usernameLength); + String trimmedUsername = bedrockData.getUsername().substring(0, usernameLength); + if (!config.isPrefixAsSuffix()) javaUsername = prefix + trimmedUsername; + else javaUsername = trimmedUsername + prefix; if (config.isReplaceSpaces()) { javaUsername = javaUsername.replace(" ", "_"); } diff --git a/core/src/main/java/org/geysermc/floodgate/command/WhitelistCommand.java b/core/src/main/java/org/geysermc/floodgate/command/WhitelistCommand.java index 54c5efcb6..def595107 100644 --- a/core/src/main/java/org/geysermc/floodgate/command/WhitelistCommand.java +++ b/core/src/main/java/org/geysermc/floodgate/command/WhitelistCommand.java @@ -110,8 +110,14 @@ public void performCommand(CommandContext context, boolean add) { return; } - if (name.startsWith(config.getUsernamePrefix())) { - name = name.substring(config.getUsernamePrefix().length()); + if (!config.isPrefixAsSuffix()) { + if (name.startsWith(config.getUsernamePrefix())) { + name = name.substring(config.getUsernamePrefix().length()); + } + } else { + if (name.endsWith(config.getUsernamePrefix())) { + name = name.substring(name.length() - config.getUsernamePrefix().length()); + } } if (name.isEmpty() || name.length() > 16) { @@ -125,7 +131,9 @@ public void performCommand(CommandContext context, boolean add) { if (config.isReplaceSpaces()) { tempName = tempName.replace(' ', '_'); } - final String correctName = config.getUsernamePrefix() + tempName; + String correctName; + if (!config.isPrefixAsSuffix()) correctName = config.getUsernamePrefix() + tempName; + else correctName = tempName + config.getUsernamePrefix(); final String strippedName = name; // We need to get the UUID of the player if it's not manually specified diff --git a/core/src/main/java/org/geysermc/floodgate/config/FloodgateConfig.java b/core/src/main/java/org/geysermc/floodgate/config/FloodgateConfig.java index 4a87b0d47..bb15e100e 100644 --- a/core/src/main/java/org/geysermc/floodgate/config/FloodgateConfig.java +++ b/core/src/main/java/org/geysermc/floodgate/config/FloodgateConfig.java @@ -41,6 +41,7 @@ public class FloodgateConfig implements GenericPostInitializeCallback { private String keyFileName; private String usernamePrefix = ""; + private boolean prefixAsSuffix; private boolean replaceSpaces; private String defaultLocale; diff --git a/core/src/main/resources/config.yml b/core/src/main/resources/config.yml index 27d23b778..42a6a4a9d 100644 --- a/core/src/main/resources/config.yml +++ b/core/src/main/resources/config.yml @@ -8,6 +8,9 @@ key-file-name: key.pem # It is recommended to use a prefix that does not contain alphanumerical to avoid the possibility of duplicate usernames. username-prefix: "." +# Should Floodgate use the prefix and put it at the end of the username instead? +prefix-as-suffix: false + # Should spaces be replaced with '_' in bedrock usernames? replace-spaces: true @@ -63,4 +66,4 @@ metrics: uuid: ${metrics.uuid} # Do not change this -config-version: 3 +config-version: 4