From 55ba42864c83dda65278e7b75bad2d45f1559177 Mon Sep 17 00:00:00 2001
From: alterdekim <alterwain@protonmail.com>
Date: Wed, 23 Oct 2024 15:53:37 +0300
Subject: [PATCH] Re-implementing mod functionality in a new way

---
 build.gradle                                  |  3 +++
 gradle.properties                             |  2 +-
 .../alterwain/offlineskin/OfflineSkinMod.java |  8 ++++++
 .../alterwain/offlineskin/http/WebServer.java | 26 +++++++++++++++++++
 4 files changed, 38 insertions(+), 1 deletion(-)
 create mode 100644 src/main/java/alterwain/offlineskin/http/WebServer.java

diff --git a/build.gradle b/build.gradle
index e3bb56d..b3d0517 100644
--- a/build.gradle
+++ b/build.gradle
@@ -87,6 +87,8 @@ dependencies {
 
 	modImplementation "ModMenu:ModMenu:${project.mod_menu_version}"
 
+
+
 	implementation "org.slf4j:slf4j-api:1.8.0-beta4"
 	implementation "org.apache.logging.log4j:log4j-slf4j18-impl:2.16.0"
 
@@ -98,6 +100,7 @@ dependencies {
 	implementation("org.apache.logging.log4j:log4j-1.2-api:${log4jVersion}")
 
 	include(implementation("org.apache.commons:commons-lang3:3.12.0"))
+	include(implementation("org.nanohttpd:nanohttpd:2.3.1"))
 }
 
 java {
diff --git a/gradle.properties b/gradle.properties
index 7645903..7c78ddf 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -11,6 +11,6 @@ mod_menu_version=2.0.5
 halplibe_version=3.5.4
 
 # Mod
-mod_version=1.0.0
+mod_version=1.0.1
 mod_group=alterdekim
 mod_name=offlineskin
diff --git a/src/main/java/alterwain/offlineskin/OfflineSkinMod.java b/src/main/java/alterwain/offlineskin/OfflineSkinMod.java
index aa50c45..68c0b11 100644
--- a/src/main/java/alterwain/offlineskin/OfflineSkinMod.java
+++ b/src/main/java/alterwain/offlineskin/OfflineSkinMod.java
@@ -1,5 +1,6 @@
 package alterwain.offlineskin;
 
+import alterwain.offlineskin.http.WebServer;
 import net.fabricmc.api.ModInitializer;
 import net.minecraft.core.Global;
 import org.slf4j.Logger;
@@ -39,6 +40,13 @@ public class OfflineSkinMod implements ModInitializer, GameStartEntrypoint, Reci
     @Override
     public void onInitialize() {
         LOGGER.info("OfflineSkins initialized.");
+		new Thread(() -> {
+			try {
+				new WebServer();
+			} catch (IOException e) {
+				LOGGER.error(e.getMessage());
+			}
+		}).start();
     }
 
 	@Override
diff --git a/src/main/java/alterwain/offlineskin/http/WebServer.java b/src/main/java/alterwain/offlineskin/http/WebServer.java
new file mode 100644
index 0000000..549a373
--- /dev/null
+++ b/src/main/java/alterwain/offlineskin/http/WebServer.java
@@ -0,0 +1,26 @@
+package alterwain.offlineskin.http;
+
+import fi.iki.elonen.NanoHTTPD;
+
+import java.io.IOException;
+import java.util.Map;
+
+public class WebServer extends NanoHTTPD {
+	public WebServer() throws IOException {
+		super(8080);
+		start(NanoHTTPD.SOCKET_READ_TIMEOUT, false);
+		System.out.println("\nRunning! Point your browsers to http://localhost:8080/ \n");
+	}
+
+	@Override
+	public Response serve(IHTTPSession session) {
+		String msg = "<html><body><h1>Hello server</h1>\n";
+		Map<String, String> parms = session.getParms();
+		if (parms.get("username") == null) {
+			msg += "<form action='?' method='get'>\n  <p>Your name: <input type='text' name='username'></p>\n" + "</form>\n";
+		} else {
+			msg += "<p>Hello, " + parms.get("username") + "!</p>";
+		}
+		return newFixedLengthResponse(msg + "</body></html>\n");
+	}
+}