SteamWar/SpigotCore
Archiviert
13
0

Add BannerBuilder
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful

Dieser Commit ist enthalten in:
Chaoscaot 2023-05-01 00:22:03 +02:00
Ursprung 6915b52eef
Commit 239c7895ff

Datei anzeigen

@ -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;
}
}