From a13c58531007d867cc99289ec4ca10944b806a1c Mon Sep 17 00:00:00 2001 From: Astatin3 <77305074+Astatin3@users.noreply.github.com> Date: Sun, 14 Jul 2024 13:24:00 -0600 Subject: [PATCH] Make use tcp server --- .gradle/8.8/checksums/checksums.lock | Bin 17 -> 40 bytes .gradle/8.8/checksums/md5-checksums.bin | Bin 25747 -> 25747 bytes .gradle/8.8/checksums/sha1-checksums.bin | Bin 43877 -> 43877 bytes .../8.8/executionHistory/executionHistory.bin | Bin 836711 -> 836711 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 40 bytes .gradle/8.8/fileHashes/fileHashes.bin | Bin 27647 -> 27647 bytes .gradle/8.8/fileHashes/fileHashes.lock | Bin 17 -> 40 bytes .../8.8/fileHashes/resourceHashesCache.bin | Bin 23325 -> 23495 bytes .../buildOutputCleanup.lock | Bin 17 -> 40 bytes .gradle/file-system.probe | Bin 8 -> 8 bytes .idea/modules.xml | 2 + .idea/modules/no-more-render.main.iml | 4 + .idea/runConfigurations/Minecraft_Client.xml | 22 +++--- .idea/runConfigurations/Minecraft_Server.xml | 2 +- .../mixin/client/HeadlessMinecraftClient.java | 74 ++++++++++++------ 15 files changed, 68 insertions(+), 36 deletions(-) diff --git a/.gradle/8.8/checksums/checksums.lock b/.gradle/8.8/checksums/checksums.lock index 771f6048c226859e1c423de1be13621f472cf370..d707e6571d93f6e208afb6b786cb432a597bd442 100644 GIT binary patch literal 40 scmZR+a;!=`ZUc`Y0~j#%Ff%Y56v)2*-%+@7+C2s~Lla9w14{-50OcGCoB#j- literal 17 VcmZR+a;!=`ZUc`Y0~jzh0RS(g1O5O2 diff --git a/.gradle/8.8/checksums/md5-checksums.bin b/.gradle/8.8/checksums/md5-checksums.bin index b48c9e03a74edfbe426cf9901b20bb25fdc94532..6612955c63e46663003a2a94b0b2a03a9b7fd8f1 100644 GIT binary patch delta 37 pcmbPyl5z4$#tq3HEQ|8KrcX}y&;v4lpPxJv%=o*0^J$M0(f~)s5#Im+ delta 37 pcmbPyl5z4$#tq3HEc1^()tH>_p$BBVE}A?O%y^r%`LxFgX#hxo5y}7n diff --git a/.gradle/8.8/checksums/sha1-checksums.bin b/.gradle/8.8/checksums/sha1-checksums.bin index 7f4ccd33e3c6ccdbc64da7daea5e5bc4b98465ce..55d6fe47a427c55668b8abbc6df0ce1be948398a 100644 GIT binary patch delta 45 zcmaEQjp^w%rVW=pSQh1dO`p8bLu&Fzj}{>3_xZ_{o*6*K-}RH%drEEo@0pee03?qW AUH||9 delta 38 tcmaEQjp^w%rVW=pCeQVdoBYwEWwO1e+~kv<5|dYZngOxg=Kr2)i2!(f5=H<3 diff --git a/.gradle/8.8/executionHistory/executionHistory.bin b/.gradle/8.8/executionHistory/executionHistory.bin index 4f3875baf09be69ece2cba4966cafc216898c669..fdf434f674ce650cc662ddd30be17516261d5ff6 100644 GIT binary patch delta 1564 zcmaKsZA?>F7{`0=ZKb_j^tOOB-E0NI$P^LUlER1x4i#|<;^qh-S_@LBEmX@}g$=Y3 z63`(<&n5~?qkv-!1$U+q1q#I%BF=42Wiv8)cMdUzHz(aKe1oMQo|BW`^PHUj|9MW% zV4-BNP*NhW0|QeG24nh?Yce0l)J2Dn^3hQ~kbU8`KSeD|P^l6V_bL+ol68KHWVt>| zt4cVarMjDM%lf0BLACRdKy`xs}i{NBA_=G*X6<=q;XQzNGRG$XC zxhyiA2DzKP^amt~I=NDnxks*7rlh7wm3p0WZ<0c=QEwb}iIOr#XlohZ(37lUC*KF) zv+el>07?eIO)!CuXt2z@wXe%d;;_1@mzFu6m#V8 zPByPdvi~=>YM(?WyEIlNtIZv4f%L zEw%_%&0v0*sHmEgKItf66dJ~<4061Cz}jqae?DLW27_xs91Ereu-uI!gJ~Mv2{mAN zS?n4c^1b7)e=f|+^3kNNpz=zfQ@TG7~2eBOP+lS{D1ZZ$Nm~^n{SVV^%3ed16WUvi858cOJ zZNL1TVJgk>d5?pkxXgi?j~MkZWC*yx{#48p7NuhMAZIzDN8%i|%UNoEf1yRhiLoxR z3sXW7CvzdSaiHjLY#Az8&QW5b$o6nS#87Qf@zubPZ(Hu-7tPjwj1<*()sEClAqvp>8hO`s$ zaJY@wwJ=5dd>`se|Ch3H%5@nbLxb%^G!VY4rJ8sn`lUgJfyIGJVyyHRtJ$td>+q{< z;Mi6mhdvEuUq#5!|jaDqD`b^r4%JRFs5U34eB8=wg~d#`t(D|M{%Vr?a;~m#G0vbi92sr? zre^Wj#roK|o7&!B8f`H%-wFS!-u?3at+$V!mBi7ga@oOD|E6nMYAvs?(d5sh(F^ww zUDL3|f5pth81spoXEZY1DX#kJZ6ELPp^D)N#fLj-H1PcunY}JgkQ?i5xb~5;lX*g& voCW(^$x;~LLsE0j&{iMvI&gmD*LM6x6f3*DI5(n(sdoRtY88pZWLW8cH4&d} delta 1538 zcmaKsYfPI}7{`0ww}rO6x|e%HMhlF%=*q3!L_}b+0ORHm(STe^xwPwrTY;910geqa zM#QmkaDahzV`O0hLp?!ZQZ7|s;}T3{fYCV_psnEwv1|u+ZFlECm+|SbkHM< z83cLHF%#6XgLz}zj|xcdRg+rl`0yd0i!-l!4C;F-7%HU$8qItMF?X>%02`fHzA#6D zTcIutznmCgM17{e%akr~Jnmn9-JM_61@Sm(ND!s|B{un7*{EV)aXB@Ol~u8PUavx* ziSaVbT*tA^xSM1%UlBgH`F-4|{UBU#0A8@=2w=dc2^b6IO7VHX9eg)p&QZ9vaIfKu z@%phh(5>rw*=6B+*$3RA)(vprO&M+j14h^mP$t96EBzEW6?7^XRG3gO z9qZc>eQ)ex4uhA0EnLjT4#VnfYyz?z*u_Y2nrVBDG;A;2 z<*^d2d2dS_twx*HDv|=Clx-%YA*vg=$LpCG z38kYRompi%Nq;imJc!)pZOT)0KTCsEkh-_y$eK^20MhXC!gmUp`Eb*P5HLnp#;Cu_ z)s;AI+WI>+6%4?s0m8%1@clNwNdAxjnqdr|u!Rp@30vm0zF2UP4o_$a4&=BIWa-`} zzrBpp$Xkk-8MRU|PKHf|RPE3@DU_647;*m?*-^Kuv0Ccsbf%Dhq;Od?8(!*=%xI8Q zp4+0(NGcw3*J(OhDE+Iu8q2&+A?N$r3$n-jsN&G8Yl}tQ0~9j+L+DrJ5*1w35|^N# oJ3;O_L(%R;AFz(@*bp6ae#F&iHzpG!Cwlw;poAlyfC#(vA5P?z&j0`b diff --git a/.gradle/8.8/executionHistory/executionHistory.lock b/.gradle/8.8/executionHistory/executionHistory.lock index 9bacc8228819fee8b57ab2a135ad9690fd6cc08d..c3af91f11692c44c76f9c50a4b719169a39549c9 100644 GIT binary patch literal 40 scmZQpDEaML5?SC!j3he%V=u!k{Nge~6p^2rTfh7Y20P>#-`v3p{ literal 17 UcmZQpDEaML5?S#5#togxEW2-N9G~2qEG6;9^w7lDL9CUtdushxu;eN;FfdNoeN$6^^8Vx_ zEW0npXiZ+|FEx2#iW`X22Il0ahyXbWO<<0BDo7?_+UCYo2PTDw!dvF7m)p2(o8XVL zQ}$eofS4xzoB<594JJQK?*iHVe{z0?l!E;?)hmJP5}%z&R_D@rza|KxTH`-NwSnE_ zl^JRv)#oQ)&d>ugG?^!}X6o^P+zwH~wqo6?334D{_1jS!Zy4glNf}1XKwG8a_Zm4*(9Fm4g5P delta 434 zcmex=o$>#5#togxEGsT;IXSsESxUlh&9`J%mB(_64}Loz?Q?D?0|VoP6_>W|oxDH! z2vF75qmvicX5XX9C@sO)B5 zsR%}aga7xw)cfA^9V*&9IaWH5UsunKJu)gADrUcVsk8xyK!S~hUZLNwZm4MD=CjI& z85wVGRQw^n(ZGRgv!llyp~<0P{Pq8*GR)_iw#Acg3!{2cQx8zRoH3A)1Y$uD7I@q@ zzwc=JEAFd4UqWkLPpV?7X#JD2UdQn6y`U++tZ^l&df9v4~{TyyfCm+u6w|LGK dj!+>3v*yzRhI@zGJ#Uv8xi+fid2R(M0RXqu Mu`sv_vq4DQ5**(Xg8%>k diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 41b2dd13ce214f93ec471111e8f0f7726b6368fc..a9f5f70b36922c30214d048346504fd5e73424ca 100644 GIT binary patch literal 40 scmZSn1l<4t diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index 0cfd5b539748f05de93ea809b92f2be2e5bfcfcc..553cc357bb3ba7ba43a252c093c52866586c5e5d 100644 GIT binary patch literal 8 PcmZQzV4Se~^w)g=3eyA2 literal 8 PcmZQzV4Sc>N~aG12ATp0 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); } }