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

Помогите Помогите разобраться с начальным кодом (Уровень: Супер новичок)

Nicolas_Nicolay

Активный участник
Пользователь
Баллы
61
Всем привет, уже имею предположение, что ответы будут по типу: "В интернете и так все есть", "Гугл в помощь" и т.п. Но, все таки, я спрошу. Я попрошу внятно разжевать какие из ниже перечисленных строк что делают, чем являются и за что отвечают? Я буду крайне благодарен, ведь поняв на 100%, я стану куда лучше понимать структуру написания плагинов.
Код:
    public void onEnable() {
        Bukkit.getPluginManager().registerEvents(new Handler(),this);
        this.getLogger().info("Plugin was Enable!");
    }
На сколько я понял, тут мы вызываем метод onEnable, который переопределяем?
Следующая строка мне не очень понятна(можно сказать, совсем не понятна), объясните ,пожалуйста,
что делает каждый из методов в ней, куда обращается?

Дальше мне не совсем понятная эта конструкция:
Код:
public class Handler implements Listener{
    @EventHandler
    public void onBlock(BlockBreakEvent e) {
        Player p = e.getPlayer();
    }
}
Мы создаем метод onBlock, в котором вписываем аргумент, в виде события(кстати, чем является событие, тоже методом?). И мне эта часть не понятна, public void onBlock(BlockBreakEvent e), что означает эта буква "е", объясните, пожалуйтса, что это вообще такое?
Извините за столь глупые и, скорее всего, неправильные вопросы.Но по другому я не смог... :c
 
Bukkit.getPluginManager().registerEvents(new Handler(),this);
Регистрируем слушатель событий (Handler).
this.getLogger().info("Plugin was Enable!");
Бесполезная строка кода, которая посылает в лог сообщение о включении плагина.
кстати, чем является событие, тоже методом?
Этот метод будет запускаться каждый раз, когда событие будет случаться (в примере - разрушение блока игроком).
public void onBlock(BlockBreakEvent e), что означает эта буква "е"
Переменная, которая принимает значение события BlockBreakEvent - можешь её иначе назвать, если есть желание.
 
Ну если уж доходит до такого, что непонятна к примеру та же буква "e", то крайне рекомендую хорошо подучить основы Java, ибо без этого будет крайне трудно тебе понимать, потому что учить основам здесь никто не будет, здесь помощь по Bukkit API и т.п., а не центр изучения языка программирования.

Довольно неплохой учебник по Java: "Герберт Шилдт Java 8. Полное руководство". Если хорошо поискать, можно найти бесплатно. Есть еще для начинающих, возможно будет проще, но помоему там намного хуже все описывается, и даже для новичков полное руководство легче.

Все же кратко опишу твой запрос:
1)
PHP:
// Данный класс наследует JavaPlugin, его сервер использует, чтобы запускать данный плагин
// По умолчанию при старте он вызывает onEnable()
public void onEnable() {
    // Bukkit.getPluginManager() возвращает PluginManager (класс отвечающий за управление плагинами)
    // PluginManager#registerEvents(listener, plugin) регистрирует твой слушатель для событий
    // позже он будет использовать этот слушатель, чтобы вызывать методы, которые там есть
    Bukkit.getPluginManager().registerEvents(new Handler(),this);
    this.getLogger().info("Plugin was Enable!");
}

2)
PHP:
public class Handler implements Listener {
    // EventHandler - аннотация, служит в целом для определения, что данный метод сервер будет вызывать при определенном событии (аргумент)
    @EventHandler
    public void onBlock(BlockBreakEvent e) {
        // Собственно e - идентификатор обьекта класса BlockBreakEvent (или же просто обьект простыми словами)
        Player p = e.getPlayer();
    }
}
 
Спасибо всем за ответы, я очень благодарен за адекватные ответы на не адекватный вопрос :) Тему можно закрывать
 

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

Назад
Верх