Реєстрація предметів, заданими в гюї
Користувацькі предмети в гюї оброблюються за допомогою інтерфейсів TypedItemHandler та TypedItemClickHandler
Приклад реалізації TEST
предмету
src/main/java/com/jodexindustries/testaddon/registry/TestTypedItemClickHandler.java
import com.jodexindustries.donatecase.api.data.casedata.gui.typeditem.TypedItemClickHandler;
import com.jodexindustries.donatecase.api.data.casedata.gui.typeditem.TypedItemException;
import com.jodexindustries.donatecase.api.event.player.GuiClickEvent;
import org.jetbrains.annotations.NotNull;
public class TestTypedItemClickHandler implements TypedItemClickHandler {
@Override
public void onClick(@NotNull GuiClickEvent event) throws TypedItemException {
// execute on click actions
}
}
src/main/java/com/jodexindustries/testaddon/registry/TestTypedItemHandler.java
import com.jodexindustries.donatecase.api.data.casedata.gui.CaseGui;
import com.jodexindustries.donatecase.api.data.casedata.gui.CaseGuiWrapper;
import com.jodexindustries.donatecase.api.data.casedata.gui.typeditem.TypedItemException;
import com.jodexindustries.donatecase.api.data.casedata.gui.typeditem.TypedItemHandler;
import org.jetbrains.annotations.NotNull;
public class TestTypedItemHandler implements TypedItemHandler {
@Override
public CaseGui.@NotNull Item handle(@NotNull CaseGuiWrapper caseGui, CaseGui.@NotNull Item item) throws TypedItemException {
// example: HISTORY-0
// args[0] = HISTORY
// args[1] = 0
String[] args = item.type().split("-");
if(args.length >= 2) {
if(args[1].equalsIgnoreCase("test")) {
item.material().displayName("Test");
}
}
return item;
}
}
src/main/java/com/jodexindustries/testaddon/MainAddon.java
import com.jodexindustries.donatecase.api.DCAPI;
import com.jodexindustries.donatecase.api.addon.InternalJavaAddon;
import com.jodexindustries.donatecase.api.data.casedata.gui.typeditem.TypedItem;
import com.jodexindustries.testaddon.registry.TestTypedItemClickHandler;
import com.jodexindustries.testaddon.registry.TestTypedItemHandler;
public class MainAddon extends InternalJavaAddon {
private final DCAPI api = DCAPI.getInstance();
@Override
public void onEnable() {
api.getGuiTypedItemManager().register(
TypedItem.builder()
.id("TEST")
.addon(this)
.description("Some cool item")
.handler(new TestTypedItemHandler())
.click(new TestTypedItemClickHandler())
.build()
);
}
}
інформація
Також можлива реєстрація лише одного з обробників
Пояснення
Обробники
TypedItemHandler
використовується для зміни мета данних предмета під час завантаження GUI.TypedItemClickHandler
використовується для реакції на клацання миші по предмету в GUI.
Додаткові параметри
За замовчуванням, предмет не буде оброблено під час завантаження кейсу (так само, як і в HISTORY
),
але це можна виправити, використавши параметр
loadOnCase
у білдері предмета (TypedItem#builder),
який використовується для обробки OPEN
предмету, тому що він не містить у собі обробника та підвантаженню у GUI не потребує.
Також, дуже важливим є параметр
updateMeta,
який відповідає за оновлення метаданних предметів із зазначеним інтервалом у налаштуваннях GUI. (В основному використовується для оновлення заповнювачів (стандартних від DonateCase та PlaceholderAPI))