Искусственное закидывание удочки

Версия Minecraft
1.12.2
68
1
7
Я получил удочку из инвентаря игрока:
Java:
ItemFishingRod fishing = (ItemFishingRod) player.inventory.getCurrentItem().getItem();
Далеко не залезая увидел в классе ItemFishingRod метод onItemRightClick с пометкой что вызывается когда игрок кликает по ПКМ:
"Called when the equipped item is right clicked."
Попытался вызвать его искусственно:
Java:
fishing.onItemRightClick(Minecraft.getMinecraft().world, player, EnumHand.MAIN_HAND);
Player отсюда:
Java:
EntityPlayerSP player = Minecraft.getMinecraft().player;
С удочкой ничего не происходит. Что я делаю не так?
 
3,005
192
592
Закидывание удочки происходит на серверной стороне, а Вы скорее всего используете на клиенте.
 
5,018
47
783
68
1
7
Закидывание удочки происходит на серверной стороне, а Вы скорее всего используете на клиенте.
А как тогда реализовать это? В какую сторону копать? Я хочу программно закидывать удочку
 
68
1
7
Ты уже получил предмет, зачем ты из него еще раз итем достаешь?:unsure:
getCurrentItem() возвращает ItemStack, который содержит Item, а не сам Item. В исходниках ItemStack не наследуется от классов, только реализует интерфейс ICapabilitySerializable, понятия не имею что-за он, но этого достаточно чтобы понять, что он к Item не имеет дела. С Forge разбираюсь 1 день, Java уже немного знаю. Мне нужно было получить ItemFishingRod, или наверно правильнее сказать, ссылку на него, на тот объект, который у меня в инвентаре. Уже как минимум за этим нужен getItem(), ну, как я это понимаю.
 
7,099
324
1,509
player у тебя и так есть, а мир можно получить из него
 
68
1
7
@FatCat полный код где вызываешь кинь

Java:
@Mod.EventBusSubscriber(value = Side.CLIENT, modid = Main.MOD_MODID)
public class EventsHandler {

    @SubscribeEvent
    public static void kek(MouseEvent e) {
        EntityPlayerSP player = Minecraft.getMinecraft().player;

        if (e.getButton() == 0 && player.inventory.getCurrentItem().getItem() instanceof ItemFishingRod) {
            ItemFishingRod fishing = (ItemFishingRod) player.inventory.getCurrentItem().getItem();
            fishing.onItemRightClick(player.world, player, EnumHand.MAIN_HAND);
        }
        
    }
}

С другими событиями тоже пробовал. Кстати. Какие слушатели для клавиатуры есть в forge? Например, как отловить нажатие кнопок H, K, S?
 
Сверху