From 1d63fbbd9332e18fedfd4d20cb56904004f8a470 Mon Sep 17 00:00:00 2001 From: microwin7 Date: Tue, 7 Jan 2025 11:44:55 +0300 Subject: [PATCH 01/10] [FEATURE] Disabling log4j.xml update while launchserver is running --- .../java/pro/gravit/launchserver/command/basic/DebugCommand.java | 1 + 1 file changed, 1 insertion(+) diff --git a/LaunchServer/src/main/java/pro/gravit/launchserver/command/basic/DebugCommand.java b/LaunchServer/src/main/java/pro/gravit/launchserver/command/basic/DebugCommand.java index 355f1463..888c666b 100644 --- a/LaunchServer/src/main/java/pro/gravit/launchserver/command/basic/DebugCommand.java +++ b/LaunchServer/src/main/java/pro/gravit/launchserver/command/basic/DebugCommand.java @@ -32,6 +32,7 @@ public void invoke(String... args) throws Exception { boolean value = Boolean.parseBoolean(args[0]); LoggerContext ctx = (LoggerContext) LogManager.getContext(false); Configuration config = ctx.getConfiguration(); + config.getWatchManager().setIntervalSeconds(-1); LoggerConfig loggerConfig = config.getLoggerConfig("pro.gravit"); loggerConfig.setLevel(value ? Level.TRACE : Level.DEBUG); ctx.updateLoggers(); From 907332ff061b938a445caa22f0997116c92bc996 Mon Sep 17 00:00:00 2001 From: Gravita <12893402+gravit0@users.noreply.github.com> Date: Mon, 27 Jan 2025 20:20:27 +0700 Subject: [PATCH 02/10] [FEATURE] Fix truststore path --- .../java/pro/gravit/launchserver/LaunchServerStarter.java | 2 +- .../gravit/launchserver/manangers/CertificateManager.java | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/LaunchServer/src/main/java/pro/gravit/launchserver/LaunchServerStarter.java b/LaunchServer/src/main/java/pro/gravit/launchserver/LaunchServerStarter.java index 3db4c2be..34a6fd26 100644 --- a/LaunchServer/src/main/java/pro/gravit/launchserver/LaunchServerStarter.java +++ b/LaunchServer/src/main/java/pro/gravit/launchserver/LaunchServerStarter.java @@ -63,7 +63,7 @@ public static void main(String[] args) throws Exception { directories.collect(); CertificateManager certificateManager = new CertificateManager(); try { - certificateManager.readTrustStore(dir.resolve("truststore")); + certificateManager.readTrustStore(directories.trustStore); } catch (CertificateException e) { throw new IOException(e); } diff --git a/LaunchServer/src/main/java/pro/gravit/launchserver/manangers/CertificateManager.java b/LaunchServer/src/main/java/pro/gravit/launchserver/manangers/CertificateManager.java index fa822fcf..81f7f68b 100644 --- a/LaunchServer/src/main/java/pro/gravit/launchserver/manangers/CertificateManager.java +++ b/LaunchServer/src/main/java/pro/gravit/launchserver/manangers/CertificateManager.java @@ -29,6 +29,7 @@ public class CertificateManager { private transient final Logger logger = LogManager.getLogger(); public LauncherTrustManager trustManager; + private Path truststorePath; public void writePrivateKey(Path file, PrivateKey privateKey) throws IOException { writePrivateKey(IOHelper.newWriter(file), privateKey); @@ -91,6 +92,7 @@ public X509CertificateHolder readCertificate(Reader reader) throws IOException { } public void readTrustStore(Path dir) throws IOException, CertificateException { + this.truststorePath = dir; if (!IOHelper.isDir(dir)) { Files.createDirectories(dir); try { @@ -131,4 +133,8 @@ public LauncherTrustManager.CheckClassResult checkClass(Class clazz) { X509Certificate[] certificates = JVMHelper.getCertificates(clazz); return trustManager.checkCertificates(certificates, trustManager::stdCertificateChecker); } + + public Path getTruststorePath() { + return truststorePath; + } } From 5ba32e34050cdb9df8e82ffeffae1ff4b746fb5f Mon Sep 17 00:00:00 2001 From: Gravita <12893402+gravit0@users.noreply.github.com> Date: Mon, 27 Jan 2025 20:20:47 +0700 Subject: [PATCH 03/10] [ANY] Update modules --- modules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules b/modules index bf37c686..803846d9 160000 --- a/modules +++ b/modules @@ -1 +1 @@ -Subproject commit bf37c6860a80acfd516ee533494d64b226d89309 +Subproject commit 803846d9c4db29fb64ad96e45e46b1e9f64b2e03 From b9ad7c0f26e4cc99bf68eb9fce84ce5c4c82a277 Mon Sep 17 00:00:00 2001 From: Gravita <12893402+gravit0@users.noreply.github.com> Date: Mon, 3 Feb 2025 01:03:01 +0700 Subject: [PATCH 04/10] [ANY] Update dependencies --- build.gradle | 2 +- props.gradle | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/build.gradle b/build.gradle index 43de18a3..9e45e737 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'com.github.johnrengelman.shadow' version '7.1.2' apply false + id 'com.github.johnrengelman.shadow' version '8.1.1' apply false id 'maven-publish' id 'signing' id 'org.openjfx.javafxplugin' version '0.1.0' apply false diff --git a/props.gradle b/props.gradle index 99b9aa98..13ee367d 100644 --- a/props.gradle +++ b/props.gradle @@ -1,18 +1,18 @@ project.ext { verAsm = '9.7.1' verNetty = '4.1.114.Final' - verOshiCore = '6.6.5' - verJunit = '5.11.2' + verOshiCore = '6.6.6' + verJunit = '5.11.4' verJansi = '2.4.1' - verJline = '3.26.3' + verJline = '3.29.0' verJwt = '0.12.6' - verGson = '2.11.0' - verBcpkix = '1.78.1' + verGson = '2.12.1' + verBcpkix = '1.80' verSlf4j = '2.0.16' - verLog4j = '2.24.1' - verMySQLConn = '9.0.0' - verMariaDBConn = '3.4.1' - verPostgreSQLConn = '42.7.4' + verLog4j = '2.24.3' + verMySQLConn = '9.2.0' + verMariaDBConn = '3.5.1' + verPostgreSQLConn = '42.7.5' verH2Conn = '2.3.232' - verProguard = '7.6.0' + verProguard = '7.6.1' } From 263cf2625851973f45b04251df14c535c3290036 Mon Sep 17 00:00:00 2001 From: Gravita <12893402+gravit0@users.noreply.github.com> Date: Mon, 3 Feb 2025 01:03:26 +0700 Subject: [PATCH 05/10] [ANY] Update gradle --- gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 79eb9d00..e0fd0202 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index f5feea6d..f3b75f3b 100755 --- a/gradlew +++ b/gradlew @@ -86,8 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s -' "$PWD" ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum From 41f93b9f8db409ac36b100f890f7a14ee0ad0ab7 Mon Sep 17 00:00:00 2001 From: Gravita <12893402+gravit0@users.noreply.github.com> Date: Tue, 18 Feb 2025 14:56:16 +0700 Subject: [PATCH 06/10] [ANY] Upgrade netty to 4.2.0.RC3 --- LaunchServer/build.gradle | 4 ++++ props.gradle | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/LaunchServer/build.gradle b/LaunchServer/build.gradle index f9d16e6c..cc358ffd 100644 --- a/LaunchServer/build.gradle +++ b/LaunchServer/build.gradle @@ -88,6 +88,10 @@ pack project(':LauncherAPI') bundle group: 'io.netty', name: 'netty-transport-classes-epoll', version: rootProject['verNetty'] bundle group: 'io.netty', name: 'netty-transport-native-epoll', version: rootProject['verNetty'], classifier: 'linux-x86_64' bundle group: 'io.netty', name: 'netty-transport-native-epoll', version: rootProject['verNetty'], classifier: 'linux-aarch_64' + // Netty + implementation 'org.jboss.marshalling:jboss-marshalling:1.4.11.Final' + implementation 'com.google.protobuf.nano:protobuf-javanano:3.1.0' + // bundle group: 'org.slf4j', name: 'slf4j-api', version: rootProject['verSlf4j'] bundle group: 'com.mysql', name: 'mysql-connector-j', version: rootProject['verMySQLConn'] bundle group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: rootProject['verMariaDBConn'] diff --git a/props.gradle b/props.gradle index 13ee367d..fece1ba7 100644 --- a/props.gradle +++ b/props.gradle @@ -1,6 +1,6 @@ project.ext { verAsm = '9.7.1' - verNetty = '4.1.114.Final' + verNetty = '4.2.0.RC3' verOshiCore = '6.6.6' verJunit = '5.11.4' verJansi = '2.4.1' From bbff0eac6489acf0dcd9d6e5a4b9fb40d1c77896 Mon Sep 17 00:00:00 2001 From: Gravita <12893402+gravit0@users.noreply.github.com> Date: Tue, 18 Feb 2025 15:14:55 +0700 Subject: [PATCH 07/10] [FEATURE] Support IO_URING mode in netty --- LaunchServer/build.gradle | 7 ++- .../java/pro/gravit/launchserver/Main.java | 2 +- .../config/LaunchServerConfig.java | 10 ++-- .../socket/LauncherNettyServer.java | 9 +--- .../socket/NettyObjectFactory.java | 52 +++++++++++++++---- 5 files changed, 52 insertions(+), 28 deletions(-) diff --git a/LaunchServer/build.gradle b/LaunchServer/build.gradle index cc358ffd..905f788f 100644 --- a/LaunchServer/build.gradle +++ b/LaunchServer/build.gradle @@ -88,9 +88,12 @@ pack project(':LauncherAPI') bundle group: 'io.netty', name: 'netty-transport-classes-epoll', version: rootProject['verNetty'] bundle group: 'io.netty', name: 'netty-transport-native-epoll', version: rootProject['verNetty'], classifier: 'linux-x86_64' bundle group: 'io.netty', name: 'netty-transport-native-epoll', version: rootProject['verNetty'], classifier: 'linux-aarch_64' + bundle group: 'io.netty', name: 'netty-transport-classes-io_uring', version: rootProject['verNetty'] + bundle group: 'io.netty', name: 'netty-transport-native-io_uring', version: rootProject['verNetty'], classifier: 'linux-x86_64' + bundle group: 'io.netty', name: 'netty-transport-native-io_uring', version: rootProject['verNetty'], classifier: 'linux-aarch_64' // Netty - implementation 'org.jboss.marshalling:jboss-marshalling:1.4.11.Final' - implementation 'com.google.protobuf.nano:protobuf-javanano:3.1.0' + bundle 'org.jboss.marshalling:jboss-marshalling:1.4.11.Final' + bundle 'com.google.protobuf.nano:protobuf-javanano:3.1.0' // bundle group: 'org.slf4j', name: 'slf4j-api', version: rootProject['verSlf4j'] bundle group: 'com.mysql', name: 'mysql-connector-j', version: rootProject['verMySQLConn'] diff --git a/LaunchServer/src/main/java/pro/gravit/launchserver/Main.java b/LaunchServer/src/main/java/pro/gravit/launchserver/Main.java index aabf4fe1..f12ae900 100644 --- a/LaunchServer/src/main/java/pro/gravit/launchserver/Main.java +++ b/LaunchServer/src/main/java/pro/gravit/launchserver/Main.java @@ -18,7 +18,7 @@ import java.util.stream.Stream; public class Main { - private static final List classpathOnly = List.of("proguard", "jline", "progressbar", "kotlin", "epoll"); + private static final List classpathOnly = List.of("proguard", "jline", "progressbar", "kotlin"); private static final String LOG4J_PROPERTY = "log4j2.configurationFile"; private static final String DEBUG_PROPERTY = "launchserver.main.debug"; private static final String LIBRARIES_PROPERTY = "launchserver.dir.libraries"; diff --git a/LaunchServer/src/main/java/pro/gravit/launchserver/config/LaunchServerConfig.java b/LaunchServer/src/main/java/pro/gravit/launchserver/config/LaunchServerConfig.java index f2121ba7..ccd7a71c 100644 --- a/LaunchServer/src/main/java/pro/gravit/launchserver/config/LaunchServerConfig.java +++ b/LaunchServer/src/main/java/pro/gravit/launchserver/config/LaunchServerConfig.java @@ -19,6 +19,7 @@ import pro.gravit.launchserver.components.AuthLimiterComponent; import pro.gravit.launchserver.components.Component; import pro.gravit.launchserver.components.ProGuardComponent; +import pro.gravit.launchserver.socket.NettyObjectFactory; import java.util.*; @@ -64,12 +65,7 @@ public static LaunchServerConfig getDefault(LaunchServer.LaunchServerEnv env) { newConfig.netty.fileServerEnabled = true; newConfig.netty.binds = new NettyBindAddress[]{new NettyBindAddress("0.0.0.0", 9274)}; newConfig.netty.performance = new NettyPerformanceConfig(); - try { - newConfig.netty.performance.usingEpoll = Epoll.isAvailable(); - } catch (Throwable e) { - // Epoll class line 51+ catch (Exception) but Error will be thrown by System.load - newConfig.netty.performance.usingEpoll = false; - } // such as on ARM + newConfig.netty.performance.mode = NettyObjectFactory.NettyFactoryMode.AUTO; newConfig.netty.performance.bossThread = 2; newConfig.netty.performance.workerThread = 8; newConfig.netty.performance.schedulerThread = 2; @@ -277,7 +273,7 @@ public static class NettyConfig { } public static class NettyPerformanceConfig { - public boolean usingEpoll; + public NettyObjectFactory.NettyFactoryMode mode = NettyObjectFactory.NettyFactoryMode.AUTO; public int bossThread; public int workerThread; public int schedulerThread; diff --git a/LaunchServer/src/main/java/pro/gravit/launchserver/socket/LauncherNettyServer.java b/LaunchServer/src/main/java/pro/gravit/launchserver/socket/LauncherNettyServer.java index 592a79d3..987c78f1 100644 --- a/LaunchServer/src/main/java/pro/gravit/launchserver/socket/LauncherNettyServer.java +++ b/LaunchServer/src/main/java/pro/gravit/launchserver/socket/LauncherNettyServer.java @@ -36,14 +36,9 @@ public class LauncherNettyServer implements AutoCloseable { public LauncherNettyServer(LaunchServer server) { LaunchServerConfig.NettyConfig config = server.config.netty; - NettyObjectFactory.setUsingEpoll(config.performance.usingEpoll); + NettyObjectFactory.setMode(config.performance.mode); Logger logger = LogManager.getLogger(); - if (config.performance.usingEpoll) { - logger.debug("Netty: Epoll enabled"); - } - if (config.performance.usingEpoll && !Epoll.isAvailable()) { - logger.error("Epoll is not available: (netty,perfomance.usingEpoll configured wrongly)", Epoll.unavailabilityCause()); - } + logger.info("Netty usage {} transport mode", NettyObjectFactory.getMode()); bossGroup = NettyObjectFactory.newEventLoopGroup(config.performance.bossThread, "LauncherNettyServer.bossGroup"); workerGroup = NettyObjectFactory.newEventLoopGroup(config.performance.workerThread, "LauncherNettyServer.workerGroup"); serverBootstrap = new ServerBootstrap(); diff --git a/LaunchServer/src/main/java/pro/gravit/launchserver/socket/NettyObjectFactory.java b/LaunchServer/src/main/java/pro/gravit/launchserver/socket/NettyObjectFactory.java index 3b622bde..5a13e460 100644 --- a/LaunchServer/src/main/java/pro/gravit/launchserver/socket/NettyObjectFactory.java +++ b/LaunchServer/src/main/java/pro/gravit/launchserver/socket/NettyObjectFactory.java @@ -2,30 +2,60 @@ import io.netty.channel.ChannelFactory; import io.netty.channel.EventLoopGroup; +import io.netty.channel.MultiThreadIoEventLoopGroup; import io.netty.channel.ServerChannel; +import io.netty.channel.epoll.Epoll; import io.netty.channel.epoll.EpollEventLoopGroup; +import io.netty.channel.epoll.EpollIoHandler; import io.netty.channel.epoll.EpollServerSocketChannel; import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.nio.NioIoHandler; import io.netty.channel.socket.nio.NioServerSocketChannel; +import io.netty.channel.uring.IoUring; +import io.netty.channel.uring.IoUringIoHandler; +import io.netty.channel.uring.IoUringServerSocketChannel; public class NettyObjectFactory { - private static boolean epoll = false; + private static NettyFactoryMode mode; - public static void setUsingEpoll(boolean value) { - epoll = value; + public static void setMode(NettyFactoryMode mode) { + NettyObjectFactory.mode = mode; + if(mode == NettyFactoryMode.AUTO) { + if(IoUring.isAvailable()) { + NettyObjectFactory.mode = NettyFactoryMode.IO_URING; + return; + } + if(Epoll.isAvailable()) { + NettyObjectFactory.mode = NettyFactoryMode.EPOLL; + return; + } + NettyObjectFactory.mode = NettyFactoryMode.NIO; + } + } + + public static NettyFactoryMode getMode() { + return mode; } public static EventLoopGroup newEventLoopGroup(int threads, String poolName) { - if (epoll) - return new EpollEventLoopGroup(threads); - else - return new NioEventLoopGroup(threads); + return switch (mode) { + case AUTO -> null; + case NIO -> new MultiThreadIoEventLoopGroup(threads, NioIoHandler.newFactory()); + case EPOLL -> new MultiThreadIoEventLoopGroup(threads, EpollIoHandler.newFactory()); + case IO_URING -> new MultiThreadIoEventLoopGroup(threads, IoUringIoHandler.newFactory()); + }; } public static ChannelFactory getServerSocketChannelFactory() { - if (epoll) - return EpollServerSocketChannel::new; - else - return NioServerSocketChannel::new; + return switch (mode) { + case AUTO -> null; + case NIO -> NioServerSocketChannel::new; + case EPOLL -> EpollServerSocketChannel::new; + case IO_URING -> IoUringServerSocketChannel::new; + }; + } + + public enum NettyFactoryMode { + AUTO, NIO, EPOLL, IO_URING } } From f119bd4b30e4941f1ca55beef2a20b23bf0b73b2 Mon Sep 17 00:00:00 2001 From: Gravita <12893402+gravit0@users.noreply.github.com> Date: Wed, 19 Feb 2025 11:51:51 +0700 Subject: [PATCH 08/10] [ANY] Delete not working modules --- modules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules b/modules index 803846d9..aa5ab332 160000 --- a/modules +++ b/modules @@ -1 +1 @@ -Subproject commit 803846d9c4db29fb64ad96e45e46b1e9f64b2e03 +Subproject commit aa5ab332d65dd14ce5321453aa809e30b87a186d From b7ed56b27e9a2ec932577a4d8d0a48cb7d5eb244 Mon Sep 17 00:00:00 2001 From: Gravita <12893402+gravit0@users.noreply.github.com> Date: Mon, 24 Feb 2025 14:30:41 +0700 Subject: [PATCH 09/10] [ANY] Update Hikari --- LaunchServer/build.gradle | 27 +++++---------------------- 1 file changed, 5 insertions(+), 22 deletions(-) diff --git a/LaunchServer/build.gradle b/LaunchServer/build.gradle index 905f788f..c8836539 100644 --- a/LaunchServer/build.gradle +++ b/LaunchServer/build.gradle @@ -26,14 +26,11 @@ targetCompatibility = '21' configurations { - compileOnlyA bundleOnly bundle - hikari pack - launch4j bundleOnly.extendsFrom bundle - api.extendsFrom bundle, hikari, pack, launch4j + api.extendsFrom bundle, pack } jar { @@ -110,40 +107,26 @@ pack project(':LauncherAPI') annotationProcessor(group: 'org.apache.logging.log4j', name: 'log4j-core', version: rootProject['verLog4j']) testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter', version: rootProject['verJunit'] - hikari 'io.micrometer:micrometer-core:1.13.1' - hikari('com.zaxxer:HikariCP:5.1.0') { + bundle 'io.micrometer:micrometer-core:1.14.4' + bundle('com.zaxxer:HikariCP:6.2.1') { exclude group: 'javassist' exclude group: 'io.micrometer' exclude group: 'org.slf4j' } } -tasks.register('hikari', Copy) { - duplicatesStrategy = 'EXCLUDE' - into "$buildDir/libs/libraries/hikaricp" - from configurations.hikari -} - tasks.register('dumpLibs', Copy) { duplicatesStrategy = 'EXCLUDE' - dependsOn tasks.hikari into "$buildDir/libs/libraries" from configurations.bundleOnly } -tasks.register('dumpCompileOnlyLibs', Copy) { - duplicatesStrategy = 'EXCLUDE' - into "$buildDir/libs/launcher-libraries-compile" - from configurations.compileOnlyA -} - tasks.register('bundle', Zip) { duplicatesStrategy = 'EXCLUDE' - dependsOn parent.childProjects.Launcher.tasks.build, tasks.dumpLibs, tasks.dumpCompileOnlyLibs, tasks.jar + dependsOn parent.childProjects.Launcher.tasks.build, tasks.dumpLibs, tasks.jar archiveFileName = 'LaunchServer.zip' destinationDirectory = file("$buildDir") from(tasks.dumpLibs.destinationDir) { into 'libraries' } - from(tasks.dumpCompileOnlyLibs.destinationDir) { into 'launcher-libraries-compile' } from(tasks.jar) from(parent.childProjects.Launcher.tasks.dumpLibs) { into 'launcher-libraries' } } @@ -154,7 +137,7 @@ pack project(':LauncherAPI') from parent.childProjects.Launcher.tasks.dumpLibs } -assemble.dependsOn tasks.dumpLibs, tasks.dumpCompileOnlyLibs, tasks.dumpClientLibs, tasks.bundle, tasks.cleanjar +assemble.dependsOn tasks.dumpLibs, tasks.dumpClientLibs, tasks.bundle, tasks.cleanjar publishing { From 641796b44eeca15cdd7f63445ad3e02e0ff6f541 Mon Sep 17 00:00:00 2001 From: Gravita <12893402+gravit0@users.noreply.github.com> Date: Mon, 24 Feb 2025 14:34:44 +0700 Subject: [PATCH 10/10] [ANY] 5.6.10 stable --- LauncherCore/src/main/java/pro/gravit/utils/Version.java | 2 +- build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/LauncherCore/src/main/java/pro/gravit/utils/Version.java b/LauncherCore/src/main/java/pro/gravit/utils/Version.java index f5632187..ffd345ae 100644 --- a/LauncherCore/src/main/java/pro/gravit/utils/Version.java +++ b/LauncherCore/src/main/java/pro/gravit/utils/Version.java @@ -6,7 +6,7 @@ public final class Version implements Comparable { public static final int MAJOR = 5; public static final int MINOR = 6; - public static final int PATCH = 9; + public static final int PATCH = 10; public static final int BUILD = 1; public static final Version.Type RELEASE = Type.STABLE; public final int major; diff --git a/build.gradle b/build.gradle index 9e45e737..9904eb01 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ id 'org.openjfx.javafxplugin' version '0.1.0' apply false } group = 'pro.gravit.launcher' -version = '5.6.9' +version = '5.6.10' apply from: 'props.gradle'