-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
добавил новых предметов
Java:
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 = "FTHelper", type = Category.Misc)
public class GriefHelper 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());
private final BindSetting yavkaKey = new BindSetting("Кнопка явной пыли", -1)
.setVisible(() -> mode.getValueByName("Использование по бинду").get());
private final BindSetting bojauraKey = new BindSetting("Кнопка божьей ауры", -1)
.setVisible(() -> mode.getValueByName("Использование по бинду").get());
private final BindSetting plastKey = new BindSetting("Кнопка пласта", -1)
.setVisible(() -> mode.getValueByName("Использование по бинду").get());
private final BindSetting snejokKey = new BindSetting("Кнопка снежка заморозки", -1)
.setVisible(() -> mode.getValueByName("Использование по бинду").get());
final StopWatch stopWatch = new StopWatch();
InventoryUtil.Hand handUtil = new InventoryUtil.Hand();
long delay;
boolean disorientationThrow, trapThrow, snejokThrow, yavkaThrow, bojauraThrow, plastThrow;
public GriefHelper() {
addSettings(mode, disorientationKey, trapKey, snejokKey, plastKey, bojauraKey, yavkaKey);
}
@Subscribe
private void onKey(EventKey e) {
if (e.getKey() == disorientationKey.get()) {
disorientationThrow = true;
}
if (e.getKey() == trapKey.get()) {
trapThrow = true;
}
if (e.getKey() == bojauraKey.get()) {
bojauraThrow = true;
}
if (e.getKey() == snejokKey.get()) {
snejokThrow = true;
}
if (e.getKey() == plastKey.get()) {
plastThrow = true;
}
if (e.getKey() == yavkaKey.get()) {
yavkaThrow = 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;
}
if (yavkaThrow) {
this.handUtil.handleItemChange(System.currentTimeMillis() - this.delay > 200L);
int hbSlot = getItemForName("явная пыль", true);
int invSlot = getItemForName("явная пыль", false);
if (invSlot == -1 && hbSlot == -1) {
print("Явная пыль не найдена!");
yavkaThrow = false;
return;
}
if (!mc.player.getCooldownTracker().hasCooldown(Items.SUGAR)) {
print("Заюзал явную пыль!");
int slot = findAndTrowItem(hbSlot, invSlot);
if (slot > 8) {
mc.playerController.pickItem(slot);
}
}
yavkaThrow = false;
}
if (bojauraThrow) {
this.handUtil.handleItemChange(System.currentTimeMillis() - this.delay > 200L);
int hbSlot = getItemForName("божья аура", true);
int invSlot = getItemForName("божья аура", false);
if (invSlot == -1 && hbSlot == -1) {
print("Божья аура не найдена!");
bojauraThrow = false;
return;
}
if (!mc.player.getCooldownTracker().hasCooldown(Items.PHANTOM_MEMBRANE)) {
print("Заюзал божью ауру!");
int slot = findAndTrowItem(hbSlot, invSlot);
if (slot > 8) {
mc.playerController.pickItem(slot);
}
}
bojauraThrow = false;
}
if (snejokThrow) {
this.handUtil.handleItemChange(System.currentTimeMillis() - this.delay > 200L);
int hbSlot = getItemForName("снежок заморозка", true);
int invSlot = getItemForName("снежок заморозка", false);
if (invSlot == -1 && hbSlot == -1) {
print("Снежок не найден!");
snejokThrow = false;
return;
}
if (!mc.player.getCooldownTracker().hasCooldown(Items.SNOWBALL)) {
print("Заюзал снежок!");
int slot = findAndTrowItem(hbSlot, invSlot);
if (slot > 8) {
mc.playerController.pickItem(slot);
}
}
snejokThrow = false;
}
if (trapThrow) {
int hbSlot = getItemForName("трапка", true);
int invSlot = getItemForName("трапка", false);
if (invSlot == -1 && hbSlot == -1) {
print("Трапка не найдена");
trapThrow = false;
return;
}
if (!mc.player.getCooldownTracker().hasCooldown(Items.NETHERITE_SCRAP)) {
print("Заюзал трапку!");
int old = mc.player.inventory.currentItem;
int slot = findAndTrowItem(hbSlot, invSlot);
if (slot > 8) {
mc.playerController.pickItem(slot);
}
if (InventoryUtil.findEmptySlot(true) != -1 && mc.player.inventory.currentItem != old) {
mc.player.inventory.currentItem = old;
}
}
trapThrow = false;
}
this.handUtil.handleItemChange(System.currentTimeMillis() - this.delay > 200L);
}
@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;
}
}