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

Стартап Помощь новичкам и тем, кто мало писал плагины. (+ LifeHack'и)

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

  1. Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    Всем привет, есть более простой способ забрать у игрока из инвентаря определенное количество определенного материала без прохода циклами по его инвентарю?
     
  2. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Нету. Все баккитрвкие методы удаления предметов также работают перебором
     
  3. Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    И ещё такой вопрос, как чекнуть, что при InventoryClickEvent игрок зажимает шрифт?
     
    Последнее редактирование: 16 окт 2019
  4. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Примерно так:
    PHP:
            boolean left;
            
    boolean shift;
            switch (
    event.getClick()) {
                case 
    LEFT:
                    
    left true;
                    
    shift false;
                    break;
                case 
    RIGHT:
                    
    left false;
                    
    shift false;
                    break;
                case 
    SHIFT_LEFT:
                    
    left true;
                    
    shift true;
                    break;
                case 
    SHIFT_RIGHT:
                    
    left false;
                    
    shift true;
                    break;
                default: {
                    
    event.setCancelled(true);
                    return;
                }
            }
     
  5. Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    Всем привет. Возможно ли понять при поломке бревна, что это выросшее дерево,а не построенная игроком структура? (Кроме поблочной проверки, что сверху есть листья)
     
  6. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    В самой игре такая возможность есть только для листьев - чтобы поставленные игроками листья не пропадали без опоры. Для других типов блоков придется писать что-то своё
     
  7. Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    А ну значит можно смотреть, есть ли рядом тогда такие листья
     
  8. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Попробуй так, главное в рекурсию не уйти
     
  9. Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    Можно ли без конфликтов с другими плагинами, изменяющими скорборд, сделать невидимым ник игрока?
     
  10. HauserGrim

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

    Баллы:
    96
    Нужно отследить появление нового мира и установить в нём геймрул. После десятка разных попыток пришел к этому, но не работает)
    Код:
        @EventHandler
        public void onWorldLoad(WorldLoadEvent event) {
            World world = event.getWorld();
            world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false);
            getLogger().info("Set gamerule for world " + world + " world");
        }
      
     
  11. Exception_Prototype

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

    Баллы:
    96
    Как понять не работает?
    Как ты проверял?
    Сообщение в консоль пишется?
     
  12. HauserGrim

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

    Баллы:
    96
    Не работает - геймрул не устанавливается, сообщение не выводится.
    У меня стоит плагин DungeonsXL, который позволяет создать мир данж. При создании/редактировании папка с миром копируется в папку сервера и подгружается мир редактор.

    У меня так же есть при запуске сервера установка геймрула в дефолт мирах, но работает
    Код:
        public void onEnable() {
            for (World world : Bukkit.getWorlds()) {
                world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false);
            }
        }
     
  13. Exception_Prototype

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

    Баллы:
    96
    Если даже сообщение не выводится, то значит ты эвент не зарегал
     
  14. HauserGrim

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

    Баллы:
    96
    Этого же должно быть достаточно?
     
    Последнее редактирование: 11 ноя 2019
  15. Exception_Prototype

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

    Баллы:
    96
    public class EventListener implements Listener {

    @EventHandler
    public void method(...) {...}

    }

    Нет, Bukkit.getPluginManager().registerEvents(new EventListener(), plugin);
     
    Последнее редактирование: 11 ноя 2019
  16. HauserGrim

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

    Баллы:
    96
    А я то надеялся уместится в 1 классе до лучших времён...
    Но, разобрался и всё работает, спасибо.
    Если вдруг накосячил
    Маин класс
    Код:
        public void onEnable() {
            Bukkit.getServer().getPluginManager().registerEvents(new EventListener(), this);
    ...
    Класс EventLisener
    Код:
    public class EventListener implements Listener {
    
        @EventHandler
    ...
     
  17. HauserGrim

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

    Баллы:
    96
    И, раз уж я решил что-то сделать немного не так, как сказали, маленький вопрос.
    В чём разница между
    Bukkit.getServer().getPluginManager()
    и
    Bukkit.getPluginManager()
    ?
     
  18. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Разницы 0. Как и с другими методами интерфейса Server. Просто алиасы для более короткого кода
     
  19. HauserGrim

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

    Баллы:
    96
    Примерно так и подумал, но вчера уже не хотел заморачиваться, спасибо.
     
  20. Exception_Prototype

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

    Баллы:
    96
    Тебе никто не мешает сделать главный класс плагина implements Listener
    и делать Bukkit.getPluginManager().registerEvents(this, this);
     

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