basically rewrite offhandgap and make disableHealth work

disabling autototem when offhandgap is enabled doesn't update the state atm
This commit is contained in:
Bella 2020-02-26 17:05:01 -05:00
parent a87286ec5e
commit 663bd3dc2b
1 changed files with 58 additions and 37 deletions

View File

@ -2,6 +2,7 @@ package me.zeroeightsix.kami.module.modules.combat;
import me.zero.alpine.listener.EventHandler;
import me.zero.alpine.listener.Listener;
import me.zeroeightsix.kami.command.Command;
import me.zeroeightsix.kami.event.events.PacketEvent;
import me.zeroeightsix.kami.module.Module;
import me.zeroeightsix.kami.module.ModuleManager;
@ -24,9 +25,9 @@ import static me.zeroeightsix.kami.module.modules.combat.AutoReplenish.getInvent
*/
@Module.Info(name = "OffhandGap", category = Module.Category.COMBAT, description = "Holds a God apple when right clicking your sword!")
public class OffhandGap extends Module {
private Setting<Boolean> preventDesync = register(Settings.b("Prevent Desync", false));
private Setting<Double> disableHealth = register(Settings.doubleBuilder("Disable Health").withMinimum(0.0).withValue(4.0).withMaximum(20.0).build());
private Setting<Boolean> weaponCheck = register(Settings.b("Sword or Axe Only", true));
private Setting<Boolean> preventDesync = register(Settings.b("Prevent Desync", false));
// private Setting<Mode> modeSetting = register(Settings.e("Use Mode", Mode.GAPPLE));
private enum Mode {
@ -34,56 +35,66 @@ public class OffhandGap extends Module {
}
int gaps = -1;
boolean wasEnabled = false;
boolean autoTotemWasEnabled = false;
boolean cancelled = false;
boolean autoTotemUserEnabled = false;
boolean changingState = false;
Item usedItem; // epic meme
Item toUseItem;
@EventHandler
private Listener<PacketEvent.Send> sendListener = new Listener<>(e ->{
if (e.getPacket() instanceof CPacketPlayerTryUseItem) {
if (mc.player.getHeldItemMainhand().getItem() instanceof ItemSword || mc.player.getHeldItemMainhand().getItem() instanceof ItemAxe || passItemCheck()) {
if (ModuleManager.isModuleEnabled("AutoTotem") && mc.player.getHealth() + mc.player.getAbsorptionAmount() >= disableHealth.getValue()) {
wasEnabled = true;
ModuleManager.getModuleByName("AutoTotem").disable();
while (!cancelled) {
if (e.getPacket() instanceof CPacketPlayerTryUseItem) {
if (mc.player.getHealth() + mc.player.getAbsorptionAmount() <= disableHealth.getValue()) {
return;
}
if (preventDesync.getValue()) {
usedItem = mc.player.getHeldItemMainhand().getItem();
if (mc.player.getHeldItemMainhand().getItem() instanceof ItemSword || mc.player.getHeldItemMainhand().getItem() instanceof ItemAxe || passItemCheck()) {
if (ModuleManager.isModuleEnabled("AutoTotem")) {
autoTotemWasEnabled = true;
ModuleManager.getModuleByName("AutoTotem").disable();
}
if (preventDesync.getValue()) { /* Save item for later when using preventDesync */
usedItem = mc.player.getHeldItemMainhand().getItem();
}
enableGaps(gaps);
}
moveToOffhand(gaps);
}
}
try {
/* If you stop holding right click move totem back */
if (wasEnabled == !ModuleManager.isModuleEnabled("AutoTotem") && !mc.gameSettings.keyBindUseItem.isKeyDown() && mc.player.getHeldItemOffhand().getItem() == Items.GOLDEN_APPLE) {
disableGaps();
}
/* In case you didn't stop right clicking but you switched items by scrolling or something */
/* Only with preventDesync enabled */
else if (preventDesync.getValue() && wasEnabled == !ModuleManager.isModuleEnabled("AutoTotem") && (usedItem != mc.player.getHeldItemMainhand().getItem()) && mc.player.getHeldItemOffhand().getItem() == Items.GOLDEN_APPLE) {
usedItem = mc.player.getHeldItemMainhand().getItem();
disableGaps();
}
/* Force disable if under health limit */
else if (mc.player.getHealth() + mc.player.getAbsorptionAmount() >= disableHealth.getValue()) {
disableGaps();
}
}
catch (NullPointerException ignored) { }
});
try {
/* If you stop holding right click move totem back */
if (!mc.gameSettings.keyBindUseItem.isKeyDown() && mc.player.getHeldItemOffhand().getItem() == Items.GOLDEN_APPLE) {
disableGaps();
}
/* In case you didn't stop right clicking but you switched items by scrolling or something */
else if ((usedItem != mc.player.getHeldItemMainhand().getItem()) && mc.player.getHeldItemOffhand().getItem() == Items.GOLDEN_APPLE) {
/* Only with preventDesync enabled */
if (preventDesync.getValue()) {
usedItem = mc.player.getHeldItemMainhand().getItem();
disableGaps();
}
public void disableGaps() {
moveFromOffhand(gaps);
ModuleManager.getModuleByName("AutoTotem").enable();
}
}
/* Force disable if under health limit */
else if (mc.player.getHealth() + mc.player.getAbsorptionAmount() <= disableHealth.getValue()) {
disableGaps();
}
} catch (NullPointerException ignored) { }
}
});
@Override
public void onUpdate() {
if (mc.player == null) return;
// if (modeSetting.getValue().equals(Mode.GAPPLE)) {
/* If your health doesn't meet the cutoff then set it to true */
cancelled = mc.player.getHealth() + mc.player.getAbsorptionAmount() <= disableHealth.getValue();
// if (modeSetting.getValue().equals(Mode.GAPPLE)) {
toUseItem = Items.GOLDEN_APPLE;
// } else if (modeSetting.getValue().equals(Mode.FOOD)) {
// if (getFullInventory().containsKey(Items.))
// }
// Map<Integer, ItemStack> fullInventory = getFullInventory();
// System.out.println(fullInventory);
if (mc.player.getHeldItemOffhand().getItem() != Items.GOLDEN_APPLE) {
for (int i = 0; i < 45; i++) {
if (mc.player.inventory.getStackInSlot(i).getItem() == Items.GOLDEN_APPLE) {
@ -116,14 +127,24 @@ public class OffhandGap extends Module {
return true;
}
void moveToOffhand(int slot) {
public void disableGaps() {
changingState = true;
if (autoTotemWasEnabled != ModuleManager.isModuleEnabled("AutoTotem")) {
moveGapsFromOffhand(gaps);
ModuleManager.getModuleByName("AutoTotem").enable();
autoTotemWasEnabled = false;
}
changingState = false;
}
void enableGaps(int slot) {
if (mc.player.getHeldItemOffhand().getItem() != Items.GOLDEN_APPLE) {
mc.playerController.windowClick(0, slot < 9 ? slot + 36 : slot, 0, ClickType.PICKUP, mc.player);
mc.playerController.windowClick(0, 45, 0, ClickType.PICKUP, mc.player);
}
}
void moveFromOffhand(int slot) {
void moveGapsFromOffhand(int slot) {
if (mc.player.getHeldItemOffhand().getItem() == Items.GOLDEN_APPLE) {
mc.playerController.windowClick(0, 45, 0, ClickType.PICKUP, mc.player);
mc.playerController.windowClick(0, slot < 9 ? slot + 36 : slot, 0, ClickType.PICKUP, mc.player);