summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorilotterytea <iltsu@alright.party>2025-01-04 19:25:10 +0500
committerilotterytea <iltsu@alright.party>2025-01-04 19:25:10 +0500
commitf967b2bfd478d1f646d1acb236312d605497a0b9 (patch)
tree4d583308b08cd58ee19366ac3321a75a37b56dac
parent53958edbe7519dc7e842d896d0ada1e0c5cb859a (diff)
feat: 'server' and 'shared' modules
-rw-r--r--.gitignore12
-rw-r--r--build.gradle21
-rw-r--r--gradle.properties2
-rw-r--r--server/build.gradle48
-rw-r--r--server/src/kz/ilotterytea/maxon/MaxonServer.java52
-rw-r--r--server/src/kz/ilotterytea/maxon/ServerLauncher.java8
-rw-r--r--server/src/main/resources/logback.xml15
-rw-r--r--settings.gradle2
-rw-r--r--shared/build.gradle7
9 files changed, 165 insertions, 2 deletions
diff --git a/.gitignore b/.gitignore
index dcd7fa4..cc79c38 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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