Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.coriin.rechroma.block.entity.custom;
- import net.coriin.rechroma.block.ModBlocks;
- import net.coriin.rechroma.block.entity.ModBlockEntities;
- import net.minecraft.core.BlockPos;
- import net.minecraft.core.Direction;
- import net.minecraft.nbt.CompoundTag;
- import net.minecraft.network.chat.Component;
- import net.minecraft.network.chat.TextComponent;
- import net.minecraft.world.MenuProvider;
- import net.minecraft.world.SimpleContainer;
- import net.minecraft.world.entity.player.Inventory;
- import net.minecraft.world.entity.player.Player;
- import net.minecraft.world.inventory.AbstractContainerMenu;
- import net.minecraft.world.level.block.entity.BlockEntity;
- import net.minecraft.world.level.block.entity.BlockEntityType;
- import net.minecraft.world.level.block.state.BlockState;
- import net.minecraftforge.common.capabilities.Capability;
- import net.minecraftforge.common.util.LazyOptional;
- import net.minecraftforge.items.CapabilityItemHandler;
- import net.minecraftforge.items.IItemHandler;
- import net.minecraftforge.items.ItemStackHandler;
- import org.jetbrains.annotations.NotNull;
- import org.jetbrains.annotations.Nullable;
- import javax.annotation.Nonnull;
- public class CastingTableBlockEntity extends BlockEntity implements MenuProvider {
- protected final ItemStackHandler itemHandler = new ItemStackHandler(10){
- @Override
- protected void onContentsChanged(int slot) {
- setChanged();
- }
- };
- private LazyOptional<IItemHandler> lazyItemHandler= LazyOptional.empty();
- public CastingTableBlockEntity(BlockEntityType<?> pType, BlockPos pPos, BlockState pBlockState) {
- super(ModBlockEntities.CASTING_TABLE_ENTITY.get(), pPos, pBlockState);
- }
- @Override
- public Component getDisplayName() {
- return new TextComponent("Casting Table");
- }
- @Nullable
- @Override
- public AbstractContainerMenu createMenu(int i, Inventory inventory, Player player) {
- return ;
- }
- @Nonnull
- @Override
- public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @javax.annotation.Nullable Direction side) {
- if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
- return lazyItemHandler.cast();
- }
- return super.getCapability(cap, side);
- }
- @Override
- public void onLoad() {
- super.onLoad();
- lazyItemHandler = LazyOptional.of(() -> itemHandler);
- }
- @Override
- public void invalidateCaps() {
- super.invalidateCaps();
- lazyItemHandler.invalidate();
- }
- @Override
- protected void saveAdditional(@NotNull CompoundTag tag) {
- tag.put("inventory", itemHandler.serializeNBT());
- super.saveAdditional(tag);
- }
- @Override
- public void load(CompoundTag nbt) {
- super.load(nbt);
- itemHandler.deserializeNBT(nbt.getCompound("inventory"));
- }
- public void drops() {
- SimpleContainer inventory = new SimpleContainer(itemHandler.getSlots());
- for (int i = 0; i < itemHandler.getSlots(); i++) {
- inventory.setItem(i, itemHandler.getStackInSlot(i));
- }
- }
- }
Add Comment
Please, Sign In to add comment