diff --git a/README.md b/README.md index ad2d3d8..472f4a1 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ An addon to Meteor Client that adds modules and commands that were too useless t - AntiVanish - Auto32K (Removed from Meteor in [67f93](https://github.com/MeteorDevelopment/meteor-client/commit/67f93de1e5e287ea62ddef041441306f01249c3d#diff-95d3e3b18ffadf76eef2358f30d424843d57acf8bde5ebd49a3f6befa6ff0529)) - AutoBedTrap (Ported from [BleachHack-CupEdition](https://github.com/CUPZYY/BleachHack-CupEdition/blob/master/CupEdition-1.17/src/main/java/bleach/hack/module/mods/AutoBedtrap.java)) +- AutoCraft (More generalized version of [AutoBedCraft](https://github.com/GhostTypes/orion/blob/main/src/main/java/me/ghosttypes/orion/modules/main/AutoBedCraft.java) from orion) - AutoExtinguish - AutoEz - AutoHighway (Taken from [Meteor AutoHighway Addon](https://github.com/VoidCyborg/meteor-auto-highway-addon)) diff --git a/src/main/java/cloudburst/rejects/MeteorRejectsAddon.java b/src/main/java/cloudburst/rejects/MeteorRejectsAddon.java index db5bfb6..4597790 100644 --- a/src/main/java/cloudburst/rejects/MeteorRejectsAddon.java +++ b/src/main/java/cloudburst/rejects/MeteorRejectsAddon.java @@ -43,6 +43,7 @@ public class MeteorRejectsAddon extends MeteorAddon { modules.add(new AntiVanish()); modules.add(new Auto32K()); modules.add(new AutoBedTrap()); + modules.add(new AutoCraft()); modules.add(new AutoExtinguish()); modules.add(new AutoEz()); modules.add(new AutoHighway()); diff --git a/src/main/java/cloudburst/rejects/modules/AutoBedTrap.java b/src/main/java/cloudburst/rejects/modules/AutoBedTrap.java index f96cf79..5056f8e 100644 --- a/src/main/java/cloudburst/rejects/modules/AutoBedTrap.java +++ b/src/main/java/cloudburst/rejects/modules/AutoBedTrap.java @@ -20,14 +20,10 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import org.lwjgl.system.CallbackI.B; -import org.lwjgl.system.CallbackI.P; - import net.minecraft.block.BedBlock; import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.item.BlockItem; -import net.minecraft.item.Items; import net.minecraft.util.math.BlockPos; public class AutoBedTrap extends Module { diff --git a/src/main/java/cloudburst/rejects/modules/AutoCraft.java b/src/main/java/cloudburst/rejects/modules/AutoCraft.java new file mode 100644 index 0000000..5338957 --- /dev/null +++ b/src/main/java/cloudburst/rejects/modules/AutoCraft.java @@ -0,0 +1,67 @@ +package cloudburst.rejects.modules; + +import java.util.Arrays; +import java.util.List; + +import net.minecraft.client.gui.screen.recipebook.RecipeResultCollection; +import net.minecraft.item.Item; +import net.minecraft.recipe.Recipe; +import net.minecraft.screen.CraftingScreenHandler; +import net.minecraft.screen.slot.SlotActionType; + +import cloudburst.rejects.MeteorRejectsAddon; +import meteordevelopment.meteorclient.events.world.TickEvent; +import meteordevelopment.meteorclient.settings.BoolSetting; +import meteordevelopment.meteorclient.settings.ItemListSetting; +import meteordevelopment.meteorclient.settings.Setting; +import meteordevelopment.meteorclient.settings.SettingGroup; +import meteordevelopment.meteorclient.systems.modules.Module; +import meteordevelopment.orbit.EventHandler; + +public class AutoCraft extends Module { + + private final SettingGroup sgGeneral = settings.getDefaultGroup(); + + private final Setting> items = sgGeneral.add(new ItemListSetting.Builder() + .name("items") + .description("Items you want to get crafted.") + .defaultValue(Arrays.asList()) + .build() + ); + + private final Setting antiDesync = sgGeneral.add(new BoolSetting.Builder() + .name("anti-desync") + .description("Try to prevent inventory desync.") + .defaultValue(false) + .build() + ); + + public AutoCraft() { + super(MeteorRejectsAddon.CATEGORY, "auto-craft", "Automatically crafts items."); + } + + @EventHandler + private void onTick(TickEvent.Post event) { + if (mc.interactionManager == null) return; + if (items.get().isEmpty()) return; + + if (!(mc.player.currentScreenHandler instanceof CraftingScreenHandler)) return; + + + if (antiDesync.get()) + mc.player.getInventory().updateItems(); + + // Danke schön GhostTypes + // https://github.com/GhostTypes/orion/blob/main/src/main/java/me/ghosttypes/orion/modules/main/AutoBedCraft.java + CraftingScreenHandler currentScreenHandler = (CraftingScreenHandler) mc.player.currentScreenHandler; + List itemList = items.get(); + List recipeResultCollectionList = mc.player.getRecipeBook().getOrderedResults(); + for (RecipeResultCollection recipeResultCollection : recipeResultCollectionList) { + for (Recipe recipe : recipeResultCollection.getRecipes(true)) { + if (!itemList.contains(recipe.getOutput().getItem())) continue; + mc.interactionManager.clickRecipe(currentScreenHandler.syncId, recipe, false); + mc.interactionManager.clickSlot(currentScreenHandler.syncId, 0, 1, SlotActionType.QUICK_MOVE, mc.player); + } + } + } +}