Advertisement
Guest User

Capability: Provider

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