Реєстрація матеріалів
Користувацькі матеріали оброблюються за допомогою інтерфейсу MaterialHandler
Приклад реалізації HEAD
матеріалу
Метод handle
повинен повертати ItemStack-подібний об'єкт,
який буде використовуватися після виклику обробника MaterialHandler
.
src/main/java/com/jodexindustries/testaddon/registry/TestMaterial.java
import com.jodexindustries.donatecase.api.data.material.MaterialHandler;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta;
import org.jetbrains.annotations.NotNull;
public class TestMaterial implements MaterialHandler {
@Override
public @NotNull ItemStack handle(@NotNull String context) {
Material type = Material.getMaterial("SKULL_ITEM");
ItemStack item = type == null ? new ItemStack(Material.getMaterial("PLAYER_HEAD")) : new ItemStack(type, 1, (short) 3);
SkullMeta meta = (SkullMeta) item.getItemMeta();
if (meta != null) {
meta.setOwner(context);
item.setItemMeta(meta);
}
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.material.CaseMaterial;
import com.jodexindustries.testaddon.registry.TestMaterial;
public class MainAddon extends InternalJavaAddon {
private final DCAPI api = DCAPI.getInstance();
@Override
public void onEnable() {
api.getMaterialManager().register(
CaseMaterial.builder()
.id("HEAD")
.addon(this)
.description("Default Minecraft heads by nickname")
.handler(new TestMaterial())
.build()
);
}
}