package net.minecraft.world.inventory; import java.util.List; import net.minecraft.core.NonNullList; import net.minecraft.world.ContainerHelper; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.StackedItemContents; import net.minecraft.world.item.ItemStack; public class TransientCraftingContainer implements CraftingContainer { private final NonNullList items; private final int width; private final int height; private final AbstractContainerMenu menu; public TransientCraftingContainer(AbstractContainerMenu menu, int width, int height) { this(menu, width, height, NonNullList.withSize(width * height, ItemStack.EMPTY)); } private TransientCraftingContainer(AbstractContainerMenu menu, int width, int height, NonNullList items) { this.items = items; this.menu = menu; this.width = width; this.height = height; } @Override public int getContainerSize() { return this.items.size(); } @Override public boolean isEmpty() { for (ItemStack itemStack : this.items) { if (!itemStack.isEmpty()) { return false; } } return true; } @Override public ItemStack getItem(int slot) { return slot >= this.getContainerSize() ? ItemStack.EMPTY : this.items.get(slot); } @Override public ItemStack removeItemNoUpdate(int slot) { return ContainerHelper.takeItem(this.items, slot); } @Override public ItemStack removeItem(int slot, int amount) { ItemStack itemStack = ContainerHelper.removeItem(this.items, slot, amount); if (!itemStack.isEmpty()) { this.menu.slotsChanged(this); } return itemStack; } @Override public void setItem(int slot, ItemStack stack) { this.items.set(slot, stack); this.menu.slotsChanged(this); } @Override public void setChanged() { } @Override public boolean stillValid(Player player) { return true; } @Override public void clearContent() { this.items.clear(); } @Override public int getHeight() { return this.height; } @Override public int getWidth() { return this.width; } @Override public List getItems() { return List.copyOf(this.items); } @Override public void fillStackedContents(StackedItemContents stackedItemContents) { for (ItemStack itemStack : this.items) { stackedItemContents.accountSimpleStack(itemStack); } } }