Стадии загрузки мода#
Forge загружает моды в 3 стадии: Преинициализация, Инициализация и Постинициализация или preInit
, init
, postInit
.
Есть и другие стадии, но эти три являются самыми главными. Все они выполняются в разные моменты загрузки мода и предназначены для разных целей.
Использование стадий#
Все стадии загрузки мода могут использоваться только в главном файле мода! То есть в файле с аннотацией @Mod
. Стадии
загрузки можно использовать при помощи аннотации @EventHandler
.
Преинициализация#
Стадия преинициализации используется для того, чтобы дать игре знать о том, что есть в моде: блоках, предметах и так далее.
Чаще всего в этой стадии выполняются следующие действия:
- Регистрация блоков и предметов.
- Регистрация Tile Entity
- Регистрация сущностей
- Присвоение имен в Ore Dictionary
Событие этой стадии: FMLPreInitializationEvent
. В главном файле его использование выглядит следующим образом:
@EventHandler
public void preInit(FMLPreInitializationEvent event) {
}
Инициализация#
Стадия инициализации предназначена для выполнения действий с объектами, зарегистрированными в преинициализации.
Чаще всего в этой стадии выполняются следующие действия:
- Регистрация генераторов структур
- Регистрация рецептов
- Регистрация обработчиков действий
Событие этой стадии: FMLInitializationEvent
. В главном файле его использование выглядит следующим образом:
@EventHandler
public void init(FMLInitializationEvent event) {
}
Постинициализация#
На стадии постинициализации рекомендуется выполнять действия, связанные с другими модами.
Событие этой стадии: FMLPostInitializationEvent
. В главном файле его использование выглядит следующим образом:
@EventHandler
public void postInit(FMLPostInitializationEvent event) {
}
Итог#
Учитывая 3 основные стадии загрузки Forge мода, наш главный файл мода должен выглядит приблизительно так:
package ru.mcmodding.tutorial;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
@Mod(modid = "tut")
public class Tutorial {
@EventHandler
public void preInit(FMLPreInitializationEvent event) {
// Какой-то код
}
@EventHandler
public void init(FMLInitializationEvent event) {
// Какой-то код
}
@EventHandler
public void postInit(FMLPostInitializationEvent event) {
// Какой-то код
}
}