/* * * BlockManager * * The mod block manager * * */ package jesse.keeblarcraft.CustomBlocks; import java.util.ArrayList; import java.util.List; import jesse.keeblarcraft.Keeblarcraft; import net.fabricmc.fabric.api.item.v1.FabricItemSettings; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.block.ExperienceDroppingBlock; import net.minecraft.item.BlockItem; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.sound.BlockSoundGroup; import net.minecraft.util.Identifier; import net.minecraft.util.math.intprovider.UniformIntProvider; public class BlockManager { /// The block list. DO NOT ADD TO THE LIST YOURSELF. USE /// THE RegisterBlock(...) FUNCTION OTHERWISE YOUR BLOCK WILL /// NOT BE REGISTERED PROPERLY AND MAY BREAK THE GAME public static final List<Block> blockList = new ArrayList<Block>(); ///////////////////////////////////////////////////////////////////////////// /// @fn RegisterBlock /// /// @arg[in] name is the block name. IMPORTANT: Name must adhere to rules: /// 1. The name provided here must match these names: /// * This blocks models/block name /// * This blocks textures/block name /// 2 Name must be lowercase & no special characters besides '_' /// /// @arg[in] block is the block to be added to the block list /// /// @brief This is the call to register your block to the game! Please /// do not forget to update the models/block json file, the /// textures/block png name, and finally the lang/en_us.json file ///////////////////////////////////////////////////////////////////////////// public static void RegisterBlock(String name, Block block) { // This call registers the block as an item in inventories Registry.register(Registries.ITEM, new Identifier(Keeblarcraft.MOD_ID, name), new BlockItem(block, new FabricItemSettings())); // This call registers the block as placed Block newBlock = Registry.register(Registries.BLOCK, new Identifier(Keeblarcraft.MOD_ID, name), block); // Add the block to the block list blockList.add(newBlock); } ///////////////////////////////////////////////////////////////////////////// /// @fn RegisterBlocks /// /// @brief This function is only meant to be called by the main mod /// execution path and should only be called once. This is a /// glorified print statement - but also serves to add the /// example block in the game ///////////////////////////////////////////////////////////////////////////// public static void RegisterBlocks() { Keeblarcraft.LOGGER.info("Registering modded blocks for " + Keeblarcraft.MOD_ID); // Register example block to the mod Block exampleBlock = new Block(FabricBlockSettings.copyOf(Blocks.IRON_BLOCK).sounds(BlockSoundGroup.AMETHYST_BLOCK).requiresTool().breakInstantly()); Block exampleBlockOre = new ExperienceDroppingBlock(FabricBlockSettings.copyOf(Blocks.IRON_BLOCK).sounds(BlockSoundGroup.ANCIENT_DEBRIS).requiresTool(), UniformIntProvider.create(4, 20)); RegisterBlock("example_block_ore", exampleBlockOre); RegisterBlock("example_block", exampleBlock); } }