-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
SS - прост юзает предмет из инвентаря
CODE:
package dev.excellent.client.module.impl.misc;
import dev.excellent.api.event.impl.input.KeyboardPressEvent;
import dev.excellent.api.event.impl.input.MouseInputEvent;
import dev.excellent.api.event.impl.player.UpdateEvent;
import dev.excellent.api.event.impl.server.PacketEvent;
import dev.excellent.api.interfaces.event.Listener;
import dev.excellent.client.module.api.Category;
import dev.excellent.client.module.api.Module;
import dev.excellent.client.module.api.ModuleInfo;
import dev.excellent.client.script.ScriptConstructor;
import dev.excellent.impl.util.pattern.Singleton;
import dev.excellent.impl.util.player.InvUtil;
import dev.excellent.impl.value.impl.KeyValue;
import net.minecraft.item.AirItem;
import net.minecraft.item.Item;
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;
@ModuleInfo(name = "HolyWorld Helper", description = "Помощник для холиворлда", category = Category.MISC)
public class HolyWorldHelper extends Module {
public static Singleton<FunTimeHelper> singleton = Singleton.create(() -> Module.link(FunTimeHelper.class));
private final KeyValue useFireCharge = new KeyValue("Исп Штучку", this, -1);
private final KeyValue useNetherStar = new KeyValue("Исп Стан", this, -1);
private final KeyValue usePrismarineShard = new KeyValue("Исп Трапку", this, -1);
private final ScriptConstructor scriptConstructor = ScriptConstructor.create();
private final InvUtil.Hand handUtil = new InvUtil.Hand();
private long delay;
@Override
public void onDisable() {
super.onDisable();
delay = 0;
}
private final Listener<KeyboardPressEvent> onKey = event -> {
if (event.getKeyCode() == useFireCharge.getValue()) {
useItemFromInventory(ItemType.BLAZE_ROD);
}
if (event.getKeyCode() == useNetherStar.getValue()) {
useItemFromInventory(ItemType.NETHER_STAR);
}
if (event.getKeyCode() == usePrismarineShard.getValue()) {
useItemFromInventory(ItemType.PRISMARINE_SHARD);
}
};
private final Listener<MouseInputEvent> onMouse = event -> {
if (event.getMouseButton() == useFireCharge.getValue()) {
useItemFromInventory(ItemType.BLAZE_ROD);
}
if (event.getMouseButton() == useNetherStar.getValue()) {
useItemFromInventory(ItemType.NETHER_STAR);
}
if (event.getMouseButton() == usePrismarineShard.getValue()) {
useItemFromInventory(ItemType.PRISMARINE_SHARD);
}
};
private final Listener<PacketEvent> packet = handUtil::onEventPacket;
private final Listener<UpdateEvent> update = event -> {
scriptConstructor.update();
this.handUtil.handleItemChange(System.currentTimeMillis() - this.delay > 200L);
};
public void useItemFromInventory(ItemType itemType) {
scriptConstructor.cleanup().addStep(0, () -> {
switch (itemType) {
case BLAZE_ROD -> findAndUseItem("взрывная палочка", Items.BLAZE_ROD);
case NETHER_STAR -> findAndUseItem("оглушение", Items.NETHER_STAR);
case PRISMARINE_SHARD -> findAndUseItem("взрывная трапка", Items.PRISMARINE_SHARD);
}
this.handUtil.handleItemChange(System.currentTimeMillis() - this.delay > 200L);
});
}
private void findAndUseItem(String name, Item item) {
int hbSlot = getItemForName(name, true);
int invSlot = getItemForName(name, false);
if (invSlot == -1 && hbSlot == -1) {
return;
}
if (!mc.player.getCooldownTracker().hasCooldown(item)) {
int old = mc.player.inventory.currentItem;
int slot = findAndTrowItem(hbSlot, invSlot);
if (slot > 8) {
mc.playerController.pickItem(slot);
}
if (InvUtil.findEmptySlot(true) != -1 && mc.player.inventory.currentItem != old) {
mc.player.inventory.currentItem = old;
}
}
}
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;
}
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;
}
public enum ItemType {
BLAZE_ROD, NETHER_STAR, PRISMARINE_SHARD
}
}