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

Помогите Как сделать пополнение при ломаний блока

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

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

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

    Баллы:
    66
    Имя в Minecraft:
    CamedoZ
    Не могу понять как сделать ивент при ломаний арбуза, когда поднимешь сами кусочки арбуза, за 1 шт пополнялось по 30монет
     
  2. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Бери ItemPickupEvent(или как-то так) и мути то, что тебе нужно.
     
  3. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Ну можно поговнокодить и заносить в мапу игрока, сломавшего блок арбуза, а при подборе этих семян выполнять то, что нужно и удалять его из мапы.
     
  4. Автор темы
    CamedoZ

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

    Баллы:
    66
    Имя в Minecraft:
    CamedoZ
    а как подключить экономику, я совсем не врубаюсь
     
  5. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
  6. Автор темы
    CamedoZ

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

    Баллы:
    66
    Имя в Minecraft:
    CamedoZ
  7. alexandrage

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

    Баллы:
    173
    Ну все - выбрасывай.
     
  8. HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Кто-то пытается сделать режим с MaskMe сервера?
     
  9. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    У меня свой вариант будет.
    1. При ломании арбуза удалить весь дроп и заспавнить новый рандомно. (Это потому что нельзя получить конкретный дроп, который выпадет при ломании)
    2. В этот дроп, который ты заспавнил, добавить MetaData с ключем, что надо деньгу дать.
    3. При событии поднятия ломтиков, чекать этот ключ. Если есть такой, дать деньгу и удалить метадату.
     
  10. alexandrage

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

    Баллы:
    173
    С чего бы? Все там получается в бреак ивенте.
     
  11. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Где же? Там можно взять лут стандартный с блока. Но ты не получишь ItemStack который дропнется потом.
     
  12. HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    e.getBlock().getDrops(); Не?
     
  13. Автор темы
    CamedoZ

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

    Баллы:
    66
    Имя в Minecraft:
    CamedoZ
    Код:
    @EventHandler
        public void item(BlockBreakEvent e) {
            Player p = e.getPlayer();
            if() {
                
                
                
            }
    Что вписать в if ?
     
  14. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    С блока руды угля например ты получишь ничего. А кирка на удачу 3 тебе даст не 1 уголь. Даже если ты его закинешь в этот же метод, где есть инструмент, тебе выдаст 1 уголь, а дропнется рандомно. При чем тот что ты получишь ItemStack не будет соответствовать тому, что дропнется, а значит ты никак не сможешь прикрепить метадату.
    getDrops() - возвращает ст. дроп с блока при разрушении рукой
    getDrops(ItemStack tool) - возвращает ст. дроп с блока при разрушении инструментом (не идет учет чар)
     
  15. alexandrage

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

    Баллы:
    173
    PHP:
        @EventHandler(ignoreCancelled truepriority EventPriority.MONITOR)
        public 
    void on(BlockBreakEvent e) {
            if(
    e.getBlock().getType()==Material.MELON_BLOCK) {
                
    Collection<ItemStackdrop e.getBlock().getDrops();
                
    e.setDropItems(false);
                
    //TODO
            
    }
        }
    Как то так.
     
    Последнее редактирование: 30 окт 2017
  16. Автор темы
    CamedoZ

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

    Баллы:
    66
    Имя в Minecraft:
    CamedoZ
    Мне не нужно что бы просто арбузы не выподали, а из инвентаря менялись на деньги
     
  17. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Пробовал?
     
  18. Автор темы
    CamedoZ

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

    Баллы:
    66
    Имя в Minecraft:
    CamedoZ
    Я не понял как это в дело воспроизвести
     
  19. alexandrage

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

    Баллы:
    173
    Может так поймешь?
    PHP:
        @EventHandler(ignoreCancelled truepriority EventPriority.MONITOR)
        public 
    void on(EntityPickupItemEvent e) {
            if (
    e.getEntityType() == EntityType.PLAYER && e.getItem().getItemStack().getType() == Material.MELON) {
                if (
    e.getItem().getCustomName().equals("coins")) {
                    
    // TODO
                
    }
            }
        }

        @
    EventHandler(ignoreCancelled truepriority EventPriority.MONITOR)
        public 
    void on(BlockBreakEvent e) {
            if (
    e.getPlayer().getGameMode() != GameMode.CREATIVE) {
                if (
    e.getBlock().getType() == Material.MELON_BLOCK) {
                    
    Collection<ItemStackdrop e.getBlock().getDrops();
                    
    e.setDropItems(false);
                    for (
    ItemStack stack drop) {
                        
    Item item e.getBlock().getWorld()
                                .
    dropItemNaturally(e.getBlock().getLocation().add(new Vector(0.50.50.5)), stack);
                        
    // TODO
                        
    item.setCustomName("coins");
                    }
                }
            }
        }
     
    Последнее редактирование: 31 окт 2017
  20. Автор темы
    CamedoZ

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

    Баллы:
    66
    Имя в Minecraft:
    CamedoZ
    Ивента EntityPickupItemEvent и действия e.setDropItems(false); нету
     

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