New Modules and update to 1.19.3 (#186)

This commit is contained in:
SodaXwX
2022-12-23 21:45:57 +08:00
committed by GitHub
parent 64933773a7
commit 3c14b3bc8f
33 changed files with 663 additions and 454 deletions

View File

@@ -0,0 +1,94 @@
/*
* This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client).
* Copyright (c) Meteor Development.
*/
package anticope.rejects.modules;
import anticope.rejects.MeteorRejectsAddon;
import meteordevelopment.meteorclient.events.game.OpenScreenEvent;
import meteordevelopment.meteorclient.settings.*;
import meteordevelopment.meteorclient.systems.modules.Module;
import meteordevelopment.meteorclient.utils.network.MeteorExecutor;
import meteordevelopment.meteorclient.utils.player.InvUtils;
import meteordevelopment.orbit.EventHandler;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.screen.GrindstoneScreenHandler;
import java.util.List;
import java.util.Map;
public class AutoGrind extends Module {
private final SettingGroup sgGeneral = settings.getDefaultGroup();
private final Setting<Integer> delay = sgGeneral.add(new IntSetting.Builder()
.name("delay")
.description("The tick delay between grinding items.")
.defaultValue(50)
.sliderMax(500)
.min(0)
.build()
);
private final Setting<List<Item>> itemBlacklist = sgGeneral.add(new ItemListSetting.Builder()
.name("item-blacklist")
.description("Items that should be ignored.")
.defaultValue()
.filter(Item::isDamageable)
.build()
);
private final Setting<List<Enchantment>> enchantmentBlacklist = sgGeneral.add(new EnchantmentListSetting.Builder()
.name("enchantment-blacklist")
.description("Enchantments that should be ignored.")
.defaultValue()
.build()
);
public AutoGrind() {
super(MeteorRejectsAddon.CATEGORY, "auto-grind", "Automatically disenchants items.");
}
@EventHandler
private void onOpenScreen(OpenScreenEvent event) {
if (!(mc.player.currentScreenHandler instanceof GrindstoneScreenHandler))
return;
MeteorExecutor.execute(() -> {
for (int i = 0; i <= mc.player.getInventory().size(); i++) {
if (canGrind(mc.player.getInventory().getStack(i))) {
try {
Thread.sleep(delay.get());
} catch (InterruptedException e) {
e.printStackTrace();
}
if (mc.currentScreen == null) break;
InvUtils.quickMove().slot(i);
InvUtils.move().fromId(2).to(i);
}
}
});
}
private boolean canGrind(ItemStack stack) {
if (itemBlacklist.get().contains(stack.getItem())) return false;
Map<Enchantment, Integer> enchantments = EnchantmentHelper.get(stack);
int availEnchs = 0;
for (Enchantment enchantment : enchantments.keySet()) {
availEnchs++;
if (enchantment.isCursed())
availEnchs--;
if (enchantmentBlacklist.get().contains(enchantment))
return false;
}
return enchantments.size() > 0 && availEnchs > 0;
}
}