package fun.vortex.features.impl.combat;
import fun.vortex.events.player.TickEvent;
import fun.vortex.features.module.Module;
import fun.vortex.features.module.ModuleCategory;
import fun.vortex.features.module.setting.implement.SliderSettings;
import fun.vortex.utils.client.managers.event.EventHandler;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.experimental.FieldDefaults;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.screen.slot.SlotActionType;
@Getter
@FieldDefaults(level = AccessLevel.PRIVATE)
public class AutoTotem extends Module {
final SliderSettings healthSetting = new SliderSettings("Хп", "HP for totem").range(1.0f, 20.0f).setValue(10.0f);
final SliderSettings delaySetting = new SliderSettings("Задержка", "Ticks between swaps").range(0.0f, 5.0f).setValue(0.0f);
int delayTimer = 0;
public AutoTotem() {
super("AutoTotem", ModuleCategory.COMBAT);
setup(healthSetting, delaySetting);
}
@Override
public void deactivate() {
delayTimer = 0;
}
@EventHandler
public void onTick(TickEvent event) {
if (mc.player == null || mc.interactionManager == null) return;
if (mc.player.getOffHandStack().isOf(Items.TOTEM_OF_UNDYING)) {
delayTimer = 0;
return;
}
if (delayTimer > 0) {
delayTimer--;
return;
}
float hp = mc.player.getHealth() + mc.player.getAbsorptionAmount();
if (hp <= healthSetting.getValue()) {
int slot = findTotemSlot();
if (slot != -1) {
mc.interactionManager.clickSlot(mc.player.playerScreenHandler.syncId, slot, 0, SlotActionType.PICKUP, mc.player);
mc.interactionManager.clickSlot(mc.player.playerScreenHandler.syncId, 45, 0, SlotActionType.PICKUP, mc.player);
mc.interactionManager.clickSlot(mc.player.playerScreenHandler.syncId, slot, 0, SlotActionType.PICKUP, mc.player);
delayTimer = (int) delaySetting.getValue();
}
}
}
private int findTotemSlot() {
for (int i = 9; i < 45; i++) {
ItemStack stack = mc.player.playerScreenHandler.getSlot(i).getStack();
if (stack.isOf(Items.TOTEM_OF_UNDYING)) {
return i;
}
}
return -1;
}
}