Scaffolded mod structure for now
This commit is contained in:
parent
0df2997010
commit
38ee524bf9
5 changed files with 143 additions and 62 deletions
|
|
@ -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<Block> blockRegistryEvent) {
|
||||
// Register a new block here
|
||||
LOGGER.info("HELLO from Register Block");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
61
src/main/java/xyz/nuark/enchantrium/block/ModBlocks.java
Normal file
61
src/main/java/xyz/nuark/enchantrium/block/ModBlocks.java
Normal file
|
|
@ -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<Block> BLOCKS =
|
||||
DeferredRegister.create(ForgeRegistries.BLOCKS, Enchantrium.MOD_ID);
|
||||
|
||||
private static <T extends Block> RegistryObject<T> registerBlockWithoutBlockItem(String name, Supplier<T> block) {
|
||||
return BLOCKS.register(name, block);
|
||||
}
|
||||
|
||||
private static <T extends Block> RegistryObject<T> registerBlock(String name, Supplier<T> block, String tooltipKey) {
|
||||
RegistryObject<T> toReturn = BLOCKS.register(name, block);
|
||||
registerBlockItem(name, toReturn, tooltipKey);
|
||||
return toReturn;
|
||||
}
|
||||
|
||||
private static <T extends Block> RegistryObject<Item> registerBlockItem(String name, RegistryObject<T> 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<Component> pTooltip, @NotNull TooltipFlag pFlag) {
|
||||
pTooltip.add(new TranslatableComponent(tooltipKey));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static <T extends Block> RegistryObject<T> registerBlock(String name, Supplier<T> block) {
|
||||
RegistryObject<T> toReturn = BLOCKS.register(name, block);
|
||||
registerBlockItem(name, toReturn);
|
||||
return toReturn;
|
||||
}
|
||||
|
||||
private static <T extends Block> RegistryObject<Item> registerBlockItem(String name, RegistryObject<T> 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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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<BlockEntityType<?>> BLOCK_ENTITIES =
|
||||
DeferredRegister.create(ForgeRegistries.BLOCK_ENTITIES, Enchantrium.MOD_ID);
|
||||
|
||||
public static void register(IEventBus eventBus) {
|
||||
BLOCK_ENTITIES.register(eventBus);
|
||||
}
|
||||
}
|
||||
28
src/main/java/xyz/nuark/enchantrium/item/ModItems.java
Normal file
28
src/main/java/xyz/nuark/enchantrium/item/ModItems.java
Normal file
|
|
@ -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<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Enchantrium.MOD_ID);
|
||||
|
||||
public static final RegistryObject<Item> TEST_ITEM = ITEMS.register("test_item", () -> new Item(new Item.Properties().tab(ITEM_GROUP)));
|
||||
|
||||
public static void register(IEventBus eventBus) {
|
||||
ITEMS.register(eventBus);
|
||||
}
|
||||
}
|
||||
24
src/main/java/xyz/nuark/enchantrium/screen/ModMenuTypes.java
Normal file
24
src/main/java/xyz/nuark/enchantrium/screen/ModMenuTypes.java
Normal file
|
|
@ -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<MenuType<?>> MENUS =
|
||||
DeferredRegister.create(ForgeRegistries.CONTAINERS, Enchantrium.MOD_ID);
|
||||
|
||||
private static <T extends AbstractContainerMenu> RegistryObject<MenuType<T>> registerMenuType(IContainerFactory<T> factory, String name) {
|
||||
return MENUS.register(name, () -> IForgeMenuType.create(factory));
|
||||
}
|
||||
|
||||
public static void register(IEventBus eventBus) {
|
||||
MENUS.register(eventBus);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue