Skip to main content
Версія: 2.0.0

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

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