Allow meta type to be explicitly defined in lambda

Signed-off-by: TheMode <themode@outlook.fr>
This commit is contained in:
TheMode 2021-11-14 17:22:01 +01:00
parent 48d8cbf10e
commit 549a9a9b52
2 changed files with 4 additions and 3 deletions

View File

@ -137,7 +137,7 @@ public final class ItemStack implements TagReadable, HoverEventSource<HoverEvent
}
@Contract(value = "_ -> new", pure = true)
public @NotNull ItemStack withMeta(@NotNull UnaryOperator<@NotNull ItemMetaBuilder> metaOperator) {
public <T extends ItemMetaBuilder> @NotNull ItemStack withMeta(@NotNull UnaryOperator<@NotNull T> metaOperator) {
return builder().meta(metaOperator).build();
}

View File

@ -73,8 +73,9 @@ public class ItemStackBuilder {
}
@Contract(value = "_ -> this")
public @NotNull ItemStackBuilder meta(@NotNull UnaryOperator<@NotNull ItemMetaBuilder> itemMetaConsumer) {
this.metaBuilder = itemMetaConsumer.apply(metaBuilder);
public <T extends ItemMetaBuilder> @NotNull ItemStackBuilder meta(@NotNull UnaryOperator<@NotNull T> itemMetaConsumer) {
//noinspection unchecked
this.metaBuilder = itemMetaConsumer.apply((T) metaBuilder);
return this;
}