Created
May 15, 2020 21:28
-
-
Save TFlexSoom/2d3a537d7bb260a5ea55b6bb3b8fdab2 to your computer and use it in GitHub Desktop.
Example Mod With a For Loop For command!
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package com.example.examplemod; | |
| import net.minecraft.block.Block; | |
| import net.minecraft.block.Blocks; | |
| import net.minecraft.entity.player.ServerPlayerEntity; | |
| import net.minecraft.server.MinecraftServer; | |
| import net.minecraft.util.text.StringTextComponent; | |
| import net.minecraft.util.text.TextComponent; | |
| import net.minecraftforge.common.MinecraftForge; | |
| import net.minecraftforge.event.CommandEvent; | |
| 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(); | |
| private static MinecraftServer tServer; | |
| 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().gameSettings); | |
| } | |
| 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())); | |
| } | |
| // MINECRAFT EVENTS | |
| // 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"); | |
| tServer = event.getServer(); | |
| } | |
| // 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"); | |
| } | |
| } | |
| @SubscribeEvent | |
| public void onCommandEvent(CommandEvent event) { | |
| event.setCanceled(true); | |
| LOGGER.info("HELP HERE"); | |
| String myCommand = ""; | |
| myCommand = event.getParseResults().getReader().getString(); | |
| // "/hello" | "/tristan_is_awesome" | "/leah_has_an_error" | |
| if( myCommand.equals("/hello") ) { | |
| ServerPlayerEntity player = | |
| tServer.getPlayerList().getPlayers().get(0); | |
| player.sendMessage(new StringTextComponent("Hello!")); | |
| player.setHealth(100.0f); | |
| } | |
| if( myCommand.equals("/super-mode") ) { | |
| // List tServer.getPlayerList().getPlayers() | |
| int numOfPlayers = tServer.getPlayerList().getPlayers().size(); | |
| for(int i = 0; i < numOfPlayers; i ++) { | |
| ServerPlayerEntity player = | |
| tServer.getPlayerList().getPlayers().get(i); | |
| player.setHealth(125.0f); | |
| LOGGER.info(player.getDisplayName().getString()); | |
| player.sendMessage(player.getDisplayName()); | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment