package dev.exhq.ajarc.items; import dev.exhq.ajarc.items.blocks.NeaBlock; import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.Component; import net.minecraft.world.food.FoodProperties; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.CreativeModeTabs; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.material.MapColor; import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.registries.DeferredBlock; import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredItem; import net.neoforged.neoforge.registries.DeferredRegister; import java.util.ArrayList; import java.util.List; import java.util.function.Function; import static dev.exhq.ajarc.Ajar.MODID; public class Register { /// private static final List> allRegistries = new ArrayList<>(); private static > T registry(T value) { allRegistries.add(value); return value; } public static void registerAll(IEventBus eventBus) { allRegistries.forEach(it -> it.register(eventBus)); } public static final DeferredRegister.Blocks BLOCKS = registry(DeferredRegister.createBlocks(MODID)); public static final DeferredRegister.Items ITEMS = registry(DeferredRegister.createItems(MODID)); public static final DeferredRegister CREATIVE_MODE_TABS = registry(DeferredRegister.create(Registries.CREATIVE_MODE_TAB, MODID)); /// /// private static DeferredBlock block(String name, Function constructor, BlockBehaviour.Properties properties) { DeferredBlock block = BLOCKS.registerBlock(name, constructor, properties); ITEMS.registerSimpleBlockItem(block); return block; } /// /// public static final DeferredBlock EXAMPLE_BLOCK = block( "example_block", NeaBlock::new, BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_GREEN)); public static final DeferredBlock OTHER_COMPUTER_BLOCK = block( "other_block", NeaBlock::new, BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_RED)); /// /// public static final DeferredItem EXAMPLE_ITEM = ITEMS.registerSimpleItem( "example_item", new Item.Properties().food(new FoodProperties.Builder() .alwaysEdible().nutrition(1).saturationModifier(2f).build())); /// public static final DeferredHolder EXAMPLE_TAB = CREATIVE_MODE_TABS.register( "basic_tab", () -> CreativeModeTab .builder() .title(Component.translatable("itemGroup.ajarcomputers.basic_tab")) .withTabsBefore(CreativeModeTabs.COMBAT) .icon(() -> EXAMPLE_ITEM.get().getDefaultInstance()) .displayItems((parameters, output) -> { ITEMS.getEntries() .stream() .map(DeferredHolder::get) .forEach(output::accept); }).build()); }