Advertisement
TheOnlyTails

TileRubyBarrel

Oct 1st, 2020
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.80 KB | None | 0 0
  1. package com.theonlytails.ruby.tileentity;
  2.  
  3. import com.theonlytails.ruby.blocks.RubyBarrelBlock;
  4. import com.theonlytails.ruby.container.RubyBarrelContainer;
  5. import com.theonlytails.ruby.init.TileEntityTypesRegistry;
  6. import net.minecraft.block.BlockState;
  7. import net.minecraft.entity.player.PlayerEntity;
  8. import net.minecraft.entity.player.PlayerInventory;
  9. import net.minecraft.inventory.container.ChestContainer;
  10. import net.minecraft.inventory.container.Container;
  11. import net.minecraft.inventory.container.INamedContainerProvider;
  12. import net.minecraft.nbt.CompoundNBT;
  13. import net.minecraft.network.NetworkManager;
  14. import net.minecraft.network.play.server.SUpdateTileEntityPacket;
  15. import net.minecraft.tileentity.TileEntity;
  16. import net.minecraft.util.SoundCategory;
  17. import net.minecraft.util.SoundEvent;
  18. import net.minecraft.util.text.ITextComponent;
  19. import net.minecraft.util.text.TranslationTextComponent;
  20. import net.minecraftforge.common.extensions.IForgeTileEntity;
  21. import net.minecraftforge.common.util.LazyOptional;
  22. import net.minecraftforge.items.IItemHandler;
  23. import net.minecraftforge.items.IItemHandlerModifiable;
  24. import net.minecraftforge.items.ItemStackHandler;
  25.  
  26. import javax.annotation.Nullable;
  27.  
  28. public class TileRubyBarrel extends TileEntity implements IForgeTileEntity, INamedContainerProvider {
  29.     public int size = 45;
  30.     public final IItemHandlerModifiable itemHandler = new ItemStackHandler(size) {
  31.         @Override
  32.         protected void onContentsChanged(int slot) {
  33.             super.onContentsChanged(slot);
  34.             markDirty();
  35.         }
  36.     };
  37.     public final LazyOptional<IItemHandler> optional = LazyOptional.of(() -> itemHandler);
  38.     public int players = 0;
  39.  
  40.     public TileRubyBarrel() {
  41.         super(TileEntityTypesRegistry.RUBY_BARREL.get());
  42.     }
  43.  
  44.     @Override
  45.     public ITextComponent getDisplayName() {
  46.         return new TranslationTextComponent(this.getBlockState().getBlock().getTranslationKey());
  47.     }
  48.  
  49.     @Nullable
  50.     @Override
  51.     public Container createMenu(int id, PlayerInventory playerInventory, PlayerEntity player) {
  52.         return new RubyBarrelContainer(id, playerInventory, this);
  53.     }
  54.  
  55.     public void changeState(BlockState blockState, boolean value) {
  56.         if (blockState.getBlock() instanceof RubyBarrelBlock) {
  57.             if (world != null) {
  58.                 this.world.setBlockState(this.pos, blockState.with(RubyBarrelBlock.PROPERTY_OPEN, value));
  59.             }
  60.         }
  61.     }
  62.  
  63.     public void playSound(SoundEvent soundEvent) {
  64.         if (this.getBlockState().getBlock() instanceof RubyBarrelBlock) {
  65.             double x = this.pos.getX() + 0.5D;
  66.             double y = this.pos.getY() + 0.5D;
  67.             double z = this.pos.getZ() + 0.5D;
  68.             if (this.world != null) {
  69.                 this.world.playSound(null, x, y, z, soundEvent,
  70.                         SoundCategory.BLOCKS, 0.5F, this.world.rand.nextFloat() * 0.1F + 0.9F);
  71.             }
  72.         }
  73.     }
  74.  
  75.  
  76.  
  77.     @Override
  78.     public CompoundNBT write(CompoundNBT compound) {
  79.         return super.write(compound);
  80.     }
  81.  
  82.     @Override
  83.     public void read(BlockState state, CompoundNBT nbt) {
  84.         super.read(state, nbt);
  85.     }
  86.  
  87.     @Override
  88.     public CompoundNBT getUpdateTag() {
  89.         return super.write(new CompoundNBT());
  90.     }
  91.  
  92.     @Nullable
  93.     @Override
  94.     public SUpdateTileEntityPacket getUpdatePacket() {
  95.         CompoundNBT nbt = new CompoundNBT();
  96.         this.write(nbt);
  97.  
  98.         return new SUpdateTileEntityPacket(this.pos, 0, nbt);
  99.     }
  100.  
  101.     @Override
  102.     public void onDataPacket(NetworkManager net, SUpdateTileEntityPacket pkt) {
  103.         this.read(this.getBlockState(), pkt.getNbtCompound());
  104.     }
  105.  
  106.     @Override
  107.     public void remove() {
  108.         super.remove();
  109.         this.optional.invalidate();
  110.     }
  111. }
  112.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement