minions-plus/src/main/java/me/loganb1max/minionsplus/util/ItemBuilder.java

69 lines
1.6 KiB
Java

package me.loganb1max.minionsplus.util;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class ItemBuilder {
private ItemStack itemStack;
public ItemBuilder(final Material material) {
this.itemStack = new ItemStack(material);
}
public ItemBuilder(final ItemStack itemStack) {
this.itemStack = itemStack;
}
public static ItemBuilder of(final Material material) {
return new ItemBuilder(material);
}
public static ItemBuilder of(final ItemStack itemStack) {
return new ItemBuilder(itemStack);
}
public ItemBuilder amount(final int amount) {
itemStack.setAmount(amount);
return this;
}
public ItemBuilder durability(final short durability) {
itemStack.setDurability(durability);
return this;
}
public ItemBuilder name(final String name) {
ItemMeta meta = itemStack.getItemMeta();
meta.setDisplayName(Text.color(name));
itemStack.setItemMeta(meta);
return this;
}
public ItemBuilder lore(final String lore) {
ItemMeta meta = itemStack.getItemMeta();
List<String> loreList = meta.hasLore() ? meta.getLore() : new ArrayList<>();
loreList.add(Text.color(lore));
meta.setLore(loreList);
itemStack.setItemMeta(meta);
return this;
}
public ItemBuilder lore(final List<String> lore) {
ItemMeta meta = itemStack.getItemMeta();
meta.setLore(lore.stream().map(Text::color).collect(Collectors.toList()));
itemStack.setItemMeta(meta);
return this;
}
public ItemStack build() {
return itemStack.clone();
}
}