Advertisement
Guest User

Capability: Storage

a guest
Jul 1st, 2017
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.64 KB | None | 0 0
  1. package iitest.capability;
  2.  
  3. import net.minecraft.item.ItemStack;
  4. import net.minecraft.nbt.NBTBase;
  5. import net.minecraft.nbt.NBTTagCompound;
  6. import net.minecraft.nbt.NBTTagList;
  7. import net.minecraft.util.EnumFacing;
  8. import net.minecraftforge.common.capabilities.Capability;
  9. import net.minecraftforge.common.util.Constants;
  10.  
  11. import javax.annotation.Nullable;
  12.  
  13. public class ITestStorage implements Capability.IStorage<ITest> {
  14.     @Nullable
  15.     @Override
  16.     public NBTBase writeNBT(Capability<ITest> capability, ITest instance, EnumFacing side) {
  17.         NBTTagCompound nbt = new NBTTagCompound();
  18.         NBTTagList slot = new NBTTagList();
  19.  
  20.         if (instance.getStackInSlot(0) != ItemStack.EMPTY) {
  21.             NBTTagCompound item = new NBTTagCompound();
  22.  
  23.             item.setByte("__slot__", (byte)0);
  24.             item.setTag("__item__", instance.getStackInSlot(0).serializeNBT());
  25.             slot.appendTag(item);
  26.  
  27.             nbt.setTag("__slot__", slot);
  28.         }
  29.         nbt.setInteger("__value__", instance.getValue());
  30.  
  31.         // nbt.setTag("__stack__", instance.getStackInSlot(0).serializeNBT());
  32.  
  33.         return nbt;
  34.     }
  35.  
  36.     @Override
  37.     public void readNBT(Capability<ITest> capability, ITest instance, EnumFacing side, NBTBase nbt_tmp) {
  38.         NBTTagCompound nbt = (NBTTagCompound) nbt_tmp;
  39.  
  40.         NBTTagList slot = nbt.getTagList("__slot__", Constants.NBT.TAG_COMPOUND);
  41.  
  42.         if (!slot.hasNoTags()) {
  43.             NBTTagCompound item = slot.getCompoundTagAt(0);
  44.             instance.setInventorySlotContents(0, new ItemStack(item));
  45.         }
  46.         instance.setValue(nbt.getInteger("__value__"));
  47.     }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement