Make ItemStack.Builder extends Taggable

Signed-off-by: TheMode <themode@outlook.fr>
This commit is contained in:
TheMode 2022-04-20 23:14:37 +02:00
parent 917302cbbb
commit 3c0abb0409
2 changed files with 13 additions and 1 deletions

View File

@ -6,6 +6,7 @@ import net.kyori.adventure.text.event.HoverEventSource;
import net.minestom.server.tag.Tag;
import net.minestom.server.tag.TagHandler;
import net.minestom.server.tag.TagReadable;
import net.minestom.server.tag.Taggable;
import net.minestom.server.utils.NBTUtils;
import net.minestom.server.utils.validate.Check;
import org.jetbrains.annotations.*;
@ -203,7 +204,7 @@ public sealed interface ItemStack extends TagReadable, HoverEventSource<HoverEve
return meta();
}
sealed interface Builder permits ItemStackImpl.Builder {
sealed interface Builder extends Taggable permits ItemStackImpl.Builder {
@Contract(value = "_ -> this")
@NotNull Builder amount(int amount);
@ -225,6 +226,12 @@ public sealed interface ItemStack extends TagReadable, HoverEventSource<HoverEve
@Contract(value = "-> new", pure = true)
@NotNull ItemStack build();
@Contract(value = "_, _ -> this")
default <T> @NotNull Builder set(@NotNull Tag<T> tag, @Nullable T value) {
setTag(tag, value);
return this;
}
@Contract(value = "_ -> this")
default @NotNull Builder displayName(@Nullable Component displayName) {
return meta(builder -> builder.displayName(displayName));

View File

@ -137,6 +137,11 @@ record ItemStackImpl(Material material, int amount, ItemMetaImpl meta) implement
return this;
}
@Override
public @NotNull TagHandler tagHandler() {
return metaBuilder.tagHandler();
}
@Override
public @NotNull ItemStack build() {
return ItemStackImpl.create(material, amount, metaBuilder.build());