Minecraft Modding
Учебник по созданию Minecraft модов
mode_editРедактировать

Стадии загрузки модаlink

Forge загружает моды в 3 стадии: Преинициализация, Инициализация и Постинициализация или preInit, init, postInit.

Есть и другие стадии, но эти три являются самыми главными. Все они выполняются в разные моменты загрузки мода и предназначены для разных целей.

Использование стадийlink

Все стадии загрузки мода могут использоваться только в главном файле мода! То есть в файле с аннотацией @Mod. Стадии загрузки можно использовать при помощи аннотации @EventHandler.

Преинициализацияlink

Стадия преинициализации используется для того, чтобы дать игре знать о том, что есть в вашем моде: блоках, предметах и так далее.

Чаще всего в этой стадии выполняются следующие действия:

Событие этой стадии: FMLPreInitializationEvent. В главном файле его использование выглядит следующим образом:

// TestMod.java

@EventHandler
public void preInit(FMLPreInitializationEvent event) {
    // Преинициализация
    System.out.println("\u001B[32m" + "[Starting Test Mod PRE-INITIALIZATION]" + "\u001B[0m");
}

Инициализацияlink

Стадия инициализации предназначена для выполнения действий с объектами, зарегистрированными в преинициализации.

Чаще всего в этой стадии выполняются следующие действия:

Событие этой стадии: FMLInitializationEvent. В главном файле его использование выглядит следующим образом:

// TestMod.java

@EventHandler
public void init(FMLInitializationEvent event) {
    // Инициализация
    System.out.println("\u001B[32m" + "[Starting Test Mod INITIALIZATION]" + "\u001B[0m");
}

Постинициализацияlink

Стадия постинициализации рекомендуется выполнять действия, связанные с другими модами.

Событие этой стадии: FMLPostInitializationEvent. В главном файле его использование выглядит следующим образом:

// TestMod.java

@EventHandler
public void postInit(FMLPostInitializationEvent event) {
    // Инициализация
    System.out.println("\u001B[32m" + "[Starting Test Mod POST-INITIALIZATION]" + "\u001B[0m");
}

Итогlink

Учитывая 3 основные стадии загрузки Forge мода, наш главный файл мода должен выглядит приблизительно так:

package ru.ivasik.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)
    {
        // Преинициализация
        System.out.println("\u001B[32m" + "[Starting Test Mod PRE-INITIALIZATION]" + "\u001B[0m");
    }

    @EventHandler
    public void init(FMLInitializationEvent event)
    {
        // Инициализация
        System.out.println("\u001B[32m" + "[Starting Test Mod INITIALIZATION]" + "\u001B[0m");
    }

    @EventHandler
    public void postInit(FMLPostInitializationEvent event)
    {
        // Инициализация
        System.out.println("\u001B[32m" + "[Starting Test Mod POST-INITIALIZATION]" + "\u001B[0m");
    }
}

Если вы запустите клиент с этим кодом загрузки стадий, то в консоли увидите следующее:

Демонстрация стадий загрузки

Можно отчетливо видеть, что эти стадии выполняются в разное время.

CMTV
Автор
mcmodding.ru v1.1.1