Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Всем привет, есть более простой способ забрать у игрока из инвентаря определенное количество определенного материала без прохода циклами по его инвентарю?
 
Всем привет, есть более простой способ забрать у игрока из инвентаря определенное количество определенного материала без прохода циклами по его инвентарю?
Нету. Все баккитрвкие методы удаления предметов также работают перебором
 
И ещё такой вопрос, как чекнуть, что при InventoryClickEvent игрок зажимает шрифт?
 
Последнее редактирование:
И ещё такой вопрос, как чекнуть, что при InventoryClickEvent игрок зажимает шрифт?
Примерно так:
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;
            }
        }
 
Всем привет. Возможно ли понять при поломке бревна, что это выросшее дерево,а не построенная игроком структура? (Кроме поблочной проверки, что сверху есть листья)
 
Всем привет. Возможно ли понять при поломке бревна, что это выросшее дерево,а не построенная игроком структура? (Кроме поблочной проверки, что сверху есть листья)
В самой игре такая возможность есть только для листьев - чтобы поставленные игроками листья не пропадали без опоры. Для других типов блоков придется писать что-то своё
 
В самой игре такая возможность есть только для листьев - чтобы поставленные игроками листья не пропадали без опоры. Для других типов блоков придется писать что-то своё
А ну значит можно смотреть, есть ли рядом тогда такие листья
 
Можно ли без конфликтов с другими плагинами, изменяющими скорборд, сделать невидимым ник игрока?
 
Нужно отследить появление нового мира и установить в нём геймрул. После десятка разных попыток пришел к этому, но не работает)
Код:
    @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");
    }
 
Нужно отследить появление нового мира и установить в нём геймрул. После десятка разных попыток пришел к этому, но не работает)
Код:
    @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");
    }
Как понять не работает?
Как ты проверял?
Сообщение в консоль пишется?
 
Как понять не работает?
Как ты проверял?
Сообщение в консоль пишется?
Не работает - геймрул не устанавливается, сообщение не выводится.
У меня стоит плагин DungeonsXL, который позволяет создать мир данж. При создании/редактировании папка с миром копируется в папку сервера и подгружается мир редактор.

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

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

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

}

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

    @EventHandler
...
 
И, раз уж я решил что-то сделать немного не так, как сказали, маленький вопрос.
В чём разница между
Bukkit.getServer().getPluginManager()
и
Bukkit.getPluginManager()
?
 
И, раз уж я решил что-то сделать немного не так, как сказали, маленький вопрос.
В чём разница между
Bukkit.getServer().getPluginManager()
и
Bukkit.getPluginManager()
?
Разницы 0. Как и с другими методами интерфейса Server. Просто алиасы для более короткого кода
 
А я то надеялся уместится в 1 классе до лучших времён...
Но, разобрался и всё работает, спасибо.
Если вдруг накосячил
Маин класс
Код:
    public void onEnable() {
        Bukkit.getServer().getPluginManager().registerEvents(new EventListener(), this);
...
Класс EventLisener
Код:
public class EventListener implements Listener {

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

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

Назад
Верх