From b1cd7fcee0dfb8963575a6d3f4c22758679bfcd5 Mon Sep 17 00:00:00 2001 From: cpw Date: Mon, 14 Jan 2019 22:42:53 -0500 Subject: [PATCH] Update MDK for new naming scheme --- .../com/example/examplemod/ExampleMod.java | 61 +++++++++++++------ 1 file changed, 44 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/example/examplemod/ExampleMod.java b/src/main/java/com/example/examplemod/ExampleMod.java index f0fff58..30056fe 100644 --- a/src/main/java/com/example/examplemod/ExampleMod.java +++ b/src/main/java/com/example/examplemod/ExampleMod.java @@ -5,14 +5,19 @@ import net.minecraft.init.Blocks; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.InterModComms; import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.FMLInitializationEvent; -import net.minecraftforge.fml.event.FMLPreInitializationEvent; -import net.minecraftforge.fml.event.FMLServerStartingEvent; +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent; +import net.minecraftforge.fml.event.lifecycle.InterModProcessEvent; +import net.minecraftforge.fml.event.server.FMLServerStartingEvent; import net.minecraftforge.fml.javafmlmod.FMLModLoadingContext; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import java.util.stream.Collectors; + // The value here should match an entry in the META-INF/mods.toml file @Mod("examplemod") public class ExampleMod @@ -21,36 +26,58 @@ public class ExampleMod private static final Logger LOGGER = LogManager.getLogger(); public ExampleMod() { - // Register the preInit method for modloading - FMLModLoadingContext.get().getModEventBus().addListener(this::preInit); - // Register the init method for modloading - FMLModLoadingContext.get().getModEventBus().addListener(this::init); + // Register the setup method for modloading + FMLModLoadingContext.get().getModEventBus().addListener(this::setup); + // Register the enqueueIMC method for modloading + FMLModLoadingContext.get().getModEventBus().addListener(this::enqueueIMC); + // Register the processIMC method for modloading + FMLModLoadingContext.get().getModEventBus().addListener(this::processIMC); + // Register the doClientStuff method for modloading + FMLModLoadingContext.get().getModEventBus().addListener(this::doClientStuff); // Register ourselves for server, registry and other game events we are interested in MinecraftForge.EVENT_BUS.register(this); } - private void preInit(final FMLPreInitializationEvent event) + private void setup(final FMLCommonSetupEvent event) { // some preinit code LOGGER.info("HELLO FROM PREINIT"); - } - - private void init(final FMLInitializationEvent event) - { - // some example code LOGGER.info("DIRT BLOCK >> {}", Blocks.DIRT.getRegistryName()); } + private void doClientStuff(final FMLClientSetupEvent event) { + // do something that can only be done on the client + LOGGER.info("Got game settings {}", event.getMinecraftSupplier().get().gameSettings); + } + + private void enqueueIMC(final InterModEnqueueEvent event) + { + // some example code to dispatch IMC to another mod + InterModComms.sendTo("forge", "helloworld", () -> { LOGGER.info("Hello world"); return "Hello world";}); + } + + private void processIMC(final InterModProcessEvent event) + { + // some example code to receive and process InterModComms from other mods + LOGGER.info("Got IMC", event.getIMCStream(). + map(m->m.getMessageSupplier().get()). + collect(Collectors.toList())); + } + // You can use SubscribeEvent and let the Event Bus discover methods to call @SubscribeEvent public void onBlocksRegistry(final RegistryEvent.Register blockRegistryEvent) { // register a new block here LOGGER.info("HELLO from Register Block"); } - @SubscribeEvent - public void onServerStarting(FMLServerStartingEvent event) { - // do something when the server starts - LOGGER.info("HELLO from server starting"); + // You can use EventBusSubscriber to automatically subscribe events on the contained class + @Mod.EventBusSubscriber + public static class ServerEvents { + @SubscribeEvent + public static void onServerStarting(FMLServerStartingEvent event) { + // do something when the server starts + LOGGER.info("HELLO from server starting"); + } } }