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

Помогите Как узнать какой блок сломал игрок?

Тема в разделе "Разработка плагинов для новичков", создана пользователем FreshinS, 18 июн 2019.

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

    FreshinS Ньюби

    Баллы:
    1
    Имя в Minecraft:
    FreshinS
    Я в этом деле новичок.

    @EventHandler
    public void block(BlockBreakEvent event) {
    Player player = event.getPlayer();
    Block block = event.getBlock();
    ItemStack item = new ItemStack(Что писать вот сюды.);
     
  2. MurlikMurlik

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

    Баллы:
    96
    Зачем сюда что то писать?
    Ты уже все узнал.
    Ты достал выше блок и игрока. Дальше гетай тип блока и игрока если нужно
     
  3. Автор темы
    FreshinS

    FreshinS Ньюби

    Баллы:
    1
    Имя в Minecraft:
    FreshinS
    Ну допустим, как его выдать игроку, там ItemStack нужен же.
     
  4. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Material material = block.getType();
    new ItemStack(material);
     
  5. Автор темы
    FreshinS

    FreshinS Ньюби

    Баллы:
    1
    Имя в Minecraft:
    FreshinS
    Один в один сделал, и понял в чём проблема. У меня походу весь плагин не робит. Поставил для проверки чтобы выводилось в чат что я сломал блок и пусто. В логах никаких ошибок с плагином нет (Я не заметил). Плагин включается.
     
  6. alexandrage

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

    Баллы:
    173
    Код:
        @EventHandler
        public void on(BlockBreakEvent e) {
            e.setDropItems(false);
            Player player = e.getPlayer();
            e.getBlock().getDrops(player.getInventory().getItemInMainHand()).forEach(stack -> player.getInventory().addItem(stack));
        }
     
  7. MurlikMurlik

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

    Баллы:
    96
    Ивент регистрируешь?
     
  8. Автор темы
    FreshinS

    FreshinS Ньюби

    Баллы:
    1
    Имя в Minecraft:
    FreshinS
    Всё спасибо люди, я понял в чём проблема. Я случайно написал OnEnable вместо onEnable.
     
  9. Автор темы
    FreshinS

    FreshinS Ньюби

    Баллы:
    1
    Имя в Minecraft:
    FreshinS
    Ладно, хорошо, можно ли сделать как у alexandrage, но чтобы ломая стекло силктачем то выпадало стекло. Щас пытался сделать шот не вышло.
     
  10. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    По идеи, тебе достаточно проверять наличие шелк.касания, и если оно есть - вместо варианта выше выдавать игроку просто block.getType(). Но нужно добавить несколько исключений, вроде семян, голов, спавнеров, шалкер-боксов и пр.
    Но раз речь о зачарованиях, то нужно и удачу на кирке вспомнить - тут уже гугл в лапки и на поиски подходящей формулы.
     
  11. alexandrage

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

    Баллы:
    173
    А это тебе уже к разрабам спиготапи. По идее со стака должно брать все меты и от них получать дроп.
     
  12. TheSkiffSailor

    TheSkiffSailor Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    TheSkiffSailor
    Код:
    @EventHandler
    public void onBreak(BlockBreakEvent e) {
        ItemStack stack = new ItemStack(e.getBlock().getType());
    }
     

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