Guest User

Untitled

a guest
Mar 27th, 2025
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.54 KB | Software | 0 0
  1. public class ItemStackInventory implements IInventory {
  2.     private final EntityPlayer player;
  3.     private final ItemStack itemStack;
  4.     private ItemStack[] inventory;
  5.     private int size;
  6.  
  7.     public ItemStackInventory(EntityPlayer player, ItemStack itemStack, int size) {
  8.         this.player = player;
  9.         this.itemStack = itemStack;
  10.         this.size = size;
  11.         this.inventory = new ItemStack[size];
  12.         loadFromNBT();
  13.     }
  14.  
  15.     private void loadFromNBT() {
  16.         if (!itemStack.hasTagCompound()) {
  17.             itemStack.setTagCompound(new NBTTagCompound());
  18.         }
  19.         NBTTagList tagList = itemStack.getTagCompound().getTagList("Items", 10);
  20.         for (int i = 0; i < tagList.tagCount(); i++) {
  21.             NBTTagCompound tag = tagList.getCompoundTagAt(i);
  22.             int slot = tag.getByte("Slot") & 255;
  23.             if (slot < size) {
  24.                 inventory[slot] = ItemStack.loadItemStackFromNBT(tag);
  25.             }
  26.         }
  27.     }
  28.  
  29.     private void saveToNBT() {
  30.         if (!itemStack.hasTagCompound()) {
  31.             itemStack.setTagCompound(new NBTTagCompound());
  32.         }
  33.         NBTTagList tagList = new NBTTagList();
  34.         for (int i = 0; i < inventory.length; i++) {
  35.             if (inventory[i] != null) {
  36.                 NBTTagCompound tag = new NBTTagCompound();
  37.                 tag.setByte("Slot", (byte) i);
  38.                 inventory[i].writeToNBT(tag);
  39.                 tagList.appendTag(tag);
  40.             }
  41.         }
  42.         itemStack.getTagCompound().setTag("Items", tagList);
  43.     }
  44.  
  45.     @Override
  46.     public int getSizeInventory() {
  47.         return size;
  48.     }
  49.  
  50.     @Override
  51.     public ItemStack getStackInSlot(int index) {
  52.         return inventory[index];
  53.     }
  54.  
  55.     @Override
  56.     public void setInventorySlotContents(int index, ItemStack itemStack) {
  57.         inventory[index] = itemStack;
  58.         markDirty();
  59.     }
  60.  
  61.     @Override
  62.     public String getInventoryName() {
  63.         return itemStack.getDisplayName();
  64.     }
  65.  
  66.     @Override
  67.     public boolean hasCustomInventoryName() {
  68.         return true;
  69.     }
  70.  
  71.     @Override
  72.     public ItemStack decrStackSize(int index, int count) {
  73.         if (inventory[index] != null) {
  74.             ItemStack itemstack;
  75.             if (inventory[index].stackSize <= count) {
  76.                 itemstack = inventory[index];
  77.                 inventory[index] = null;
  78.             } else {
  79.                 itemstack = inventory[index].splitStack(count);
  80.                 if (inventory[index].stackSize == 0) {
  81.                     inventory[index] = null;
  82.                 }
  83.             }
  84.             markDirty();
  85.             return itemstack;
  86.         }
  87.         return null;
  88.     }
  89.  
  90.     @Override
  91.     public ItemStack getStackInSlotOnClosing(int index) {
  92.         if (inventory[index] != null) {
  93.             ItemStack itemstack = inventory[index];
  94.             inventory[index] = null;
  95.             markDirty();
  96.             return itemstack;
  97.         }
  98.         return null;
  99.     }
  100.  
  101.     @Override
  102.     public boolean isUseableByPlayer(EntityPlayer player) {
  103.         return true;
  104.     }
  105.  
  106.     @Override
  107.     public void openInventory() {
  108.     }
  109.  
  110.     @Override
  111.     public void closeInventory() {
  112.         System.out.println(itemStack.getTagCompound());
  113.     }
  114.  
  115.     @Override
  116.     public int getInventoryStackLimit() {
  117.         return 64;
  118.     }
  119.  
  120.     @Override
  121.     public void markDirty() {
  122.         saveToNBT();
  123.     }
  124.  
  125.     @Override
  126.     public boolean isItemValidForSlot(int index, ItemStack stack) {
  127.         return true;
  128.     }
  129.  
  130. }
Advertisement
Add Comment
Please, Sign In to add comment