Skip to main content
Version: 2.0.0

Реєстрація матеріалів

Користувацькі матеріали оброблюються за допомогою інтерфейсу MaterialHandler

Приклад реалізації HEAD матеріалу

TestMaterial класс
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<ItemStack> {

@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;
}
}
Реєстрація
// отримання MaterialManager
MaterialManager<ItemStack> materialManager = api.getMaterialManager();

// реєстрація матеріалу
manager.registerMaterial("HEAD", new TestMaterial(),
"Default Minecraft heads by nickname");

Пояснення

Метод handle повинен повертати ItemStack, як буде використовуватися після виклику обробника MaterialHandler.

Приклад виклику
public ItemStack loadCaseItem(String id) {
ItemStack itemStack = null;

if(id != null && Material.getMaterial(id) == null) {
String temp = instance.api.getMaterialManager().getByStart(id);


if (temp != null) {
CaseMaterial<ItemStack> caseMaterial = instance.api.getMaterialManager().getRegisteredMaterial(temp);
if (caseMaterial != null) {
String context = id.replace(temp, "").replaceFirst(":", "").trim();
itemStack = caseMaterial.getMaterialHandler().handle(context);
}
}
}

if(itemStack == null) itemStack = DCToolsBukkit.createItem(id);

return itemStack;
}