1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Как реализовать выпадение листвы про ломании каким-нибудь инструментом??

Тема в разделе "Разработка плагинов для новичков", создана пользователем alex315, 20 апр 2016.

  1. Автор темы
    alex315

    alex315 Активный участник Пользователь

    Баллы:
    76
    Доброго времени суток! Появилась необходимость написать плагин на дроп листвы, при ее ломании каким-нибудь инструментом(на данный момент нужны ножницы:D) . Ибо то ли с Термосом прикол или не знаю, но сейчас не дропается листва при ломании ее ножницами. Как это реализовать? Искать причину пока времени нет, поэтому хочу временно решить проблему плагином. Буду очень благодарен помощи! (желательно куском кода)
     
  2. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    Код:
    @EventHandler
    public void onLeafDestroy(BlockBreakEvent event)
    {
        Player player = event.getPlayer();
    
        if (event.getBlock().getType() == Material.LEAVES)
        {
            if (player.getItemInHand().getType() == Material.SHEARS)
            {
                Location location = event.getBlock().getLocation();
                ItemStack leaf = new ItemStack(Material.LEAVES, 1);
                location.getWorld().dropItemNaturally(location, leaf);
            }
        }
    }
    
    Писал без IDE, могут быть ошибки/неточности. Надеюсь, с инициализацией листенера в майн классе проблем не возникнет?
     
    Последнее редактирование: 20 апр 2016
  3. Автор темы
    alex315

    alex315 Активный участник Пользователь

    Баллы:
    76
    Думаю нет) Ближе к вечеру попробую, спасибо большое!)
     
  4. Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Как бы при использовании ножниц на листву уже листва падает
     
  5. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    Как бы он описал проблему.

    Да кстати, в моём коде будет всегда выпадать дубовая листва, с любого дерева. Так что, тут шаманить нужно =)
     
    Последнее редактирование: 20 апр 2016
  6. Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Не дочитал, как обычно.

    Код:
    private final List<Material> leaves = Arrays.asList(new Material[]{Material.LEAVES, Material.LEAVES_2});
    @EventHandler
    public void onBlockBreak(BlockBreakEvent event) {
        if (event.getPlayer() == null) {
            return;
        }
        if (!this.leaves.contains(event.getBlock().getType())) {
            return;
        }
        if (event.getPlayer().getInventory().getItemInMainHand().getType().equals(Material.SHEARS)) {
            ItemStack toDrop = new ItemStack(event.getBlock().getType(), 1, event.getBlock().getData());
            event.getBlock().getWorld().dropItemNaturally(event.getBlock().getLocation(), toDrop);
        }
    }
     
  7. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    Я без IDE сложный код не пишу =)
     
  8. Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Я такой код в каждом плагине пишу, и уже его выучил нафиг.

    Кстати, сей код валиден для 1.9.*+, ниже пошлёт нафиг. Исправляется под старые версии весьма и весьма просто.
     

Поделиться этой страницей