Skip to content

Instantly share code, notes, and snippets.

@DiscowZombie
Created July 31, 2018 12:44
Show Gist options
  • Select an option

  • Save DiscowZombie/98a5c2873b39b871ee794292c05023ce to your computer and use it in GitHub Desktop.

Select an option

Save DiscowZombie/98a5c2873b39b871ee794292c05023ce to your computer and use it in GitHub Desktop.
BannerBuilder
public BannerBuilder FRENCH_FLAG = new BannerBuilder()
.data((byte) 15)
.addPattern(new Pattern(DyeColor.BLUE, PatternType.STRIPE_LEFT))
.addPattern(new Pattern(DyeColor.RED, PatternType.STRIPE_RIGHT));
public BannerBuilder BRITISH_FLAG = new BannerBuilder()
.data((byte)4)
.addPattern(new Pattern(DyeColor.WHITE, PatternType.STRIPE_DOWNLEFT))
.addPattern(new Pattern(DyeColor.WHITE, PatternType.STRIPE_DOWNRIGHT))
.addPattern(new Pattern(DyeColor.WHITE, PatternType.STRIPE_CENTER))
.addPattern(new Pattern(DyeColor.WHITE, PatternType.STRIPE_MIDDLE))
.addPattern(new Pattern(DyeColor.RED, PatternType.CROSS))
.addPattern(new Pattern(DyeColor.RED, PatternType.STRAIGHT_CROSS));
import org.bukkit.Material;
import org.bukkit.block.banner.Pattern;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.BannerMeta;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class BannerBuilder {
/**
* @author Mathéo | DiscowZombie
*/
private Integer amount = 1;
private byte data = 0;
private String name = null;
private List<String> lore = null;
private Map<Enchantment, Integer> enchantments = null;
private List<Pattern> patterns = null;
public BannerBuilder() {
}
/**
* @param
* @return {@link ItemBuilder}
*/
public BannerBuilder amount(Integer amount) {
this.amount = amount;
return this;
}
/**
* @param
* @return {@link ItemBuilder}
*/
public BannerBuilder data(byte data) {
this.data = data;
return this;
}
/**
* @param
* @return {@link ItemBuilder}
*/
public BannerBuilder name(String name) {
this.name = name;
return this;
}
/**
* @param
* @return {@link ItemBuilder}
*/
public BannerBuilder lore(String... strings) {
if (lore == null) {
lore = new ArrayList<>();
}
for (String s : strings) {
if (s != null) {
lore.add(s);
}
}
return this;
}
/**
* @param
* @return {@link ItemBuilder}
*/
public BannerBuilder addEnchantment(Enchantment enchantment, Integer level) {
if (this.enchantments == null) {
this.enchantments = new HashMap<>();
}
this.enchantments.put(enchantment, level);
return this;
}
public BannerBuilder addPattern(Pattern pattern) {
if (this.patterns == null) {
patterns = new ArrayList<>();
}
this.patterns.add(pattern);
return this;
}
/**
* @return {@link ItemStack}
*/
public ItemStack create() {
ItemStack is = new ItemStack(Material.BANNER, amount, data);
BannerMeta meta = (BannerMeta) is.getItemMeta();
if (name != null) {
meta.setDisplayName(name);
}
if (lore != null) {
meta.setLore(lore);
}
if (enchantments != null) {
for (Map.Entry<Enchantment, Integer> m : enchantments.entrySet()) {
meta.addEnchant(m.getKey(), m.getValue(), true);
}
}
if (patterns != null) {
meta.setPatterns(this.patterns);
}
is.setItemMeta(meta);
return is;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment