Начинающий
- Статус
- Оффлайн
- Регистрация
- 22 Июн 2022
- Сообщения
- 71
- Реакции
- 0
Сделал чтобы перка кидалась с инва, а не только с хот бара, когда кидаю с хот бара все норм, но когда перка в инве, то меня просто кикает с сервера
Java:
@FeatureInfo(
name = "MiddleClickPearl",
type = Category.Util
)
public class MiddleClickPearl extends Feature {
public MiddleClickPearl() {
}
@Override
public void onEvent(Event event) {
if (event instanceof EventMouseTick mouseTick) {
if (mouseTick.getButton() == 2) {
this.handleMiddleClick();
}
}
}
private void handleMiddleClick() {
ItemStack enderPearlStack = findEnderPearlInInventory();
if (enderPearlStack != null && !IMinecraft.mc.player.getCooldownTracker().hasCooldown(Items.ENDER_PEARL)) {
int pearlSlot = findSlotOfItemStack(enderPearlStack);
if (pearlSlot != -1) {
sendHeldItemChangePacket(pearlSlot);
useItem(Hand.MAIN_HAND);
sendHeldItemChangePacket(IMinecraft.mc.player.inventory.currentItem);
}
}
}
private ItemStack findEnderPearlInInventory() {
for (int i = 0; i < IMinecraft.mc.player.inventory.mainInventory.size(); i++) {
ItemStack stackInSlot = IMinecraft.mc.player.inventory.getStackInSlot(i);
if (!stackInSlot.isEmpty() && stackInSlot.getItem() == Items.ENDER_PEARL) {
return stackInSlot;
}
}
return null;
}
private int findSlotOfItemStack(ItemStack stack) {
for (int i = 0; i < IMinecraft.mc.player.inventory.mainInventory.size(); i++) {
ItemStack stackInSlot = IMinecraft.mc.player.inventory.getStackInSlot(i);
if (!stackInSlot.isEmpty() && ItemStack.areItemStacksEqual(stack, stackInSlot)) {
return i;
}
}
return -1;
}
private void sendHeldItemChangePacket(int itemSlot) {
IMinecraft.mc.player.connection.sendPacket(new CHeldItemChangePacket(itemSlot));
}
private void useItem(Hand hand) {
IMinecraft.mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(hand));
}
}