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"); + } +}