-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
кароче жеско напастил у чат гпт чтоб можно было юзать предметы из инва а не только из слотов мб кому то нужно будет
[/ICODE]
Код:
package im.manloxx.functions.impl.misc;
import com.google.common.eventbus.Subscribe;
import im.manloxx.events.EventKey;
import im.manloxx.events.EventMotion;
import im.manloxx.events.EventUpdate;
import im.manloxx.functions.api.Category;
import im.manloxx.functions.api.Function;
import im.manloxx.functions.api.FunctionRegister;
import im.manloxx.functions.settings.impl.BindSetting;
import im.manloxx.utils.player.InventoryUtil;
import net.minecraft.item.Item;
import net.minecraft.item.Items;
import net.minecraft.network.play.client.CHeldItemChangePacket;
import net.minecraft.network.play.client.CPlayerTryUseItemPacket;
import net.minecraft.util.Hand;
@FunctionRegister(name = "HW Helper", type = Category.Misc)
public class HWhelper extends Function {
final BindSetting throwKey = new BindSetting("Трапка", -1);
final BindSetting secondaryKey = new BindSetting("Станка", -1);
final BindSetting snowballKey = new BindSetting("Ком Снега", -1);
final BindSetting fireworkStarKey = new BindSetting("Прощальный гул", -1);
final BindSetting opit = new BindSetting("опыт", -1);
private Item currentItem;
private boolean actionPending = false;
private long actionCompleteTime = -1L;
private int originalSlot = -1;
private int originalInventorySlot = -1;
public HWhelper() {
this.addSettings(throwKey, secondaryKey, snowballKey, fireworkStarKey, opit);
}
@Subscribe
public void onKey(EventKey e) {
if (e.getKey() == throwKey.get()) {
prepareAction(Items.PRISMARINE_SHARD);
} else if (e.getKey() == secondaryKey.get()) {
prepareAction(Items.NETHER_STAR);
} else if (e.getKey() == snowballKey.get()) {
prepareAction(Items.SNOWBALL);
} else if (e.getKey() == fireworkStarKey.get()) {
prepareAction(Items.FIREWORK_STAR);
} else if (e.getKey() == opit.get()) {
prepareAction(Items.EXPERIENCE_BOTTLE);
}
}
private void prepareAction(Item item) {
currentItem = item;
actionPending = true;
}
@Subscribe
private void onMotion(EventMotion e) {
if (actionPending && currentItem != null) {
if (!mc.player.getCooldownTracker().hasCooldown(currentItem)) {
int slot = InventoryUtil.getInstance().getSlotInInventoryOrHotbar(currentItem, true);
if (slot == -1) {
slot = InventoryUtil.getInstance().getSlotInInventoryOrHotbar(currentItem, false);
if (slot != -1) {
moveItemToHotbar(slot);
performThrow(mc.player.inventory.currentItem);
actionCompleteTime = System.currentTimeMillis() + 100L;
}
} else {
performThrow(slot);
}
}
actionPending = false;
}
}
private void moveItemToHotbar(int inventorySlot) {
originalInventorySlot = inventorySlot;
mc.playerController.pickItem(inventorySlot); // Перемещение предмета из инвентаря в хотбар
}
private void moveItemBackToInventory() {
if (originalInventorySlot != -1) {
mc.playerController.pickItem(originalInventorySlot); // Возврат предмета обратно в инвентарь
}
}
private void performThrow(int slot) {
originalSlot = mc.player.inventory.currentItem;
mc.player.inventory.currentItem = slot;
mc.playerController.updateController();
mc.player.connection.sendPacket(new CHeldItemChangePacket(slot));
mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
mc.player.swingArm(Hand.MAIN_HAND);
}
@Subscribe
private void onUpdate(EventUpdate e) {
if (actionCompleteTime > 0 && System.currentTimeMillis() >= actionCompleteTime) {
moveItemBackToInventory();
actionCompleteTime = -1L;
}
}
@Override
public void onDisable() {
actionPending = false;
actionCompleteTime = -1L;
originalSlot = -1;
originalInventorySlot = -1;
currentItem = null;
super.onDisable();
}
}