minecraft
Слушатели событий в Forge
Поиск…
Создание прослушивателя событий в 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);