Update annotations + add example

This commit is contained in:
themode 2021-04-01 00:20:59 +02:00
parent e66fdee4b1
commit 5807da47a6
3 changed files with 46 additions and 32 deletions

View File

@ -1,6 +1,7 @@
package net.minestom.server.item;
import net.kyori.adventure.text.Component;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@ -24,21 +25,21 @@ public class Item {
this.lore = lore;
}
@NotNull
public static ItemBuilder builder(@NotNull Material material) {
@Contract(value = "_ -> new", pure = true)
public static @NotNull ItemBuilder builder(@NotNull Material material) {
return new ItemBuilder(material);
}
@NotNull
public ItemBuilder builder() {
@Contract(value = "-> new", pure = true)
public @NotNull ItemBuilder builder() {
return new ItemBuilder(material)
.amount(amount)
.displayName(displayName)
.lore(lore);
}
@NotNull
public Item with(@NotNull Consumer<ItemBuilder> builderConsumer) {
@Contract(value = "_, -> new", pure = true)
public @NotNull Item with(@NotNull Consumer<ItemBuilder> builderConsumer) {
var builder = builder();
builderConsumer.accept(builder);
return builder.build();
@ -48,43 +49,41 @@ public class Item {
return amount;
}
@NotNull
public Item withAmount(int amount) {
@Contract(value = "_, -> new", pure = true)
public @NotNull Item withAmount(int amount) {
return builder().amount(amount).build();
}
@NotNull
public Item withAmount(@NotNull IntUnaryOperator intUnaryOperator) {
@Contract(value = "_, -> new", pure = true)
public @NotNull Item withAmount(@NotNull IntUnaryOperator intUnaryOperator) {
return withAmount(intUnaryOperator.applyAsInt(amount));
}
@Nullable
public Component getDisplayName() {
public @Nullable Component getDisplayName() {
return displayName;
}
@NotNull
public Item withDisplayName(@Nullable Component displayName) {
@Contract(value = "_, -> new", pure = true)
public @NotNull Item withDisplayName(@Nullable Component displayName) {
return builder().displayName(displayName).build();
}
@NotNull
public Item withDisplayName(@NotNull UnaryOperator<@Nullable Component> componentUnaryOperator) {
@Contract(value = "_, -> new", pure = true)
public @NotNull Item withDisplayName(@NotNull UnaryOperator<@Nullable Component> componentUnaryOperator) {
return withDisplayName(componentUnaryOperator.apply(displayName));
}
@Nullable
public List<Component> getLore() {
public @Nullable List<@NotNull Component> getLore() {
return lore;
}
@NotNull
public Item withLore(@Nullable List<@NotNull Component> lore) {
@Contract(value = "_, -> new", pure = true)
public @NotNull Item withLore(@Nullable List<@NotNull Component> lore) {
return builder().lore(lore).build();
}
@NotNull
public Item withLore(@NotNull UnaryOperator<@Nullable List<Component>> loreUnaryOperator) {
@Contract(value = "_, -> new", pure = true)
public @NotNull Item withLore(@NotNull UnaryOperator<@Nullable List<@NotNull Component>> loreUnaryOperator) {
return withLore(loreUnaryOperator.apply(lore));
}
}

View File

@ -1,7 +1,9 @@
package net.minestom.server.item;
import net.kyori.adventure.text.Component;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Arrays;
import java.util.Collections;
@ -19,31 +21,31 @@ public class ItemBuilder {
this.amount = 0;
}
@NotNull
public ItemBuilder amount(int amount) {
@Contract(value = "_ -> this")
public @NotNull ItemBuilder amount(int amount) {
this.amount = amount;
return this;
}
@NotNull
public ItemBuilder displayName(Component displayName) {
@Contract(value = "_ -> this")
public @NotNull ItemBuilder displayName(@Nullable Component displayName) {
this.displayName = displayName;
return this;
}
@NotNull
public ItemBuilder lore(List<Component> lore) {
@Contract(value = "_ -> this")
public @NotNull ItemBuilder lore(List<@NotNull Component> lore) {
this.lore = Collections.unmodifiableList(lore);
return this;
}
@NotNull
public ItemBuilder lore(Component... lore) {
@Contract(value = "_ -> this")
public @NotNull ItemBuilder lore(Component... lore) {
return lore(Arrays.asList(lore));
}
@NotNull
public Item build() {
@Contract(value = "-> new", pure = true)
public @NotNull Item build() {
return new Item(material, amount, displayName, lore);
}

View File

@ -26,6 +26,7 @@ import net.minestom.server.instance.block.CustomBlock;
import net.minestom.server.inventory.Inventory;
import net.minestom.server.inventory.InventoryType;
import net.minestom.server.inventory.PlayerInventory;
import net.minestom.server.item.Item;
import net.minestom.server.item.ItemStack;
import net.minestom.server.item.Material;
import net.minestom.server.network.ConnectionManager;
@ -62,6 +63,18 @@ public class PlayerInit {
inventoryConditionResult.setCancel(slot == 3);
});*/
//inventory.setItemStack(3, new ItemStack(Material.DIAMOND, (byte) 34));
{
Item item = Item.builder(Material.STONE)
.amount(5)
.displayName(Component.text("displayName"))
.build();
item = item.with(itemBuilder -> itemBuilder
.amount(10)
.lore(Component.text("Lore")));
}
}
public static void init() {