Dieser Commit ist enthalten in:
Ursprung
6915b52eef
Commit
239c7895ff
196
SpigotCore_Main/src/de/steamwar/inventory/BannerBuilder.java
Normale Datei
196
SpigotCore_Main/src/de/steamwar/inventory/BannerBuilder.java
Normale Datei
@ -0,0 +1,196 @@
|
||||
package de.steamwar.inventory;
|
||||
|
||||
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.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class BannerBuilder {
|
||||
|
||||
public static ItemStack createCross(DyeColor baseColor, DyeColor color) {
|
||||
return new BannerBuilder(baseColor).addCross(color).build();
|
||||
}
|
||||
|
||||
public static ItemStack createDiagonalCross(DyeColor baseColor, DyeColor color) {
|
||||
return new BannerBuilder(baseColor).addDiagonalCross(color).build();
|
||||
}
|
||||
|
||||
public static ItemStack createNumber(DyeColor baseColor, DyeColor color, int number) {
|
||||
BannerBuilder builder = new BannerBuilder(baseColor);
|
||||
switch (number) {
|
||||
case 0:
|
||||
builder.addZero(color);
|
||||
break;
|
||||
case 1:
|
||||
builder.addOne(color);
|
||||
break;
|
||||
case 2:
|
||||
builder.addTwo(color);
|
||||
break;
|
||||
case 3:
|
||||
builder.addThree(color);
|
||||
break;
|
||||
case 4:
|
||||
builder.addFour(color);
|
||||
break;
|
||||
case 5:
|
||||
builder.addFive(color);
|
||||
break;
|
||||
case 6:
|
||||
builder.addSix(color);
|
||||
break;
|
||||
case 7:
|
||||
builder.addSeven(color);
|
||||
break;
|
||||
case 8:
|
||||
builder.addEight(color);
|
||||
break;
|
||||
case 9:
|
||||
builder.addNine(color);
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Number must be between 0 and 9");
|
||||
}
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
private final BannerMeta meta;
|
||||
private final ItemStack itemStack;
|
||||
private final DyeColor baseColor;
|
||||
|
||||
public BannerBuilder(DyeColor baseColor) {
|
||||
this.baseColor = baseColor;
|
||||
itemStack = new ItemStack(Material.valueOf(baseColor.name() + "_BANNER"));
|
||||
meta = (BannerMeta) itemStack.getItemMeta();
|
||||
}
|
||||
|
||||
public BannerBuilder addPattern(DyeColor color, PatternType patternType) {
|
||||
meta.addPattern(new Pattern(color, patternType));
|
||||
return this;
|
||||
}
|
||||
|
||||
public BannerBuilder addCross(DyeColor color) {
|
||||
addPattern(color, PatternType.STRAIGHT_CROSS);
|
||||
addPattern(baseColor, PatternType.STRIPE_BOTTOM);
|
||||
addPattern(baseColor, PatternType.STRIPE_TOP);
|
||||
addPattern(baseColor, PatternType.STRIPE_LEFT);
|
||||
return addPattern(baseColor, PatternType.STRIPE_RIGHT);
|
||||
}
|
||||
|
||||
public BannerBuilder addDiagonalCross(DyeColor color) {
|
||||
addPattern(color, PatternType.CROSS);
|
||||
addPattern(baseColor, PatternType.STRIPE_BOTTOM);
|
||||
addPattern(baseColor, PatternType.STRIPE_TOP);
|
||||
addPattern(baseColor, PatternType.STRIPE_LEFT);
|
||||
return addPattern(baseColor, PatternType.STRIPE_RIGHT);
|
||||
}
|
||||
|
||||
public BannerBuilder addOne(DyeColor color) {
|
||||
addPattern(color, PatternType.STRIPE_CENTER);
|
||||
addPattern(color, PatternType.SQUARE_TOP_LEFT);
|
||||
addPattern(baseColor, PatternType.CURLY_BORDER);
|
||||
addPattern(color, PatternType.STRIPE_BOTTOM);
|
||||
return addPattern(baseColor, PatternType.BORDER);
|
||||
}
|
||||
|
||||
public BannerBuilder addTwo(DyeColor color) {
|
||||
addPattern(color, PatternType.STRIPE_TOP);
|
||||
addPattern(baseColor, PatternType.CIRCLE_MIDDLE);
|
||||
addPattern(color, PatternType.STRIPE_BOTTOM);
|
||||
addPattern(color, PatternType.STRIPE_DOWNLEFT);
|
||||
return addPattern(baseColor, PatternType.BORDER);
|
||||
}
|
||||
|
||||
public BannerBuilder addThree(DyeColor color) {
|
||||
addPattern(color, PatternType.STRIPE_BOTTOM);
|
||||
addPattern(color, PatternType.STRIPE_MIDDLE);
|
||||
addPattern(color, PatternType.STRIPE_TOP);
|
||||
addPattern(baseColor, PatternType.CURLY_BORDER);
|
||||
addPattern(color, PatternType.STRIPE_RIGHT);
|
||||
return addPattern(baseColor, PatternType.BORDER);
|
||||
}
|
||||
|
||||
public BannerBuilder addFour(DyeColor color) {
|
||||
addPattern(color, PatternType.STRIPE_LEFT);
|
||||
addPattern(baseColor, PatternType.STRIPE_BOTTOM);
|
||||
addPattern(color, PatternType.STRIPE_RIGHT);
|
||||
addPattern(color, PatternType.STRIPE_MIDDLE);
|
||||
return addPattern(baseColor, PatternType.BORDER);
|
||||
}
|
||||
|
||||
public BannerBuilder addFive(DyeColor color) {
|
||||
addPattern(color, PatternType.STRIPE_BOTTOM);
|
||||
addPattern(baseColor, PatternType.RHOMBUS_MIDDLE);
|
||||
addPattern(color, PatternType.STRIPE_TOP);
|
||||
addPattern(color, PatternType.STRIPE_DOWNRIGHT);
|
||||
return addPattern(baseColor, PatternType.BORDER);
|
||||
}
|
||||
|
||||
public BannerBuilder addSix(DyeColor color) {
|
||||
addPattern(color, PatternType.STRIPE_BOTTOM);
|
||||
addPattern(color, PatternType.STRIPE_RIGHT);
|
||||
addPattern(baseColor, PatternType.HALF_HORIZONTAL);
|
||||
addPattern(color, PatternType.STRIPE_MIDDLE);
|
||||
addPattern(color, PatternType.STRIPE_TOP);
|
||||
addPattern(color, PatternType.STRIPE_LEFT);
|
||||
return addPattern(baseColor, PatternType.BORDER);
|
||||
}
|
||||
|
||||
public BannerBuilder addSeven(DyeColor color) {
|
||||
addPattern(color, PatternType.STRIPE_DOWNLEFT);
|
||||
addPattern(color, PatternType.STRIPE_TOP);
|
||||
return addPattern(baseColor, PatternType.BORDER);
|
||||
}
|
||||
|
||||
public BannerBuilder addEight(DyeColor color) {
|
||||
addPattern(color, PatternType.STRIPE_TOP);
|
||||
addPattern(color, PatternType.STRIPE_LEFT);
|
||||
addPattern(color, PatternType.STRIPE_MIDDLE);
|
||||
addPattern(color, PatternType.STRIPE_BOTTOM);
|
||||
addPattern(color, PatternType.STRIPE_RIGHT);
|
||||
return addPattern(baseColor, PatternType.BORDER);
|
||||
}
|
||||
|
||||
public BannerBuilder addNine(DyeColor color) {
|
||||
addPattern(color, PatternType.STRIPE_LEFT);
|
||||
addPattern(baseColor, PatternType.HALF_HORIZONTAL_MIRROR);
|
||||
addPattern(color, PatternType.STRIPE_MIDDLE);
|
||||
addPattern(color, PatternType.STRIPE_TOP);
|
||||
addPattern(color, PatternType.STRIPE_RIGHT);
|
||||
addPattern(color, PatternType.STRIPE_BOTTOM);
|
||||
return addPattern(baseColor, PatternType.BORDER);
|
||||
}
|
||||
|
||||
public BannerBuilder addZero(DyeColor color) {
|
||||
addPattern(color, PatternType.STRIPE_BOTTOM);
|
||||
addPattern(color, PatternType.STRIPE_LEFT);
|
||||
addPattern(color, PatternType.STRIPE_TOP);
|
||||
addPattern(color, PatternType.STRIPE_RIGHT);
|
||||
addPattern(color, PatternType.STRIPE_DOWNLEFT);
|
||||
return addPattern(baseColor, PatternType.BORDER);
|
||||
}
|
||||
|
||||
public ItemMeta getMeta() {
|
||||
return meta;
|
||||
}
|
||||
|
||||
public BannerBuilder setDisplayName(String name) {
|
||||
meta.setDisplayName(name);
|
||||
return this;
|
||||
}
|
||||
|
||||
public BannerBuilder setLore(List<String> lore) {
|
||||
meta.setLore(lore);
|
||||
return this;
|
||||
}
|
||||
|
||||
public ItemStack build() {
|
||||
itemStack.setItemMeta(meta);
|
||||
return itemStack;
|
||||
}
|
||||
}
|
In neuem Issue referenzieren
Einen Benutzer sperren