diff --git a/d b/d new file mode 100644 index 0000000..a07198d --- /dev/null +++ b/d @@ -0,0 +1,36 @@ +diff.astextplain.textconv=astextplain +filter.lfs.clean=git-lfs clean -- %f +filter.lfs.smudge=git-lfs smudge -- %f +filter.lfs.process=git-lfs filter-process +filter.lfs.required=true +http.sslbackend=openssl +http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt +core.autocrlf=true +core.fscache=true +core.symlinks=true +credential.helper=manager-core +pull.rebase=false +credential.https://dev.azure.com.usehttppath=true +init.defaultbranch=master +gui.recentrepo=C:/Tautulli +user.name=des98 +user.email=desertcod98@gmail.com +user.signingkey=C:/Users/Utente/.ssh/id_ed25519.pub +gpg.format=ssh +core.repositoryformatversion=0 +core.filemode=false +core.bare=false +core.logallrefupdates=true +core.symlinks=false +core.ignorecase=true +remote.origin.url=https://github.com/desertcod98/OakClient.git +remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* +branch.main.remote=origin +branch.main.merge=refs/heads/main +branch.criticalsNCPBypass.remote=origin +branch.criticalsNCPBypass.merge=refs/heads/criticalsNCPBypass +branch.social-system.remote=origin +branch.social-system.merge=refs/heads/social-system +branch.save-load-configs.remote=origin +branch.save-load-configs.merge=refs/heads/save-load-configs +user.email=dev.desertcod98@proton.me diff --git a/src/main/java/me/leeeaf/oakclient/TEST.java b/src/main/java/me/leeeaf/oakclient/TEST.java new file mode 100644 index 0000000..097907b --- /dev/null +++ b/src/main/java/me/leeeaf/oakclient/TEST.java @@ -0,0 +1,19 @@ +package me.leeeaf.oakclient; + +import com.google.gson.JsonElement; +import com.google.gson.JsonParser; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +public class TEST { + public static void main(String[] args) throws IOException { + Path workingDir = Paths.get("C:\\Users\\Utente\\Desktop\\Utilities\\Dev\\Java\\Minecraft\\OakClient\\run", "OakClient/"); + Path filePath = workingDir.resolve("modules.json"); + JsonElement jsonElement = JsonParser.parseString(Files.readString(filePath)); +// System.out.println(jsonElement.getAsJsonObject().get("Killaura").getAsJsonObject().get('')); + } +} + diff --git a/src/main/java/me/leeeaf/oakclient/systems/modules/TESTModule.java b/src/main/java/me/leeeaf/oakclient/systems/modules/TESTModule.java new file mode 100644 index 0000000..3459ff2 --- /dev/null +++ b/src/main/java/me/leeeaf/oakclient/systems/modules/TESTModule.java @@ -0,0 +1,18 @@ +package me.leeeaf.oakclient.systems.modules; + +public class TESTModule extends Module{ + public TESTModule() { + super("a", "a", ()->true, true, Category.EXPLOIT); + } + @Override + public void onEnable() { + super.onEnable(); + + } + + @Override + public void onTick() { + super.onTick(); + + } +} diff --git a/src/main/java/me/leeeaf/oakclient/systems/modules/combat/AutoTotem.java b/src/main/java/me/leeeaf/oakclient/systems/modules/combat/AutoTotem.java index b590f40..b38f460 100644 --- a/src/main/java/me/leeeaf/oakclient/systems/modules/combat/AutoTotem.java +++ b/src/main/java/me/leeeaf/oakclient/systems/modules/combat/AutoTotem.java @@ -1,36 +1,73 @@ package me.leeeaf.oakclient.systems.modules.combat; +import me.leeeaf.oakclient.gui.setting.BooleanSetting; +import me.leeeaf.oakclient.gui.setting.IntegerSetting; import me.leeeaf.oakclient.systems.modules.Category; import me.leeeaf.oakclient.systems.modules.Module; +import me.leeeaf.oakclient.utils.io.ChatLogger; +import me.leeeaf.oakclient.utils.player.InventoryUtils; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.screen.slot.SlotActionType; +import net.minecraft.util.math.MathHelper; import static me.leeeaf.oakclient.OakClient.mc; public class AutoTotem extends Module { - + private BooleanSetting lowHealthTrigger = new BooleanSetting("Low health", "lowHealth", "Places totem in offhand when health is low", () -> true, true); + private IntegerSetting lowHealthAmount = new IntegerSetting("Amount", "lowHealthAmount", "How low should health be to trigger", () -> true, 1, 20, 6); + private BooleanSetting dangerousFallTrigger = new BooleanSetting("Dangerous fall", "dangerousFall", "Places totem in offhand when the fall could kill you", () -> true, true); public AutoTotem() { - super("AutoTotem", "Place totems in your offhand", ()->true, true, Category.COMBAT); + super("AutoTotem", "Place totems in your offhand", () -> true, true, Category.COMBAT); + settings.add(lowHealthTrigger); + lowHealthTrigger.subSettings.add(lowHealthAmount); + settings.add(dangerousFallTrigger); } - //TODO make this useful + + //TODO add delay @Override public void onTick() { - if(!mc.player.getInventory().offHand.get(0).getItem().equals(Items.TOTEM_OF_UNDYING)){ - boolean itemInOffhand = !mc.player.getOffHandStack().isEmpty(); - for(int i = 0; i < PlayerInventory.MAIN_SIZE; i++){ - ItemStack itemStack = mc.player.getInventory().getStack(i); - if(itemStack.getItem().equals(Items.TOTEM_OF_UNDYING)){ + if(mc.player.getInventory().offHand.get(0).getItem().equals(Items.TOTEM_OF_UNDYING)) return; + if (lowHealthTrigger.isOn() && mc.player.getHealth() <= lowHealthAmount.getValue()) { + placeTotemInOffhand(); + return; + } + if(dangerousFallTrigger.isOn() && mc.player.getHealth() - computeFallDamage() <= 6){ + placeTotemInOffhand(); + } + + } + + private void placeTotemInOffhand() { + boolean itemInOffhand = !mc.player.getOffHandStack().isEmpty(); + for (int i = 0; i < PlayerInventory.MAIN_SIZE; i++) { + ItemStack itemStack = mc.player.getInventory().getStack(i); + if (itemStack.getItem().equals(Items.TOTEM_OF_UNDYING)) { + if(i <= 9) { //if it is in hotbar + int selectedSlot = mc.player.getInventory().selectedSlot; + InventoryUtils.selectSlot(i); + InventoryUtils.swapOffhand(); + InventoryUtils.selectSlot(selectedSlot); + }else{ mc.interactionManager.clickSlot(mc.player.currentScreenHandler.syncId, i, 0, SlotActionType.PICKUP, mc.player); - mc.interactionManager.clickSlot(mc.player.currentScreenHandler.syncId, 45, 0, SlotActionType.PICKUP, mc.player); //offhand index == 45 :( why the fuck - if(itemInOffhand){ + mc.interactionManager.clickSlot(mc.player.currentScreenHandler.syncId, 45, 0, SlotActionType.PICKUP, mc.player); //offhand index == 45 :( why the fuc + if (itemInOffhand) { mc.interactionManager.clickSlot(mc.player.currentScreenHandler.syncId, i, 0, SlotActionType.PICKUP, mc.player); } } } } } + + private int computeFallDamage() { + StatusEffectInstance statusEffectInstance = mc.player.getStatusEffect(StatusEffects.JUMP_BOOST); + float f = statusEffectInstance == null ? 0.0f : (float)(statusEffectInstance.getAmplifier() + 1); + return MathHelper.ceil(mc.player.fallDistance - 3.0f - f); + } + } diff --git a/src/main/java/me/leeeaf/oakclient/utils/player/InventoryUtils.java b/src/main/java/me/leeeaf/oakclient/utils/player/InventoryUtils.java index 4fc1387..789f35c 100644 --- a/src/main/java/me/leeeaf/oakclient/utils/player/InventoryUtils.java +++ b/src/main/java/me/leeeaf/oakclient/utils/player/InventoryUtils.java @@ -1,7 +1,9 @@ package me.leeeaf.oakclient.utils.player; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.network.packet.c2s.play.UpdateSelectedSlotC2SPacket; +import net.minecraft.util.Hand; import java.util.function.Predicate; @@ -38,4 +40,13 @@ public static int getFirstItemHotbar(Predicate itemPredicate){ } return -1; } + + public static void swapOffhand(){ + if (!mc.player.isSpectator()) { + ItemStack itemStack = mc.player.getStackInHand(Hand.OFF_HAND); + mc.player.setStackInHand(Hand.OFF_HAND, mc.player.getStackInHand(Hand.MAIN_HAND)); + mc.player.setStackInHand(Hand.MAIN_HAND, itemStack); + mc.player.clearActiveItem(); + } + } }