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 modules=new ArrayList(); - 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;itrue,random.nextInt(2)==0); - int count=random.nextInt(6)+5; - for (int i=0;i 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;itrue,0,1000,200); public static final EnumSetting theme=new EnumSetting("Theme","theme","What theme to use.",()->true,Theme.GameSense,Theme.class); public static final EnumSetting layout=new EnumSetting("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 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 = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/packet/c2s/play/PlayerMoveC2SPacket;(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 = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/packet/c2s/play/PlayerMoveC2SPacket;(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 = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/packet/c2s/play/PlayerMoveC2SPacket;(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