ModMCdl

TileEntity.java

Nov 2nd, 2017
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.21 KB | None | 0 0
  1. package com.modmcdl.magitech.tileenitity;
  2.  
  3. import com.modmcdl.magitech.recipe.PestleRecipe;
  4.  
  5. import net.minecraft.entity.player.EntityPlayer;
  6. import net.minecraft.inventory.IInventory;
  7. import net.minecraft.inventory.ItemStackHelper;
  8. import net.minecraft.item.ItemStack;
  9. import net.minecraft.nbt.NBTTagCompound;
  10. import net.minecraft.tileentity.TileEntity;
  11. import net.minecraft.util.NonNullList;
  12. import net.minecraft.util.text.ITextComponent;
  13. import net.minecraft.util.text.TextComponentString;
  14. import net.minecraft.util.text.TextComponentTranslation;
  15.  
  16. public class TileEntityPestle extends TileEntity implements IInventory{
  17.  
  18.     private NonNullList<ItemStack> inventory = NonNullList.<ItemStack>withSize(3, ItemStack.EMPTY);
  19.     private String customName;
  20.    
  21.    
  22.     @Override
  23.     public String getName() {
  24.         return this.hasCustomName() ? this.customName : "container:pestle";
  25.     }
  26.  
  27.     @Override
  28.     public boolean hasCustomName() {
  29.         return this.customName != null && !this.customName.isEmpty();
  30.     }
  31.  
  32.     public void setCustomName(String customName) {
  33.         this.customName = customName;
  34.     }
  35.    
  36.     @Override
  37.     public ITextComponent getDisplayName() {
  38.         return this.hasCustomName() ? new TextComponentString(this.getName()) : new TextComponentTranslation(this.getName());
  39.     }
  40.    
  41.    
  42.     @Override
  43.     public int getSizeInventory() {
  44.         return this.inventory.size();
  45.     }
  46.  
  47.     @Override
  48.     public boolean isEmpty() {
  49.         for(ItemStack stack: this.inventory)
  50.             if(!stack.isEmpty())
  51.                 return false;
  52.         return true;
  53.     }
  54.  
  55.     @Override
  56.     public ItemStack getStackInSlot(int index) {
  57.         return (ItemStack)this.inventory.get(index);
  58.     }
  59.  
  60.     @Override
  61.     public ItemStack decrStackSize(int index, int count) {
  62.         return ItemStackHelper.getAndSplit(this.inventory, index, count);
  63.     }
  64.  
  65.     @Override
  66.     public ItemStack removeStackFromSlot(int index) {
  67.         return ItemStackHelper.getAndRemove(this.inventory, index);
  68.     }
  69.  
  70.     @Override
  71.     public void setInventorySlotContents(int index, ItemStack stack) {
  72.         ItemStack itemstack = (ItemStack)this.inventory.get(index);
  73.         boolean flag = !stack.isEmpty() && stack.isItemEqual(itemstack) && ItemStack.areItemsEqual(stack, itemstack);
  74.         this.inventory.set(index, stack);
  75.        
  76.         if(stack.getCount() > this.getInventoryStackLimit())
  77.             stack.setCount(this.getInventoryStackLimit());
  78.        
  79.         if(index == 0 && index + 1 == 1 && !flag) {
  80.             ItemStack stack1 = (ItemStack)this.inventory.get(index + 1);
  81.             this.markDirty();
  82.         }
  83.     }
  84.    
  85.     @Override
  86.     public void readFromNBT(NBTTagCompound compound) {
  87.         super.readFromNBT(compound);
  88.         this.inventory = NonNullList.<ItemStack>withSize(this.getSizeInventory(), ItemStack.EMPTY);
  89.         ItemStackHelper.loadAllItems(compound, this.inventory);
  90.        
  91.         if(compound.hasKey("CustomName", 8))
  92.             this.setCustomName(compound.getString("CustomName"));
  93.     }
  94.    
  95.     @Override
  96.     public NBTTagCompound writeToNBT(NBTTagCompound compound) {
  97.         super.writeToNBT(compound);
  98.         ItemStackHelper.saveAllItems(compound, this.inventory);
  99.        
  100.         if(this.hasCustomName())
  101.             compound.setString("CustomName", this.customName);
  102.         return compound;
  103.     }
  104.  
  105.     private boolean canCraft() {
  106.         if(((ItemStack)this.inventory.get(0)).isEmpty() || ((ItemStack)this.inventory.get(1)).isEmpty())
  107.             return false;
  108.         else {
  109.             ItemStack result = PestleRecipe.instance().getPestleResult((ItemStack)this.inventory.get(0), (ItemStack)this.inventory.get(1));
  110.            
  111.             if(result.isEmpty())
  112.                 return false;
  113.             else {
  114.                 ItemStack output = (ItemStack)this.inventory.get(3);
  115.                
  116.                 if(output.isEmpty()) return true;
  117.                 if(!output.isItemEqual(result)) return false;
  118.                 int res = output.getCount() + result.getCount();
  119.                 return res <= getInventoryStackLimit() && res <= output.getMaxStackSize();
  120.                
  121.             }
  122.                    
  123.         }
  124.  
  125.     }
  126.    
  127.     public void craftItem() {
  128.         if(this.canCraft()) {
  129.             ItemStack input1 = (ItemStack)this.inventory.get(0);
  130.             ItemStack input2 = (ItemStack)this.inventory.get(1);
  131.             ItemStack result = PestleRecipe.instance().getPestleResult(input1, input2);
  132.             ItemStack output = (ItemStack)this.inventory.get(3);
  133.            
  134.             if(output.isEmpty())
  135.                 this.inventory.set(3, result.copy());
  136.             else if(output.getItem() == result.getItem())
  137.                 output.grow(result.getCount());
  138.            
  139.             input1.shrink(1);
  140.             input2.shrink(1);
  141.         }
  142.     }
  143.    
  144.    
  145.    
  146.     @Override
  147.     public int getInventoryStackLimit() {
  148.         return 64;
  149.     }
  150.  
  151.     @Override
  152.     public boolean isUsableByPlayer(EntityPlayer player) {
  153.         return this.world.getTileEntity(this.pos) != this ? false : player.getDistanceSq((double)this.pos.getX() + 0.5D, (double)this.pos.getY() + 0.5D, (double)this.pos.getZ() + 0.5D) < 64.0D;
  154.     }
  155.  
  156.     @Override
  157.     public void openInventory(EntityPlayer player) {
  158.         // TODO Auto-generated method stub
  159.        
  160.     }
  161.  
  162.     @Override
  163.     public void closeInventory(EntityPlayer player) {
  164.         // TODO Auto-generated method stub
  165.        
  166.     }
  167.  
  168.     @Override
  169.     public boolean isItemValidForSlot(int index, ItemStack stack) {
  170.         if(index == 3)
  171.             return false;
  172.         else {
  173.             return true;
  174.         }
  175.     }
  176.    
  177.     public String getGuiID() {
  178.         return "modmt:pestle";
  179.     }
  180.  
  181.     @Override
  182.     public int getField(int id) {
  183.         return 0;
  184.     }
  185.  
  186.     @Override
  187.     public void setField(int id, int value) {
  188.        
  189.     }
  190.  
  191.     @Override
  192.     public int getFieldCount() {
  193.         return 3;
  194.     }
  195.  
  196.     @Override
  197.     public void clear() {
  198.         this.inventory.clear();
  199.        
  200.     }
  201.  
  202. }
Advertisement
Add Comment
Please, Sign In to add comment