package micdoodle8.mods.galacticraft.core.entities.player; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ICapabilitySerializable; import java.lang.ref.WeakReference; public class CapabilityProviderStats implements ICapabilitySerializable<NBTTagCompound> { private EntityPlayerMP owner; private GCPlayerStats statsCapability; public CapabilityProviderStats(EntityPlayerMP owner) { this.owner = owner; this.statsCapability = GCCapabilities.GC_STATS_CAPABILITY.getDefaultInstance(); this.statsCapability.setPlayer(new WeakReference<>(this.owner)); } @Override public boolean hasCapability(Capability<?> capability, EnumFacing facing) { return capability == GCCapabilities.GC_STATS_CAPABILITY; } @Override public <T> T getCapability(Capability<T> capability, EnumFacing facing) { if (GCCapabilities.GC_STATS_CAPABILITY != null && capability == GCCapabilities.GC_STATS_CAPABILITY) { return (T)(statsCapability); } return null; } @Override public NBTTagCompound serializeNBT() { NBTTagCompound nbt = new NBTTagCompound(); statsCapability.saveNBTData(nbt); return nbt; } @Override public void deserializeNBT(NBTTagCompound nbt) { statsCapability.loadNBTData(nbt); } }