aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/example/examplemod
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/example/examplemod')
-rw-r--r--src/main/java/com/example/examplemod/ExampleMod.java84
1 files changed, 84 insertions, 0 deletions
diff --git a/src/main/java/com/example/examplemod/ExampleMod.java b/src/main/java/com/example/examplemod/ExampleMod.java
new file mode 100644
index 0000000..6b5179d
--- /dev/null
+++ b/src/main/java/com/example/examplemod/ExampleMod.java
@@ -0,0 +1,84 @@
+package com.example.examplemod;
+
+import net.minecraft.block.Block;
+import net.minecraft.block.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.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.FMLJavaModLoadingContext;
+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
+{
+ // Directly reference a log4j logger.
+ private static final Logger LOGGER = LogManager.getLogger();
+
+ public ExampleMod() {
+ // Register the setup method for modloading
+ FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup);
+ // Register the enqueueIMC method for modloading
+ FMLJavaModLoadingContext.get().getModEventBus().addListener(this::enqueueIMC);
+ // Register the processIMC method for modloading
+ FMLJavaModLoadingContext.get().getModEventBus().addListener(this::processIMC);
+ // Register the doClientStuff method for modloading
+ FMLJavaModLoadingContext.get().getModEventBus().addListener(this::doClientStuff);
+
+ // Register ourselves for server and other game events we are interested in
+ MinecraftForge.EVENT_BUS.register(this);
+ }
+
+ private void setup(final FMLCommonSetupEvent event)
+ {
+ // some preinit code
+ LOGGER.info("HELLO FROM PREINIT");
+ 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().options);
+ }
+
+ private void enqueueIMC(final InterModEnqueueEvent event)
+ {
+ // some example code to dispatch IMC to another mod
+ InterModComms.sendTo("examplemod", "helloworld", () -> { LOGGER.info("Hello world from the MDK"); 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 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 (this is subscribing to the MOD
+ // Event bus for receiving Registry Events)
+ @Mod.EventBusSubscriber(bus=Mod.EventBusSubscriber.Bus.MOD)
+ public static class RegistryEvents {
+ @SubscribeEvent
+ public static void onBlocksRegistry(final RegistryEvent.Register<Block> blockRegistryEvent) {
+ // register a new block here
+ LOGGER.info("HELLO from Register Block");
+ }
+ }
+}