Added setter for StackingRule

This commit is contained in:
TheMode 2021-04-13 05:50:11 +02:00
parent fed4e6897a
commit 70b97951e4
2 changed files with 15 additions and 3 deletions

View File

@ -11,6 +11,7 @@ import org.jetbrains.annotations.Nullable;
import org.jglrxavpok.hephaistos.nbt.NBTCompound; import org.jglrxavpok.hephaistos.nbt.NBTCompound;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.function.IntUnaryOperator; import java.util.function.IntUnaryOperator;
import java.util.function.UnaryOperator; import java.util.function.UnaryOperator;
@ -28,17 +29,20 @@ public final class ItemStack implements HoverEventSource<HoverEvent.ShowItem> {
*/ */
public static final @NotNull ItemStack AIR = ItemStack.of(Material.AIR); public static final @NotNull ItemStack AIR = ItemStack.of(Material.AIR);
private final StackingRule stackingRule = new VanillaStackingRule(64); private final StackingRule stackingRule;
private final Material material; private final Material material;
private final int amount; private final int amount;
private final ItemMeta meta; private final ItemMeta meta;
protected ItemStack(@NotNull Material material, int amount, protected ItemStack(@NotNull Material material, int amount,
@NotNull ItemMeta meta) { @NotNull ItemMeta meta,
@NotNull StackingRule stackingRule) {
this.material = material; this.material = material;
this.amount = amount; this.amount = amount;
this.meta = meta; this.meta = meta;
this.stackingRule = Objects.requireNonNullElseGet(stackingRule,
() -> new VanillaStackingRule(64));
} }
@Contract(value = "_ -> new", pure = true) @Contract(value = "_ -> new", pure = true)

View File

@ -20,6 +20,8 @@ public class ItemStackBuilder {
private int amount; private int amount;
protected ItemMetaBuilder metaBuilder; protected ItemMetaBuilder metaBuilder;
private StackingRule stackingRule;
protected ItemStackBuilder(@NotNull Material material, @NotNull ItemMetaBuilder metaBuilder) { protected ItemStackBuilder(@NotNull Material material, @NotNull ItemMetaBuilder metaBuilder) {
this.material = material; this.material = material;
this.amount = 1; this.amount = 1;
@ -97,12 +99,18 @@ public class ItemStackBuilder {
return this; return this;
} }
@Contract(value = "_ -> this")
public @NotNull ItemStackBuilder stackingRule(@Nullable StackingRule stackingRule) {
this.stackingRule = stackingRule;
return this;
}
@Contract(value = "-> new", pure = true) @Contract(value = "-> new", pure = true)
public @NotNull ItemStack build() { public @NotNull ItemStack build() {
if (amount <= 0) if (amount <= 0)
return ItemStack.AIR; return ItemStack.AIR;
return new ItemStack(material, amount, metaBuilder.build()); return new ItemStack(material, amount, metaBuilder.build(), stackingRule);
} }
private static final class DefaultMeta extends ItemMetaBuilder { private static final class DefaultMeta extends ItemMetaBuilder {