From 7215bb2bc1ca85f535cf72851d06905ce53fb0dd Mon Sep 17 00:00:00 2001 From: D0gma_ Date: Tue, 8 Aug 2023 17:56:15 +0200 Subject: [PATCH 1/2] Add BannerBuilder and FireworkBuilder --- README.md | 2 +- .../invui/item/builder/BannerBuilder.java | 74 +++++++++++++++++++ .../invui/item/builder/FireworkBuilder.java | 73 ++++++++++++++++++ 3 files changed, 148 insertions(+), 1 deletion(-) create mode 100644 invui-core/src/main/java/xyz/xenondevs/invui/item/builder/BannerBuilder.java create mode 100644 invui-core/src/main/java/xyz/xenondevs/invui/item/builder/FireworkBuilder.java diff --git a/README.md b/README.md index b1ab139..877a275 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Supports all versions from 1.14.0 to 1.20.1. * VirtualInventory: Store real items inside GUIs, customize maximum stack size per slot, etc. * Easy way to add localization using the ItemProvider system and the built-in ItemBuilder * Supports custom textures (forced resource pack system, compatible with AuthMe) -* Advanced ItemBuilder (Normal, Potion, Skull) with BaseComponent support +* Advanced ItemBuilder (Normal, Potion, Skull, Banner, Firework) with BaseComponent support * Support for BaseComponents in inventory titles * Uncloseable inventories * GUI Animations diff --git a/invui-core/src/main/java/xyz/xenondevs/invui/item/builder/BannerBuilder.java b/invui-core/src/main/java/xyz/xenondevs/invui/item/builder/BannerBuilder.java new file mode 100644 index 0000000..170d90d --- /dev/null +++ b/invui-core/src/main/java/xyz/xenondevs/invui/item/builder/BannerBuilder.java @@ -0,0 +1,74 @@ +package xyz.xenondevs.invui.item.builder; + +import java.util.ArrayList; +import java.util.List; +import org.bukkit.DyeColor; +import org.bukkit.Material; +import org.bukkit.block.banner.Pattern; +import org.bukkit.block.banner.PatternType; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.BannerMeta; +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public final class BannerBuilder extends AbstractItemBuilder { + + private List patterns = new ArrayList<>(); + + public BannerBuilder(@NotNull Material material) { + super(material); + } + + public BannerBuilder(@NotNull Material material, int amount) { + super(material, amount); + } + + public BannerBuilder(@NotNull ItemStack base) { + super(base); + } + + @Contract("_ -> this") + public @NotNull BannerBuilder addPattern(@NotNull Pattern pattern) { + patterns.add(pattern); + return this; + } + + @Contract("_, _ -> this") + public @NotNull BannerBuilder addPattern(@NotNull DyeColor color, @NotNull PatternType type) { + patterns.add(new Pattern(color, type)); + return this; + } + + @Contract("_ -> this") + public @NotNull BannerBuilder setPatterns(@NotNull List<@NotNull Pattern> patterns) { + this.patterns = patterns; + return this; + } + + @Contract("-> this") + public @NotNull BannerBuilder clearPatterns() { + patterns.clear(); + return this; + } + + @Contract(value = "_ -> new", pure = true) + @Override + public @NotNull ItemStack get(@Nullable String lang) { + ItemStack item = super.get(lang); + BannerMeta meta = (BannerMeta) item.getItemMeta(); + + meta.setPatterns(patterns); + + item.setItemMeta(meta); + return item; + } + + @Override + public @NotNull BannerBuilder clone() { + BannerBuilder builder = super.clone(); + builder.patterns = new ArrayList<>(patterns); + return builder; + } + +} 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 new file mode 100644 index 0000000..62f8cf4 --- /dev/null +++ b/invui-core/src/main/java/xyz/xenondevs/invui/item/builder/FireworkBuilder.java @@ -0,0 +1,73 @@ +package xyz.xenondevs.invui.item.builder; + +import java.util.ArrayList; +import java.util.List; +import org.bukkit.FireworkEffect; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.FireworkMeta; +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public final class FireworkBuilder extends AbstractItemBuilder { + + private List effects = new ArrayList<>(); + + public FireworkBuilder() { + super(Material.FIREWORK_ROCKET); + } + + public FireworkBuilder(int amount) { + super(Material.FIREWORK_ROCKET, amount); + } + + public FireworkBuilder(@NotNull ItemStack base) { + super(base); + } + + @Contract("_ -> this") + public @NotNull FireworkBuilder addFireworkEffect(@NotNull FireworkEffect effect) { + effects.add(effect); + return this; + } + + @Contract("_ -> this") + public @NotNull FireworkBuilder addFireworkEffect(@NotNull FireworkEffect.Builder builder) { + effects.add(builder.build()); + return this; + } + + @Contract("_ -> this") + public @NotNull FireworkBuilder setFireworkEffects(@NotNull List<@NotNull FireworkEffect> effects) { + this.effects = effects; + return this; + } + + @Contract("-> this") + public @NotNull FireworkBuilder clearFireworkEffects() { + effects.clear(); + return this; + } + + @Contract(value = "_ -> new", pure = true) + @Override + public @NotNull ItemStack get(@Nullable String lang) { + ItemStack item = super.get(lang); + FireworkMeta meta = (FireworkMeta) item.getItemMeta(); + + meta.clearEffects(); + meta.addEffects(effects); + + item.setItemMeta(meta); + return item; + } + + @Override + public @NotNull FireworkBuilder clone() { + FireworkBuilder builder = super.clone(); + builder.effects = new ArrayList<>(effects); + return builder; + } + +} From d43f2be95ccc161582ebebbd51071453b7bc70bd Mon Sep 17 00:00:00 2001 From: NichtStudioCode <51272202+NichtStudioCode@users.noreply.github.com> Date: Wed, 9 Aug 2023 12:09:51 +0200 Subject: [PATCH 2/2] Reformat code --- .../invui/item/builder/BannerBuilder.java | 31 ++++++++++--------- .../invui/item/builder/FireworkBuilder.java | 31 ++++++++++--------- 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/invui-core/src/main/java/xyz/xenondevs/invui/item/builder/BannerBuilder.java b/invui-core/src/main/java/xyz/xenondevs/invui/item/builder/BannerBuilder.java index 170d90d..5de3358 100644 --- a/invui-core/src/main/java/xyz/xenondevs/invui/item/builder/BannerBuilder.java +++ b/invui-core/src/main/java/xyz/xenondevs/invui/item/builder/BannerBuilder.java @@ -1,7 +1,5 @@ package xyz.xenondevs.invui.item.builder; -import java.util.ArrayList; -import java.util.List; import org.bukkit.DyeColor; import org.bukkit.Material; import org.bukkit.block.banner.Pattern; @@ -12,63 +10,66 @@ import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.ArrayList; +import java.util.List; + public final class BannerBuilder extends AbstractItemBuilder { - + private List patterns = new ArrayList<>(); - + public BannerBuilder(@NotNull Material material) { super(material); } - + public BannerBuilder(@NotNull Material material, int amount) { super(material, amount); } - + public BannerBuilder(@NotNull ItemStack base) { super(base); } - + @Contract("_ -> this") public @NotNull BannerBuilder addPattern(@NotNull Pattern pattern) { patterns.add(pattern); return this; } - + @Contract("_, _ -> this") public @NotNull BannerBuilder addPattern(@NotNull DyeColor color, @NotNull PatternType type) { patterns.add(new Pattern(color, type)); return this; } - + @Contract("_ -> this") public @NotNull BannerBuilder setPatterns(@NotNull List<@NotNull Pattern> patterns) { this.patterns = patterns; return this; } - + @Contract("-> this") public @NotNull BannerBuilder clearPatterns() { patterns.clear(); return this; } - + @Contract(value = "_ -> new", pure = true) @Override public @NotNull ItemStack get(@Nullable String lang) { ItemStack item = super.get(lang); BannerMeta meta = (BannerMeta) item.getItemMeta(); - + meta.setPatterns(patterns); - + item.setItemMeta(meta); return item; } - + @Override public @NotNull BannerBuilder clone() { BannerBuilder builder = super.clone(); builder.patterns = new ArrayList<>(patterns); return builder; } - + } 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 62f8cf4..8961b22 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 @@ -1,7 +1,5 @@ package xyz.xenondevs.invui.item.builder; -import java.util.ArrayList; -import java.util.List; import org.bukkit.FireworkEffect; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; @@ -10,64 +8,67 @@ import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.ArrayList; +import java.util.List; + public final class FireworkBuilder extends AbstractItemBuilder { - + private List effects = new ArrayList<>(); - + public FireworkBuilder() { super(Material.FIREWORK_ROCKET); } - + public FireworkBuilder(int amount) { super(Material.FIREWORK_ROCKET, amount); } - + public FireworkBuilder(@NotNull ItemStack base) { super(base); } - + @Contract("_ -> this") public @NotNull FireworkBuilder addFireworkEffect(@NotNull FireworkEffect effect) { effects.add(effect); return this; } - + @Contract("_ -> this") public @NotNull FireworkBuilder addFireworkEffect(@NotNull FireworkEffect.Builder builder) { effects.add(builder.build()); return this; } - + @Contract("_ -> this") public @NotNull FireworkBuilder setFireworkEffects(@NotNull List<@NotNull FireworkEffect> effects) { this.effects = effects; return this; } - + @Contract("-> this") public @NotNull FireworkBuilder clearFireworkEffects() { effects.clear(); return this; } - + @Contract(value = "_ -> new", pure = true) @Override public @NotNull ItemStack get(@Nullable String lang) { ItemStack item = super.get(lang); FireworkMeta meta = (FireworkMeta) item.getItemMeta(); - + meta.clearEffects(); meta.addEffects(effects); - + item.setItemMeta(meta); return item; } - + @Override public @NotNull FireworkBuilder clone() { FireworkBuilder builder = super.clone(); builder.effects = new ArrayList<>(effects); return builder; } - + }