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

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

некоторым командам нужен игрок в кач-ве сендера
Лучше такие плагины удалять/переписывать и их авторов гнать ссанными тряпками. Команды перезагрузки плагина/конфига должны быть доступны любому отправителю .-.
 
Народ, решил начать изучать разработку плагинов. Столкнулся с вопросом относительно maven, стоит ли его использовать? Часто вижу плагины с зависимостями через maven, но в этом вопросе пока мало чего понимаю. Может кто нибудь объяснить?
 
Народ, решил начать изучать разработку плагинов. Столкнулся с вопросом относительно maven, стоит ли его использовать? Часто вижу плагины с зависимостями через maven, но в этом вопросе пока мало чего понимаю. Может кто нибудь объяснить?
maven используется для того, чтобы не таскать со своим проектом мегабайты библиотек. Т.е. если в твоём проекте guava + gson + commons + apache lang + vasya + petya, то просто указываешь в pom.xml что и какую версию загружать. В итоге ты получаешь проект весом в 100-200 кб, вместо 10-20 мб. Ну и так же у мавена есть плагины, которые помогают автоматизировать некоторую работу.
 
Пытаясь анализировать код других плагинов (для примера AutoMessage) натыкаюсь на plugin:
Java:
public class AutoMessage extends JavaPlugin {
    public static AutoMessage plugin;

    @Override
    public void onEnable() {
        plugin = this;
        blablabla...
    }

    @Override
    public void onDisable() {
        MessageLists.unschedule();

        plugin = null;
    }
}
И plugin встречается только тут, больше его нигде не вызывают. Зачем оно надо?
 
Пытаясь анализировать код других плагинов (для примера AutoMessage) натыкаюсь на plugin:
Java:
public class AutoMessage extends JavaPlugin {
    public static AutoMessage plugin;

    @Override
    public void onEnable() {
        plugin = this;
        blablabla...
    }

    @Override
    public void onDisable() {
        MessageLists.unschedule();

        plugin = null;
    }
}
И plugin встречается только тут, больше его нигде не вызывают. Зачем оно надо?
ну если он статический, то скорее всего его юзают другие классы.
 
Пытаясь анализировать код других плагинов (для примера AutoMessage) натыкаюсь на plugin:
Java:
public class AutoMessage extends JavaPlugin {
    public static AutoMessage plugin;

    @Override
    public void onEnable() {
        plugin = this;
        blablabla...
    }

    @Override
    public void onDisable() {
        MessageLists.unschedule();

        plugin = null;
    }
}
И plugin встречается только тут, больше его нигде не вызывают. Зачем оно надо?
Это так называемый mainInstance плагина.Ссылка на главный класс, его используют в других частях программы для получения разного рода информации, например конфига(plugin.getConfig()) или сервера(plugin.getServer).Так же, с помощью этой ссылки можно использовать методы главного класса, не создавая экземпляр главного класса(ибо при создании экземпляра главного класса плагина, вылетает ошибка, так как ты инициализируешь плагин в двух местах).А так, можно передать эту ссылку в параметры конструктора стороннего класса, и использовать нужные методы там.Некоторые делают константой, некоторые создают геттеры, по разному бывает.
 
ну если он статический, то скорее всего его юзают другие классы.
Спасибо. Зачекал остальные классы и увидел:
Java:
sender.sendMessage(CommandManager.getExtra() + "__________________.[ " + CommandManager.getHighlight() + AutoMessage.plugin.getName() + CommandManager.getExtra() + " ].__________________");
 
Подскажите новичку... Как сделать так, чтобы при нажатии игроком на табличку, ему давались деньги, но при повторном нажатии, ничего не происходило, или отправлялось сообщение... Я так понял что нужно юзать player.setMetadata, но я не совсем понял как его использовать.... подскажите нубу, плиз)
 
Здравствуйте. Можете ли мне помочь с таким вопросом: "Как сделать, чтобы после выполнения действия шел отсчет времени, а после, действие снова выполнялось?
 
Мне нужно что бы За мной постоянно летал армер стенд( не видимый) и на нём была голова(на армер стенде)
 
Как получить все аргументы любой команды, которую отправила консоль?
 
Помогите с выдачей прав плагина essentials

Есть, например, в pex две группы , админ и креатив, как можно сделать так, чтобы при выдаче права креативу essentials.gamemode, ему не выдавался режим приключений и режим наблюдателя? Ну и админу соответственно также.

Право "-essentials.gamemode.creative" и т.д не помогает
 
Допустим я делаю лаунчер и мне нужно узнать онлайн сервера, как это сделать?
 
как сделать чтобы привелегия писалась в чате?
 
Подскажите, пожалуйста, как сделать, чтобы при ударе игрока, что-либо выполнялось. Какой эвент и какое условие?
 
Подскажите, пожалуйста, как сделать, чтобы при ударе игрока, что-либо выполнялось. Какой эвент и какое условие?
EntityDamageByEntityEvent
Коротенький пример:
Java:
    @EventHandler
    public void on(EntityDamageByEntityEvent e)
    {
        Player p = (Player) e.getDamager();
       
        if(e.getEntityType() == EntityType.PLAYER)
        {
            String name = e.getEntity().getName();
           
            p.sendMessage("Вы ударили игрока " + name);
        }
    }
 
Последнее редактирование:
EntityDamageByEntityEvent
Коротенький пример:
Java:
    @EventHandler
    public void on(EntityDamageByEntityEvent e)
    {
        Player p = (Player) e.getDamager();
      
        if(e.getEntityType() == EntityType.PLAYER)
        {
            String name = e.getEntity().getName();
          
            p.sendMessage("Вы ударили игрока " + name);
        }
    }
Я дамагер, и я - кактус. Слови ClassCastException.
 

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

Назад
Верх