Поиск…


Создание прослушивателя событий в Forge

Создание прослушивателя событий в Forge очень похоже на создание в Bukket.

Для создания класса слушателя требуется намного меньше. Интерфейса для реализации или другого импорта нет.

public class ListenerClass { } //perfectly valid event listener class

Для его регистрации необходимо передать экземпляр на шину событий Forge:

MinecraftForge.EVENT_BUS.register(new ListenerClass());

В зависимости от события есть несколько различных автобусов событий. Например, события генерации руды ORE_GEN_BUS на ORE_GEN_BUS . Вы можете вызывать эту регистрацию в любом месте, но рекомендуется называть ее либо из вашего основного класса мод (с аннотацией @Mod), либо из прокси-класса (некоторые события только на стороне клиента, а обработчик событий на стороне клиента должен быть вызван из прокси-сервера клиента, иначе выделенный сервер сработает!)

Чтобы прослушать любое заданное событие в вашем классе слушателя, вы должны создать метод с аннотацией @SubscribeEvent метода. Тип события определяется типом в единственном аргументе метода. Метод может быть назван как угодно.

Обратите внимание, что некоторые типы событий являются подтипами (на которые должен ссылаться их CropGrowEvent.Pre тип, например CropGrowEvent.Pre ), и что некоторые события могут иметь Фазу, поскольку она запускается в нескольких местах (например, все TickEvent s, которые TickEvent как перед и после всего ванильного кода). В качестве моддера вы всегда должны проверять обе эти вещи и только запускать свой код при необходимости.

public class ListenerClass {
    @SubscribeEvent
    public void onPlayerLogin(PlayerLoggedInEvent event) {
        event.player.addChatMessage(new TextComponentString("Welcome to the server!"));
    }
}

Поскольку мосты Forge взаимодействуют напрямую с внутренними компонентами Minecraft, для моддера требуется много энергии, чтобы иметь возможность влиять на вещи, но аналогичным образом код должен соответствовать каркасу ванили: нет ярлыков для отправки сообщений, сообщение должно быть построено из ITextComponents вручную, но способность управлять этими объектами (например, применение форматирования цветов) намного проще. Например:

TextComponentString txt = new TextComponentString(
    TextFormatting.LIGHT_PURPLE + "Welcome to the server!");
txt.appendSibling(new TextComponentString(
    TextFormatting.AQUA + "Server has been online for " + x + " days"));
event.player.addChatMessage(txt);

Это дает следующий результат: Чат-сообщение



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow