Реєстрація предметів, заданими в гюї
Користувацькі предмети в гюї оброблюються за допомогою інтерфейсів TypedItemHandler та TypedItemClickHandler
Приклад реалізації TEST
предмету
TestTypedItemClickHandler класс
import com.jodexindustries.donatecase.api.data.casedata.gui.TypedItemClickHandler;
import com.jodexindustries.donatecase.api.events.CaseGuiClickEvent;
import org.jetbrains.annotations.NotNull;
public class TestTypedItemClickHandler implements TypedItemClickHandler<CaseGuiClickEvent> {
@Override
public void onClick(@NotNull CaseGuiClickEvent event) {
// execute on click actions
}
}
TestTypedItemHandler класс
import com.jodexindustries.donatecase.api.data.casedata.CaseDataBukkit;
import com.jodexindustries.donatecase.api.data.casedata.CaseDataMaterialBukkit;
import com.jodexindustries.donatecase.api.data.casedata.gui.GUI;
import com.jodexindustries.donatecase.api.data.casedata.gui.TypedItemHandler;
import com.jodexindustries.donatecase.api.gui.CaseGui;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.jetbrains.annotations.NotNull;
public class TestTypedItemHandler implements TypedItemHandler<CaseDataMaterialBukkit, CaseGui<Inventory, Location, Player, CaseDataBukkit, CaseDataMaterialBukkit>> {
@NotNull
@Override
public GUI.Item<CaseDataMaterialBukkit> handle(@NotNull CaseGui<Inventory, Location, Player, CaseDataBukkit, CaseDataMaterialBukkit> caseGui,
@NotNull GUI.Item<CaseDataMaterialBukkit> item) {
// example: HISTORY-0
// args[0] = HISTORY
// args[1] = 0
String[] args = item.getType().split("-");
if(args.length >= 2) {
if(args[1].equalsIgnoreCase("test")) {
item.getMaterial().setDisplayName("Test");
}
}
return item;
}
}
Реєстрація
api.getGuiTypedItemManager().registerItem(
api.getGuiTypedItemManager().builder("TEST")
.description("Some cool item")
.handler(new TestTypedItemHandler())
.click(new TestTypedItemClickHandler())
.build()
);
порада
Також можлива реєстрація лише одного з обробників
Пояснення
Обробники
TypedItemHandler
використовується для зміни мета данних предмета під час завантаження GUI.TypedItemClickHandler
використовується для реакції на клацання миші по предмету в GUI.
Додаткові параметри
За замовчуванням, предмет не буде оброблено під час завантаження кейсу (так само, як і в HISTORY
),
але це можна виправити, використавши параметр
setLoadOnCase
у білдері предмета (GUITypedItemManager#builder),
який використовується для обробки OPEN
предмету, тому що він не містить у собі обробника та підвантаженню у GUI не потребує.
Також, дуже важливим є параметр
setUpdateMeta,
який відповідає за оновлення метаданних предметів із зазначеним інтервалом у налаштуваннях GUI. (В основному використовується для оновлення заповнювачів (стандартних від DonateCase та PlaceholderAPI))