AutoGapple(re-upload) (Legacy)
-
Many thanks to Lolmc, his ideas inspired me of how I can make a AutoGapple
I have rewritten this using scriptAPIv1/Core.lib with 2 more function.- Automatically go back to the original slot instead of the fixed slot in setting
- Can find the apple in the inventory (not limited to hotbar).
https://github.com/commandblock2/scripts/blob/master/combat/AutoGapple.js
//Copyright 2020 commandblock2 distributed under AGPL-3.0-or-later GuiInventory = Java.type("net.minecraft.client.gui.inventory.GuiInventory") Potion = Java.type('net.minecraft.potion.Potion') var originalIndex = null var inventoryIndex = null module = { name: "AutoGapple", description: "Eat gapple when your health is low", author: "commandblock2", category: "combat", values: [ health = value.createFloat("Health", 10, 1, 20), itemSwitchDelay = value.createInteger("SwitchDelayms", 100, 0, 1000) ], onUpdate: function () { if (mc.thePlayer.getHealth() <= health.get() && !mc.thePlayer.isPotionActive(Potion.regeneration)) { gAppleIndex = InventoryUtils.findItem(36, 45, Items.golden_apple) gAppleIndex = gAppleIndex == -1 ? InventoryUtils.findItem(9, 36, Items.golden_apple) : gAppleIndex if (originalIndex == null) { // wtffffff have to check null because if (originalIndex) doesn't work when it equas to 0 originalIndex = mc.thePlayer.inventory.currentItem } if (gAppleIndex >= 36 && gAppleIndex < 45) { //switch to gapple mc.thePlayer.inventory.currentItem = gAppleIndex - 36 } else if (gAppleIndex >= 9 && gAppleIndex < 36 && !(mc.currentScreen instanceof GuiInventory)) { //switch gapple and 36 (first slot) inventoryIndex = gAppleIndex switchGapple(inventoryIndex) } mc.gameSettings.keyBindUseItem.pressed = true } else { reset() } } } function reset() { if (originalIndex != null || inventoryIndex != null) mc.gameSettings.keyBindUseItem.pressed = false if (originalIndex != null ) { mc.thePlayer.inventory.currentItem = originalIndex; originalIndex = null } if (inventoryIndex != null) { switchGapple(inventoryIndex) inventoryIndex = null } } function switchGapple(index) { //open inventory (I don't care about when you are on horse, implement it yourself) mc.getNetHandler().addToSendQueue(new C16PacketClientStatus(C16PacketClientStatus.EnumState.OPEN_INVENTORY_ACHIEVEMENT)); mc.displayGuiScreen(new GuiInventory(mc.thePlayer)); timeout(itemSwitchDelay.get(), function () { slot = mc.thePlayer.inventoryContainer.getSlot(index) mc.playerController.windowClick(mc.currentScreen.inventorySlots.windowId, slot.slotNumber, 0, 2, mc.thePlayer) mc.thePlayer.closeScreen() }) } script.import("Core.lib")
Edit: The first version will make u unable to block manully.
-
you can send C09 packet for changing the slot silently, and maybe use C08 for eating, C07 for stop eating (didn't test C08 and C07)
-
@ChocoPie_isme said in AutoGapple(re-upload):
you can send C09 packet for changing the slot silently, and maybe use C08 for eating, C07 for stop eating (didn't test C08 and C07)
why do u need a autogapple silently?
-
@LolMC said in AutoGapple(re-upload):
@ChocoPie_isme said in AutoGapple(re-upload):
you can send C09 packet for changing the slot silently, and maybe use C08 for eating, C07 for stop eating (didn't test C08 and C07)
why do u need a autogapple silently?
bcz some noobs think that silent things is cool and only pros can do it (and it's cool)
-
This post is deleted!
-
@LolMC said in AutoGapple(re-upload):
thanks
you have teach me how to use InventoryUtils
i have try that before but not workIt was kind of skidded from AutoSoup xDDDDDD
@ChocoPie_isme said in AutoGapple(re-upload):
you can send C09 packet for changing the slot silently, and maybe use C08 for eating, C07 for stop eating (didn't test C08 and C07)
Indeed you are correct, C07/C08/C09 packets should work. It would take more time for me to code a silent yet legit and working one. But most importantly the none silent one is naturally compatible to the FastEat(conditionally C03 packet sender), a silent one could take extra work.
-
Bro,you know since me attack other player eat Gapple.I died
-
I think it's better to avoid nullable variables.
//Copyright 2020 commandblock2 distributed under AGPL-3.0-or-later GuiInventory = Java.type("net.minecraft.client.gui.inventory.GuiInventory"); Potion = Java.type('net.minecraft.potion.Potion'); var originalIndex = -1; module = { name: "AutoGapple", description: "Eat gapple when your health is low", author: "commandblock2 && Lolmc", category: "combat", values: [ health = value.createFloat("Health", 10, 1, 20), itemSwitchDelay = value.createInteger("SwitchDelayms", 100, 0, 1000) ], onDisable: function() { originalIndex = -1; }, onUpdate: function () { if (mc.thePlayer.getHealth() <= health.get() && !mc.thePlayer.isPotionActive(Potion.regeneration)) { var gAppleIndex = InventoryUtils.findItem(9, 36, Items.golden_apple); if ((gAppleIndex - 9 | 35 - gAppleIndex) >= 0 && InventoryUtils.hasSpaceHotbar()) { if (!(mc.currentScreen instanceof GuiInventory)) mc.getNetHandler().addToSendQueue(new C16PacketClientStatus(C16PacketClientStatus.EnumState.OPEN_INVENTORY_ACHIEVEMENT)); mc.playerController.windowClick(0, gAppleIndex, 0, 1, mc.thePlayer);//Shift + left mouse click if (!(mc.currentScreen instanceof GuiInventory)) mc.getNetHandler().addToSendQueue(new C0DPacketCloseWindow()); return; } else if ((gAppleIndex - 36 | 44 - gAppleIndex) >= 0 && gAppleIndex != mc.thePlayer.inventory.currentItem) { if (!~originalIndex) originalIndex = mc.thePlayer.inventory.currentItem; mc.thePlayer.inventory.currentItem = gAppleIndex - 36; } if (!~gAppleIndex)// fix block when no gapple mc.gameSettings.keyBindUseItem.pressed = true; } else if (!~originalIndex) { mc.gameSettings.keyBindUseItem.pressed = false; mc.thePlayer.inventory.currentItem = originalIndex; originalIndex = -1; } } } script.import("Core.lib")