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 java.util.List;
import java.util.Objects;
import java.util.function.Consumer;
import java.util.function.IntUnaryOperator;
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);
private final StackingRule stackingRule = new VanillaStackingRule(64);
private final StackingRule stackingRule;
private final Material material;
private final int amount;
private final ItemMeta meta;
protected ItemStack(@NotNull Material material, int amount,
@NotNull ItemMeta meta) {
@NotNull ItemMeta meta,
@NotNull StackingRule stackingRule) {
this.material = material;
this.amount = amount;
this.meta = meta;
this.stackingRule = Objects.requireNonNullElseGet(stackingRule,
() -> new VanillaStackingRule(64));
}
@Contract(value = "_ -> new", pure = true)

View File

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