diff --git a/.gradle/8.8/checksums/checksums.lock b/.gradle/8.8/checksums/checksums.lock index 771f604..d707e65 100644 Binary files a/.gradle/8.8/checksums/checksums.lock and b/.gradle/8.8/checksums/checksums.lock differ diff --git a/.gradle/8.8/checksums/md5-checksums.bin b/.gradle/8.8/checksums/md5-checksums.bin index b48c9e0..6612955 100644 Binary files a/.gradle/8.8/checksums/md5-checksums.bin and b/.gradle/8.8/checksums/md5-checksums.bin differ diff --git a/.gradle/8.8/checksums/sha1-checksums.bin b/.gradle/8.8/checksums/sha1-checksums.bin index 7f4ccd3..55d6fe4 100644 Binary files a/.gradle/8.8/checksums/sha1-checksums.bin and b/.gradle/8.8/checksums/sha1-checksums.bin differ diff --git a/.gradle/8.8/executionHistory/executionHistory.bin b/.gradle/8.8/executionHistory/executionHistory.bin index 4f3875b..fdf434f 100644 Binary files a/.gradle/8.8/executionHistory/executionHistory.bin and b/.gradle/8.8/executionHistory/executionHistory.bin differ diff --git a/.gradle/8.8/executionHistory/executionHistory.lock b/.gradle/8.8/executionHistory/executionHistory.lock index 9bacc82..c3af91f 100644 Binary files a/.gradle/8.8/executionHistory/executionHistory.lock and b/.gradle/8.8/executionHistory/executionHistory.lock differ diff --git a/.gradle/8.8/fileHashes/fileHashes.bin b/.gradle/8.8/fileHashes/fileHashes.bin index ea6904d..c6651b4 100644 Binary files a/.gradle/8.8/fileHashes/fileHashes.bin and b/.gradle/8.8/fileHashes/fileHashes.bin differ diff --git a/.gradle/8.8/fileHashes/fileHashes.lock b/.gradle/8.8/fileHashes/fileHashes.lock index eca8ccc..4db083b 100644 Binary files a/.gradle/8.8/fileHashes/fileHashes.lock and b/.gradle/8.8/fileHashes/fileHashes.lock differ diff --git a/.gradle/8.8/fileHashes/resourceHashesCache.bin b/.gradle/8.8/fileHashes/resourceHashesCache.bin index 1dd1fdb..cc403ae 100644 Binary files a/.gradle/8.8/fileHashes/resourceHashesCache.bin and b/.gradle/8.8/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 41b2dd1..a9f5f70 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index 0cfd5b5..553cc35 100644 Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ diff --git a/.idea/modules.xml b/.idea/modules.xml index 8eb9ab9..0e2509d 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,6 +2,8 @@ + + diff --git a/.idea/modules/no-more-render.main.iml b/.idea/modules/no-more-render.main.iml index bf0cfc1..e7cab93 100644 --- a/.idea/modules/no-more-render.main.iml +++ b/.idea/modules/no-more-render.main.iml @@ -14,4 +14,8 @@ + + + + \ No newline at end of file diff --git a/.idea/runConfigurations/Minecraft_Client.xml b/.idea/runConfigurations/Minecraft_Client.xml index 3604b2c..8032c16 100644 --- a/.idea/runConfigurations/Minecraft_Client.xml +++ b/.idea/runConfigurations/Minecraft_Client.xml @@ -1,16 +1,14 @@ - - \ No newline at end of file diff --git a/.idea/runConfigurations/Minecraft_Server.xml b/.idea/runConfigurations/Minecraft_Server.xml index 1ddd8d9..9432063 100644 --- a/.idea/runConfigurations/Minecraft_Server.xml +++ b/.idea/runConfigurations/Minecraft_Server.xml @@ -12,5 +12,5 @@ - + \ No newline at end of file diff --git a/src/client/java/com/astatin3/nomorerender/mixin/client/HeadlessMinecraftClient.java b/src/client/java/com/astatin3/nomorerender/mixin/client/HeadlessMinecraftClient.java index deb8912..506c6af 100644 --- a/src/client/java/com/astatin3/nomorerender/mixin/client/HeadlessMinecraftClient.java +++ b/src/client/java/com/astatin3/nomorerender/mixin/client/HeadlessMinecraftClient.java @@ -18,8 +18,9 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import java.io.BufferedReader; -import java.io.InputStreamReader; +import java.io.*; +import java.net.ServerSocket; +import java.net.Socket; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CountDownLatch; @@ -34,6 +35,9 @@ public class HeadlessMinecraftClient { // System.out.println("#########################################"); // } + BufferedReader reader; + PrintWriter writer; + @Shadow private Thread thread; @Inject(method = "", at = @At("TAIL")) @@ -46,12 +50,36 @@ public class HeadlessMinecraftClient { private void startCommandThread() { Thread commandThread = new Thread(() -> { - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); +// BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String line; try { - while ((line = reader.readLine()) != null) { - parseCommand(line); + ServerSocket serverSocket = new ServerSocket(65000); + System.out.println("Server is listening on port " + 65000); + + while (true) { + Socket socket = serverSocket.accept(); + + System.out.println("New client connected"); + + InputStream input = socket.getInputStream(); + OutputStream output = socket.getOutputStream(); + + reader = new BufferedReader(new InputStreamReader(input)); + writer = new PrintWriter(output, true); + +// line = reader.readLine(); + + do { + line = reader.readLine(); + parseCommand(line); + + } while (!line.equals("bye")); + + socket.close(); + +// reader.next } + } catch (Exception e) { e.printStackTrace(); } @@ -103,7 +131,7 @@ public class HeadlessMinecraftClient { } break; default: - System.out.println("Unknown command: " + command); + writer.println("Unknown command: " + command); } }catch(Exception e){ e.printStackTrace(); @@ -113,7 +141,7 @@ public class HeadlessMinecraftClient { private void listElements() { Screen currentScreen = self.currentScreen; if (currentScreen == null) { - System.out.println("No screen is currently open."); + writer.println("No screen is currently open."); return; } @@ -125,10 +153,10 @@ public class HeadlessMinecraftClient { private void printElements(List elements, int depth, AtomicInteger index) { String indent = " ".repeat(depth); for (Element element : elements) { - System.out.printf("%s%d: %s%n", indent, index.getAndIncrement(), describeElement(element)); + writer.printf("%s%d: %s%n", indent, index.getAndIncrement(), describeElement(element)); if (element instanceof ClickableWidget) { ClickableWidget widget = (ClickableWidget) element; - System.out.printf("%s Message: %s%n", indent, widget.getMessage().getString()); + writer.printf("%s Message: %s%n", indent, widget.getMessage().getString()); } if (element instanceof net.minecraft.client.gui.ParentElement pe) { printElements(pe.children(), depth + 1, index); @@ -147,7 +175,7 @@ public class HeadlessMinecraftClient { private Element findElement(int targetIndex) { Screen currentScreen = self.currentScreen; if (currentScreen == null) { - System.out.println("No screen is currently open."); + writer.println("No screen is currently open."); return null; } @@ -159,7 +187,7 @@ public class HeadlessMinecraftClient { Element targetElement = findElement(targetIndex); if (targetElement == null) { - System.out.println("Invalid element index."); + writer.println("Invalid element index."); return; } @@ -167,12 +195,12 @@ public class HeadlessMinecraftClient { self.execute(() -> { widget.onClick(widget.getX(), widget.getY()); }); - System.out.println("Clicked element: " + describeElement(widget)); + writer.println("Clicked element: " + describeElement(widget)); if (widget.getMessage() != null) { - System.out.println("Message: " + widget.getMessage().getString()); + writer.println("Message: " + widget.getMessage().getString()); } } else { - System.out.println("Element is not clickable: " + describeElement(targetElement)); + writer.println("Element is not clickable: " + describeElement(targetElement)); } } @@ -180,7 +208,7 @@ public class HeadlessMinecraftClient { Element targetElement = findElement(targetIndex); if (targetElement == null) { - System.out.println("Invalid element index."); + writer.println("Invalid element index."); return; } @@ -191,9 +219,9 @@ public class HeadlessMinecraftClient { widget.setText(""); widget.write(text); }); - System.out.println("Wrote in element: " + describeElement(widget)); + writer.println("Wrote in element: " + describeElement(widget)); } else { - System.out.println("Element is not a TextFieldWidget: " + describeElement(targetElement)); + writer.println("Element is not a TextFieldWidget: " + describeElement(targetElement)); } } @@ -222,9 +250,9 @@ public class HeadlessMinecraftClient { self.keyboard.onKey(handle, keyCode, 0, GLFW.GLFW_PRESS, 0); self.keyboard.onKey(handle, keyCode, 0, GLFW.GLFW_RELEASE, 0); }); - System.out.println("Pressed key: " + keyName); + writer.println("Pressed key: " + keyName); } else { - System.out.println("Unknown key: " + keyName); + writer.println("Unknown key: " + keyName); } } @@ -235,9 +263,9 @@ public class HeadlessMinecraftClient { self.execute(() -> { self.keyboard.onKey(handle, keyCode, 0, GLFW.GLFW_PRESS, 0); }); - System.out.println("Key down: " + keyName); + writer.println("Key down: " + keyName); } else { - System.out.println("Unknown key: " + keyName); + writer.println("Unknown key: " + keyName); } } @@ -248,9 +276,9 @@ public class HeadlessMinecraftClient { self.execute(() -> { self.keyboard.onKey(handle, keyCode, 0, GLFW.GLFW_RELEASE, 0); }); - System.out.println("Key up: " + keyName); + writer.println("Key up: " + keyName); } else { - System.out.println("Unknown key: " + keyName); + writer.println("Unknown key: " + keyName); } }