minecraft-src/net/minecraft/world/inventory/TransientCraftingContainer.java
2025-07-04 02:00:41 +03:00

104 lines
2.3 KiB
Java

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<ItemStack> 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<ItemStack> 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<ItemStack> getItems() {
return List.copyOf(this.items);
}
@Override
public void fillStackedContents(StackedItemContents stackedItemContents) {
for (ItemStack itemStack : this.items) {
stackedItemContents.accountSimpleStack(itemStack);
}
}
}