Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package binary404.mystictools.common.tile;
- import binary404.mystictools.common.loot.LootItemHelper;
- import net.minecraft.block.BlockState;
- import net.minecraft.entity.player.PlayerEntity;
- import net.minecraft.entity.player.PlayerInventory;
- import net.minecraft.inventory.IInventory;
- import net.minecraft.inventory.container.Container;
- import net.minecraft.inventory.container.INamedContainerProvider;
- import net.minecraft.item.ItemStack;
- import net.minecraft.nbt.CompoundNBT;
- import net.minecraft.network.NetworkManager;
- import net.minecraft.network.play.server.SUpdateTileEntityPacket;
- import net.minecraft.tileentity.ITickableTileEntity;
- import net.minecraft.tileentity.LockableTileEntity;
- import net.minecraft.tileentity.TileEntity;
- import net.minecraft.tileentity.TileEntityType;
- import net.minecraft.util.Direction;
- import net.minecraft.util.text.ITextComponent;
- import net.minecraft.util.text.TranslationTextComponent;
- 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 javax.annotation.Nonnull;
- import javax.annotation.Nullable;
- public class TileEntityUpgrader extends TileEntity implements INamedContainerProvider {
- protected ItemStackHandler storage;
- private final LazyOptional<IItemHandler> storageHolder = LazyOptional.of(() -> storage);
- public TileEntityUpgrader() {
- super(ModTiles.UPGRADER);
- storage = new StackHandler(this, 3);
- }
- public void upgrade() {
- System.out.println("Upgrading");
- }
- public void reroll() {
- ItemStack stack = this.storage.getStackInSlot(0);
- LootItemHelper.rerollStats(stack);
- this.markDirty();
- }
- @Nonnull
- @Override
- public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
- if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
- this.markDirty();
- return storageHolder.cast();
- }
- return super.getCapability(cap, side);
- }
- @Override
- public ITextComponent getDisplayName() {
- return new TranslationTextComponent("container.mystictools.upgrader");
- }
- @Nullable
- @Override
- public Container createMenu(int p_createMenu_1_, PlayerInventory p_createMenu_2_, PlayerEntity p_createMenu_3_) {
- return new UpgraderContainer(p_createMenu_1_, p_createMenu_2_, storage, this);
- }
- @Override
- public CompoundNBT write(CompoundNBT compound) {
- CompoundNBT c = super.write(compound);
- c.put("storage", storage.serializeNBT());
- return super.write(compound);
- }
- @Override
- public void read(BlockState stateIn, CompoundNBT nbtIn) {
- super.read(stateIn, nbtIn);
- storage.deserializeNBT(nbtIn.getCompound("storage"));
- }
- @Nullable
- @Override
- public SUpdateTileEntityPacket getUpdatePacket() {
- return new SUpdateTileEntityPacket(this.getPos(), 42, this.getUpdateTag());
- }
- @Override
- public void onDataPacket(NetworkManager net, SUpdateTileEntityPacket pkt) {
- this.read(null, pkt.getNbtCompound());
- }
- @Override
- public CompoundNBT getUpdateTag() {
- CompoundNBT nbt = new CompoundNBT();
- write(nbt);
- return nbt;
- }
- public static class StackHandler extends ItemStackHandler {
- TileEntity tileEntity;
- public StackHandler(TileEntity tile, int size) {
- super(size);
- this.tileEntity = tile;
- }
- @Nonnull
- @Override
- public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate) {
- if (slot == 0 || slot == 1) {
- this.tileEntity.markDirty();
- return super.insertItem(slot, stack, simulate);
- } else
- return stack;
- }
- @Nonnull
- @Override
- public ItemStack extractItem(int slot, int amount, boolean simulate) {
- if (slot == 2) {
- this.tileEntity.markDirty();
- return super.extractItem(slot, amount, simulate);
- } else
- return ItemStack.EMPTY;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement