summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
author alemidev <me@alemi.dev>2023-01-24 01:07:30 +0100
committer alemidev <me@alemi.dev>2023-01-24 01:07:30 +0100
commit2e00a3ee4bd5740e47fe4ca5fd6d3bd9bc8af070 (patch)
tree01100cc86bc67a375475e1016dfeba3426deac95 /src/main
chore: boilerplate
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/example/examplemod/ExampleMod.java84
-rw-r--r--src/main/resources/META-INF/mods.toml59
2 files changed, 143 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");
+ }
+ }
+}
diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml
new file mode 100644
index 0000000..ba69505
--- /dev/null
+++ b/src/main/resources/META-INF/mods.toml
@@ -0,0 +1,59 @@
+# This is an example mods.toml file. It contains the data relating to the loading mods.
+# There are several mandatory fields (#mandatory), and many more that are optional (#optional).
+# The overall format is standard TOML format, v0.5.0.
+# Note that there are a couple of TOML lists in this file.
+# Find more information on toml format here: https://github.com/toml-lang/toml
+# The name of the mod loader type to load - for regular FML @Mod mods it should be javafml
+modLoader="javafml" #mandatory
+# A version range to match for said mod loader - for regular FML @Mod it will be the forge version
+loaderVersion="[36,)" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions.
+# The license for you mod. This is mandatory metadata and allows for easier comprehension of your redistributive properties.
+# Review your options at https://choosealicense.com/. All rights reserved is the default copyright stance, and is thus the default here.
+license="All rights reserved"
+# A URL to refer people to when problems occur with this mod
+#issueTrackerURL="https://change.me.to.your.issue.tracker.example.invalid/" #optional
+# A list of mods - how many allowed here is determined by the individual mod loader
+[[mods]] #mandatory
+# The modid of the mod
+modId="bscv" #mandatory
+# The version number of the mod - there's a few well known ${} variables useable here or just hardcode it
+# ${file.jarVersion} will substitute the value of the Implementation-Version as read from the mod's JAR file metadata
+# see the associated build.gradle script for how to populate this completely automatically during a build
+version="${file.jarVersion}" #mandatory
+ # A display name for the mod
+displayName="BSCV" #mandatory
+# A URL to query for updates for this mod. See the JSON update specification https://mcforge.readthedocs.io/en/latest/gettingstarted/autoupdate/
+#updateJSONURL="https://change.me.example.invalid/updates.json" #optional
+# A URL for the "homepage" for this mod, displayed in the mod UI
+#displayURL="https://change.me.to.your.mods.homepage.example.invalid/" #optional
+# A file name (in the root of the mod JAR) containing a logo for display
+logoFile="examplemod.png" #optional
+# A text field displayed in the mod UI
+credits="Next generation utility client from fantabos.co" #optional
+# A text field displayed in the mod UI
+authors="ftbsc <dev@fantabos.co>" #optional
+# The description text for the mod (multi line!) (#mandatory)
+description='''
+BSCV | Boscovicino
+Next generation utility client from fantabos.co
+'''
+# A dependency - use the . to indicate dependency for a specific modid. Dependencies are optional.
+[[dependencies.bscv]] #optional
+ # the modid of the dependency
+ modId="forge" #mandatory
+ # Does this dependency have to exist - if not, ordering below must be specified
+ mandatory=true #mandatory
+ # The version range of the dependency
+ versionRange="[36,)" #mandatory
+ # An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory
+ ordering="NONE"
+ # Side this dependency is applied on - BOTH, CLIENT or SERVER
+ side="BOTH"
+# Here's another dependency
+[[dependencies.bscv]]
+ modId="minecraft"
+ mandatory=true
+# This version range declares a minimum of the current minecraft version up to but not including the next major version
+ versionRange="[1.16.5,1.17)"
+ ordering="NONE"
+ side="BOTH"