package micdoodle8.mods.galacticraft.core.entities.player; import micdoodle8.mods.galacticraft.core.Constants; import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; import net.minecraft.util.ResourceLocation; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.CapabilityInject; import net.minecraftforge.common.capabilities.CapabilityManager; public class GCCapabilities { @CapabilityInject(GCPlayerStats.class) public static Capability<GCPlayerStats> GC_STATS_CAPABILITY = null; @CapabilityInject(GCPlayerStatsClient.class) public static Capability<GCPlayerStatsClient> GC_STATS_CLIENT_CAPABILITY = null; public static final ResourceLocation GC_PLAYER_PROP = new ResourceLocation(Constants.ASSET_PREFIX, "player_stats"); public static final ResourceLocation GC_PLAYER_CLIENT_PROP = new ResourceLocation(Constants.ASSET_PREFIX, "player_stats_client"); public static void register() { CapabilityManager.INSTANCE.register(GCPlayerStats.class, new Capability.IStorage<GCPlayerStats>() { @Override public NBTBase writeNBT(Capability<GCPlayerStats> capability, GCPlayerStats instance, EnumFacing side) { NBTTagCompound nbt = new NBTTagCompound(); instance.saveNBTData(nbt); return nbt; } @Override public void readNBT(Capability<GCPlayerStats> capability, GCPlayerStats instance, EnumFacing side, NBTBase nbt) { instance.loadNBTData((NBTTagCompound) nbt); } }, StatsCapability::new); CapabilityManager.INSTANCE.register(GCPlayerStatsClient.class, new Capability.IStorage<GCPlayerStatsClient>() { @Override public NBTBase writeNBT(Capability<GCPlayerStatsClient> capability, GCPlayerStatsClient instance, EnumFacing side) { return null; } @Override public void readNBT(Capability<GCPlayerStatsClient> capability, GCPlayerStatsClient instance, EnumFacing side, NBTBase nbt) { } }, StatsClientCapability::new); } }