Skip to content

Commit 85a6435

Browse files
Merge pull request #45 from D0gmaDev/main
Add BannerBuilder and FireworkBuilder
2 parents 5844f64 + d43f2be commit 85a6435

3 files changed

Lines changed: 150 additions & 1 deletion

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Supports all versions from 1.14.0 to 1.20.1.
2020
* VirtualInventory: Store real items inside GUIs, customize maximum stack size per slot, etc.
2121
* Easy way to add localization using the ItemProvider system and the built-in ItemBuilder
2222
* Supports custom textures (forced resource pack system, compatible with AuthMe)
23-
* Advanced ItemBuilder (Normal, Potion, Skull) with BaseComponent support
23+
* Advanced ItemBuilder (Normal, Potion, Skull, Banner, Firework) with BaseComponent support
2424
* Support for BaseComponents in inventory titles
2525
* Uncloseable inventories
2626
* GUI Animations
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package xyz.xenondevs.invui.item.builder;
2+
3+
import org.bukkit.DyeColor;
4+
import org.bukkit.Material;
5+
import org.bukkit.block.banner.Pattern;
6+
import org.bukkit.block.banner.PatternType;
7+
import org.bukkit.inventory.ItemStack;
8+
import org.bukkit.inventory.meta.BannerMeta;
9+
import org.jetbrains.annotations.Contract;
10+
import org.jetbrains.annotations.NotNull;
11+
import org.jetbrains.annotations.Nullable;
12+
13+
import java.util.ArrayList;
14+
import java.util.List;
15+
16+
public final class BannerBuilder extends AbstractItemBuilder<BannerBuilder> {
17+
18+
private List<Pattern> patterns = new ArrayList<>();
19+
20+
public BannerBuilder(@NotNull Material material) {
21+
super(material);
22+
}
23+
24+
public BannerBuilder(@NotNull Material material, int amount) {
25+
super(material, amount);
26+
}
27+
28+
public BannerBuilder(@NotNull ItemStack base) {
29+
super(base);
30+
}
31+
32+
@Contract("_ -> this")
33+
public @NotNull BannerBuilder addPattern(@NotNull Pattern pattern) {
34+
patterns.add(pattern);
35+
return this;
36+
}
37+
38+
@Contract("_, _ -> this")
39+
public @NotNull BannerBuilder addPattern(@NotNull DyeColor color, @NotNull PatternType type) {
40+
patterns.add(new Pattern(color, type));
41+
return this;
42+
}
43+
44+
@Contract("_ -> this")
45+
public @NotNull BannerBuilder setPatterns(@NotNull List<@NotNull Pattern> patterns) {
46+
this.patterns = patterns;
47+
return this;
48+
}
49+
50+
@Contract("-> this")
51+
public @NotNull BannerBuilder clearPatterns() {
52+
patterns.clear();
53+
return this;
54+
}
55+
56+
@Contract(value = "_ -> new", pure = true)
57+
@Override
58+
public @NotNull ItemStack get(@Nullable String lang) {
59+
ItemStack item = super.get(lang);
60+
BannerMeta meta = (BannerMeta) item.getItemMeta();
61+
62+
meta.setPatterns(patterns);
63+
64+
item.setItemMeta(meta);
65+
return item;
66+
}
67+
68+
@Override
69+
public @NotNull BannerBuilder clone() {
70+
BannerBuilder builder = super.clone();
71+
builder.patterns = new ArrayList<>(patterns);
72+
return builder;
73+
}
74+
75+
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package xyz.xenondevs.invui.item.builder;
2+
3+
import org.bukkit.FireworkEffect;
4+
import org.bukkit.Material;
5+
import org.bukkit.inventory.ItemStack;
6+
import org.bukkit.inventory.meta.FireworkMeta;
7+
import org.jetbrains.annotations.Contract;
8+
import org.jetbrains.annotations.NotNull;
9+
import org.jetbrains.annotations.Nullable;
10+
11+
import java.util.ArrayList;
12+
import java.util.List;
13+
14+
public final class FireworkBuilder extends AbstractItemBuilder<FireworkBuilder> {
15+
16+
private List<FireworkEffect> effects = new ArrayList<>();
17+
18+
public FireworkBuilder() {
19+
super(Material.FIREWORK_ROCKET);
20+
}
21+
22+
public FireworkBuilder(int amount) {
23+
super(Material.FIREWORK_ROCKET, amount);
24+
}
25+
26+
public FireworkBuilder(@NotNull ItemStack base) {
27+
super(base);
28+
}
29+
30+
@Contract("_ -> this")
31+
public @NotNull FireworkBuilder addFireworkEffect(@NotNull FireworkEffect effect) {
32+
effects.add(effect);
33+
return this;
34+
}
35+
36+
@Contract("_ -> this")
37+
public @NotNull FireworkBuilder addFireworkEffect(@NotNull FireworkEffect.Builder builder) {
38+
effects.add(builder.build());
39+
return this;
40+
}
41+
42+
@Contract("_ -> this")
43+
public @NotNull FireworkBuilder setFireworkEffects(@NotNull List<@NotNull FireworkEffect> effects) {
44+
this.effects = effects;
45+
return this;
46+
}
47+
48+
@Contract("-> this")
49+
public @NotNull FireworkBuilder clearFireworkEffects() {
50+
effects.clear();
51+
return this;
52+
}
53+
54+
@Contract(value = "_ -> new", pure = true)
55+
@Override
56+
public @NotNull ItemStack get(@Nullable String lang) {
57+
ItemStack item = super.get(lang);
58+
FireworkMeta meta = (FireworkMeta) item.getItemMeta();
59+
60+
meta.clearEffects();
61+
meta.addEffects(effects);
62+
63+
item.setItemMeta(meta);
64+
return item;
65+
}
66+
67+
@Override
68+
public @NotNull FireworkBuilder clone() {
69+
FireworkBuilder builder = super.clone();
70+
builder.effects = new ArrayList<>(effects);
71+
return builder;
72+
}
73+
74+
}

0 commit comments

Comments
 (0)