From 38ee524bf9d2bea62b3b018b7603182046214eab Mon Sep 17 00:00:00 2001 From: Andrew nuark G Date: Fri, 5 Aug 2022 15:24:11 +0700 Subject: [PATCH] Scaffolded mod structure for now --- .../xyz/nuark/enchantrium/Enchantrium.java | 76 ++++--------------- .../nuark/enchantrium/block/ModBlocks.java | 61 +++++++++++++++ .../block/entity/ModBlockEntities.java | 16 ++++ .../xyz/nuark/enchantrium/item/ModItems.java | 28 +++++++ .../enchantrium/screen/ModMenuTypes.java | 24 ++++++ 5 files changed, 143 insertions(+), 62 deletions(-) create mode 100644 src/main/java/xyz/nuark/enchantrium/block/ModBlocks.java create mode 100644 src/main/java/xyz/nuark/enchantrium/block/entity/ModBlockEntities.java create mode 100644 src/main/java/xyz/nuark/enchantrium/item/ModItems.java create mode 100644 src/main/java/xyz/nuark/enchantrium/screen/ModMenuTypes.java diff --git a/src/main/java/xyz/nuark/enchantrium/Enchantrium.java b/src/main/java/xyz/nuark/enchantrium/Enchantrium.java index f77445e..d84b687 100644 --- a/src/main/java/xyz/nuark/enchantrium/Enchantrium.java +++ b/src/main/java/xyz/nuark/enchantrium/Enchantrium.java @@ -1,77 +1,29 @@ package xyz.nuark.enchantrium; import com.mojang.logging.LogUtils; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.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.eventbus.api.IEventBus; import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; -import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent; -import net.minecraftforge.fml.event.lifecycle.InterModProcessEvent; -import net.minecraftforge.event.server.ServerStartingEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import org.slf4j.Logger; +import xyz.nuark.enchantrium.block.ModBlocks; +import xyz.nuark.enchantrium.block.entity.ModBlockEntities; +import xyz.nuark.enchantrium.item.ModItems; +import xyz.nuark.enchantrium.screen.ModMenuTypes; -import java.util.stream.Collectors; - -// The value here should match an entry in the META-INF/mods.toml file -@Mod("enchantrium") +@Mod(Enchantrium.MOD_ID) public class Enchantrium { - - // Directly reference a slf4j logger - private static final Logger LOGGER = LogUtils.getLogger(); + public static final String MOD_ID = "enchantrium"; + public static final Logger LOGGER = LogUtils.getLogger(); public Enchantrium() { - // 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); + IEventBus eventBus = FMLJavaModLoadingContext.get().getModEventBus(); + + ModItems.register(eventBus); + ModBlocks.register(eventBus); + ModBlockEntities.register(eventBus); + ModMenuTypes.register(eventBus); - // 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 enqueueIMC(final InterModEnqueueEvent event) { - // Some example code to dispatch IMC to another mod - InterModComms.sendTo("enchantrium", "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.messageSupplier().get()). - collect(Collectors.toList())); - } - - // You can use SubscribeEvent and let the Event Bus discover methods to call - @SubscribeEvent - public void onServerStarting(ServerStartingEvent 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 blockRegistryEvent) { - // Register a new block here - LOGGER.info("HELLO from Register Block"); - } - } } diff --git a/src/main/java/xyz/nuark/enchantrium/block/ModBlocks.java b/src/main/java/xyz/nuark/enchantrium/block/ModBlocks.java new file mode 100644 index 0000000..d6841a6 --- /dev/null +++ b/src/main/java/xyz/nuark/enchantrium/block/ModBlocks.java @@ -0,0 +1,61 @@ +package xyz.nuark.enchantrium.block; + +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import xyz.nuark.enchantrium.Enchantrium; +import xyz.nuark.enchantrium.item.ModItems; + +import java.util.List; +import java.util.function.Supplier; + +public class ModBlocks { + public static final DeferredRegister BLOCKS = + DeferredRegister.create(ForgeRegistries.BLOCKS, Enchantrium.MOD_ID); + + private static RegistryObject registerBlockWithoutBlockItem(String name, Supplier block) { + return BLOCKS.register(name, block); + } + + private static RegistryObject registerBlock(String name, Supplier block, String tooltipKey) { + RegistryObject toReturn = BLOCKS.register(name, block); + registerBlockItem(name, toReturn, tooltipKey); + return toReturn; + } + + private static RegistryObject registerBlockItem(String name, RegistryObject block, String tooltipKey) { + return ModItems.ITEMS.register(name, () -> new BlockItem(block.get(), + new Item.Properties().tab(ModItems.ITEM_GROUP)) { + @Override + public void appendHoverText(@NotNull ItemStack pStack, @Nullable Level pLevel, @NotNull List pTooltip, @NotNull TooltipFlag pFlag) { + pTooltip.add(new TranslatableComponent(tooltipKey)); + } + }); + } + + private static RegistryObject registerBlock(String name, Supplier block) { + RegistryObject toReturn = BLOCKS.register(name, block); + registerBlockItem(name, toReturn); + return toReturn; + } + + private static RegistryObject registerBlockItem(String name, RegistryObject block) { + return ModItems.ITEMS.register(name, () -> new BlockItem(block.get(), + new Item.Properties().tab(ModItems.ITEM_GROUP))); + } + + public static void register(IEventBus eventBus) { + BLOCKS.register(eventBus); + } +} diff --git a/src/main/java/xyz/nuark/enchantrium/block/entity/ModBlockEntities.java b/src/main/java/xyz/nuark/enchantrium/block/entity/ModBlockEntities.java new file mode 100644 index 0000000..acbc15e --- /dev/null +++ b/src/main/java/xyz/nuark/enchantrium/block/entity/ModBlockEntities.java @@ -0,0 +1,16 @@ +package xyz.nuark.enchantrium.block.entity; + +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import xyz.nuark.enchantrium.Enchantrium; + +public class ModBlockEntities { + public static final DeferredRegister> BLOCK_ENTITIES = + DeferredRegister.create(ForgeRegistries.BLOCK_ENTITIES, Enchantrium.MOD_ID); + + public static void register(IEventBus eventBus) { + BLOCK_ENTITIES.register(eventBus); + } +} diff --git a/src/main/java/xyz/nuark/enchantrium/item/ModItems.java b/src/main/java/xyz/nuark/enchantrium/item/ModItems.java new file mode 100644 index 0000000..1a14610 --- /dev/null +++ b/src/main/java/xyz/nuark/enchantrium/item/ModItems.java @@ -0,0 +1,28 @@ +package xyz.nuark.enchantrium.item; + +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; +import org.jetbrains.annotations.NotNull; +import xyz.nuark.enchantrium.Enchantrium; + +public class ModItems { + public static final CreativeModeTab ITEM_GROUP = new CreativeModeTab(Enchantrium.MOD_ID) { + @Override + public @NotNull ItemStack makeIcon() { + return new ItemStack(TEST_ITEM.get()); + } + }; + + public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Enchantrium.MOD_ID); + + public static final RegistryObject TEST_ITEM = ITEMS.register("test_item", () -> new Item(new Item.Properties().tab(ITEM_GROUP))); + + public static void register(IEventBus eventBus) { + ITEMS.register(eventBus); + } +} diff --git a/src/main/java/xyz/nuark/enchantrium/screen/ModMenuTypes.java b/src/main/java/xyz/nuark/enchantrium/screen/ModMenuTypes.java new file mode 100644 index 0000000..8f752c4 --- /dev/null +++ b/src/main/java/xyz/nuark/enchantrium/screen/ModMenuTypes.java @@ -0,0 +1,24 @@ +package xyz.nuark.enchantrium.screen; + +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.MenuType; +import net.minecraftforge.common.extensions.IForgeMenuType; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.network.IContainerFactory; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; +import xyz.nuark.enchantrium.Enchantrium; + +public class ModMenuTypes { + public static final DeferredRegister> MENUS = + DeferredRegister.create(ForgeRegistries.CONTAINERS, Enchantrium.MOD_ID); + + private static RegistryObject> registerMenuType(IContainerFactory factory, String name) { + return MENUS.register(name, () -> IForgeMenuType.create(factory)); + } + + public static void register(IEventBus eventBus) { + MENUS.register(eventBus); + } +}