Использование событий#
События в Minecraft это тоже, что и у нас. К примеру "Пошёл дождь", только в Minecraft событий не так много, как существует у нас в жизни. В данной статье вы научитесь использовать события.
Создадим класс EventsHandler.
public class EventsHandler
{
@SubscribeEvent
public void onJoin(EntityJoinWorldEvent event)
{
if (event.getEntity() instanceof PlayerEntity)
{
PlayerEntity player = (PlayerEntity) event.getEntity();
player.sendMessage(new StringTextComponent("Hello, %p!".replace("%p", player.getName().getFormattedText())));
}
}
@SubscribeEvent
public void onDeath(LivingDeathEvent event)
{
if (event.getEntity() instanceof PlayerEntity)
{
PlayerEntity player = (PlayerEntity) event.getEntity();
if (player.getName().equals("_Ivasik_"))
{
player.dropItem(new ItemStack(Items.GOLDEN_APPLE, 1), false);
}
}
}
}
В первом методе, при заходе сущности(Игрока) в мир, ему будет высвечиваться приветствие. А во втором методе, если игрок _Ivasik_
погибает, то на его месте дропается золотое яблоко. Вы так же можете отменить событие используя метод e.setCanceled(true)
, но не все события можно отменять. Подробнее смотрите в статье Таблица событий
Приступим к регистрации, для этого нужно:
1. В начале класса добавить аннотацию @Mod.EventBusSubscriber
, должно получиться так:
@Mod.EventBusSubscriber
public class EventsHandler
{
//что-то делаем
}
@SubscribeEvent
public static void onJoin(EntityJoinWorldEvent event)
{
//Что-то делаем
}
@Mod.EventBusSubscriber
, так же есть параметры:
* value
- сторона на которой будет зарегистрировано событие. Доступные стороны: Client, Server
* modid
- modid вашего мода, этот параметр нужен лишь для того, чтобы избежать ошибки в регистрации, если используется несколько модов.
* bus
- Шина, через которую ббудет происходить регистрация, при использовании событий регистрации.
Пример использования:
@Mod.EventBusSubscriber(modid = Main.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)