diff options
| author | ilotterytea <iltsu@alright.party> | 2025-01-04 19:25:10 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2025-01-04 19:25:10 +0500 |
| commit | f967b2bfd478d1f646d1acb236312d605497a0b9 (patch) | |
| tree | 4d583308b08cd58ee19366ac3321a75a37b56dac | |
| parent | 53958edbe7519dc7e842d896d0ada1e0c5cb859a (diff) | |
feat: 'server' and 'shared' modules
| -rw-r--r-- | .gitignore | 12 | ||||
| -rw-r--r-- | build.gradle | 21 | ||||
| -rw-r--r-- | gradle.properties | 2 | ||||
| -rw-r--r-- | server/build.gradle | 48 | ||||
| -rw-r--r-- | server/src/kz/ilotterytea/maxon/MaxonServer.java | 52 | ||||
| -rw-r--r-- | server/src/kz/ilotterytea/maxon/ServerLauncher.java | 8 | ||||
| -rw-r--r-- | server/src/main/resources/logback.xml | 15 | ||||
| -rw-r--r-- | settings.gradle | 2 | ||||
| -rw-r--r-- | shared/build.gradle | 7 |
9 files changed, 165 insertions, 2 deletions
@@ -40,6 +40,8 @@ com_crashlytics_export_strings.xml /desktop/bin/ /html/bin/ /ios/bin/ +/shared/bin/ +/server/bin/ *.tmp *.bak *.swp @@ -57,6 +59,8 @@ com_crashlytics_export_strings.xml /desktop/nbproject/private/ /html/nbproject/private/ /ios/nbproject/private/ +/shared/nbproject/private/ +/server/nbproject/private/ /build/ /android/build/ @@ -64,6 +68,8 @@ com_crashlytics_export_strings.xml /desktop/build/ /html/build/ /ios/build/ +/shared/build/ +/server/build/ /nbbuild/ /android/nbbuild/ @@ -71,6 +77,8 @@ com_crashlytics_export_strings.xml /desktop/nbbuild/ /html/nbbuild/ /ios/nbbuild/ +/shared/nbbuild/ +/server/nbbuild/ /dist/ /android/dist/ @@ -78,6 +86,8 @@ com_crashlytics_export_strings.xml /desktop/dist/ /html/dist/ /ios/dist/ +/shared/dist/ +/server/dist/ /nbdist/ /android/nbdist/ @@ -85,6 +95,8 @@ com_crashlytics_export_strings.xml /desktop/nbdist/ /html/nbdist/ /ios/nbdist/ +/shared/nbdist/ +/server/nbdist/ nbactions.xml nb-configuration.xml diff --git a/build.gradle b/build.gradle index 5048921..85f0182 100644 --- a/build.gradle +++ b/build.gradle @@ -67,10 +67,30 @@ project(":android") { } } +project(":shared") { + apply plugin: "java-library" + + dependencies {} +} + +project(":server") { + apply plugin: "java-library" + + dependencies { + implementation project(":shared") + implementation "com.google.code.gson:gson:$gsonVersion" + implementation "org.slf4j:slf4j-api:$slf4jVersion" + implementation "ch.qos.logback:logback-classic:$logbackVersion" + implementation "ch.qos.logback:logback-core:$logbackVersion" + implementation "org.java-websocket:Java-WebSocket:$websocketVersion" + } +} + project(":core") { apply plugin: "java-library" dependencies { + implementation project(":shared") api "com.badlogicgames.gdx:gdx:$gdxVersion" api "de.golfgl.gdxgamesvcs:gdx-gamesvcs-core:$gamesvcsVersion" api "com.github.mgsx-dev.gdx-gltf:gltf:$gltfVersion" @@ -79,6 +99,7 @@ project(":core") { implementation "ch.qos.logback:logback-classic:$logbackVersion" implementation "ch.qos.logback:logback-core:$logbackVersion" implementation "com.github.JnCrMx:discord-game-sdk4j:$discordSdkVersion" + implementation "org.java-websocket:Java-WebSocket:$websocketVersion" } compileJava.dependsOn writeAllAssetsToFile diff --git a/gradle.properties b/gradle.properties index ae71418..bf8299a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,7 +11,7 @@ playAdsVersion=23.6.0 gdxVersion=1.13.0 gltfVersion=2.2.1 gamesvcsVersion=1.1.0 - +websocketVersion=1.6.0 gsonVersion=2.9.1 logbackVersion=1.5.15 slf4jVersion=2.0.16 diff --git a/server/build.gradle b/server/build.gradle new file mode 100644 index 0000000..1dedae1 --- /dev/null +++ b/server/build.gradle @@ -0,0 +1,48 @@ +sourceCompatibility = 17 +sourceSets.main.java.srcDirs = ["src/"] + +project.ext.mainClassName = "kz.ilotterytea.maxon.ServerLauncher" + +import org.gradle.internal.os.OperatingSystem + +tasks.register('run', JavaExec) { + dependsOn classes + main = project.mainClassName + classpath = sourceSets.main.runtimeClasspath + standardInput = System.in + workingDir = project.rootDir + ignoreExitValue = true + + if (OperatingSystem.current() == OperatingSystem.MAC_OS) { + // Required to run on macOS + jvmArgs += "-XstartOnFirstThread" + } +} + +tasks.register('debug', JavaExec) { + dependsOn classes + main = project.mainClassName + classpath = sourceSets.main.runtimeClasspath + standardInput = System.in + workingDir = project.assetsDir + ignoreExitValue = true + debug = true +} + +tasks.register('dist', Jar) { + archiveFileName = "${appName}-server.jar" + duplicatesStrategy(DuplicatesStrategy.EXCLUDE) + manifest { + attributes 'Main-Class': project.mainClassName + } + dependsOn configurations.runtimeClasspath + from { + configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } + } + with jar +} + + +dist.dependsOn classes + +eclipse.project.name = appName + "-server" diff --git a/server/src/kz/ilotterytea/maxon/MaxonServer.java b/server/src/kz/ilotterytea/maxon/MaxonServer.java new file mode 100644 index 0000000..7a38a7f --- /dev/null +++ b/server/src/kz/ilotterytea/maxon/MaxonServer.java @@ -0,0 +1,52 @@ +package kz.ilotterytea.maxon; + +import org.java_websocket.WebSocket; +import org.java_websocket.handshake.ClientHandshake; +import org.java_websocket.server.WebSocketServer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.net.InetSocketAddress; + +public class MaxonServer extends WebSocketServer { + private static MaxonServer instance; + + private final Logger log; + + private MaxonServer() { + super(new InetSocketAddress(31084)); + this.log = LoggerFactory.getLogger(MaxonServer.class); + } + + @Override + public void onOpen(WebSocket conn, ClientHandshake handshake) { + log.info("{} connected!", conn.getRemoteSocketAddress().getAddress().getHostAddress()); + } + + @Override + public void onClose(WebSocket conn, int code, String reason, boolean remote) { + log.info("Connection {} has been closed! ({} {} {})", conn, code, reason, remote); + } + + @Override + public void onMessage(WebSocket conn, String message) { + log.info("{} says {}", conn, message); + } + + @Override + public void onError(WebSocket conn, Exception ex) { + log.error("Something went wrong", ex); + } + + @Override + public void onStart() { + log.info("Running the server on port {}!", getPort()); + setConnectionLostTimeout(0); + setConnectionLostTimeout(100); + } + + public static MaxonServer getInstance() { + if (instance == null) instance = new MaxonServer(); + return instance; + } +} diff --git a/server/src/kz/ilotterytea/maxon/ServerLauncher.java b/server/src/kz/ilotterytea/maxon/ServerLauncher.java new file mode 100644 index 0000000..4fdd174 --- /dev/null +++ b/server/src/kz/ilotterytea/maxon/ServerLauncher.java @@ -0,0 +1,8 @@ +package kz.ilotterytea.maxon; + +public class ServerLauncher { + public static void main(String[] args) { + MaxonServer server = MaxonServer.getInstance(); + server.start(); + } +} diff --git a/server/src/main/resources/logback.xml b/server/src/main/resources/logback.xml new file mode 100644 index 0000000..4b08185 --- /dev/null +++ b/server/src/main/resources/logback.xml @@ -0,0 +1,15 @@ +<configuration> + + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> + <!-- encoders are assigned the type + ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --> + <encoder> + <pattern>%cyan(%d{HH:mm:ss.SSS}) %gray([%thread]) %highlight(%-5level) %magenta(%logger{36}) - %msg%n + </pattern> + </encoder> + </appender> + + <root level="info"> + <appender-ref ref="STDOUT"/> + </root> +</configuration> diff --git a/settings.gradle b/settings.gradle index 99367df..11520ca 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1,2 @@ -include 'desktop', 'android', 'core' +include 'desktop', 'android', 'core', 'server', 'shared' diff --git a/shared/build.gradle b/shared/build.gradle new file mode 100644 index 0000000..c04bf64 --- /dev/null +++ b/shared/build.gradle @@ -0,0 +1,7 @@ +java { + sourceCompatibility = JavaVersion.VERSION_17 +} + +sourceSets.main.java.srcDirs = ["src/"] + +eclipse.project.name = appName + "-shared"
\ No newline at end of file |
