1212import meteordevelopment .meteorclient .settings .*;
1313import meteordevelopment .meteorclient .systems .modules .Module ;
1414import meteordevelopment .orbit .EventHandler ;
15+ import net .minecraft .block .SignBlock ;
1516import net .minecraft .block .entity .SignBlockEntity ;
1617import net .minecraft .client .gui .screen .ingame .SignEditScreen ;
18+ import net .minecraft .network .packet .c2s .play .CloseHandledScreenC2SPacket ;
1719import net .minecraft .network .packet .c2s .play .PlayerInteractBlockC2SPacket ;
1820import net .minecraft .network .packet .c2s .play .UpdateSignC2SPacket ;
1921import net .minecraft .network .packet .s2c .play .SignEditorOpenS2CPacket ;
2527import org .reflections .vfs .Vfs ;
2628
2729public class BetterAutoSign extends Module {
30+ BlockPos last = new BlockPos (0 ,-500 ,0 );
2831
2932 private final SettingGroup sgGeneral = this .settings .createGroup ("Front" );
3033
@@ -51,21 +54,34 @@ public BetterAutoSign() {
5154 }
5255
5356 @ EventHandler
54- private void onOpenScreen (OpenScreenEvent event ) {
55- if (!(event .screen instanceof SignEditScreen )) return ;
56-
57- SignBlockEntity sign = ((AbstractSignEditScreenAccessor ) event .screen ).getSign ();
58-
59- if (mode .get ().equals (sides .front )) mc .player .networkHandler .sendPacket (new UpdateSignC2SPacket (sign .getPos (), true , isempty (line1 .get ()), isempty (line2 .get ()), isempty (line3 .get ()), isempty (line4 .get ())));
60- if (mode .get ().equals (sides .back )) mc .player .networkHandler .sendPacket (new UpdateSignC2SPacket (sign .getPos (), false , isempty (line1 .get ()), isempty (line2 .get ()), isempty (line3 .get ()), isempty (line4 .get ())));
61-
62- if (mode .get ().equals (sides .both )){
63- mc .player .networkHandler .sendPacket (new UpdateSignC2SPacket (sign .getPos (), true , isempty (line1 .get ()), isempty (line2 .get ()), isempty (line3 .get ()), isempty (line4 .get ())));
64- mc .player .networkHandler .sendPacket (new PlayerInteractBlockC2SPacket (Hand .MAIN_HAND ,new BlockHitResult (new Vec3d (sign .getPos ().getX (), sign .getPos ().getY (), sign .getPos ().getZ ()), getop (mc .player .getHorizontalFacing ()), sign .getPos (), false ), 0 ));
65- mc .player .networkHandler .sendPacket (new UpdateSignC2SPacket (sign .getPos (), false , isempty (line1 .get ()), isempty (line2 .get ()), isempty (line3 .get ()), isempty (line4 .get ())));
57+ private void packet (PacketEvent .Receive event ){
58+ if (event .packet instanceof SignEditorOpenS2CPacket packet ){
59+ event .cancel ();
60+ if (packet .getPos ().equals (last )) return ;
61+
62+ BlockPos sign = new BlockPos (packet .getPos ());
63+
64+ if (mode .get ().equals (sides .front )) mc .player .networkHandler .sendPacket (new UpdateSignC2SPacket (sign , true , isempty (line1 .get ()), isempty (line2 .get ()), isempty (line3 .get ()), isempty (line4 .get ())));
65+ if (mode .get ().equals (sides .back )) mc .player .networkHandler .sendPacket (new UpdateSignC2SPacket (sign , false , isempty (line1 .get ()), isempty (line2 .get ()), isempty (line3 .get ()), isempty (line4 .get ())));
66+
67+ if (mode .get ().equals (sides .both )){
68+ mc .player .networkHandler .sendPacket (new UpdateSignC2SPacket (sign , true , isempty (line1 .get ()), isempty (line2 .get ()), isempty (line3 .get ()), isempty (line4 .get ())));
69+ mc .player .networkHandler .sendPacket (new PlayerInteractBlockC2SPacket (Hand .MAIN_HAND ,new BlockHitResult (new Vec3d (sign .getX (), sign .getY (), sign .getZ ()), getop (mc .player .getHorizontalFacing ()), sign , false ), 0 ));
70+ mc .player .networkHandler .sendPacket (new UpdateSignC2SPacket (sign , false , isempty (line1 .get ()), isempty (line2 .get ()), isempty (line3 .get ()), isempty (line4 .get ())));
71+ }
72+
73+ //this is to stop the packet spam loop when using 'both' mode
74+ last = sign ;
75+ new Thread (() -> {
76+ try {
77+ Thread .sleep (500 );
78+ } catch (InterruptedException e ) {
79+ throw new RuntimeException (e );
80+ }
81+
82+ last = null ;
83+ }).start ();
6684 }
67-
68- event .cancel ();
6985 }
7086
7187 private String isempty (String text ){
@@ -81,8 +97,8 @@ private Direction getop(Direction dir){
8197 }
8298
8399 public enum sides {
84- back ,
85100 front ,
101+ back ,
86102 both
87103 }
88104}
0 commit comments