Перейти к основному содержимому
Версия: 2.0.0

Реєстрація предметів, заданими в гюї

Користувацькі предмети в гюї оброблюються за допомогою інтерфейсів 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))