diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..c1962a7
Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/src/main/java/dev/coredoes/coreclient/CoreClient.java b/src/main/java/dev/coredoes/coreclient/CoreClient.java
index e029358..dea7390 100644
--- a/src/main/java/dev/coredoes/coreclient/CoreClient.java
+++ b/src/main/java/dev/coredoes/coreclient/CoreClient.java
@@ -3,6 +3,7 @@ package dev.coredoes.coreclient;
 import dev.coredoes.coreclient.gui.Category;
 import dev.coredoes.coreclient.gui.ClickGUI;
 import dev.coredoes.coreclient.gui.module.*;
+import dev.coredoes.coreclient.module.bypass.BotMovement;
 import meteordevelopment.orbit.EventBus;
 import net.fabricmc.api.ClientModInitializer;
 import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
@@ -43,6 +44,8 @@ public class CoreClient implements ClientModInitializer {
         Category.HUD.modules.add(new WatermarkModule());
         Category.HUD.modules.add(new LogoModule());
 
+        Category.BYPASS.modules.add(new BotMovement());
+
         LOGGER.info("[Stage 4/4: GuiEventInit] Registering GUI events");
 
         ClientTickEvents.END_CLIENT_TICK.register(client -> {
diff --git a/src/main/java/dev/coredoes/coreclient/event/Cancellable.java b/src/main/java/dev/coredoes/coreclient/event/Cancellable.java
new file mode 100644
index 0000000..d2cd7d7
--- /dev/null
+++ b/src/main/java/dev/coredoes/coreclient/event/Cancellable.java
@@ -0,0 +1,17 @@
+package dev.coredoes.coreclient.event;
+
+import meteordevelopment.orbit.ICancellable;
+
+public class Cancellable implements ICancellable {
+    private boolean cancelled = false;
+
+    @Override
+    public void setCancelled(boolean cancelled) {
+        this.cancelled = cancelled;
+    }
+
+    @Override
+    public boolean isCancelled() {
+        return cancelled;
+    }
+}
diff --git a/src/main/java/dev/coredoes/coreclient/event/ConnectEvent.java b/src/main/java/dev/coredoes/coreclient/event/ConnectEvent.java
new file mode 100644
index 0000000..475c96f
--- /dev/null
+++ b/src/main/java/dev/coredoes/coreclient/event/ConnectEvent.java
@@ -0,0 +1,9 @@
+package dev.coredoes.coreclient.event;
+
+public class ConnectEvent {
+    private static final ConnectEvent INSTANCE = new ConnectEvent();
+
+    public static ConnectEvent get() {
+        return INSTANCE;
+    }
+}
diff --git a/src/main/java/dev/coredoes/coreclient/event/DisconnectEvent.java b/src/main/java/dev/coredoes/coreclient/event/DisconnectEvent.java
new file mode 100644
index 0000000..0d84c86
--- /dev/null
+++ b/src/main/java/dev/coredoes/coreclient/event/DisconnectEvent.java
@@ -0,0 +1,9 @@
+package dev.coredoes.coreclient.event;
+
+public class DisconnectEvent {
+    private static final DisconnectEvent INSTANCE = new DisconnectEvent();
+
+    public static DisconnectEvent get() {
+        return INSTANCE;
+    }
+}
diff --git a/src/main/java/dev/coredoes/coreclient/event/PacketEvent.java b/src/main/java/dev/coredoes/coreclient/event/PacketEvent.java
new file mode 100644
index 0000000..c7cc36b
--- /dev/null
+++ b/src/main/java/dev/coredoes/coreclient/event/PacketEvent.java
@@ -0,0 +1,37 @@
+package dev.coredoes.coreclient.event;
+
+import net.minecraft.network.packet.Packet;
+
+public class PacketEvent extends Cancellable {
+    public Packet<?> packet;
+
+    public static class Receive extends PacketEvent {
+        private static final Receive INSTANCE = new Receive();
+
+        public static Receive get(Packet<?> packet) {
+            INSTANCE.setCancelled(false);
+            INSTANCE.packet = packet;
+            return INSTANCE;
+        }
+    }
+
+    public static class Send extends PacketEvent {
+        private static final Send INSTANCE = new Send();
+
+        public static Send get(Packet<?> packet) {
+            INSTANCE.setCancelled(false);
+            INSTANCE.packet = packet;
+            return INSTANCE;
+        }
+    }
+
+    public static class Sent extends PacketEvent {
+        private static final Sent INSTANCE = new Sent();
+
+        public static Sent get(Packet<?> packet) {
+            INSTANCE.setCancelled(false);
+            INSTANCE.packet = packet;
+            return INSTANCE;
+        }
+    }
+}
diff --git a/src/main/java/dev/coredoes/coreclient/gui/Category.java b/src/main/java/dev/coredoes/coreclient/gui/Category.java
index 0f48b99..a5d03c5 100644
--- a/src/main/java/dev/coredoes/coreclient/gui/Category.java
+++ b/src/main/java/dev/coredoes/coreclient/gui/Category.java
@@ -8,34 +8,20 @@ import java.util.Random;
 import java.util.stream.Stream;
 
 import dev.coredoes.coreclient.gui.module.Module;
-import dev.coredoes.coreclient.gui.setting.BooleanSetting;
-import dev.coredoes.coreclient.gui.setting.ColorSetting;
-import dev.coredoes.coreclient.gui.setting.DoubleSetting;
-import dev.coredoes.coreclient.gui.setting.IntegerSetting;
-import dev.coredoes.coreclient.gui.setting.Setting;
-import dev.coredoes.coreclient.gui.setting.StringSetting;
 import com.lukflug.panelstudio.setting.ICategory;
 import com.lukflug.panelstudio.setting.IClient;
 import com.lukflug.panelstudio.setting.IModule;
 
 public enum Category implements ICategory {
-    COMBAT("Combat"),EXPLOITS("Exploits"),HUD("HUD"),MISCELLANEOUS("Miscellaneous"),MOVEMENT("Movement"),OTHER("Other"),RENDER("Render"),WORLD("World");
+    COMBAT("Combat"),EXPLOITS("Exploits"),HUD("HUD"),MISCELLANEOUS("Miscellaneous"),MOVEMENT("Movement"),OTHER("Other"),RENDER("Render"),WORLD("World"),BYPASS("Bypass");
     public final String displayName;
     public final List<Module> modules=new ArrayList<Module>();
-    public static Random random=new Random();
 
     private Category (String displayName) {
         this.displayName=displayName;
     }
 
-    public static void init() {
-        for (Category category: Category.values()) {
-            int count=random.nextInt(6)+5;
-            for (int i=0;i<count;i++) {
-                if (category!=OTHER && category!=HUD) category.modules.add(generateRandomModule());
-            }
-        }
-    }
+    public static void init() {}
 
     @Override
     public String getDisplayName() {
@@ -56,53 +42,5 @@ public enum Category implements ICategory {
         };
     }
 
-    public static Module generateRandomModule() {
-        Module module=new Module(generateRandomName(5,10),generateRandomName(10,20),()->true,random.nextInt(2)==0);
-        int count=random.nextInt(6)+5;
-        for (int i=0;i<count;i++) {
-            module.settings.add(generateRandomSetting());
-        }
-        return module;
-    }
 
-    public static Setting<?> generateRandomSetting() {
-        String displayName=generateRandomName(5,10);
-        String description=generateRandomName(10,20);
-        int type=random.nextInt(6);
-        int min=random.nextInt(50),max=random.nextInt(50)+50;
-        boolean alpha=random.nextInt(2)==0;
-        boolean rainbow=random.nextInt(2)==0;
-        Color color=new Color(random.nextInt(256),random.nextInt(256),random.nextInt(256),alpha?random.nextInt(256):255);
-        switch (type) {
-            case 0:
-                return new BooleanSetting(displayName,displayName,description,()->true,random.nextInt(2)==0);
-            case 1:
-                return new ColorSetting(displayName,displayName,description,()->true,alpha,rainbow,color,rainbow?random.nextInt(2)==0:false);
-            case 2:
-                return new DoubleSetting(displayName,displayName,description,()->true,min,max,random.nextDouble()*(max-min)+min);
-            case 4:
-                return new IntegerSetting(displayName,displayName,description,()->true,min,max,random.nextInt(max-min+1)+min);
-            default:
-                return new StringSetting(displayName,displayName,description,()->true,generateRandomName(5,10));
-        }
-    };
-
-    public static String generateRandomName (int min, int max) {
-        int length=random.nextInt(max-min+1)+min;
-        String s="";
-        for (int i=0;i<length;i++) {
-            int type=random.nextInt(5);
-            switch (type) {
-                case 0:
-                    s+=' ';
-                    break;
-                case 1:
-                    s+=(char)('A'+random.nextInt(26));
-                    break;
-                default:
-                    s+=(char)('a'+random.nextInt(26));
-            }
-        }
-        return s;
-    }
 }
\ No newline at end of file
diff --git a/src/main/java/dev/coredoes/coreclient/gui/ClickGUI.java b/src/main/java/dev/coredoes/coreclient/gui/ClickGUI.java
index e6afff1..925231a 100644
--- a/src/main/java/dev/coredoes/coreclient/gui/ClickGUI.java
+++ b/src/main/java/dev/coredoes/coreclient/gui/ClickGUI.java
@@ -94,7 +94,7 @@ public class ClickGUI extends MinecraftHUDGUI {
         inter=new GUIInterface(true) {
             @Override
             protected String getResourcePrefix() {
-                return "examplemod:";
+                return "coreclient:";
             }
         };
         // Instantiating theme ...
diff --git a/src/main/java/dev/coredoes/coreclient/gui/module/ClickGUIModule.java b/src/main/java/dev/coredoes/coreclient/gui/module/ClickGUIModule.java
index d910940..ee7ec6d 100644
--- a/src/main/java/dev/coredoes/coreclient/gui/module/ClickGUIModule.java
+++ b/src/main/java/dev/coredoes/coreclient/gui/module/ClickGUIModule.java
@@ -13,7 +13,7 @@ public class ClickGUIModule extends Module {
     public static final IntegerSetting animationSpeed=new IntegerSetting("Animation Speed","animationSpeed","The speed of GUI animations.",()->true,0,1000,200);
     public static final EnumSetting<Theme> theme=new EnumSetting<Theme>("Theme","theme","What theme to use.",()->true,Theme.GameSense,Theme.class);
     public static final EnumSetting<Layout> layout=new EnumSetting<Layout>("Layout","layout","What layout to use.",()->true,Layout.ClassicPanel,Layout.class);
-    public static final KeybindSetting keybind=new KeybindSetting("Keybind","keybind","The key to toggle the module.",()->true,GLFW.GLFW_KEY_O);
+    public static final KeybindSetting keybind=new KeybindSetting("Keybind","keybind","The key to toggle the module.",()->true,GLFW.GLFW_KEY_TAB);
 
     public ClickGUIModule() {
         super("ClickGUI","Module containing ClickGUI settings.",()->true,false);
diff --git a/src/main/java/dev/coredoes/coreclient/gui/module/HUDEditorModule.java b/src/main/java/dev/coredoes/coreclient/gui/module/HUDEditorModule.java
index 45ef0fa..bc3beb8 100644
--- a/src/main/java/dev/coredoes/coreclient/gui/module/HUDEditorModule.java
+++ b/src/main/java/dev/coredoes/coreclient/gui/module/HUDEditorModule.java
@@ -7,7 +7,7 @@ import dev.coredoes.coreclient.gui.setting.KeybindSetting;
 
 public class HUDEditorModule extends Module {
     public static final BooleanSetting showHUD=new BooleanSetting("Show HUD Panels","showHUD","Whether to show the HUD panels in the ClickGUI.",()->true,true);
-    public static final KeybindSetting keybind=new KeybindSetting("Keybind","keybind","The key to toggle the module.",()->true,GLFW.GLFW_KEY_P);
+    public static final KeybindSetting keybind=new KeybindSetting("Keybind","keybind","The key to toggle the module.",()->true,GLFW.GLFW_KEY_LEFT_BRACKET);
 
     public HUDEditorModule() {
         super("HUDEditor","Module containing HUDEditor settings.",()->true,false);
diff --git a/src/main/java/dev/coredoes/coreclient/gui/module/LogoModule.java b/src/main/java/dev/coredoes/coreclient/gui/module/LogoModule.java
index 0f81674..b8380cc 100644
--- a/src/main/java/dev/coredoes/coreclient/gui/module/LogoModule.java
+++ b/src/main/java/dev/coredoes/coreclient/gui/module/LogoModule.java
@@ -3,6 +3,7 @@ import java.awt.Color;
 import java.awt.Dimension;
 import java.awt.Point;
 
+import dev.coredoes.coreclient.CoreClient;
 import dev.coredoes.coreclient.gui.setting.BooleanSetting;
 import dev.coredoes.coreclient.gui.setting.ColorSetting;
 import dev.coredoes.coreclient.gui.setting.IntegerSetting;
@@ -11,15 +12,16 @@ import com.lukflug.panelstudio.base.IInterface;
 import com.lukflug.panelstudio.base.IToggleable;
 import com.lukflug.panelstudio.component.IFixedComponent;
 import com.lukflug.panelstudio.hud.HUDComponent;
+import net.minecraft.client.MinecraftClient;
 
 public class LogoModule extends Module {
     private static LogoModule instance;
     private static final IntegerSetting rotation=new IntegerSetting("Image Rotation","rotation","How to rotate the image.",()->true,0,3,0);
     private static final BooleanSetting parity=new BooleanSetting("Flip Image","parity","Whether to flip the image or not.",()->true,false);
-    private static final ColorSetting color=new ColorSetting("Logo Color","color","The color to modulate the logo with.",()->true,true,true,new Color(255,255,255,128),true);
+    private static final ColorSetting color=new ColorSetting("Logo Color","color","The color to modulate the logo with.",()->true,true,true,new Color(255,255,255,128),false);
 
     public LogoModule() {
-        super("Logo","Module that displays the PanelStudio icon on HUD.",()->true,true);
+        super("Logo","Module that displays the PanelStudio icon on HUD.",()->true,false, true);
         instance=this;
         settings.add(rotation);
         settings.add(parity);
@@ -27,17 +29,19 @@ public class LogoModule extends Module {
     }
 
     public static IFixedComponent getComponent (IInterface inter) {
-        int image=inter.loadImage("panelstudio.png");
-        return new HUDComponent(()->"Logo",new Point(300,300),"logo") {
+        int image=inter.loadImage("logo.png");
+        return new HUDComponent(()->"Logo",new Point(MinecraftClient.getInstance().getWindow().getWidth() - 32,MinecraftClient.getInstance().getWindow().getHeight() - 32),"logo") {
             @Override
             public void render (Context context) {
+                position = new Point(MinecraftClient.getInstance().getWindow().getWidth() / 2 - 32, MinecraftClient.getInstance().getWindow().getHeight() / 2 - 29);
                 super.render(context);
+                CoreClient.LOGGER.info("render pos " + position.toString() + " from " + MinecraftClient.getInstance().getWindow().getWidth());
                 context.getInterface().drawImage(context.getRect(),rotation.getValue(),parity.getValue(),image,color.getValue());
             }
 
             @Override
             public Dimension getSize (IInterface inter) {
-                return new Dimension(141,61);
+                return new Dimension(32,32);
             }
         };
     }
diff --git a/src/main/java/dev/coredoes/coreclient/gui/module/Module.java b/src/main/java/dev/coredoes/coreclient/gui/module/Module.java
index 7a803a4..ad8584e 100644
--- a/src/main/java/dev/coredoes/coreclient/gui/module/Module.java
+++ b/src/main/java/dev/coredoes/coreclient/gui/module/Module.java
@@ -24,6 +24,14 @@ public class Module implements IModule {
         this.toggleable=toggleable;
     }
 
+    public Module (String displayName, String description, IBoolean visible, boolean toggleable, boolean enabled) {
+        this.displayName=displayName;
+        this.description=description;
+        this.visible=visible;
+        this.toggleable=toggleable;
+        this.enabled=enabled;
+    }
+
     @Override
     public String getDisplayName() {
         return displayName;
@@ -41,7 +49,6 @@ public class Module implements IModule {
 
     @Override
     public IToggleable isEnabled() {
-        if (!toggleable) return null;
         return new IToggleable() {
             @Override
             public boolean isOn() {
@@ -50,7 +57,9 @@ public class Module implements IModule {
 
             @Override
             public void toggle() {
-                enabled=!enabled;
+                if (toggleable) {
+                    enabled=!enabled;
+                }
             }
         };
     }
diff --git a/src/main/java/dev/coredoes/coreclient/gui/setting/KeybindSetting.java b/src/main/java/dev/coredoes/coreclient/gui/setting/KeybindSetting.java
index 20f00e1..0c67634 100644
--- a/src/main/java/dev/coredoes/coreclient/gui/setting/KeybindSetting.java
+++ b/src/main/java/dev/coredoes/coreclient/gui/setting/KeybindSetting.java
@@ -2,6 +2,7 @@ package dev.coredoes.coreclient.gui.setting;
 import com.lukflug.panelstudio.base.IBoolean;
 import com.lukflug.panelstudio.setting.IKeybindSetting;
 
+import dev.coredoes.coreclient.CoreClient;
 import net.minecraft.client.util.InputUtil;
 import net.minecraft.text.TranslatableTextContent;
 
@@ -24,7 +25,6 @@ public class KeybindSetting extends Setting<Integer> implements IKeybindSetting
     public String getKeyName() {
         String translationKey=InputUtil.Type.KEYSYM.createFromCode(getKey()).getTranslationKey();
         String translation=new TranslatableTextContent(translationKey,null,TranslatableTextContent.EMPTY_ARGUMENTS).toString();
-        if (!translation.equals(translationKey)) return translation;
         return InputUtil.Type.KEYSYM.createFromCode(getKey()).getLocalizedText().getString();
     }
 }
\ No newline at end of file
diff --git a/src/main/java/dev/coredoes/coreclient/mixin/PlayerMoveC2SPacketFullMixin.java b/src/main/java/dev/coredoes/coreclient/mixin/PlayerMoveC2SPacketFullMixin.java
new file mode 100644
index 0000000..de9902b
--- /dev/null
+++ b/src/main/java/dev/coredoes/coreclient/mixin/PlayerMoveC2SPacketFullMixin.java
@@ -0,0 +1,22 @@
+package dev.coredoes.coreclient.mixin;
+
+import dev.coredoes.coreclient.module.bypass.BotMovement;
+import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.ModifyArgs;
+import org.spongepowered.asm.mixin.injection.invoke.arg.Args;
+
+@Mixin(PlayerMoveC2SPacket.Full.class)
+public abstract class PlayerMoveC2SPacketFullMixin {
+    @ModifyArgs(method = "<init>", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/packet/c2s/play/PlayerMoveC2SPacket;<init>(DDDFFZZZ)V"))
+    private static void init(Args args) {
+        if (BotMovement.getInstance().isEnabled().isOn()) {
+            double newX = Math.round((double) args.get(0) * 100) / 100d;
+            double newZ = Math.round((double) args.get(2) * 100) / 100d;
+            args.set(0, Math.nextAfter(newX, newX + Math.signum(newX)));  // Round x
+            args.set(2, Math.nextAfter(newZ, newZ + Math.signum(newZ)));  // Round z
+        }
+    }
+}
+
diff --git a/src/main/java/dev/coredoes/coreclient/mixin/PlayerMoveC2SPacketLookMixin.java b/src/main/java/dev/coredoes/coreclient/mixin/PlayerMoveC2SPacketLookMixin.java
new file mode 100644
index 0000000..7905aa1
--- /dev/null
+++ b/src/main/java/dev/coredoes/coreclient/mixin/PlayerMoveC2SPacketLookMixin.java
@@ -0,0 +1,18 @@
+package dev.coredoes.coreclient.mixin;
+
+import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.ModifyArgs;
+import org.spongepowered.asm.mixin.injection.invoke.arg.Args;
+
+@Mixin(PlayerMoveC2SPacket.LookAndOnGround.class)
+public abstract class PlayerMoveC2SPacketLookMixin {
+    @ModifyArgs(method = "<init>", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/packet/c2s/play/PlayerMoveC2SPacket;<init>(DDDFFZZZ)V"))
+    private static void init(Args args) {
+        /*if (((NoFall) ClientMod.moduleManager.getModuleById("NoFall")).isEnabled()) {
+            args.set(5, true);
+        }*/
+    }
+}
+
diff --git a/src/main/java/dev/coredoes/coreclient/mixin/PlayerMoveC2SPacketOnGroundMixin.java b/src/main/java/dev/coredoes/coreclient/mixin/PlayerMoveC2SPacketOnGroundMixin.java
new file mode 100644
index 0000000..2d86806
--- /dev/null
+++ b/src/main/java/dev/coredoes/coreclient/mixin/PlayerMoveC2SPacketOnGroundMixin.java
@@ -0,0 +1,28 @@
+package dev.coredoes.coreclient.mixin;
+
+import dev.coredoes.coreclient.module.bypass.BotMovement;
+import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.ModifyArgs;
+import org.spongepowered.asm.mixin.injection.invoke.arg.Args;
+
+@Mixin(PlayerMoveC2SPacket.PositionAndOnGround.class)
+public abstract class PlayerMoveC2SPacketOnGroundMixin {
+    @ModifyArgs(method = "<init>", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/packet/c2s/play/PlayerMoveC2SPacket;<init>(DDDFFZZZ)V"))
+    private static void init(Args args) {
+        if (BotMovement.getInstance().isEnabled().isOn()) {
+            double newX = Math.round((double) args.get(0) * 100) / 100d;
+            double newZ = Math.round((double) args.get(2) * 100) / 100d;
+            args.set(0, Math.nextAfter(newX, newX + Math.signum(newX)));  // Round x
+            args.set(2, Math.nextAfter(newZ, newZ + Math.signum(newZ)));  // Round z
+        }
+        /*
+        if (((NoFall) ClientMod.moduleManager.getModuleById("NoFall")).isEnabled()) {
+            args.set(5, true);
+        }
+
+         */
+    }
+}
+
diff --git a/src/main/java/dev/coredoes/coreclient/module/bypass/BotMovement.java b/src/main/java/dev/coredoes/coreclient/module/bypass/BotMovement.java
new file mode 100644
index 0000000..6b194e5
--- /dev/null
+++ b/src/main/java/dev/coredoes/coreclient/module/bypass/BotMovement.java
@@ -0,0 +1,22 @@
+package dev.coredoes.coreclient.module.bypass;
+
+import com.lukflug.panelstudio.base.IBoolean;
+import dev.coredoes.coreclient.CoreClient;
+import dev.coredoes.coreclient.gui.module.Module;
+import meteordevelopment.orbit.EventHandler;
+
+public class BotMovement extends Module {
+    private static BotMovement instance;
+
+    public BotMovement() {
+        super("BotMovement", "Bypass the bot detection on LO 1.19 server", () -> true, true, true);
+
+        CoreClient.eventBus.subscribe(this);
+
+        instance = this;
+    }
+
+    public static BotMovement getInstance() {
+        return instance;
+    }
+}
diff --git a/src/main/resources/assets/coreclient/logo.png b/src/main/resources/assets/coreclient/logo.png
new file mode 100644
index 0000000..d187a2c
Binary files /dev/null and b/src/main/resources/assets/coreclient/logo.png differ
diff --git a/src/main/resources/assets/coreclient/panelstudio.png b/src/main/resources/assets/coreclient/panelstudio.png
deleted file mode 100644
index d1fdefc..0000000
--- a/src/main/resources/assets/coreclient/panelstudio.png
+++ /dev/null
@@ -1 +0,0 @@
-{"payload":{"allShortcutsEnabled":false,"fileTree":{"example-mod20/src/main/resources/assets/examplemod":{"items":[{"name":"panelstudio.png","path":"example-mod20/src/main/resources/assets/examplemod/panelstudio.png","contentType":"file"}],"totalCount":1},"example-mod20/src/main/resources/assets":{"items":[{"name":"examplemod","path":"example-mod20/src/main/resources/assets/examplemod","contentType":"directory"}],"totalCount":1},"example-mod20/src/main/resources":{"items":[{"name":"assets","path":"example-mod20/src/main/resources/assets","contentType":"directory"},{"name":"fabric.mod.json","path":"example-mod20/src/main/resources/fabric.mod.json","contentType":"file"}],"totalCount":2},"example-mod20/src/main":{"items":[{"name":"java","path":"example-mod20/src/main/java","contentType":"directory"},{"name":"resources","path":"example-mod20/src/main/resources","contentType":"directory"}],"totalCount":2},"example-mod20/src":{"items":[{"name":"main","path":"example-mod20/src/main","contentType":"directory"}],"totalCount":1},"example-mod20":{"items":[{"name":"gradle","path":"example-mod20/gradle","contentType":"directory"},{"name":"src","path":"example-mod20/src","contentType":"directory"},{"name":"build.gradle","path":"example-mod20/build.gradle","contentType":"file"},{"name":"gradle.properties","path":"example-mod20/gradle.properties","contentType":"file"},{"name":"gradlew","path":"example-mod20/gradlew","contentType":"file"},{"name":"gradlew.bat","path":"example-mod20/gradlew.bat","contentType":"file"},{"name":"settings.gradle","path":"example-mod20/settings.gradle","contentType":"file"}],"totalCount":7},"":{"items":[{"name":".github","path":".github","contentType":"directory"},{"name":"example-mod12","path":"example-mod12","contentType":"directory"},{"name":"example-mod16-fabric","path":"example-mod16-fabric","contentType":"directory"},{"name":"example-mod16-forge","path":"example-mod16-forge","contentType":"directory"},{"name":"example-mod17","path":"example-mod17","contentType":"directory"},{"name":"example-mod18","path":"example-mod18","contentType":"directory"},{"name":"example-mod19","path":"example-mod19","contentType":"directory"},{"name":"example-mod194","path":"example-mod194","contentType":"directory"},{"name":"example-mod20","path":"example-mod20","contentType":"directory"},{"name":"example-mod8-fabric","path":"example-mod8-fabric","contentType":"directory"},{"name":"example-mod8-forge","path":"example-mod8-forge","contentType":"directory"},{"name":"gradle","path":"gradle","contentType":"directory"},{"name":"panelstudio-mc12","path":"panelstudio-mc12","contentType":"directory"},{"name":"panelstudio-mc16-fabric","path":"panelstudio-mc16-fabric","contentType":"directory"},{"name":"panelstudio-mc16-forge","path":"panelstudio-mc16-forge","contentType":"directory"},{"name":"panelstudio-mc17","path":"panelstudio-mc17","contentType":"directory"},{"name":"panelstudio-mc19","path":"panelstudio-mc19","contentType":"directory"},{"name":"panelstudio-mc194","path":"panelstudio-mc194","contentType":"directory"},{"name":"panelstudio-mc20","path":"panelstudio-mc20","contentType":"directory"},{"name":"panelstudio-mc8-fabric","path":"panelstudio-mc8-fabric","contentType":"directory"},{"name":"panelstudio-mc8-forge","path":"panelstudio-mc8-forge","contentType":"directory"},{"name":"panelstudio","path":"panelstudio","contentType":"directory"},{"name":"screenshots","path":"screenshots","contentType":"directory"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"build.gradle","path":"build.gradle","contentType":"file"},{"name":"gradle.properties","path":"gradle.properties","contentType":"file"},{"name":"gradlew","path":"gradlew","contentType":"file"},{"name":"gradlew.bat","path":"gradlew.bat","contentType":"file"},{"name":"settings.gradle","path":"settings.gradle","contentType":"file"}],"totalCount":31}},"fileTreeProcessingTime":30.196659,"foldersToFetch":[],"reducedMotionEnabled":null,"repo":{"id":308924891,"defaultBranch":"main","name":"PanelStudio","ownerLogin":"lukflug","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2020-10-31T16:32:25.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/47392064?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"c37842afb75cb613aa0694cbc31ad98940486658","listCacheKey":"v0:1686429073.285436","canEdit":false,"refType":"tree","currentOid":"c37842afb75cb613aa0694cbc31ad98940486658"},"path":"example-mod20/src/main/resources/assets/examplemod/panelstudio.png","currentUser":null,"blob":{"rawLines":null,"stylingDirectives":null,"csv":null,"csvError":null,"dependabotInfo":{"showConfigurationBanner":false,"configFilePath":null,"networkDependabotPath":"/lukflug/PanelStudio/network/updates","dismissConfigurationNoticePath":"/settings/dismiss-notice/dependabot_configuration_notice","configurationNoticeDismissed":null,"repoAlertsPath":"/lukflug/PanelStudio/security/dependabot","repoSecurityAndAnalysisPath":"/lukflug/PanelStudio/settings/security_analysis","repoOwnerIsOrg":false,"currentUserCanAdminRepo":false},"displayName":"panelstudio.png","displayUrl":"https://github.com/lukflug/PanelStudio/blob/c37842afb75cb613aa0694cbc31ad98940486658/example-mod20/src/main/resources/assets/examplemod/panelstudio.png?raw=true","headerInfo":{"blobSize":"21.1 KB","deleteInfo":{"deletePath":null,"deleteTooltip":"You must be signed in to make or propose changes"},"editInfo":{"editTooltip":"You must be signed in to make or propose changes"},"ghDesktopPath":null,"gitLfsPath":null,"onBranch":false,"shortPath":"5cf536a","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Flukflug%2FPanelStudio%2Fblob%2Fc37842afb75cb613aa0694cbc31ad98940486658%2Fexample-mod20%2Fsrc%2Fmain%2Fresources%2Fassets%2Fexamplemod%2Fpanelstudio.png","isCSV":false,"isRichtext":false,"toc":null,"lineInfo":{"truncatedLoc":null,"truncatedSloc":null},"mode":"file"},"image":true,"isCodeownersFile":null,"isValidLegacyIssueTemplate":false,"issueTemplateHelpUrl":"https://docs.github.com/articles/about-issue-and-pull-request-templates","issueTemplate":null,"discussionTemplate":null,"language":null,"large":false,"loggedIn":false,"newDiscussionPath":"/lukflug/PanelStudio/discussions/new","newIssuePath":"/lukflug/PanelStudio/issues/new","planSupportInfo":{"repoIsFork":null,"repoOwnedByCurrentUser":null,"requestFullPath":"/lukflug/PanelStudio/blob/c37842afb75cb613aa0694cbc31ad98940486658/example-mod20/src/main/resources/assets/examplemod/panelstudio.png","showFreeOrgGatedFeatureMessage":null,"showPlanSupportBanner":null,"upgradeDataAttributes":null,"upgradePath":null},"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_dockerfile","dismissStackNoticePath":"/settings/dismiss-notice/publish_stack_from_file","releasePath":"/lukflug/PanelStudio/releases/new?marketplace=true","showPublishActionBanner":false,"showPublishStackBanner":false},"renderImageOrRaw":true,"richText":null,"renderedFileInfo":null,"tabSize":8,"topBannersInfo":{"overridingGlobalFundingFile":false,"globalPreferredFundingPath":null,"repoOwner":"lukflug","repoName":"PanelStudio","showInvalidCitationWarning":false,"citationHelpUrl":"https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files","showDependabotConfigurationBanner":false,"actionsOnboardingTip":null},"truncated":false,"viewable":false,"workflowRedirectUrl":null,"symbols":null},"copilotUserAccess":null,"csrf_tokens":{"/lukflug/PanelStudio/branches":{"post":"Srunpz5lnX6FnTihPnYDbdZfXuWLELccRYyYZS5yQz6y6prbF7QOHGU3DL0nMT5V3lYQJlDf_c1Zp-x0WacILw"}}},"title":"PanelStudio/example-mod20/src/main/resources/assets/examplemod/panelstudio.png at c37842afb75cb613aa0694cbc31ad98940486658 ยท lukflug/PanelStudio","locale":"en"}
\ No newline at end of file
diff --git a/src/main/resources/coreclient.mixins.json b/src/main/resources/coreclient.mixins.json
index a6d5346..99db32d 100644
--- a/src/main/resources/coreclient.mixins.json
+++ b/src/main/resources/coreclient.mixins.json
@@ -3,9 +3,10 @@
   "minVersion": "0.8",
   "package": "dev.coredoes.coreclient.mixin",
   "compatibilityLevel": "JAVA_17",
-  "mixins": [
-  ],
   "client": [
+    "PlayerMoveC2SPacketFullMixin",
+    "PlayerMoveC2SPacketLookMixin",
+    "PlayerMoveC2SPacketOnGroundMixin"
   ],
   "injectors": {
     "defaultRequire": 1