-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Обычный фт хелпер юзает по бинду трапку и дезорент
FuntimeHelper.java:
public class FuntimeHelper extends Module {
BindSetting dezorka = new BindSetting("Дезорентация","");
BindSetting trapka = new BindSetting("Трапка","");
public FuntimeHelper() {
super("FuntimeHelper", ModuleCategory.PLAYER);
setup(dezorka,trapka);
}
@EventListener
public void onKey(KeyEvent keyEvent) {
if (keyEvent.isKeyDown(dezorka.getKey()) && canPerformAction(Items.ENDER_EYE)) {
use(Items.ENDER_EYE,"Дезорентация не найдена");
}
if (keyEvent.isKeyDown(trapka.getKey()) && canPerformAction(Items.NETHERITE_SCRAP)) {
use(Items.NETHERITE_SCRAP,"Трапка не найдена");
}
}
private boolean canPerformAction(Item item) {
return !mc.player.getItemCooldownManager().isCoolingDown(item);
}
public void use(Item item ,String notfoundText) {
SearchInvResult hotbarDezorResult = InventoryHandler.findItemInInventory(item);
if (hotbarDezorResult.found()) {
IHolder.sendPacket(new UpdateSelectedSlotC2SPacket(hotbarDezorResult.slot()));
IHolder.sendSequencedPacket(id -> new PlayerInteractItemC2SPacket(Hand.MAIN_HAND, id));
IHolder.sendPacket(new HandSwingC2SPacket(Hand.MAIN_HAND));
IHolder.sendPacket(new UpdateSelectedSlotC2SPacket(mc.player.getInventory().selectedSlot));
} else {
logDirect(String.format(notfoundText));
return;
}
}
}
IHolder.java (minced solution):
public interface IHolder {
MinecraftClient mc = MinecraftClient.getInstance();
static void sendPacket(Packet<?> packet) {
if (mc.getNetworkHandler() == null) return;
mc.getNetworkHandler().sendPacket(packet);
}
static void sendSequencedPacket(SequencedPacketCreator packetCreator) {
if (mc.getNetworkHandler() == null || mc.world == null) return;
try (PendingUpdateManager pendingUpdateManager = ((IClientWorldMixin) mc.world).getPendingUpdateManager().incrementSequence();){
int i = pendingUpdateManager.getSequence();
mc.getNetworkHandler().sendPacket(packetCreator.predict(i));
}
}
}
SearchInvResult:
public record SearchInvResult(int slot, boolean found, ItemStack stack) {
private static final SearchInvResult NOT_FOUND_RESULT = new SearchInvResult(-1, false, null);
public static SearchInvResult notFound() {
return NOT_FOUND_RESULT;
}
public static @NotNull SearchInvResult inOffhand(ItemStack stack) {
return new SearchInvResult(999, true, stack);
}
public boolean isHolding() {
if (mc.player == null) return false;
return mc.player.getInventory().selectedSlot == slot;
}
public boolean isInHotBar() {
return slot < 9;
}
}
InventoryHandler:
package ru.wuq.utils.common.util.player.inventory;
import net.minecraft.block.AirBlock;
import net.minecraft.block.EnderChestBlock;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.enchantment.Enchantments;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.item.ArmorItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.screen.slot.SlotActionType;
import net.minecraft.util.math.BlockPos;
import java.util.Arrays;
import java.util.List;
public class InventoryHandler implements IHolder {
public static int getTool(final BlockPos pos) {
int index = -1;
float CurrentFastest = 1.0f;
for (int i = 0; i < 9; ++i) {
final ItemStack stack = mc.player.getInventory().getStack(i);
if (stack != ItemStack.EMPTY) {
final float digSpeed = EnchantmentHelper.getLevel(Enchantments.EFFICIENCY, stack);
final float destroySpeed = stack.getMiningSpeedMultiplier(mc.world.getBlockState(pos));
if (mc.world.getBlockState(pos).getBlock() instanceof AirBlock) return -1;
if (mc.world.getBlockState(pos).getBlock() instanceof EnderChestBlock) {
if (EnchantmentHelper.getLevel(Enchantments.SILK_TOUCH, stack) > 0 && digSpeed + destroySpeed > CurrentFastest) {
CurrentFastest = digSpeed + destroySpeed;
index = i;
}
} else if (digSpeed + destroySpeed > CurrentFastest) {
CurrentFastest = digSpeed + destroySpeed;
index = i;
}
}
}
return index;
}
public static int getChestplate() {
for (int i = 0; i < 45; ++i) {
ItemStack itemStack = mc.player.getInventory().getStack(i);
if (itemStack.getItem() instanceof ArmorItem)
if (((ArmorItem)itemStack.getItem()).getSlotType() == EquipmentSlot.CHEST)
return i == 40 ? 45 : i < 9 ? 36 + i : i;
}
return -1;
}
@Deprecated
public static int getElytra() {
for (ItemStack stack : mc.player.getInventory().armor) {
if (stack.getItem() == Items.ELYTRA && stack.getDamage() < 430) {
return -2;
}
}
int slot = -1;
for (int i = 0; i < 36; i++) {
ItemStack s = mc.player.getInventory().getStack(i);
if (s.getItem() == Items.ELYTRA && s.getDamage() < 430) {
slot = i;
break;
}
}
if (slot < 9 && slot != -1) {
slot = slot + 36;
}
return slot;
}
public static SearchInvResult findInHotBar(Searcher searcher) {
if (mc.player != null) {
for (int i = 0; i < 9; ++i) {
ItemStack stack = mc.player.getInventory().getStack(i);
if (searcher.isValid(stack)) {
return new SearchInvResult(i, true, stack);
}
}
}
return SearchInvResult.notFound();
}
public static SearchInvResult findItemInHotBar(List<Item> items) {
return findInHotBar(stack -> items.contains(stack.getItem()));
}
public static SearchInvResult findItemInHotBar(Item... items) {
return findItemInHotBar(Arrays.asList(items));
}
public static SearchInvResult findInInventory(Searcher searcher) {
if (mc.player != null) {
for (int i = 36; i >= 0; i--) {
ItemStack stack = mc.player.getInventory().getStack(i);
if (searcher.isValid(stack)) {
if (i < 9) i += 36;
return new SearchInvResult(i, true, stack);
}
}
}
return SearchInvResult.notFound();
}
public static SearchInvResult findItemInInventory(List<Item> items) {
return findInInventory(stack -> items.contains(stack.getItem()));
}
public static SearchInvResult findItemInInventory(Item... items) {
return findItemInInventory(Arrays.asList(items));
}
public static void moveItem(int one, int two, boolean swap) {
mc.interactionManager.clickSlot(0, one, 0, SlotActionType.PICKUP, mc.player);
mc.interactionManager.clickSlot(0, two, 0, SlotActionType.PICKUP, mc.player);
if (swap) {
mc.interactionManager.clickSlot(0, one, 0, SlotActionType.PICKUP, mc.player);
}
}
public interface Searcher {
boolean isValid(ItemStack stack);
}
}
Последнее редактирование: