96 lines
2.5 KiB
Java
96 lines
2.5 KiB
Java
package com.thebrokenrail.energonrelics.block.entity.reactor;
|
|
|
|
import net.minecraft.block.BlockState;
|
|
import net.minecraft.block.entity.BlockEntity;
|
|
import net.minecraft.block.entity.BlockEntityType;
|
|
import net.minecraft.entity.player.PlayerEntity;
|
|
import net.minecraft.inventory.Inventories;
|
|
import net.minecraft.inventory.Inventory;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.nbt.CompoundTag;
|
|
import net.minecraft.util.collection.DefaultedList;
|
|
|
|
import java.util.Objects;
|
|
|
|
public class ReactorInputBlockEntity extends BlockEntity implements Inventory {
|
|
public ReactorInputBlockEntity(BlockEntityType<?> type) {
|
|
super(type);
|
|
}
|
|
|
|
private final int INVENTORY_SIZE = 5;
|
|
|
|
private final DefaultedList<ItemStack> inv = DefaultedList.ofSize(INVENTORY_SIZE, ItemStack.EMPTY);
|
|
|
|
@Override
|
|
public int size() {
|
|
return inv.size();
|
|
}
|
|
|
|
@Override
|
|
public boolean isEmpty() {
|
|
boolean empty = false;
|
|
for (ItemStack stack : inv) {
|
|
if (stack.isEmpty()) {
|
|
empty = true;
|
|
break;
|
|
}
|
|
}
|
|
return empty;
|
|
}
|
|
|
|
@Override
|
|
public ItemStack getStack(int slot) {
|
|
return inv.get(slot);
|
|
}
|
|
|
|
@Override
|
|
public ItemStack removeStack(int slot, int amount) {
|
|
ItemStack stack = Inventories.splitStack(inv, slot, amount);
|
|
if (!stack.isEmpty()) {
|
|
markDirty();
|
|
}
|
|
return stack;
|
|
}
|
|
|
|
@Override
|
|
public ItemStack removeStack(int slot) {
|
|
return Inventories.removeStack(inv, slot);
|
|
}
|
|
|
|
@Override
|
|
public void setStack(int slot, ItemStack stack) {
|
|
inv.set(slot, stack);
|
|
if (stack.getCount() > getMaxCountPerStack()) {
|
|
stack.setCount(getMaxCountPerStack());
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean canPlayerUse(PlayerEntity player) {
|
|
if (Objects.requireNonNull(getWorld()).getBlockEntity(getPos()) != this) {
|
|
return false;
|
|
} else {
|
|
return player.squaredDistanceTo((double) getPos().getX() + 0.5D, (double) getPos().getY() + 0.5D, (double) getPos().getZ() + 0.5D) <= 64.0D;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void clear() {
|
|
inv.clear();
|
|
}
|
|
|
|
@Override
|
|
public void fromTag(BlockState state, CompoundTag tag) {
|
|
super.fromTag(state, tag);
|
|
inv.clear();
|
|
Inventories.fromTag(tag, inv);
|
|
}
|
|
|
|
@Override
|
|
public CompoundTag toTag(CompoundTag tag) {
|
|
super.toTag(tag);
|
|
Inventories.toTag(tag, inv);
|
|
return tag;
|
|
}
|
|
}
|