001package com.ericlam.mc.eldgui.component; 002 003import org.bukkit.inventory.ItemStack; 004import org.jetbrains.annotations.Nullable; 005 006/** 007 * 物品屬性編輯器 008 */ 009public interface AttributeController { 010 011 /** 012 * 預設綁定 Model 屬性數值 的 標識文字 013 */ 014 String VALUE_TAG = "input-value"; 015 /** 016 * 預設綁定 Model 屬性名稱 的 標識文字 017 */ 018 String FIELD_TAG = "input-field"; 019 020 /** 021 * 設置屬性 022 * 023 * @param itemStack 物品 024 * @param key 鍵 025 * @param value 數值 026 */ 027 void setAttribute(ItemStack itemStack, String key, Object value); 028 029 /** 030 * 設置 該 pattern 内所有物品的屬性 031 * 032 * @param pattern pattern 033 * @param key 鍵 034 * @param value 數值 035 */ 036 void setAttribute(char pattern, String key, Object value); 037 038 /** 039 * 獲取物品的屬性 040 * 041 * @param item 物品 042 * @param key 鍵 043 * @param <C> 獲取類型 044 * @return 數值 045 */ 046 @Nullable <C> C getAttribute(ItemStack item, String key); 047 048}