-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Чисто базовый HolyWorld Helper Lite. Хз зачем он вам. Но держите.
ss - (noad) - Какой нахуй сс? Почитай, всё поймёшь.
ss - (noad) - Какой нахуй сс? Почитай, всё поймёшь.
Код:
package im.expensive.functions.impl.misc;
import com.google.common.eventbus.Subscribe;
import im.expensive.events.EventKey;
import im.expensive.events.EventPacket;
import im.expensive.events.EventUpdate;
import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import im.expensive.functions.settings.impl.BindSetting;
import im.expensive.functions.settings.impl.BooleanSetting;
import im.expensive.functions.settings.impl.ModeListSetting;
import im.expensive.utils.math.StopWatch;
import im.expensive.utils.player.InventoryUtil;
import net.minecraft.item.AirItem;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.network.play.client.CHeldItemChangePacket;
import net.minecraft.network.play.client.CPlayerTryUseItemPacket;
import net.minecraft.util.Hand;
import net.minecraft.util.text.TextFormatting;
@FunctionRegister(name = "HWHelper", type = Category.Misc)
public class HWHelper extends Function {
private final ModeListSetting mode = new ModeListSetting("Тип",
new BooleanSetting("Использование по бинду", true),
new BooleanSetting("Закрывать меню", true));
private final BindSetting disorientationKey = new BindSetting("Кнопка трапки", -1)
.setVisible(() -> mode.getValueByName("Использование по бинду").get());
private final BindSetting trapKey = new BindSetting("Кнопка стана", -1)
.setVisible(() -> mode.getValueByName("Использование по бинду").get());
InventoryUtil.Hand handUtil = new InventoryUtil.Hand();
long delay;
boolean disorientationThrow, trapThrow, snejokThrow, yavkaThrow, bojauraThrow, plastThrow;
public HWHelper() {addSettings(mode, disorientationKey, trapKey);
}
@Subscribe
private void onKey(EventKey e) {
if (e.getKey() == disorientationKey.get()) {
disorientationThrow = true;
}
if (e.getKey() == trapKey.get()) {
trapThrow = true;
}
}
@Subscribe
private void onUpdate(EventUpdate e) {
if (disorientationThrow) {
this.handUtil.handleItemChange(System.currentTimeMillis() - this.delay > 200L);
int hbSlot = getItemForName("Взрывная трапка", true);
int invSlot = getItemForName("Взрывная трапка", false);
if (invSlot == -1 && hbSlot == -1) {
print("Взрывная трапка не найдена!");
disorientationThrow = false;
return;
}
if (!mc.player.getCooldownTracker().hasCooldown(Items.ENDER_EYE)) {
print("Заюзал взрывную трапку!");
int slot = findAndTrowItem(hbSlot, invSlot);
if (slot > 8) {
mc.playerController.pickItem(slot);
}
}
disorientationThrow = false;
}
if (plastThrow) {
this.handUtil.handleItemChange(System.currentTimeMillis() - this.delay > 200L);
int hbSlot = getItemForName("Стан", true);
int invSlot = getItemForName("Стан", false);
if (invSlot == -1 && hbSlot == -1) {
print("Стан не найден!");
plastThrow = false;
return;
}
if (!mc.player.getCooldownTracker().hasCooldown(Items.DRIED_KELP)) {
print("Заюзал стан!");
int slot = findAndTrowItem(hbSlot, invSlot);
if (slot > 8) {
mc.playerController.pickItem(slot);
}
}
plastThrow = false;
}
}
@Subscribe
private void onPacket(EventPacket e) {
this.handUtil.onEventPacket(e);
}
private int findAndTrowItem(int hbSlot, int invSlot) {
if (hbSlot != -1) {
this.handUtil.setOriginalSlot(mc.player.inventory.currentItem);
mc.player.connection.sendPacket(new CHeldItemChangePacket(hbSlot));
mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
mc.player.swingArm(Hand.MAIN_HAND);
this.delay = System.currentTimeMillis();
return hbSlot;
}
if (invSlot != -1) {
handUtil.setOriginalSlot(mc.player.inventory.currentItem);
mc.playerController.pickItem(invSlot);
mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
mc.player.swingArm(Hand.MAIN_HAND);
this.delay = System.currentTimeMillis();
return invSlot;
}
return -1;
}
@Override
public void onDisable() {
disorientationThrow = false;
trapThrow = false;
snejokThrow = false;
bojauraThrow = false;
yavkaThrow = false;
plastThrow = false;
delay = 0;
super.onDisable();
}
private int getItemForName(String name, boolean inHotBar) {
int firstSlot = inHotBar ? 0 : 9;
int lastSlot = inHotBar ? 9 : 36;
for (int i = firstSlot; i < lastSlot; i++) {
ItemStack itemStack = mc.player.inventory.getStackInSlot(i);
if (itemStack.getItem() instanceof AirItem) {
continue;
}
String displayName = TextFormatting.getTextWithoutFormattingCodes(itemStack.getDisplayName().getString());
if (displayName != null && displayName.toLowerCase().contains(name)) {
return i;
}
}
return -1;
}
}