package net.darkhax.tesla.api.implementation; import net.darkhax.tesla.capability.TeslaCapabilities; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ICapabilityProvider; import net.minecraftforge.common.util.INBTSerializable; /** * A capability provider for the base Tesla container implementation. */ public class BaseTeslaContainerProvider implements INBTSerializable<NBTTagCompound>, ICapabilityProvider { /** * The capability being provided. */ private final BaseTeslaContainer container; /** * Constructor for setting the BaseTeslaContainer for the provider to provide. * * @param container The BaseTeslaContainer to provide. */ public BaseTeslaContainerProvider(BaseTeslaContainer container) { this.container = container; } @Override public boolean hasCapability (Capability<?> capability, EnumFacing facing) { return capability == TeslaCapabilities.CAPABILITY_CONSUMER || capability == TeslaCapabilities.CAPABILITY_PRODUCER || capability == TeslaCapabilities.CAPABILITY_HOLDER; } @Override @SuppressWarnings("unchecked") public <T> T getCapability (Capability<T> capability, EnumFacing facing) { if (capability == TeslaCapabilities.CAPABILITY_CONSUMER || capability == TeslaCapabilities.CAPABILITY_PRODUCER || capability == TeslaCapabilities.CAPABILITY_HOLDER) return (T) this.container; return null; } @Override public NBTTagCompound serializeNBT () { return this.container.serializeNBT(); } @Override public void deserializeNBT (NBTTagCompound nbt) { this.container.deserializeNBT(nbt); } }