/*
 *
 * ItemManager
 *
 * This is the general purpose item manager for the mod. All items will be registered through
 * this class in order to make custom items a lot cleaner to make!
 *
 *
*/

package jesse.keeblarcraft.CustomItems;

import java.util.ArrayList;
import java.util.List;

import jesse.keeblarcraft.Keeblarcraft;
import net.minecraft.item.Item;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier;

public class ItemManager {

    /// The item list. DO NOT ADD TO THE LIST YOURSELF. USE
    /// THE RegisterItem(...) FUNCTION OTHERWISE YOUR ITEM WILL
    /// NOT BE REGISTERED PROPERLY AND MAY BREAK THE GAME
    public static final List<Item> itemList = new ArrayList<Item>();


    /////////////////////////////////////////////////////////////////////////////
    /// @fn         RegisterItem
    ///
    /// @arg[in]    name is the item name. IMPORTANT: Name must adhere to rules:
    ///             1. The name provided here must match these names:
    ///                 * This items models/item name
    ///                 * This items textures/item name
    ///             2 Name must be lowercase & no special characters besides '_'
    ///
    /// @arg[in]    item is the item to be added to the item list
    ///
    /// @brief      This is the call to register your item to the game! Please
    ///             do not forget to update the models/item json file, the
    ///             textures/item png name, and finally the lang/en_us.json file
    /////////////////////////////////////////////////////////////////////////////
    public static void RegisterItem(String name, Item item) {
        Item newItem = Registry.register(Registries.ITEM, new Identifier(Keeblarcraft.MOD_ID, name), item);
        itemList.add(newItem);
    }

    /////////////////////////////////////////////////////////////////////////////
    /// @fn         RegisterAllItems
    ///
    /// @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 item in the game
    /////////////////////////////////////////////////////////////////////////////
    public static void RegisterAllItems() {
        Keeblarcraft.LOGGER.info("Registering mod items for " + Keeblarcraft.MOD_ID);

        // Call the item group register function first
        CustomItemGroups.RegisterGroups();

        // The example item provides a demo of how you could make an item in your class
        // Item exampleItem = new Item(new FabricItemSettings());
        // RegisterItem("metaljacket_helmet", exampleItem);
    }
}
