/* * Decompiled with CFR 0.152. */ 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.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.CraftingContainer; 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()) continue; return false; } return true; } @Override public ItemStack getItem(int slot) { if (slot >= this.getContainerSize()) { return ItemStack.EMPTY; } return this.items.get(slot); } @Override public ItemStack removeItemNoUpdate(int slot) { return ContainerHelper.takeItem(this.items, slot); } @Override public ItemStack removeItem(int slot, int count) { ItemStack result = ContainerHelper.removeItem(this.items, slot, count); if (!result.isEmpty()) { this.menu.slotsChanged(this); } return result; } @Override public void setItem(int slot, ItemStack itemStack) { this.items.set(slot, itemStack); 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 contents) { for (ItemStack itemStack : this.items) { contents.accountSimpleStack(itemStack); } } }