diff --git a/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/AdventureComponentWrapper.java b/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/AdventureComponentWrapper.java index d87f8af..6b33dd2 100644 --- a/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/AdventureComponentWrapper.java +++ b/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/AdventureComponentWrapper.java @@ -29,7 +29,7 @@ public class AdventureComponentWrapper implements ComponentWrapper { } @Override - public @NotNull ComponentWrapper withoutPreFormatting() { + public @NotNull AdventureComponentWrapper withoutPreFormatting() { return new AdventureComponentWrapper(AdventureComponentUtils.withoutPreFormatting(component)); } diff --git a/invui-core/src/main/java/xyz/xenondevs/invui/item/builder/AbstractItemBuilder.java b/invui-core/src/main/java/xyz/xenondevs/invui/item/builder/AbstractItemBuilder.java index df6750d..2b54eda 100644 --- a/invui-core/src/main/java/xyz/xenondevs/invui/item/builder/AbstractItemBuilder.java +++ b/invui-core/src/main/java/xyz/xenondevs/invui/item/builder/AbstractItemBuilder.java @@ -32,6 +32,7 @@ public abstract class AbstractItemBuilder implements ItemProvider { protected int amount = 1; protected int damage; protected int customModelData; + protected Boolean unbreakable; protected ComponentWrapper displayName; protected List lore; protected List itemFlags; @@ -116,6 +117,10 @@ public abstract class AbstractItemBuilder implements ItemProvider { if (customModelData != 0) itemMeta.setCustomModelData(customModelData); + // unbreakable + if (unbreakable != null) + itemMeta.setUnbreakable(unbreakable); + // enchantments if (enchantments != null) { if (base != null) @@ -201,6 +206,16 @@ public abstract class AbstractItemBuilder implements ItemProvider { return (S) this; } + public @Nullable Boolean isUnbreakable() { + return unbreakable; + } + + @Contract("_ -> this") + public @NotNull S setUnbreakable(boolean unbreakable) { + this.unbreakable = unbreakable; + return (S) this; + } + public @Nullable ComponentWrapper getDisplayName() { return displayName; } @@ -229,7 +244,7 @@ public abstract class AbstractItemBuilder implements ItemProvider { } @Contract("_ -> this") - public @NotNull S setLore(List lore) { + public @NotNull S setLore(@NotNull List<@NotNull ComponentWrapper> lore) { this.lore = lore.stream() .map(ComponentWrapper::withoutPreFormatting) .collect(Collectors.toList()); @@ -237,7 +252,7 @@ public abstract class AbstractItemBuilder implements ItemProvider { } @Contract("_ -> this") - public @NotNull S setLegacyLore(@NotNull List lore) { + public @NotNull S setLegacyLore(@NotNull List<@NotNull String> lore) { this.lore = lore.stream() .map(line -> new BungeeComponentWrapper(TextComponent.fromLegacyText(line)).withoutPreFormatting()) .collect(Collectors.toList()); @@ -273,6 +288,26 @@ public abstract class AbstractItemBuilder implements ItemProvider { return (S) this; } + + @Contract("_ -> this") + public @NotNull S addLoreLines(@NotNull List<@NotNull ComponentWrapper> lines) { + if (lore == null) lore = new ArrayList<>(); + + for (ComponentWrapper line : lines) + lore.add(line.withoutPreFormatting()); + + return (S) this; + } + + @Contract("_ -> this") + public @NotNull S addLegacyLoreLines(@NotNull List<@NotNull String> lines) { + if (lore == null) lore = new ArrayList<>(); + + for (String line : lines) + lore.add(new BungeeComponentWrapper(TextComponent.fromLegacyText(line)).withoutPreFormatting()); + + return (S) this; + } // // @@ -293,6 +328,12 @@ public abstract class AbstractItemBuilder implements ItemProvider { return (S) this; } + @Contract("-> this") + public @NotNull S addAllItemFlags() { + this.itemFlags = new ArrayList<>(Arrays.asList(ItemFlag.values())); + return (S) this; + } + @Contract("_ -> this") public @NotNull S removeItemFlags(@NotNull ItemFlag... itemFlags) { if (this.itemFlags != null) @@ -327,8 +368,7 @@ public abstract class AbstractItemBuilder implements ItemProvider { @Contract("_ -> this") public @NotNull S removeEnchantment(Enchantment enchantment) { - if (enchantments == null) enchantments = new HashMap<>(); - enchantments.remove(enchantment); + if (enchantments != null) enchantments.remove(enchantment); return (S) this; } diff --git a/invui-core/src/main/java/xyz/xenondevs/invui/item/builder/FireworkBuilder.java b/invui-core/src/main/java/xyz/xenondevs/invui/item/builder/FireworkBuilder.java index 8961b22..475b12e 100644 --- a/invui-core/src/main/java/xyz/xenondevs/invui/item/builder/FireworkBuilder.java +++ b/invui-core/src/main/java/xyz/xenondevs/invui/item/builder/FireworkBuilder.java @@ -7,12 +7,14 @@ import org.bukkit.inventory.meta.FireworkMeta; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.Range; import java.util.ArrayList; import java.util.List; public final class FireworkBuilder extends AbstractItemBuilder { + private int power = -1; private List effects = new ArrayList<>(); public FireworkBuilder() { @@ -27,6 +29,12 @@ public final class FireworkBuilder extends AbstractItemBuilder super(base); } + @Contract("_ -> this") + public @NotNull FireworkBuilder setPower(@Range(from = 0, to = 127) int power) { + this.power = power; + return this; + } + @Contract("_ -> this") public @NotNull FireworkBuilder addFireworkEffect(@NotNull FireworkEffect effect) { effects.add(effect); @@ -57,6 +65,7 @@ public final class FireworkBuilder extends AbstractItemBuilder ItemStack item = super.get(lang); FireworkMeta meta = (FireworkMeta) item.getItemMeta(); + if (power != -1) meta.setPower(power); meta.clearEffects(); meta.addEffects(effects);