001package com.ericlam.mc.eldgui.component;
002
003import org.bukkit.Material;
004import org.bukkit.inventory.ItemStack;
005
006/**
007 * 基礎組件工廠,所有組件工廠必須繼承此類
008 * @param <Factory> 組件工廠
009 */
010public interface ComponentFactory<Factory extends ComponentFactory<Factory>> {
011
012    /**
013     *
014     * @param material 圖示
015     * @return this
016     */
017    Factory icon(Material material);
018
019    /**
020     *
021     * @param amount 數量
022     * @return this
023     */
024    Factory number(int amount);
025
026    /**
027     * 以該物品為組件外觀原型。注意此舉將會覆蓋之前的所有設定 (包括綁定數值和外觀等)
028     * @param item bukkit 物品
029     * @return this
030     */
031    Factory mirror(ItemStack item);
032
033    /**
034     * 綁定組件屬性
035     * @param key 鍵
036     * @param value 數值
037     * @return this
038     */
039    Factory bind(String key, Object value);
040
041    /**
042     * 創建組件
043     * @return this
044     */
045    Component create();
046
047}