minecraft-src/net/minecraft/world/inventory/PlayerEnderChestContainer.java
2025-09-18 12:27:44 +00:00

72 lines
2 KiB
Java

package net.minecraft.world.inventory;
import net.minecraft.world.ItemStackWithSlot;
import net.minecraft.world.SimpleContainer;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.entity.EnderChestBlockEntity;
import net.minecraft.world.level.storage.ValueInput;
import net.minecraft.world.level.storage.ValueOutput;
import org.jetbrains.annotations.Nullable;
public class PlayerEnderChestContainer extends SimpleContainer {
@Nullable
private EnderChestBlockEntity activeChest;
public PlayerEnderChestContainer() {
super(27);
}
public void setActiveChest(EnderChestBlockEntity enderChestBlockEntity) {
this.activeChest = enderChestBlockEntity;
}
public boolean isActiveChest(EnderChestBlockEntity enderChest) {
return this.activeChest == enderChest;
}
public void fromSlots(ValueInput.TypedInputList<ItemStackWithSlot> input) {
for (int i = 0; i < this.getContainerSize(); i++) {
this.setItem(i, ItemStack.EMPTY);
}
for (ItemStackWithSlot itemStackWithSlot : input) {
if (itemStackWithSlot.isValidInContainer(this.getContainerSize())) {
this.setItem(itemStackWithSlot.slot(), itemStackWithSlot.stack());
}
}
}
public void storeAsSlots(ValueOutput.TypedOutputList<ItemStackWithSlot> output) {
for (int i = 0; i < this.getContainerSize(); i++) {
ItemStack itemStack = this.getItem(i);
if (!itemStack.isEmpty()) {
output.add(new ItemStackWithSlot(i, itemStack));
}
}
}
@Override
public boolean stillValid(Player player) {
return this.activeChest != null && !this.activeChest.stillValid(player) ? false : super.stillValid(player);
}
@Override
public void startOpen(Player player) {
if (this.activeChest != null) {
this.activeChest.startOpen(player);
}
super.startOpen(player);
}
@Override
public void stopOpen(Player player) {
if (this.activeChest != null) {
this.activeChest.stopOpen(player);
}
super.stopOpen(player);
this.activeChest = null;
}
}