From 65bff9ce5e8ef5a24bb59374e90783d788df0b35 Mon Sep 17 00:00:00 2001 From: AlexProgrammerDE <40795980+AlexProgrammerDE@users.noreply.github.com> Date: Sun, 10 Mar 2024 12:40:36 +0100 Subject: [PATCH] Run google java format again --- .../client/SoulFireClientLoader.java | 8 +- .../com/soulfiremc/client/grpc/RPCClient.java | 3 +- .../com/soulfiremc/client/gui/SFMenuBar.java | 3 +- .../client/gui/navigation/AccountPanel.java | 6 +- .../client/gui/navigation/GeneratedPanel.java | 17 ++-- .../client/gui/navigation/ProxyPanel.java | 6 +- .../client/settings/AccountRegistry.java | 5 +- .../soulfiremc/account/MinecraftAccount.java | 24 +++--- .../account/service/AccountData.java | 3 +- .../account/service/OnlineJavaData.java | 3 +- .../java/com/soulfiremc/proxy/SFProxy.java | 31 +++---- .../java/com/soulfiremc/util/KeyHelper.java | 11 +-- .../soulfiremc/util/ReactorHttpHelper.java | 38 ++++----- .../dedicated/SFDedicatedTerminalConsole.java | 3 +- .../dedicated/SoulFireDedicatedBootstrap.java | 8 +- .../dedicated/SoulFireDedicatedLoader.java | 10 ++- .../SoulFireAbstractJava8Launcher.java | 4 +- .../server/ServerCommandManager.java | 44 +++++----- .../com/soulfiremc/server/SoulFireServer.java | 13 ++- .../server/account/SFEasyMCAuthService.java | 6 +- .../account/SFJavaMicrosoftAuthService.java | 3 +- .../server/account/SFOfflineAuthService.java | 7 +- .../account/SFTheAlteningAuthService.java | 10 +-- .../server/grpc/MCAuthServiceImpl.java | 64 +++++++------- .../soulfiremc/server/plugins/POVServer.java | 10 +-- .../server/protocol/IdentifiedKey.java | 37 ++++---- .../server/protocol/SFBaseListener.java | 3 +- .../protocol/bot/SessionDataManager.java | 84 +++++++++---------- .../server/settings/lib/SettingsHolder.java | 33 ++++---- .../server/util/LenniHttpHelper.java | 7 +- 30 files changed, 258 insertions(+), 246 deletions(-) diff --git a/client/src/main/java/com/soulfiremc/client/SoulFireClientLoader.java b/client/src/main/java/com/soulfiremc/client/SoulFireClientLoader.java index 86fbc8cd9..d3673cc49 100644 --- a/client/src/main/java/com/soulfiremc/client/SoulFireClientLoader.java +++ b/client/src/main/java/com/soulfiremc/client/SoulFireClientLoader.java @@ -26,7 +26,9 @@ public class SoulFireClientLoader { private SoulFireClientLoader() {} public static void runHeadless(String host, int port, String[] args) { - var soulFire = new SoulFireServer(host, port, SoulFireClientBootstrap.PLUGIN_MANAGER, SoulFireClientBootstrap.START_TIME); + var soulFire = + new SoulFireServer( + host, port, SoulFireClientBootstrap.PLUGIN_MANAGER, SoulFireClientBootstrap.START_TIME); var rpcClient = new RPCClient(host, port, soulFire.generateLocalCliJWT()); var cliManager = new CLIManager(rpcClient, SoulFireClientBootstrap.PLUGIN_MANAGER); @@ -34,7 +36,9 @@ public static void runHeadless(String host, int port, String[] args) { } public static void runGUI(String host, int port) { - var soulFire = new SoulFireServer(host, port, SoulFireClientBootstrap.PLUGIN_MANAGER, SoulFireClientBootstrap.START_TIME); + var soulFire = + new SoulFireServer( + host, port, SoulFireClientBootstrap.PLUGIN_MANAGER, SoulFireClientBootstrap.START_TIME); var rpcClient = new RPCClient(host, port, soulFire.generateAdminJWT()); var guiManager = new GUIManager(rpcClient, SoulFireClientBootstrap.PLUGIN_MANAGER); diff --git a/client/src/main/java/com/soulfiremc/client/grpc/RPCClient.java b/client/src/main/java/com/soulfiremc/client/grpc/RPCClient.java index ddf71a299..27c0d53d8 100644 --- a/client/src/main/java/com/soulfiremc/client/grpc/RPCClient.java +++ b/client/src/main/java/com/soulfiremc/client/grpc/RPCClient.java @@ -77,7 +77,8 @@ public RPCClient(CallCredentials callCredentials, ManagedChannel managedChannel) attackStub = prepareChannel(AttackServiceGrpc.newStub(channel), callCredentials); configStubBlocking = prepareChannel(ConfigServiceGrpc.newBlockingStub(channel), callCredentials); - mcAuthServiceBlocking = prepareChannel(MCAuthServiceGrpc.newBlockingStub(channel), callCredentials); + mcAuthServiceBlocking = + prepareChannel(MCAuthServiceGrpc.newBlockingStub(channel), callCredentials); } private > T prepareChannel(T channel, CallCredentials callCredentials) { diff --git a/client/src/main/java/com/soulfiremc/client/gui/SFMenuBar.java b/client/src/main/java/com/soulfiremc/client/gui/SFMenuBar.java index 717a8e7b2..2d87ef48e 100644 --- a/client/src/main/java/com/soulfiremc/client/gui/SFMenuBar.java +++ b/client/src/main/java/com/soulfiremc/client/gui/SFMenuBar.java @@ -232,8 +232,7 @@ public SFMenuBar(GUIManager guiManager, LogPanel logPanel, GUIFrame guiFrame) { } if (desktop.isSupported(Desktop.Action.APP_QUIT_HANDLER)) { - desktop.setQuitHandler( - (e, response) -> response.performQuit()); + desktop.setQuitHandler((e, response) -> response.performQuit()); } } diff --git a/client/src/main/java/com/soulfiremc/client/gui/navigation/AccountPanel.java b/client/src/main/java/com/soulfiremc/client/gui/navigation/AccountPanel.java index cfbdc7579..3a093843a 100644 --- a/client/src/main/java/com/soulfiremc/client/gui/navigation/AccountPanel.java +++ b/client/src/main/java/com/soulfiremc/client/gui/navigation/AccountPanel.java @@ -183,7 +183,11 @@ private static JMenuItem createAccountLoadButton( String.format("%s list file", type), guiManager, parent, - text -> guiManager.clientSettingsManager().accountRegistry().loadFromString(text, type, null))); + text -> + guiManager + .clientSettingsManager() + .accountRegistry() + .loadFromString(text, type, null))); return button; } diff --git a/client/src/main/java/com/soulfiremc/client/gui/navigation/GeneratedPanel.java b/client/src/main/java/com/soulfiremc/client/gui/navigation/GeneratedPanel.java index 63e1da559..b6c8f7aab 100644 --- a/client/src/main/java/com/soulfiremc/client/gui/navigation/GeneratedPanel.java +++ b/client/src/main/java/com/soulfiremc/client/gui/navigation/GeneratedPanel.java @@ -44,7 +44,8 @@ public class GeneratedPanel extends NavigationItem { private final ClientPluginSettingsPage settingsPage; - public GeneratedPanel(ClientSettingsManager clientSettingsManager, ClientPluginSettingsPage settingsPage) { + public GeneratedPanel( + ClientSettingsManager clientSettingsManager, ClientPluginSettingsPage settingsPage) { this.settingsPage = settingsPage; setLayout(new GridBagLayout()); @@ -73,7 +74,9 @@ private static JSpinner createIntObject( } private static JSpinner createDoubleObject( - PropertyKey propertyKey, ClientSettingsManager clientSettingsManager, DoubleSetting doubleSetting) { + PropertyKey propertyKey, + ClientSettingsManager clientSettingsManager, + DoubleSetting doubleSetting) { var spinner = new JSpinner( new SpinnerNumberModel( @@ -93,7 +96,9 @@ private static JSpinner createDoubleObject( } public static void addComponents( - JPanel panel, ClientPluginSettingsPage settingsPage, ClientSettingsManager clientSettingsManager) { + JPanel panel, + ClientPluginSettingsPage settingsPage, + ClientSettingsManager clientSettingsManager) { var row = 0; for (var settingEntry : settingsPage.getEntriesList()) { switch (settingEntry.getValueCase()) { @@ -190,7 +195,8 @@ public static void addComponents( .anchor(GBC.LINE_START) .add( new JLabel(min.getUiName()), label -> label.setToolTipText(min.getDescription())); - var minSpinner = createIntObject(minPropertyKey, clientSettingsManager, min.getIntSetting()); + var minSpinner = + createIntObject(minPropertyKey, clientSettingsManager, min.getIntSetting()); GBC.create(panel) .grid(1, row++) .insets(0, 10, 0, 0) @@ -206,7 +212,8 @@ public static void addComponents( .anchor(GBC.LINE_START) .add( new JLabel(max.getUiName()), label -> label.setToolTipText(max.getDescription())); - var maxSpinner = createIntObject(maxPropertyKey, clientSettingsManager, max.getIntSetting()); + var maxSpinner = + createIntObject(maxPropertyKey, clientSettingsManager, max.getIntSetting()); GBC.create(panel) .grid(1, row++) .insets(0, 10, 0, 0) diff --git a/client/src/main/java/com/soulfiremc/client/gui/navigation/ProxyPanel.java b/client/src/main/java/com/soulfiremc/client/gui/navigation/ProxyPanel.java index d86656127..d3706eaed 100644 --- a/client/src/main/java/com/soulfiremc/client/gui/navigation/ProxyPanel.java +++ b/client/src/main/java/com/soulfiremc/client/gui/navigation/ProxyPanel.java @@ -133,7 +133,8 @@ public Class getColumnClass(int columnIndex) { var type = (ProxyType) row[4]; var enabled = (boolean) row[5]; - proxies.add(new EnabledWrapper<>(enabled, new SFProxy(type, host, port, username, password))); + proxies.add( + new EnabledWrapper<>(enabled, new SFProxy(type, host, port, username, password))); } proxyRegistry.setProxies(proxies); @@ -191,7 +192,8 @@ private static JMenuItem createProxyLoadButton( String.format("%s list file", type), guiManager, parent, - text -> guiManager.clientSettingsManager().proxyRegistry().loadFromString(text, type))); + text -> + guiManager.clientSettingsManager().proxyRegistry().loadFromString(text, type))); return button; } diff --git a/client/src/main/java/com/soulfiremc/client/settings/AccountRegistry.java b/client/src/main/java/com/soulfiremc/client/settings/AccountRegistry.java index 4db0e02c7..f191c2520 100644 --- a/client/src/main/java/com/soulfiremc/client/settings/AccountRegistry.java +++ b/client/src/main/java/com/soulfiremc/client/settings/AccountRegistry.java @@ -76,9 +76,8 @@ private MinecraftAccount fromStringSingle(String data, AuthType authType, SFProx request.setProxy(proxy.toProto()); } - return MinecraftAccount.fromProto(rpcClient.mcAuthServiceBlocking() - .login(request.build()) - .getAccount()); + return MinecraftAccount.fromProto( + rpcClient.mcAuthServiceBlocking().login(request.build()).getAccount()); } catch (Exception e) { log.error("Failed to load account from string", e); throw new RuntimeException(e); diff --git a/common/src/main/java/com/soulfiremc/account/MinecraftAccount.java b/common/src/main/java/com/soulfiremc/account/MinecraftAccount.java index ff757ed23..a6e8e7f33 100644 --- a/common/src/main/java/com/soulfiremc/account/MinecraftAccount.java +++ b/common/src/main/java/com/soulfiremc/account/MinecraftAccount.java @@ -26,9 +26,8 @@ import lombok.NonNull; /** - * Represents an authenticated MC account. - * This can be a premium, offline or bedrock account. - * Beware that the profileId is not a valid online UUID for offline and bedrock accounts. + * Represents an authenticated MC account. This can be a premium, offline or bedrock account. Beware + * that the profileId is not a valid online UUID for offline and bedrock accounts. * * @param authType The type of authentication * @param profileId Identifier that uniquely identifies the account @@ -41,18 +40,23 @@ public record MinecraftAccount( @NonNull String lastKnownName, @NonNull AccountData accountData) { public static MinecraftAccount fromProto(MinecraftAccountProto account) { - return new MinecraftAccount(AuthType.valueOf(account.getType().name()), UUID.fromString(account.getProfileId()), account.getLastKnownName(), switch (account.getAccountDataCase()) { - case ONLINEJAVADATA -> OnlineJavaData.fromProto(account.getOnlineJavaData()); - case OFFLINEJAVADATA -> OfflineJavaData.fromProto(account.getOfflineJavaData()); - case BEDROCKDATA -> BedrockData.fromProto(account.getBedrockData()); - case ACCOUNTDATA_NOT_SET -> throw new IllegalArgumentException("AccountData not set"); - }); + return new MinecraftAccount( + AuthType.valueOf(account.getType().name()), + UUID.fromString(account.getProfileId()), + account.getLastKnownName(), + switch (account.getAccountDataCase()) { + case ONLINEJAVADATA -> OnlineJavaData.fromProto(account.getOnlineJavaData()); + case OFFLINEJAVADATA -> OfflineJavaData.fromProto(account.getOfflineJavaData()); + case BEDROCKDATA -> BedrockData.fromProto(account.getBedrockData()); + case ACCOUNTDATA_NOT_SET -> throw new IllegalArgumentException("AccountData not set"); + }); } @Override public String toString() { return String.format( - "MinecraftAccount(authType=%s, profileId=%s, lastKnownName=%s)", authType, profileId, lastKnownName); + "MinecraftAccount(authType=%s, profileId=%s, lastKnownName=%s)", + authType, profileId, lastKnownName); } public boolean isPremiumJava() { diff --git a/common/src/main/java/com/soulfiremc/account/service/AccountData.java b/common/src/main/java/com/soulfiremc/account/service/AccountData.java index 924e27acc..e184efd5b 100644 --- a/common/src/main/java/com/soulfiremc/account/service/AccountData.java +++ b/common/src/main/java/com/soulfiremc/account/service/AccountData.java @@ -17,5 +17,4 @@ */ package com.soulfiremc.account.service; -public sealed interface AccountData permits BedrockData, OfflineJavaData, OnlineJavaData { -} +public sealed interface AccountData permits BedrockData, OfflineJavaData, OnlineJavaData {} diff --git a/common/src/main/java/com/soulfiremc/account/service/OnlineJavaData.java b/common/src/main/java/com/soulfiremc/account/service/OnlineJavaData.java index dea356c1b..fda8f99a3 100644 --- a/common/src/main/java/com/soulfiremc/account/service/OnlineJavaData.java +++ b/common/src/main/java/com/soulfiremc/account/service/OnlineJavaData.java @@ -19,8 +19,7 @@ import com.soulfiremc.grpc.generated.MinecraftAccountProto; -public record OnlineJavaData(String authToken, long tokenExpireAt) - implements AccountData { +public record OnlineJavaData(String authToken, long tokenExpireAt) implements AccountData { public static OnlineJavaData fromProto(MinecraftAccountProto.OnlineJavaData data) { return new OnlineJavaData(data.getAuthToken(), data.getTokenExpireAt()); } diff --git a/common/src/main/java/com/soulfiremc/proxy/SFProxy.java b/common/src/main/java/com/soulfiremc/proxy/SFProxy.java index c60b67bd9..8cb3a5804 100644 --- a/common/src/main/java/com/soulfiremc/proxy/SFProxy.java +++ b/common/src/main/java/com/soulfiremc/proxy/SFProxy.java @@ -28,15 +28,6 @@ public record SFProxy( int port, @Nullable String username, @Nullable String password) { - public static SFProxy fromProto(ProxyProto proto) { - return new SFProxy( - ProxyType.valueOf(proto.getType().name()), - proto.getHost(), - proto.getPort(), - proto.hasUsername() ? proto.getUsername() : null, - proto.hasPassword() ? proto.getPassword() : null); - } - public SFProxy { if (type == ProxyType.SOCKS4 && password != null) { throw new IllegalArgumentException("SOCKS4 does not support passwords!"); @@ -49,22 +40,32 @@ public static SFProxy fromProto(ProxyProto proto) { } } + public static SFProxy fromProto(ProxyProto proto) { + return new SFProxy( + ProxyType.valueOf(proto.getType().name()), + proto.getHost(), + proto.getPort(), + proto.hasUsername() ? proto.getUsername() : null, + proto.hasPassword() ? proto.getPassword() : null); + } + public InetSocketAddress getInetSocketAddress() { return new InetSocketAddress(host, port); } public ProxyProto toProto() { - var builder = ProxyProto.newBuilder() - .setType(ProxyProto.Type.valueOf(type.name())) - .setHost(host) - .setPort(port); + var builder = + ProxyProto.newBuilder() + .setType(ProxyProto.Type.valueOf(type.name())) + .setHost(host) + .setPort(port); if (username != null) { - builder.setUsername(username); + builder.setUsername(username); } if (password != null) { - builder.setPassword(password); + builder.setPassword(password); } return builder.build(); diff --git a/common/src/main/java/com/soulfiremc/util/KeyHelper.java b/common/src/main/java/com/soulfiremc/util/KeyHelper.java index 8f0e8fd0e..242a37629 100644 --- a/common/src/main/java/com/soulfiremc/util/KeyHelper.java +++ b/common/src/main/java/com/soulfiremc/util/KeyHelper.java @@ -28,6 +28,8 @@ import java.util.Base64; public class KeyHelper { + private KeyHelper() {} + public static String encodeBase64Key(Key key) { return Base64.getEncoder().encodeToString(key.getEncoded()); } @@ -35,7 +37,8 @@ public static String encodeBase64Key(Key key) { public static ECPublicKey decodeBase64PublicKey(String key) { try { var keyFactory = KeyFactory.getInstance("EC"); - return (ECPublicKey) keyFactory.generatePublic(new X509EncodedKeySpec(decodeBase64String(key))); + return (ECPublicKey) + keyFactory.generatePublic(new X509EncodedKeySpec(decodeBase64String(key))); } catch (GeneralSecurityException e) { throw new JsonParseException(e); } @@ -44,7 +47,8 @@ public static ECPublicKey decodeBase64PublicKey(String key) { public static ECPrivateKey decodeBase64PrivateKey(String key) { try { var keyFactory = KeyFactory.getInstance("EC"); - return (ECPrivateKey) keyFactory.generatePrivate(new PKCS8EncodedKeySpec(decodeBase64String(key))); + return (ECPrivateKey) + keyFactory.generatePrivate(new PKCS8EncodedKeySpec(decodeBase64String(key))); } catch (GeneralSecurityException e) { throw new JsonParseException(e); } @@ -53,7 +57,4 @@ public static ECPrivateKey decodeBase64PrivateKey(String key) { private static byte[] decodeBase64String(String key) { return Base64.getDecoder().decode(key); } - - private KeyHelper() { - } } diff --git a/common/src/main/java/com/soulfiremc/util/ReactorHttpHelper.java b/common/src/main/java/com/soulfiremc/util/ReactorHttpHelper.java index 7763a9821..f711d19e8 100644 --- a/common/src/main/java/com/soulfiremc/util/ReactorHttpHelper.java +++ b/common/src/main/java/com/soulfiremc/util/ReactorHttpHelper.java @@ -44,26 +44,26 @@ public static reactor.netty.http.client.HttpClient createReactorClient( return proxyData == null ? base : base.proxy( - p -> { - var spec = - p.type( - switch (proxyData.type()) { - case HTTP -> ProxyProvider.Proxy.HTTP; - case SOCKS4 -> ProxyProvider.Proxy.SOCKS4; - case SOCKS5 -> ProxyProvider.Proxy.SOCKS5; - }) - .host(proxyData.host()) - .port(proxyData.port()) - .nonProxyHosts("localhost") - .connectTimeoutMillis(20_000); + p -> { + var spec = + p.type( + switch (proxyData.type()) { + case HTTP -> ProxyProvider.Proxy.HTTP; + case SOCKS4 -> ProxyProvider.Proxy.SOCKS4; + case SOCKS5 -> ProxyProvider.Proxy.SOCKS5; + }) + .host(proxyData.host()) + .port(proxyData.port()) + .nonProxyHosts("localhost") + .connectTimeoutMillis(20_000); - if (proxyData.username() != null) { - spec.username(proxyData.username()); - } + if (proxyData.username() != null) { + spec.username(proxyData.username()); + } - if (proxyData.password() != null) { - spec.password(s -> proxyData.password()); - } - }); + if (proxyData.password() != null) { + spec.password(s -> proxyData.password()); + } + }); } } diff --git a/dedicated/src/main/java/com/soulfiremc/dedicated/SFDedicatedTerminalConsole.java b/dedicated/src/main/java/com/soulfiremc/dedicated/SFDedicatedTerminalConsole.java index 257a8e35f..a0ee64b53 100644 --- a/dedicated/src/main/java/com/soulfiremc/dedicated/SFDedicatedTerminalConsole.java +++ b/dedicated/src/main/java/com/soulfiremc/dedicated/SFDedicatedTerminalConsole.java @@ -54,7 +54,8 @@ public static void setupTerminalConsole( return; } - threadPool.execute(new SFDedicatedTerminalConsole(shutdownManager, serverCommandManager)::start); + threadPool.execute( + new SFDedicatedTerminalConsole(shutdownManager, serverCommandManager)::start); } @Override diff --git a/dedicated/src/main/java/com/soulfiremc/dedicated/SoulFireDedicatedBootstrap.java b/dedicated/src/main/java/com/soulfiremc/dedicated/SoulFireDedicatedBootstrap.java index 1edc89918..1d792e10b 100644 --- a/dedicated/src/main/java/com/soulfiremc/dedicated/SoulFireDedicatedBootstrap.java +++ b/dedicated/src/main/java/com/soulfiremc/dedicated/SoulFireDedicatedBootstrap.java @@ -23,7 +23,6 @@ import com.soulfiremc.util.PortHelper; import com.soulfiremc.util.SFPathConstants; import io.netty.util.ResourceLeakDetector; -import java.awt.GraphicsEnvironment; import java.io.IOException; import java.nio.file.Files; import java.time.Instant; @@ -73,13 +72,10 @@ public static void bootstrap(String[] args, List classLoaders) { initPlugins(classLoaders); - // We may split client and server mixins in the future - var runServer = GraphicsEnvironment.isHeadless() || args.length > 0; - - injectMixinsAndRun(runServer, args); + injectMixinsAndRun(); } - private static void injectMixinsAndRun(boolean runServer, String[] args) { + private static void injectMixinsAndRun() { var mixinPaths = new HashSet(); PLUGIN_MANAGER .getExtensions(MixinExtension.class) diff --git a/dedicated/src/main/java/com/soulfiremc/dedicated/SoulFireDedicatedLoader.java b/dedicated/src/main/java/com/soulfiremc/dedicated/SoulFireDedicatedLoader.java index 4cbc305fc..ee19fb82c 100644 --- a/dedicated/src/main/java/com/soulfiremc/dedicated/SoulFireDedicatedLoader.java +++ b/dedicated/src/main/java/com/soulfiremc/dedicated/SoulFireDedicatedLoader.java @@ -22,11 +22,15 @@ import java.util.concurrent.Executors; public class SoulFireDedicatedLoader { - private SoulFireDedicatedLoader() { - } + private SoulFireDedicatedLoader() {} public static void runDedicated(String host, int port) { - var soulFire = new SoulFireServer(host, port, SoulFireDedicatedBootstrap.PLUGIN_MANAGER, SoulFireDedicatedBootstrap.START_TIME); + var soulFire = + new SoulFireServer( + host, + port, + SoulFireDedicatedBootstrap.PLUGIN_MANAGER, + SoulFireDedicatedBootstrap.START_TIME); SFDedicatedTerminalConsole.setupTerminalConsole( Executors.newSingleThreadExecutor(), diff --git a/j8-launcher/src/main/java/com/soulfiremc/launcher/SoulFireAbstractJava8Launcher.java b/j8-launcher/src/main/java/com/soulfiremc/launcher/SoulFireAbstractJava8Launcher.java index 8df2ecba5..37ad4db77 100644 --- a/j8-launcher/src/main/java/com/soulfiremc/launcher/SoulFireAbstractJava8Launcher.java +++ b/j8-launcher/src/main/java/com/soulfiremc/launcher/SoulFireAbstractJava8Launcher.java @@ -43,6 +43,8 @@ public void run(String[] args) { } } + protected abstract String getLauncherClassName(); + @SuppressWarnings("CallToPrintStackTrace") private static class UnsupportedVersionDialog extends JFrame { public UnsupportedVersionDialog() { @@ -82,6 +84,4 @@ public UnsupportedVersionDialog() { setVisible(true); } } - - protected abstract String getLauncherClassName(); } diff --git a/server/src/main/java/com/soulfiremc/server/ServerCommandManager.java b/server/src/main/java/com/soulfiremc/server/ServerCommandManager.java index 099a8b941..f8ef92b9f 100644 --- a/server/src/main/java/com/soulfiremc/server/ServerCommandManager.java +++ b/server/src/main/java/com/soulfiremc/server/ServerCommandManager.java @@ -239,9 +239,7 @@ public void postConstruct() { bot.sessionDataManager().controlState().resetAll(); c.getSource() - .sendInfo( - "Stopped pathfinding for " - + bot.meta().accountName()); + .sendInfo("Stopped pathfinding for " + bot.meta().accountName()); return Command.SINGLE_SUCCESS; })))); @@ -552,20 +550,27 @@ public void postConstruct() { .forEach( version -> { var nativeVersion = - SFVersionConstants.CURRENT_PROTOCOL_VERSION == version ? yesEmoji : noEmoji; - var bedrockVersion = SFVersionConstants.isBedrock(version) ? yesEmoji : noEmoji; - var javaVersion = !SFVersionConstants.isBedrock(version) ? yesEmoji : noEmoji; - var snapshotVersion = SFVersionConstants.isAprilFools(version) ? yesEmoji : noEmoji; - var legacyVersion = SFVersionConstants.isLegacy(version) ? yesEmoji : noEmoji; - - builder.append(String.format( - "| %s | %s | %s | %s | %s | %s |\n", - version.getName(), - nativeVersion, - javaVersion, - snapshotVersion, - legacyVersion, - bedrockVersion)); + SFVersionConstants.CURRENT_PROTOCOL_VERSION == version + ? yesEmoji + : noEmoji; + var bedrockVersion = + SFVersionConstants.isBedrock(version) ? yesEmoji : noEmoji; + var javaVersion = + !SFVersionConstants.isBedrock(version) ? yesEmoji : noEmoji; + var snapshotVersion = + SFVersionConstants.isAprilFools(version) ? yesEmoji : noEmoji; + var legacyVersion = + SFVersionConstants.isLegacy(version) ? yesEmoji : noEmoji; + + builder.append( + String.format( + "| %s | %s | %s | %s | %s | %s |\n", + version.getName(), + nativeVersion, + javaVersion, + snapshotVersion, + legacyVersion, + bedrockVersion)); }); log.info(builder.toString()); @@ -721,10 +726,7 @@ private int forEveryBot( if (printMessages) { context .getSource() - .sendInfo( - "--- Running command for bot " - + bot.meta().accountName() - + " ---"); + .sendInfo("--- Running command for bot " + bot.meta().accountName() + " ---"); } var result = consumer.applyAsInt(bot); diff --git a/server/src/main/java/com/soulfiremc/server/SoulFireServer.java b/server/src/main/java/com/soulfiremc/server/SoulFireServer.java index f7b9b19e1..4f80c5393 100644 --- a/server/src/main/java/com/soulfiremc/server/SoulFireServer.java +++ b/server/src/main/java/com/soulfiremc/server/SoulFireServer.java @@ -231,8 +231,7 @@ public SoulFireServer(String host, int port, PluginManager pluginManager, Instan .addClass(ProxySettings.class, "Proxy Settings", true))); log.info( - "Finished loading! (Took {}ms)", - Duration.between(startTime, Instant.now()).toMillis()); + "Finished loading! (Took {}ms)", Duration.between(startTime, Instant.now()).toMillis()); } private static void registerInternalServerExtensions() { @@ -259,12 +258,6 @@ private static void registerInternalServerExtensions() { plugins.forEach(SoulFireAPI::registerServerExtension); } - private void registerServerExtensions() { - pluginManager - .getExtensions(ServerPlugin.class) - .forEach(SoulFireAPI::registerServerExtension); - } - @SuppressWarnings("UnstableApiUsage") public static void setupLoggingAndVia(SettingsHolder settingsHolder) { Via.getManager().debugHandler().setEnabled(settingsHolder.get(DevSettings.VIA_DEBUG)); @@ -280,6 +273,10 @@ public static void setupLogging(SettingsHolder settingsHolder) { Configurator.setLevel("io.grpc", grpcLevel); } + private void registerServerExtensions() { + pluginManager.getExtensions(ServerPlugin.class).forEach(SoulFireAPI::registerServerExtension); + } + public String generateAdminJWT() { return generateJWT("admin"); } diff --git a/server/src/main/java/com/soulfiremc/server/account/SFEasyMCAuthService.java b/server/src/main/java/com/soulfiremc/server/account/SFEasyMCAuthService.java index 55e617b9e..ee001e52e 100644 --- a/server/src/main/java/com/soulfiremc/server/account/SFEasyMCAuthService.java +++ b/server/src/main/java/com/soulfiremc/server/account/SFEasyMCAuthService.java @@ -50,7 +50,8 @@ public MinecraftAccount login(EasyMCAuthData data, SFProxy proxyData) throws IOE .asString() .map( responseText -> { - var response = GsonInstance.GSON.fromJson(responseText, TokenRedeemResponse.class); + var response = + GsonInstance.GSON.fromJson(responseText, TokenRedeemResponse.class); if (response.error() != null) { log.error("EasyMC has returned a error: {}", response.error()); @@ -67,8 +68,7 @@ public MinecraftAccount login(EasyMCAuthData data, SFProxy proxyData) throws IOE AuthType.EASY_MC, UUID.fromString(response.uuid()), response.mcName(), - new OnlineJavaData( - response.session(), -1)); + new OnlineJavaData(response.session(), -1)); })) .block(); } diff --git a/server/src/main/java/com/soulfiremc/server/account/SFJavaMicrosoftAuthService.java b/server/src/main/java/com/soulfiremc/server/account/SFJavaMicrosoftAuthService.java index 5c8fef753..b500fd700 100644 --- a/server/src/main/java/com/soulfiremc/server/account/SFJavaMicrosoftAuthService.java +++ b/server/src/main/java/com/soulfiremc/server/account/SFJavaMicrosoftAuthService.java @@ -42,8 +42,7 @@ public MinecraftAccount login(JavaMicrosoftAuthData data, SFProxy proxyData) thr AuthType.MICROSOFT_JAVA, mcProfile.getId(), mcProfile.getName(), - new OnlineJavaData( - mcToken.getAccessToken(), mcToken.getExpireTimeMs())); + new OnlineJavaData(mcToken.getAccessToken(), mcToken.getExpireTimeMs())); } catch (Exception e) { throw new IOException(e); } diff --git a/server/src/main/java/com/soulfiremc/server/account/SFOfflineAuthService.java b/server/src/main/java/com/soulfiremc/server/account/SFOfflineAuthService.java index 8f3532343..ed08c8951 100644 --- a/server/src/main/java/com/soulfiremc/server/account/SFOfflineAuthService.java +++ b/server/src/main/java/com/soulfiremc/server/account/SFOfflineAuthService.java @@ -25,8 +25,11 @@ public final class SFOfflineAuthService implements MCAuthService { public static MinecraftAccount createAccount(String username) { - return new MinecraftAccount(AuthType.OFFLINE, OfflineJavaData.getOfflineUUID(username), - username, new OfflineJavaData()); + return new MinecraftAccount( + AuthType.OFFLINE, + OfflineJavaData.getOfflineUUID(username), + username, + new OfflineJavaData()); } @Override diff --git a/server/src/main/java/com/soulfiremc/server/account/SFTheAlteningAuthService.java b/server/src/main/java/com/soulfiremc/server/account/SFTheAlteningAuthService.java index 892f29a70..c33ad48ae 100644 --- a/server/src/main/java/com/soulfiremc/server/account/SFTheAlteningAuthService.java +++ b/server/src/main/java/com/soulfiremc/server/account/SFTheAlteningAuthService.java @@ -43,8 +43,7 @@ public final class SFTheAlteningAuthService @Override public MinecraftAccount login(TheAlteningAuthData data, SFProxy proxyData) throws IOException { - var request = - new AuthenticationRequest(data.altToken, PASSWORD, UUID.randomUUID().toString()); + var request = new AuthenticationRequest(data.altToken, PASSWORD, UUID.randomUUID().toString()); return ReactorHttpHelper.createReactorClient(proxyData, true) .post() .uri(AUTHENTICATE_ENDPOINT) @@ -57,16 +56,13 @@ public MinecraftAccount login(TheAlteningAuthData data, SFProxy proxyData) throw responseText -> { var response = GsonInstance.GSON.fromJson( - responseText, - AuthenticateRefreshResponse.class); + responseText, AuthenticateRefreshResponse.class); return new MinecraftAccount( AuthType.THE_ALTENING, UUIDHelper.convertToDashed(response.selectedProfile().id()), response.selectedProfile().name(), - new OnlineJavaData( - response.accessToken(), - -1)); + new OnlineJavaData(response.accessToken(), -1)); })) .block(); } diff --git a/server/src/main/java/com/soulfiremc/server/grpc/MCAuthServiceImpl.java b/server/src/main/java/com/soulfiremc/server/grpc/MCAuthServiceImpl.java index 35da0310a..14f1c3c73 100644 --- a/server/src/main/java/com/soulfiremc/server/grpc/MCAuthServiceImpl.java +++ b/server/src/main/java/com/soulfiremc/server/grpc/MCAuthServiceImpl.java @@ -34,45 +34,45 @@ @RequiredArgsConstructor(onConstructor_ = @Inject) public class MCAuthServiceImpl extends MCAuthServiceGrpc.MCAuthServiceImplBase { + private static @Nullable SFProxy convertProxy(AuthRequest request) { + SFProxy proxy; + if (request.hasProxy()) { + proxy = + new SFProxy( + switch (request.getProxy().getType()) { + case SOCKS4 -> ProxyType.SOCKS4; + case SOCKS5 -> ProxyType.SOCKS5; + case HTTP -> ProxyType.HTTP; + case UNRECOGNIZED -> throw new IllegalArgumentException("Unrecognized proxy type"); + }, + request.getProxy().getHost(), + request.getProxy().getPort(), + request.getProxy().hasUsername() ? request.getProxy().getUsername() : null, + request.getProxy().hasPassword() ? request.getProxy().getPassword() : null); + } else { + proxy = null; + } + return proxy; + } + @Override public void login(AuthRequest request, StreamObserver responseObserver) { try { - var account = (switch (request.getService()) { - case MICROSOFT_JAVA -> new SFJavaMicrosoftAuthService(); - case MICROSOFT_BEDROCK -> new SFBedrockMicrosoftAuthService(); - case THE_ALTENING -> new SFTheAlteningAuthService(); - case EASY_MC -> new SFEasyMCAuthService(); - case OFFLINE -> new SFOfflineAuthService(); - case UNRECOGNIZED -> throw new IllegalArgumentException("Unrecognized service"); - }).createDataAndLogin(request.getPayload(), convertProxy(request)); + var account = + (switch (request.getService()) { + case MICROSOFT_JAVA -> new SFJavaMicrosoftAuthService(); + case MICROSOFT_BEDROCK -> new SFBedrockMicrosoftAuthService(); + case THE_ALTENING -> new SFTheAlteningAuthService(); + case EASY_MC -> new SFEasyMCAuthService(); + case OFFLINE -> new SFOfflineAuthService(); + case UNRECOGNIZED -> throw new IllegalArgumentException("Unrecognized service"); + }) + .createDataAndLogin(request.getPayload(), convertProxy(request)); - responseObserver.onNext(AuthResponse.newBuilder() - .setAccount(account.toProto()) - .build()); + responseObserver.onNext(AuthResponse.newBuilder().setAccount(account.toProto()).build()); responseObserver.onCompleted(); } catch (Exception e) { responseObserver.onError(e); } } - - private static @Nullable SFProxy convertProxy(AuthRequest request) { - SFProxy proxy; - if (request.hasProxy()) { - proxy = new SFProxy( - switch (request.getProxy().getType()) { - case SOCKS4 -> ProxyType.SOCKS4; - case SOCKS5 -> ProxyType.SOCKS5; - case HTTP -> ProxyType.HTTP; - case UNRECOGNIZED -> throw new IllegalArgumentException("Unrecognized proxy type"); - }, - request.getProxy().getHost(), - request.getProxy().getPort(), - request.getProxy().hasUsername() ? request.getProxy().getUsername() : null, - request.getProxy().hasPassword() ? request.getProxy().getPassword() : null - ); - } else { - proxy = null; - } - return proxy; - } } diff --git a/server/src/main/java/com/soulfiremc/server/plugins/POVServer.java b/server/src/main/java/com/soulfiremc/server/plugins/POVServer.java index cad87192f..b5ba845c0 100644 --- a/server/src/main/java/com/soulfiremc/server/plugins/POVServer.java +++ b/server/src/main/java/com/soulfiremc/server/plugins/POVServer.java @@ -342,11 +342,7 @@ public void packetReceived(Session session, Packet packet) { var first = attackManager.botConnections().values().stream() - .filter( - c -> - c.meta() - .accountName() - .equals(selectedName)) + .filter(c -> c.meta().accountName().equals(selectedName)) .findFirst(); if (first.isEmpty()) { session.send( @@ -424,9 +420,7 @@ public void packetSent(Session session, Packet packet) { .color(NamedTextColor.GREEN) .append( Component.text( - botConnection - .meta() - .accountName()) + botConnection.meta().accountName()) .color(NamedTextColor.AQUA) .decorate(TextDecoration.UNDERLINED)) .append(Component.text("!")) diff --git a/server/src/main/java/com/soulfiremc/server/protocol/IdentifiedKey.java b/server/src/main/java/com/soulfiremc/server/protocol/IdentifiedKey.java index 5273b466c..9006534f7 100644 --- a/server/src/main/java/com/soulfiremc/server/protocol/IdentifiedKey.java +++ b/server/src/main/java/com/soulfiremc/server/protocol/IdentifiedKey.java @@ -17,7 +17,6 @@ */ package com.soulfiremc.server.protocol; - import com.google.common.collect.ImmutableSet; import com.soulfiremc.server.util.EncryptionUtils; import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; @@ -37,20 +36,19 @@ public class IdentifiedKey { private final Revision revision; private final PublicKey publicKey; private final byte[] signature; - @Getter - private final Instant expiryTemporal; + @Getter private final Instant expiryTemporal; private @MonotonicNonNull Boolean isSignatureValid; private @MonotonicNonNull UUID holder; - public IdentifiedKey(Revision revision, byte[] keyBits, long expiry, - byte[] signature) { - this(revision, EncryptionUtils.parseRsaPublicKey(keyBits), - Instant.ofEpochMilli(expiry), signature); + public IdentifiedKey(Revision revision, byte[] keyBits, long expiry, byte[] signature) { + this( + revision, + EncryptionUtils.parseRsaPublicKey(keyBits), + Instant.ofEpochMilli(expiry), + signature); } - /** - * Creates an Identified key from data. - */ + /** Creates an Identified key from data. */ public IdentifiedKey( Revision revision, PublicKey publicKey, Instant expiryTemporal, byte[] signature) { this.revision = revision; @@ -79,9 +77,7 @@ public Revision getKeyRevision() { return revision; } - /** - * Sets the uuid for this key. Returns false if incorrect. - */ + /** Sets the uuid for this key. Returns false if incorrect. */ public boolean internalAddHolder(UUID holder) { if (holder == null) { return false; @@ -111,7 +107,9 @@ private Boolean validateData(@Nullable UUID verify) { var expires = expiryTemporal.toEpochMilli(); var toVerify = (expires + pemKey).getBytes(StandardCharsets.US_ASCII); return EncryptionUtils.verifySignature( - EncryptionUtils.SHA1_WITH_RSA, EncryptionUtils.getYggdrasilSessionKey(), signature, + EncryptionUtils.SHA1_WITH_RSA, + EncryptionUtils.getYggdrasilSessionKey(), + signature, toVerify); } else { if (verify == null) { @@ -124,15 +122,18 @@ private Boolean validateData(@Nullable UUID verify) { fixedDataSet.putLong(verify.getLeastSignificantBits()); fixedDataSet.putLong(expiryTemporal.toEpochMilli()); fixedDataSet.put(keyBytes); - return EncryptionUtils.verifySignature(EncryptionUtils.SHA1_WITH_RSA, - EncryptionUtils.getYggdrasilSessionKey(), signature, toVerify); + return EncryptionUtils.verifySignature( + EncryptionUtils.SHA1_WITH_RSA, + EncryptionUtils.getYggdrasilSessionKey(), + signature, + toVerify); } } public boolean verifyDataSignature(byte[] signature, byte[]... toVerify) { try { - return EncryptionUtils.verifySignature(EncryptionUtils.SHA256_WITH_RSA, publicKey, signature, - toVerify); + return EncryptionUtils.verifySignature( + EncryptionUtils.SHA256_WITH_RSA, publicKey, signature, toVerify); } catch (IllegalArgumentException e) { return false; } diff --git a/server/src/main/java/com/soulfiremc/server/protocol/SFBaseListener.java b/server/src/main/java/com/soulfiremc/server/protocol/SFBaseListener.java index 5a61fad15..c6b0ed0fc 100644 --- a/server/src/main/java/com/soulfiremc/server/protocol/SFBaseListener.java +++ b/server/src/main/java/com/soulfiremc/server/protocol/SFBaseListener.java @@ -154,7 +154,8 @@ public void packetSent(Session session, Packet packet) { if (this.targetState == ProtocolState.LOGIN) { session.send( - new ServerboundHelloPacket(botConnection.meta().accountName(), botConnection.meta().accountProfileId())); + new ServerboundHelloPacket( + botConnection.meta().accountName(), botConnection.meta().accountProfileId())); } else { session.send(new ServerboundStatusRequestPacket()); } diff --git a/server/src/main/java/com/soulfiremc/server/protocol/bot/SessionDataManager.java b/server/src/main/java/com/soulfiremc/server/protocol/bot/SessionDataManager.java index 4c9367c05..a88053441 100644 --- a/server/src/main/java/com/soulfiremc/server/protocol/bot/SessionDataManager.java +++ b/server/src/main/java/com/soulfiremc/server/protocol/bot/SessionDataManager.java @@ -241,6 +241,14 @@ private static List readChannels(ClientboundCustomPayloadPacket packet) return list; } + public static void writeChunkSection( + ByteBuf buf, MinecraftCodecHelper codec, ChunkSection chunkSection) { + buf.writeShort(chunkSection.getBlockCount()); + + codec.writeDataPalette(buf, chunkSection.getChunkData()); + codec.writeDataPalette(buf, chunkSection.getBiomeData()); + } + @EventHandler public void onLoginSuccess(ClientboundGameProfilePacket packet) { botProfile = packet.getProfile(); @@ -377,6 +385,10 @@ public void onServerPlayData(ClientboundServerDataPacket packet) { new ServerPlayData(packet.getMotd(), packet.getIconBytes(), packet.isEnforcesSecureChat()); } + // + // Chat packets + // + @EventHandler public void onPluginMessage(ClientboundCustomPayloadPacket packet) { log.debug("Received plugin message on channel {}", packet.getChannel()); @@ -395,10 +407,6 @@ public void onPluginMessage(ClientboundCustomPayloadPacket packet) { } } - // - // Chat packets - // - @EventHandler public void onPlayerChat(ClientboundPlayerChatPacket packet) { var message = packet.getUnsignedContent(); @@ -424,15 +432,15 @@ private void onChat(long stamp, Component message) { connection.eventBus().call(new ChatMessageReceiveEvent(connection, stamp, message, null)); } + // + // Player list packets + // + private void onChat( long stamp, Component message, ChatMessageReceiveEvent.ChatMessageSender sender) { connection.eventBus().call(new ChatMessageReceiveEvent(connection, stamp, message, sender)); } - // - // Player list packets - // - @EventHandler public void onPlayerListHeaderFooter(ClientboundTabListPacket packet) { playerListState.header(packet.getHeader()); @@ -461,6 +469,10 @@ public void onPlayerListUpdate(ClientboundPlayerInfoUpdatePacket packet) { } } + // + // Player data packets + // + @EventHandler public void onPlayerListRemove(ClientboundPlayerInfoRemovePacket packet) { for (var profileId : packet.getProfileIds()) { @@ -468,10 +480,6 @@ public void onPlayerListRemove(ClientboundPlayerInfoRemovePacket packet) { } } - // - // Player data packets - // - @EventHandler public void onSetSimulationDistance(ClientboundSetSimulationDistancePacket packet) { serverSimulationDistance = packet.getSimulationDistance(); @@ -536,6 +544,10 @@ public void onExperience(ClientboundSetExperiencePacket packet) { new ExperienceData(packet.getExperience(), packet.getLevel(), packet.getTotalExperience()); } + // + // Inventory packets + // + @EventHandler public void onLevelTime(ClientboundSetTimePacket packet) { var level = getCurrentLevel(); @@ -549,10 +561,6 @@ public void onLevelTime(ClientboundSetTimePacket packet) { level.time(packet.getTime()); } - // - // Inventory packets - // - @EventHandler public void onSetContainerContent(ClientboundContainerSetContentPacket packet) { inventoryManager.lastStateId(packet.getStateId()); @@ -668,15 +676,15 @@ public void onGameEvent(ClientboundGameEventPacket packet) { } } + // + // Chunk packets + // + @EventHandler public void onSetCenterChunk(ClientboundSetChunkCacheCenterPacket packet) { centerChunk = new ChunkKey(packet.getChunkX(), packet.getChunkZ()); } - // - // Chunk packets - // - @EventHandler public void onChunkData(ClientboundLevelChunkWithLightPacket packet) { var helper = session.getCodecHelper(); @@ -735,6 +743,10 @@ public void onChunkData(ClientboundChunksBiomesPacket packet) { } } + // + // Block packets + // + @EventHandler public void onChunkForget(ClientboundForgetLevelChunkPacket packet) { var level = getCurrentLevel(); @@ -747,10 +759,6 @@ public void onChunkForget(ClientboundForgetLevelChunkPacket packet) { level.chunks().removeChunk(packet.getX(), packet.getZ()); } - // - // Block packets - // - @EventHandler public void onSectionBlockUpdate(ClientboundSectionBlocksUpdatePacket packet) { var level = getCurrentLevel(); @@ -798,15 +806,15 @@ public void onBlockUpdate(ClientboundBlockUpdatePacket packet) { log.debug("Updated block at {} to {}", vector3i, newId); } + // + // World border packets + // + @EventHandler public void onBlockChangedAck(ClientboundBlockChangedAckPacket packet) { // TODO: Implement block break } - // - // World border packets - // - @EventHandler public void onBorderInit(ClientboundInitializeBorderPacket packet) { borderState = @@ -845,15 +853,15 @@ public void onBorderWarningTime(ClientboundSetBorderWarningDelayPacket packet) { borderState.warningTime(packet.getWarningDelay()); } + // + // Entity packets + // + @EventHandler public void onBorderWarningBlocks(ClientboundSetBorderWarningDistancePacket packet) { borderState.warningBlocks(packet.getWarningBlocks()); } - // - // Entity packets - // - @EventHandler public void onEntitySpawn(ClientboundAddEntityPacket packet) { var entityState = @@ -1122,21 +1130,11 @@ public void onDisconnectEvent(DisconnectedEvent event) { public ChunkSection readChunkSection(ByteBuf buf, MinecraftCodecHelper codec) throws IOException { int blockCount = buf.readShort(); - var chunkPalette = - codec.readDataPalette( - buf, PaletteType.CHUNK); + var chunkPalette = codec.readDataPalette(buf, PaletteType.CHUNK); var biomePalette = codec.readDataPalette(buf, PaletteType.BIOME); return new ChunkSection(blockCount, chunkPalette, biomePalette); } - public static void writeChunkSection( - ByteBuf buf, MinecraftCodecHelper codec, ChunkSection chunkSection) { - buf.writeShort(chunkSection.getBlockCount()); - - codec.writeDataPalette(buf, chunkSection.getChunkData()); - codec.writeDataPalette(buf, chunkSection.getBiomeData()); - } - public LevelState getCurrentLevel() { if (currentDimension == null) { return null; diff --git a/server/src/main/java/com/soulfiremc/server/settings/lib/SettingsHolder.java b/server/src/main/java/com/soulfiremc/server/settings/lib/SettingsHolder.java index 8962454a3..548447838 100644 --- a/server/src/main/java/com/soulfiremc/server/settings/lib/SettingsHolder.java +++ b/server/src/main/java/com/soulfiremc/server/settings/lib/SettingsHolder.java @@ -55,22 +55,23 @@ public static SettingsHolder createSettingsHolder(ProfileDataStructure settingsS var booleanProperties = new Object2BooleanOpenHashMap(); var stringProperties = new Object2ObjectOpenHashMap(); - settingsSerialized.handleProperties((propertyKey, settingData) -> { - if (settingData.isJsonPrimitive()) { - var primitive = settingData.getAsJsonPrimitive(); - if (primitive.isBoolean()) { - booleanProperties.put(propertyKey, primitive.getAsBoolean()); - } else if (primitive.isNumber()) { - numberProperties.put(propertyKey, primitive.getAsNumber()); - } else if (primitive.isString()) { - stringProperties.put(propertyKey, primitive.getAsString()); - } else { - throw new IllegalArgumentException("Unknown primitive type: " + primitive); - } - } else { - throw new IllegalArgumentException("Unknown type: " + settingData); - } - }); + settingsSerialized.handleProperties( + (propertyKey, settingData) -> { + if (settingData.isJsonPrimitive()) { + var primitive = settingData.getAsJsonPrimitive(); + if (primitive.isBoolean()) { + booleanProperties.put(propertyKey, primitive.getAsBoolean()); + } else if (primitive.isNumber()) { + numberProperties.put(propertyKey, primitive.getAsNumber()); + } else if (primitive.isString()) { + stringProperties.put(propertyKey, primitive.getAsString()); + } else { + throw new IllegalArgumentException("Unknown primitive type: " + primitive); + } + } else { + throw new IllegalArgumentException("Unknown type: " + settingData); + } + }); return new SettingsHolder( numberProperties, diff --git a/server/src/main/java/com/soulfiremc/server/util/LenniHttpHelper.java b/server/src/main/java/com/soulfiremc/server/util/LenniHttpHelper.java index 466c482bf..cb78520e4 100644 --- a/server/src/main/java/com/soulfiremc/server/util/LenniHttpHelper.java +++ b/server/src/main/java/com/soulfiremc/server/util/LenniHttpHelper.java @@ -109,10 +109,9 @@ public HttpResponse execute(@NotNull HttpRequest httpRequest) throws IOException return content .asByteArray() - .mapNotNull( - bytes -> new HttpResponse( - urlObj, code, bytes, responseHeaders)) - .switchIfEmpty(Mono.just(new HttpResponse(urlObj, code, null, responseHeaders))); + .mapNotNull(bytes -> new HttpResponse(urlObj, code, bytes, responseHeaders)) + .switchIfEmpty( + Mono.just(new HttpResponse(urlObj, code, null, responseHeaders))); } catch (Exception e) { log.error("Error while handling response", e); return Mono.error(e);