Jan 1 kuukausi sitten
vanhempi
säilyke
aea81121eb
3 muutettua tiedostoa jossa 102 lisäystä ja 0 poistoa
  1. 42 0
      server/GameServer.java
  2. 16 0
      server/ServerLauncher.java
  3. 44 0
      server/build.gradle

+ 42 - 0
server/GameServer.java

@@ -0,0 +1,42 @@
+package me.lethunderhawk.server;
+
+import com.esotericsoftware.kryonet.Connection;
+import com.esotericsoftware.kryonet.Listener;
+import com.esotericsoftware.kryonet.Server;
+import me.lethunderhawk.network.NetworkRegister;
+import me.lethunderhawk.network.Packets;
+
+import java.io.IOException;
+
+public class GameServer {
+
+    private final Server server;
+
+    public GameServer() throws IOException {
+
+        server = new Server();
+
+        registerPackets();
+
+        server.start();
+
+        server.bind(54555, 54777);
+
+        server.addListener(new Listener() {
+
+            @Override
+            public void received(Connection connection, Object object) {
+                if(object instanceof Packets.PlayerLoginPacket packet) {
+                    server.sendToAllExceptUDP(connection.getID(), packet);
+                }
+                if(object instanceof Packets.PlayerPositionPacket packet) {
+                    server.sendToAllExceptUDP(connection.getID(), packet);
+                }
+            }
+        });
+    }
+
+    private void registerPackets() {
+        NetworkRegister.register(server.getKryo());
+    }
+}

+ 16 - 0
server/ServerLauncher.java

@@ -0,0 +1,16 @@
+package me.lethunderhawk.server;
+
+/** Launches the server application. */
+public class ServerLauncher {
+
+    public static void main(String[] args) {
+
+        try {
+
+            new GameServer();
+            System.out.println("Server gestartet.");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 44 - 0
server/build.gradle

@@ -0,0 +1,44 @@
+apply plugin: 'application'
+
+
+java.sourceCompatibility = 21
+java.targetCompatibility = 21
+if (JavaVersion.current().isJava9Compatible()) {
+        compileJava.options.release.set(21)
+}
+
+application.mainClass = 'me.lethunderhawk.server.ServerLauncher'
+application.applicationName = appName
+eclipse.project.name = appName + '-server'
+
+dependencies {
+  implementation project(':shared')
+  implementation project(":core")
+  implementation "com.esotericsoftware:kryonet:2.22.0-RC1"
+}
+
+jar {
+  archiveBaseName.set(appName)
+// the duplicatesStrategy matters starting in Gradle 7.0; this setting works.
+  duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+  dependsOn configurations.runtimeClasspath
+  from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
+// these "exclude" lines remove some unnecessary duplicate files in the output JAR.
+  exclude('META-INF/INDEX.LIST', 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA')
+  dependencies {
+    exclude('META-INF/INDEX.LIST', 'META-INF/maven/**')
+  }
+// setting the manifest makes the JAR runnable.
+// enabling native access helps avoid a warning when Java 24 or later runs the JAR.
+  manifest {
+    attributes 'Main-Class': application.mainClass, 'Enable-Native-Access': 'ALL-UNNAMED', 'Multi-Release': 'true'
+  }
+// this last step may help on some OSes that need extra instruction to make runnable JARs.
+  doLast {
+    file(archiveFile).setExecutable(true, false)
+  }
+}
+
+// Equivalent to the jar task; here for compatibility with gdx-setup.
+task dist(dependsOn: [jar]) {
+}