diff --git a/invui/src/main/java/xyz/xenondevs/invui/gui/AbstractGui.java b/invui/src/main/java/xyz/xenondevs/invui/gui/AbstractGui.java index 0316828..e1d9dff 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/gui/AbstractGui.java +++ b/invui/src/main/java/xyz/xenondevs/invui/gui/AbstractGui.java @@ -694,91 +694,91 @@ public abstract class AbstractGui implements Gui, GuiParent { protected List> modifiers; @Override - public S setStructure(int width, int height, @NotNull String structureData) { + public @NotNull S setStructure(int width, int height, @NotNull String structureData) { structure = new Structure(width, height, structureData); return (S) this; } @Override - public S setStructure(@NotNull String... structureData) { + public @NotNull S setStructure(@NotNull String... structureData) { structure = new Structure(structureData); return (S) this; } @Override - public S setStructure(@NotNull Structure structure) { + public @NotNull S setStructure(@NotNull Structure structure) { this.structure = structure; return (S) this; } @Override - public S addIngredient(char key, @NotNull ItemStack itemStack) { + public @NotNull S addIngredient(char key, @NotNull ItemStack itemStack) { structure.addIngredient(key, itemStack); return (S) this; } @Override - public S addIngredient(char key, @NotNull ItemProvider itemProvider) { + public @NotNull S addIngredient(char key, @NotNull ItemProvider itemProvider) { structure.addIngredient(key, itemProvider); return (S) this; } @Override - public S addIngredient(char key, @NotNull Item item) { + public @NotNull S addIngredient(char key, @NotNull Item item) { structure.addIngredient(key, item); return (S) this; } @Override - public S addIngredient(char key, @NotNull VirtualInventory inventory) { + public @NotNull S addIngredient(char key, @NotNull VirtualInventory inventory) { structure.addIngredient(key, inventory); return (S) this; } @Override - public S addIngredient(char key, @NotNull VirtualInventory inventory, @Nullable ItemProvider background) { + public @NotNull S addIngredient(char key, @NotNull VirtualInventory inventory, @Nullable ItemProvider background) { structure.addIngredient(key, inventory, background); return (S) this; } @Override - public S addIngredient(char key, @NotNull SlotElement element) { + public @NotNull S addIngredient(char key, @NotNull SlotElement element) { structure.addIngredient(key, element); return (S) this; } @Override - public S addIngredient(char key, @NotNull Marker marker) { + public @NotNull S addIngredient(char key, @NotNull Marker marker) { structure.addIngredient(key, marker); return (S) this; } @Override - public S addIngredient(char key, @NotNull Supplier itemSupplier) { + public @NotNull S addIngredient(char key, @NotNull Supplier itemSupplier) { structure.addIngredient(key, itemSupplier); return (S) this; } @Override - public S addIngredientElementSupplier(char key, @NotNull Supplier elementSupplier) { + public @NotNull S addIngredientElementSupplier(char key, @NotNull Supplier elementSupplier) { structure.addIngredientElementSupplier(key, elementSupplier); return (S) this; } @Override - public S setBackground(@NotNull ItemProvider itemProvider) { + public @NotNull S setBackground(@NotNull ItemProvider itemProvider) { background = itemProvider; return (S) this; } @Override - public S setBackground(@NotNull ItemStack itemStack) { + public @NotNull S setBackground(@NotNull ItemStack itemStack) { background = new ItemWrapper(itemStack); return (S) this; } @Override - public S addModifier(@NotNull Consumer<@NotNull Gui> modifier) { + public @NotNull S addModifier(@NotNull Consumer<@NotNull Gui> modifier) { if (modifiers == null) modifiers = new ArrayList<>(); @@ -787,7 +787,7 @@ public abstract class AbstractGui implements Gui, GuiParent { } @Override - public S setModifiers(@NotNull List<@NotNull Consumer<@NotNull Gui>> modifiers) { + public @NotNull S setModifiers(@NotNull List<@NotNull Consumer<@NotNull Gui>> modifiers) { this.modifiers = modifiers; return (S) this; } diff --git a/invui/src/main/java/xyz/xenondevs/invui/gui/AbstractPagedGui.java b/invui/src/main/java/xyz/xenondevs/invui/gui/AbstractPagedGui.java index 3619c76..e6aa991 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/gui/AbstractPagedGui.java +++ b/invui/src/main/java/xyz/xenondevs/invui/gui/AbstractPagedGui.java @@ -140,13 +140,13 @@ public abstract class AbstractPagedGui extends AbstractGui implements PagedGu protected List> pageChangeHandlers; @Override - public PagedGui.Builder setContent(@NotNull List<@NotNull C> content) { + public PagedGui.@NotNull Builder setContent(@NotNull List<@NotNull C> content) { this.content = content; return this; } @Override - public PagedGui.Builder addContent(@NotNull C content) { + public PagedGui.@NotNull Builder addContent(@NotNull C content) { if (this.content == null) this.content = new ArrayList<>(); @@ -155,13 +155,13 @@ public abstract class AbstractPagedGui extends AbstractGui implements PagedGu } @Override - public PagedGui.Builder setPageChangeHandlers(@NotNull List<@NotNull BiConsumer> handlers) { + public PagedGui.@NotNull Builder setPageChangeHandlers(@NotNull List<@NotNull BiConsumer> handlers) { pageChangeHandlers = handlers; return this; } @Override - public PagedGui.Builder addPageChangeHandler(@NotNull BiConsumer handler) { + public PagedGui.@NotNull Builder addPageChangeHandler(@NotNull BiConsumer handler) { if (pageChangeHandlers == null) pageChangeHandlers = new ArrayList<>(1); diff --git a/invui/src/main/java/xyz/xenondevs/invui/gui/AbstractScrollGui.java b/invui/src/main/java/xyz/xenondevs/invui/gui/AbstractScrollGui.java index 4f3373e..db220a7 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/gui/AbstractScrollGui.java +++ b/invui/src/main/java/xyz/xenondevs/invui/gui/AbstractScrollGui.java @@ -141,13 +141,13 @@ public abstract class AbstractScrollGui extends AbstractGui implements Scroll protected List> scrollHandlers; @Override - public ScrollGui.Builder setContent(@NotNull List<@NotNull C> content) { + public ScrollGui.@NotNull Builder setContent(@NotNull List<@NotNull C> content) { this.content = content; return this; } @Override - public ScrollGui.Builder addContent(@NotNull C content) { + public ScrollGui.@NotNull Builder addContent(@NotNull C content) { if (this.content == null) this.content = new ArrayList<>(); @@ -156,13 +156,13 @@ public abstract class AbstractScrollGui extends AbstractGui implements Scroll } @Override - public ScrollGui.Builder setScrollHandlers(@NotNull List<@NotNull BiConsumer> handlers) { + public ScrollGui.@NotNull Builder setScrollHandlers(@NotNull List<@NotNull BiConsumer> handlers) { scrollHandlers = handlers; return this; } @Override - public ScrollGui.Builder addScrollHandler(@NotNull BiConsumer handler) { + public ScrollGui.@NotNull Builder addScrollHandler(@NotNull BiConsumer handler) { if (scrollHandlers == null) scrollHandlers = new ArrayList<>(1); diff --git a/invui/src/main/java/xyz/xenondevs/invui/gui/AbstractTabGui.java b/invui/src/main/java/xyz/xenondevs/invui/gui/AbstractTabGui.java index b762b4a..6086053 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/gui/AbstractTabGui.java +++ b/invui/src/main/java/xyz/xenondevs/invui/gui/AbstractTabGui.java @@ -105,13 +105,13 @@ public abstract class AbstractTabGui extends AbstractGui implements TabGui { protected List> tabChangeHandlers; @Override - public TabGui.Builder setTabs(@NotNull List<@Nullable Gui> tabs) { + public TabGui.@NotNull Builder setTabs(@NotNull List<@Nullable Gui> tabs) { this.tabs = tabs; return this; } @Override - public TabGui.Builder addTab(@Nullable Gui tab) { + public TabGui.@NotNull Builder addTab(@Nullable Gui tab) { if (this.tabs == null) this.tabs = new ArrayList<>(); @@ -120,7 +120,7 @@ public abstract class AbstractTabGui extends AbstractGui implements TabGui { } @Override - public TabGui.Builder addTabChangeHandler(@NotNull BiConsumer handler) { + public TabGui.@NotNull Builder addTabChangeHandler(@NotNull BiConsumer handler) { if (tabChangeHandlers == null) tabChangeHandlers = new ArrayList<>(1); @@ -129,7 +129,7 @@ public abstract class AbstractTabGui extends AbstractGui implements TabGui { } @Override - public TabGui.Builder setTabChangeHandlers(@NotNull List<@NotNull BiConsumer> handlers) { + public TabGui.@NotNull Builder setTabChangeHandlers(@NotNull List<@NotNull BiConsumer> handlers) { tabChangeHandlers = handlers; return this; } diff --git a/invui/src/main/java/xyz/xenondevs/invui/gui/Gui.java b/invui/src/main/java/xyz/xenondevs/invui/gui/Gui.java index b4a51da..01ebb39 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/gui/Gui.java +++ b/invui/src/main/java/xyz/xenondevs/invui/gui/Gui.java @@ -392,7 +392,7 @@ public interface Gui { * @return This {@link Builder} */ @Contract("_ -> this") - S setStructure(@NotNull Structure structure); + @NotNull S setStructure(@NotNull Structure structure); /** * Sets the {@link Structure} of the {@link Gui} using the given structure data Strings. @@ -402,7 +402,7 @@ public interface Gui { * @return This {@link Builder Gui Builder} */ @Contract("_ -> this") - S setStructure(@NotNull String... structureData); + @NotNull S setStructure(@NotNull String... structureData); /** * Sets the {@link Structure} of the {@link Gui} using the given structure data, width and height. @@ -413,7 +413,7 @@ public interface Gui { * @return This {@link Builder Gui Builder} */ @Contract("_, _, _, -> this") - S setStructure(int width, int height, @NotNull String structureData); + @NotNull S setStructure(int width, int height, @NotNull String structureData); /** * Adds an {@link ItemStack} ingredient under the given key. @@ -423,7 +423,7 @@ public interface Gui { * @return This {@link Builder Gui Builder} */ @Contract("_, _ -> this") - S addIngredient(char key, @NotNull ItemStack itemStack); + @NotNull S addIngredient(char key, @NotNull ItemStack itemStack); /** * Adds an {@link ItemProvider} ingredient under the given key. @@ -433,7 +433,7 @@ public interface Gui { * @return This {@link Builder Gui Builder} */ @Contract("_, _ -> this") - S addIngredient(char key, @NotNull ItemProvider itemProvider); + @NotNull S addIngredient(char key, @NotNull ItemProvider itemProvider); /** * Adds an {@link Item} ingredient under the given key. @@ -443,7 +443,7 @@ public interface Gui { * @return This {@link Builder Gui Builder} */ @Contract("_, _ -> this") - S addIngredient(char key, @NotNull Item item); + @NotNull S addIngredient(char key, @NotNull Item item); /** * Adds an {@link VirtualInventory} ingredient under the given key. @@ -453,7 +453,7 @@ public interface Gui { * @return This {@link Builder Gui Builder} */ @Contract("_, _ -> this") - S addIngredient(char key, @NotNull VirtualInventory inventory); + @NotNull S addIngredient(char key, @NotNull VirtualInventory inventory); /** * Adds an {@link VirtualInventory} ingredient under the given key. @@ -464,7 +464,7 @@ public interface Gui { * @return This {@link Builder Gui Builder} */ @Contract("_, _, _ -> this") - S addIngredient(char key, @NotNull VirtualInventory inventory, @Nullable ItemProvider background); + @NotNull S addIngredient(char key, @NotNull VirtualInventory inventory, @Nullable ItemProvider background); /** * Adds a {@link SlotElement} ingredient under the given key. @@ -474,7 +474,7 @@ public interface Gui { * @return This {@link Builder Gui Builder} */ @Contract("_, _ -> this") - S addIngredient(char key, @NotNull SlotElement element); + @NotNull S addIngredient(char key, @NotNull SlotElement element); /** * Adds a {@link Marker} ingredient under the given key. @@ -484,7 +484,7 @@ public interface Gui { * @return This {@link Builder Gui Builder} */ @Contract("_, _ -> this") - S addIngredient(char key, @NotNull Marker marker); + @NotNull S addIngredient(char key, @NotNull Marker marker); /** * Adds a {@link Supplier} of {@link Item Items} ingredient under the given key. @@ -494,7 +494,7 @@ public interface Gui { * @return This {@link Builder Gui Builder} */ @Contract("_, _ -> this") - S addIngredient(char key, @NotNull Supplier itemSupplier); + @NotNull S addIngredient(char key, @NotNull Supplier itemSupplier); /** * Adds a {@link Supplier} of {@link SlotElement SlotElements} ingredient under the given key. @@ -504,7 +504,7 @@ public interface Gui { * @return This {@link Builder Gui Builder} */ @Contract("_, _ -> this") - S addIngredientElementSupplier(char key, @NotNull Supplier elementSupplier); + @NotNull S addIngredientElementSupplier(char key, @NotNull Supplier elementSupplier); /** * Sets the background of the {@link Gui}. @@ -513,7 +513,7 @@ public interface Gui { * @return This {@link Builder Gui Builder} */ @Contract("_ -> this") - S setBackground(@NotNull ItemProvider itemProvider); + @NotNull S setBackground(@NotNull ItemProvider itemProvider); /** * Sets the background of the {@link Gui}. @@ -522,7 +522,7 @@ public interface Gui { * @return This {@link Builder Gui Builder} */ @Contract("_ -> this") - S setBackground(@NotNull ItemStack itemStack); + @NotNull S setBackground(@NotNull ItemStack itemStack); /** * Sets the background of the {@link Gui}. @@ -531,7 +531,7 @@ public interface Gui { * @return This {@link Builder Gui Builder} */ @Contract("_ -> this") - S addModifier(@NotNull Consumer<@NotNull Gui> modifier); + @NotNull S addModifier(@NotNull Consumer<@NotNull Gui> modifier); /** * Sets the background of the {@link Gui}. @@ -540,7 +540,7 @@ public interface Gui { * @return This {@link Builder Gui Builder} */ @Contract("_ -> this") - S setModifiers(@NotNull List<@NotNull Consumer<@NotNull Gui>> modifiers); + @NotNull S setModifiers(@NotNull List<@NotNull Consumer<@NotNull Gui>> modifiers); /** * Builds the {@link Gui}. @@ -557,10 +557,10 @@ public interface Gui { */ @Contract("-> new") @NotNull S clone(); - + /** * A normal {@link Gui} builder. - * + * * @see PagedGui.Builder * @see ScrollGui.Builder * @see TabGui.Builder diff --git a/invui/src/main/java/xyz/xenondevs/invui/gui/PagedGui.java b/invui/src/main/java/xyz/xenondevs/invui/gui/PagedGui.java index bc39496..77f4057 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/gui/PagedGui.java +++ b/invui/src/main/java/xyz/xenondevs/invui/gui/PagedGui.java @@ -215,7 +215,7 @@ public interface PagedGui extends Gui { * @return This {@link Builder Gui Builder}. */ @Contract("_ -> this") - Builder setContent(@NotNull List<@NotNull C> content); + @NotNull Builder setContent(@NotNull List<@NotNull C> content); /** * Adds content to the {@link PagedGui}. @@ -224,7 +224,7 @@ public interface PagedGui extends Gui { * @return This {@link Builder Gui Builder}. */ @Contract("_ -> this") - Builder addContent(@NotNull C content); + @NotNull Builder addContent(@NotNull C content); /** * Sets the page change handlers of the {@link PagedGui}. @@ -233,7 +233,7 @@ public interface PagedGui extends Gui { * @return This {@link Builder Gui Builder}. */ @Contract("_ -> this") - Builder setPageChangeHandlers(@NotNull List<@NotNull BiConsumer> handlers); + @NotNull Builder setPageChangeHandlers(@NotNull List<@NotNull BiConsumer> handlers); /** * Adds a page change handler to the {@link PagedGui}. @@ -242,7 +242,7 @@ public interface PagedGui extends Gui { * @return This {@link Builder Gui Builder}. */ @Contract("_ -> this") - Builder addPageChangeHandler(@NotNull BiConsumer handler); + @NotNull Builder addPageChangeHandler(@NotNull BiConsumer handler); } diff --git a/invui/src/main/java/xyz/xenondevs/invui/gui/ScrollGui.java b/invui/src/main/java/xyz/xenondevs/invui/gui/ScrollGui.java index 1a192d9..d953205 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/gui/ScrollGui.java +++ b/invui/src/main/java/xyz/xenondevs/invui/gui/ScrollGui.java @@ -228,7 +228,7 @@ public interface ScrollGui extends Gui { * @return This {@link Builder Gui Builder}. */ @Contract("_ -> this") - Builder setContent(@NotNull List<@NotNull C> content); + @NotNull Builder setContent(@NotNull List<@NotNull C> content); /** * Adds content to the {@link ScrollGui}. @@ -237,7 +237,7 @@ public interface ScrollGui extends Gui { * @return This {@link Builder Gui Builder}. */ @Contract("_ -> this") - Builder addContent(@NotNull C content); + @NotNull Builder addContent(@NotNull C content); /** * Adds content to the {@link ScrollGui}. @@ -246,7 +246,7 @@ public interface ScrollGui extends Gui { * @return This {@link Builder Gui Builder}. */ @Contract("_ -> this") - Builder setScrollHandlers(@NotNull List<@NotNull BiConsumer> handlers); + @NotNull Builder setScrollHandlers(@NotNull List<@NotNull BiConsumer> handlers); /** * Adds a scroll handler to the {@link ScrollGui}. @@ -255,7 +255,7 @@ public interface ScrollGui extends Gui { * @return This {@link Builder Gui Builder}. */ @Contract("_ -> this") - Builder addScrollHandler(@NotNull BiConsumer handler); + @NotNull Builder addScrollHandler(@NotNull BiConsumer handler); } diff --git a/invui/src/main/java/xyz/xenondevs/invui/gui/TabGui.java b/invui/src/main/java/xyz/xenondevs/invui/gui/TabGui.java index f2720d2..7327f9b 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/gui/TabGui.java +++ b/invui/src/main/java/xyz/xenondevs/invui/gui/TabGui.java @@ -126,7 +126,7 @@ public interface TabGui extends Gui { * @return This {@link Builder Gui Builder}. */ @Contract("_ -> this") - Builder setTabs(@NotNull List<@Nullable Gui> tabs); + @NotNull Builder setTabs(@NotNull List<@Nullable Gui> tabs); /** * Adds a tab to the {@link TabGui}. @@ -136,7 +136,7 @@ public interface TabGui extends Gui { * @return This {@link Builder Gui Builder}. */ @Contract("_ -> this") - Builder addTab(@Nullable Gui tab); + @NotNull Builder addTab(@Nullable Gui tab); /** * Sets the tab change handlers of the {@link TabGui}. @@ -145,7 +145,7 @@ public interface TabGui extends Gui { * @return This {@link Builder Gui Builder}. */ @Contract("_ -> this") - Builder setTabChangeHandlers(@NotNull List<@NotNull BiConsumer> handlers); + @NotNull Builder setTabChangeHandlers(@NotNull List<@NotNull BiConsumer> handlers); /** * Adds a tab change handler to the {@link TabGui}. @@ -154,7 +154,7 @@ public interface TabGui extends Gui { * @return This {@link Builder Gui Builder}. */ @Contract("_ -> this") - Builder addTabChangeHandler(@NotNull BiConsumer handler); + @NotNull Builder addTabChangeHandler(@NotNull BiConsumer handler); } diff --git a/invui/src/main/java/xyz/xenondevs/invui/item/builder/AbstractItemBuilder.java b/invui/src/main/java/xyz/xenondevs/invui/item/builder/AbstractItemBuilder.java index 3858f7d..c3f7fef 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/item/builder/AbstractItemBuilder.java +++ b/invui/src/main/java/xyz/xenondevs/invui/item/builder/AbstractItemBuilder.java @@ -7,6 +7,7 @@ import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.Damageable; import org.bukkit.inventory.meta.ItemMeta; +import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import xyz.xenondevs.inventoryaccess.InventoryAccess; @@ -23,7 +24,8 @@ import java.util.List; import java.util.function.Function; import java.util.stream.Collectors; -public abstract class AbstractItemBuilder implements ItemProvider { +@SuppressWarnings("unchecked") +public abstract class AbstractItemBuilder implements ItemProvider { protected ItemStack base; protected Material material; @@ -72,8 +74,9 @@ public abstract class AbstractItemBuilder implements ItemProvider { * * @return The {@link ItemStack} */ + @Contract(value = "_ -> new", pure = true) @Override - public ItemStack get(@Nullable String lang) { + public @NotNull ItemStack get(@Nullable String lang) { ItemStack itemStack; if (base != null) { itemStack = base; @@ -142,101 +145,114 @@ public abstract class AbstractItemBuilder implements ItemProvider { return itemStack; } - public T removeLoreLine(int index) { + @Contract("_ -> this") + public @NotNull S removeLoreLine(int index) { if (lore != null) lore.remove(index); - return getThis(); + return (S) this; } - public T clearLore() { + @Contract("-> this") + public @NotNull S clearLore() { if (lore != null) lore.clear(); - return getThis(); + return (S) this; } - public ItemStack getBase() { + public @Nullable ItemStack getBase() { return base; } - public Material getMaterial() { + public @Nullable Material getMaterial() { return material; } - public T setMaterial(@NotNull Material material) { + @Contract("_ -> this") + public @NotNull S setMaterial(@NotNull Material material) { this.material = material; - return getThis(); + return (S) this; } public int getAmount() { return amount; } - public T setAmount(int amount) { + @Contract("_ -> this") + public @NotNull S setAmount(int amount) { this.amount = amount; - return getThis(); + return (S) this; } public int getDamage() { return damage; } - public T setDamage(int damage) { + @Contract("_ -> this") + public @NotNull S setDamage(int damage) { this.damage = damage; - return getThis(); + return (S) this; } public int getCustomModelData() { return customModelData; } - public T setCustomModelData(int customModelData) { + @Contract("_ -> this") + public @NotNull S setCustomModelData(int customModelData) { this.customModelData = customModelData; - return getThis(); + return (S) this; } - public ComponentWrapper getDisplayName() { + public @Nullable ComponentWrapper getDisplayName() { return displayName; } - public T setDisplayName(String displayName) { + @Contract("_ -> this") + public @NotNull S setDisplayName(String displayName) { this.displayName = new BaseComponentWrapper(ComponentUtils.withoutPreFormatting(displayName)); - return getThis(); + return (S) this; } - public T setDisplayName(BaseComponent... displayName) { + @Contract("_ -> this") + public @NotNull S setDisplayName(BaseComponent... displayName) { this.displayName = new BaseComponentWrapper(ComponentUtils.withoutPreFormatting(displayName)); - return getThis(); + return (S) this; } - public T setDisplayName(ComponentWrapper component) { + @Contract("_ -> this") + public @NotNull S setDisplayName(ComponentWrapper component) { this.displayName = component; - return getThis(); + return (S) this; } // - public List getLore() { + public @Nullable List getLore() { return lore; } - public T setLore(List lore) { + @Contract("_ -> this") + public @NotNull S setLore(List lore) { this.lore = lore; - return getThis(); + return (S) this; } - public T setLegacyLore(@NotNull List lore) { + @Contract("_ -> this") + public @NotNull S setLegacyLore(@NotNull List lore) { this.lore = lore.stream() .map(line -> new BaseComponentWrapper(ComponentUtils.withoutPreFormatting(line))) .collect(Collectors.toList()); - return getThis(); + return (S) this; } - public T addLoreLines(@NotNull String... lines) { + @Contract("_ -> this") + public @NotNull S addLoreLines(@NotNull String... lines) { if (lore == null) lore = new ArrayList<>(); for (String line : lines) lore.add(new BaseComponentWrapper(ComponentUtils.withoutPreFormatting(line))); - return getThis(); + return (S) this; } - public T addLoreLines(@NotNull BaseComponent[]... lines) { + @Contract("_ -> this") + public @NotNull S addLoreLines(@NotNull BaseComponent[]... lines) { if (lore == null) lore = new ArrayList<>(); lore.addAll( @@ -245,108 +261,118 @@ public abstract class AbstractItemBuilder implements ItemProvider { .collect(Collectors.toList()) ); - return getThis(); + return (S) this; } - public T addLoreLines(@NotNull ComponentWrapper... lines) { + @Contract("_ -> this") + public @NotNull S addLoreLines(@NotNull ComponentWrapper... lines) { if (lore == null) lore = new ArrayList<>(); lore.addAll(Arrays.asList(lines)); - return getThis(); + return (S) this; } // // - public List getItemFlags() { + public @Nullable List getItemFlags() { return itemFlags; } - public T setItemFlags(@NotNull List itemFlags) { + @Contract("_ -> this") + public @NotNull S setItemFlags(@NotNull List itemFlags) { this.itemFlags = itemFlags; - return getThis(); + return (S) this; } - public T addItemFlags(@NotNull ItemFlag... itemFlags) { + @Contract("_ -> this") + public @NotNull S addItemFlags(@NotNull ItemFlag... itemFlags) { if (this.itemFlags == null) this.itemFlags = new ArrayList<>(); this.itemFlags.addAll(Arrays.asList(itemFlags)); - return getThis(); + return (S) this; } - public T removeItemFlags(@NotNull ItemFlag... itemFlags) { + @Contract("_ -> this") + public @NotNull S removeItemFlags(@NotNull ItemFlag... itemFlags) { if (this.itemFlags != null) this.itemFlags.removeAll(Arrays.asList(itemFlags)); - return getThis(); + return (S) this; } - public T clearItemFlags() { + @Contract("-> this") + public @NotNull S clearItemFlags() { if (itemFlags != null) itemFlags.clear(); - return getThis(); + return (S) this; } // // - public HashMap> getEnchantments() { + public @Nullable HashMap> getEnchantments() { return enchantments; } - public T setEnchantments(@NotNull HashMap> enchantments) { + @Contract("_ -> this") + public @NotNull S setEnchantments(@NotNull HashMap> enchantments) { this.enchantments = enchantments; - return getThis(); + return (S) this; } - public T addEnchantment(Enchantment enchantment, int level, boolean ignoreLevelRestriction) { + @Contract("_, _, _ -> this") + public @NotNull S addEnchantment(Enchantment enchantment, int level, boolean ignoreLevelRestriction) { if (enchantments == null) enchantments = new HashMap<>(); enchantments.put(enchantment, new Pair<>(level, ignoreLevelRestriction)); - return getThis(); + return (S) this; } - public T removeEnchantment(Enchantment enchantment) { + @Contract("_ -> this") + public @NotNull S removeEnchantment(Enchantment enchantment) { if (enchantments == null) enchantments = new HashMap<>(); enchantments.remove(enchantment); - return getThis(); + return (S) this; } - public T clearEnchantments() { + @Contract("-> this") + public @NotNull S clearEnchantments() { if (enchantments != null) enchantments.clear(); - return getThis(); + return (S) this; } // // - public List> getModifiers() { + public @Nullable List> getModifiers() { return modifiers; } - public T addModifier(Function modifier) { + @Contract("_ -> this") + public @NotNull S addModifier(Function modifier) { if (modifiers == null) modifiers = new ArrayList<>(); modifiers.add(modifier); - return getThis(); + return (S) this; } - public T clearModifiers() { + @Contract("-> this") + public @NotNull S clearModifiers() { if (modifiers != null) modifiers.clear(); - return getThis(); + return (S) this; } // @SuppressWarnings("unchecked") + @Contract(value = "-> new", pure = true) @Override - public T clone() { + public @NotNull S clone() { try { - AbstractItemBuilder clone = ((AbstractItemBuilder) super.clone()); + AbstractItemBuilder clone = ((AbstractItemBuilder) super.clone()); if (base != null) clone.base = base.clone(); if (lore != null) clone.lore = new ArrayList<>(lore); if (itemFlags != null) clone.itemFlags = new ArrayList<>(itemFlags); if (enchantments != null) clone.enchantments = new HashMap<>(enchantments); if (modifiers != null) clone.modifiers = new ArrayList<>(modifiers); - return (T) clone; + return (S) clone; } catch (CloneNotSupportedException e) { throw new AssertionError(e); } } - protected abstract T getThis(); - } diff --git a/invui/src/main/java/xyz/xenondevs/invui/item/builder/ItemBuilder.java b/invui/src/main/java/xyz/xenondevs/invui/item/builder/ItemBuilder.java index ca928b2..a15c902 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/item/builder/ItemBuilder.java +++ b/invui/src/main/java/xyz/xenondevs/invui/item/builder/ItemBuilder.java @@ -36,9 +36,4 @@ public final class ItemBuilder extends AbstractItemBuilder { super(base); } - @Override - protected ItemBuilder getThis() { - return this; - } - } diff --git a/invui/src/main/java/xyz/xenondevs/invui/item/builder/PotionBuilder.java b/invui/src/main/java/xyz/xenondevs/invui/item/builder/PotionBuilder.java index 3f3e058..3449e04 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/item/builder/PotionBuilder.java +++ b/invui/src/main/java/xyz/xenondevs/invui/item/builder/PotionBuilder.java @@ -6,6 +6,8 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.potion.PotionData; import org.bukkit.potion.PotionEffect; +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; @@ -16,36 +18,41 @@ public final class PotionBuilder extends AbstractItemBuilder { private Color color; private PotionData basePotionData; - public PotionBuilder(PotionType type) { + public PotionBuilder(@NotNull PotionType type) { super(type.getMaterial()); } - public PotionBuilder(ItemStack base) { + public PotionBuilder(@NotNull ItemStack base) { super(base); } - public PotionBuilder setColor(Color color) { + @Contract("_ -> this") + public @NotNull PotionBuilder setColor(@NotNull Color color) { this.color = color; return this; } - public PotionBuilder setColor(java.awt.Color color) { + @Contract("_ -> this") + public @NotNull PotionBuilder setColor(@NotNull java.awt.Color color) { this.color = Color.fromRGB(color.getRed(), color.getGreen(), color.getBlue()); return this; } - public PotionBuilder setBasePotionData(PotionData basePotionData) { + @Contract("_ -> this") + public @NotNull PotionBuilder setBasePotionData(@NotNull PotionData basePotionData) { this.basePotionData = basePotionData; return this; } - public PotionBuilder addEffect(PotionEffect effect) { + @Contract("_ -> this") + public @NotNull PotionBuilder addEffect(@NotNull PotionEffect effect) { effects.add(effect); return this; } + @Contract(value = "-> new", pure = true) @Override - public ItemStack get() { + public @NotNull ItemStack get() { ItemStack item = super.get(); PotionMeta meta = (PotionMeta) item.getItemMeta(); @@ -59,30 +66,25 @@ public final class PotionBuilder extends AbstractItemBuilder { } @Override - public PotionBuilder clone() { + public @NotNull PotionBuilder clone() { PotionBuilder builder = super.clone(); builder.effects = new ArrayList<>(effects); return builder; } - @Override - protected PotionBuilder getThis() { - return this; - } - public enum PotionType { NORMAL(Material.POTION), SPLASH(Material.SPLASH_POTION), LINGERING(Material.LINGERING_POTION); - private final Material material; + private final @NotNull Material material; - PotionType(Material material) { + PotionType(@NotNull Material material) { this.material = material; } - public Material getMaterial() { + public @NotNull Material getMaterial() { return material; } diff --git a/invui/src/main/java/xyz/xenondevs/invui/item/builder/SkullBuilder.java b/invui/src/main/java/xyz/xenondevs/invui/item/builder/SkullBuilder.java index a46c044..b577e8a 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/item/builder/SkullBuilder.java +++ b/invui/src/main/java/xyz/xenondevs/invui/item/builder/SkullBuilder.java @@ -11,6 +11,7 @@ import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import xyz.xenondevs.inventoryaccess.util.ReflectionRegistry; import xyz.xenondevs.inventoryaccess.util.ReflectionUtils; @@ -30,7 +31,7 @@ public final class SkullBuilder extends AbstractItemBuilder { * * @param uuid The {@link UUID} of the skull owner. */ - public SkullBuilder(UUID uuid) { + public SkullBuilder(@NotNull UUID uuid) { this(HeadTexture.of(uuid)); } @@ -39,7 +40,7 @@ public final class SkullBuilder extends AbstractItemBuilder { * * @param username The username of the skull owner. */ - public SkullBuilder(String username) { + public SkullBuilder(@NotNull String username) { this(HeadTexture.of(username)); } @@ -48,19 +49,20 @@ public final class SkullBuilder extends AbstractItemBuilder { * * @param headTexture The {@link HeadTexture} to be applied to the skull. */ - public SkullBuilder(HeadTexture headTexture) { + public SkullBuilder(@NotNull HeadTexture headTexture) { super(Material.PLAYER_HEAD); setGameProfile(headTexture); } - private void setGameProfile(HeadTexture texture) { + private void setGameProfile(@NotNull HeadTexture texture) { gameProfile = new GameProfile(UUID.randomUUID(), null); PropertyMap propertyMap = gameProfile.getProperties(); propertyMap.put("textures", new Property("textures", texture.getTextureValue())); } + @Contract(value = "-> new", pure = true) @Override - public ItemStack get() { + public @NotNull ItemStack get() { ItemStack item = super.get(); ItemMeta meta = item.getItemMeta(); @@ -72,14 +74,16 @@ public final class SkullBuilder extends AbstractItemBuilder { return item; } + @Contract("_ -> this") @Override - public SkullBuilder setMaterial(@NotNull Material material) { + public @NotNull SkullBuilder setMaterial(@NotNull Material material) { return this; } + @Contract(value = "-> new", pure = true) @Override - protected SkullBuilder getThis() { - return this; + public @NotNull SkullBuilder clone() { + return super.clone(); } /** @@ -185,7 +189,7 @@ public final class SkullBuilder extends AbstractItemBuilder { * * @return The stored texture value. */ - public String getTextureValue() { + public @NotNull String getTextureValue() { return textureValue; } diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/AnvilSingleWindowImpl.java b/invui/src/main/java/xyz/xenondevs/invui/window/AnvilSingleWindowImpl.java index 4cbe4c5..65cdd47 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/window/AnvilSingleWindowImpl.java +++ b/invui/src/main/java/xyz/xenondevs/invui/window/AnvilSingleWindowImpl.java @@ -60,13 +60,13 @@ final class AnvilSingleWindowImpl extends AbstractSingleWindow implements AnvilW private List> renameHandlers; @Override - public BuilderImpl setRenameHandlers(@NotNull List<@NotNull Consumer> renameHandlers) { + public @NotNull BuilderImpl setRenameHandlers(@NotNull List<@NotNull Consumer> renameHandlers) { this.renameHandlers = renameHandlers; return this; } @Override - public BuilderImpl addRenameHandler(@NotNull Consumer renameHandler) { + public @NotNull BuilderImpl addRenameHandler(@NotNull Consumer renameHandler) { if (renameHandlers == null) renameHandlers = new ArrayList<>(); diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/AnvilSplitWindowImpl.java b/invui/src/main/java/xyz/xenondevs/invui/window/AnvilSplitWindowImpl.java index 181d423..cac68e5 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/window/AnvilSplitWindowImpl.java +++ b/invui/src/main/java/xyz/xenondevs/invui/window/AnvilSplitWindowImpl.java @@ -62,13 +62,13 @@ final class AnvilSplitWindowImpl extends AbstractSplitWindow implements AnvilWin private List> renameHandlers; @Override - public BuilderImpl setRenameHandlers(@NotNull List<@NotNull Consumer> renameHandlers) { + public @NotNull BuilderImpl setRenameHandlers(@NotNull List<@NotNull Consumer> renameHandlers) { this.renameHandlers = renameHandlers; return this; } @Override - public BuilderImpl addRenameHandler(@NotNull Consumer renameHandler) { + public @NotNull BuilderImpl addRenameHandler(@NotNull Consumer renameHandler) { if (renameHandlers == null) renameHandlers = new ArrayList<>(); diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/AnvilWindow.java b/invui/src/main/java/xyz/xenondevs/invui/window/AnvilWindow.java index a8b2e24..3a1d1af 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/window/AnvilWindow.java +++ b/invui/src/main/java/xyz/xenondevs/invui/window/AnvilWindow.java @@ -35,10 +35,10 @@ public interface AnvilWindow extends Window { interface Builder> extends Window.Builder { @Contract("_ -> this") - S setRenameHandlers(@NotNull List<@NotNull Consumer> renameHandlers); + @NotNull S setRenameHandlers(@NotNull List<@NotNull Consumer> renameHandlers); @Contract("_ -> this") - S addRenameHandler(@NotNull Consumer renameHandler); + @NotNull S addRenameHandler(@NotNull Consumer renameHandler); interface Single extends Builder, Window.Builder.Single {}