Example usage for net.minecraftforge.common.capabilities ICapabilitySerializable ICapabilitySerializable

List of usage examples for net.minecraftforge.common.capabilities ICapabilitySerializable ICapabilitySerializable

Introduction

In this page you can find the example usage for net.minecraftforge.common.capabilities ICapabilitySerializable ICapabilitySerializable.

Prototype

ICapabilitySerializable

Source Link

Usage

From source file:valkyrienwarfare.mod.event.EventsCommon.java

License:Open Source License

@SubscribeEvent
public void onEntityConstruct(AttachCapabilitiesEvent evt) {
    if (evt.getObject() instanceof EntityPlayer) {
        evt.addCapability(new ResourceLocation(ValkyrienWarfareMod.MODID, "AirshipCounter"),
                new ICapabilitySerializable<NBTTagIntArray>() {
                    IAirshipCounterCapability inst = ValkyrienWarfareMod.airshipCounter.getDefaultInstance();

                    @Override//w  w w .  j  a  v  a  2 s .c  om
                    public boolean hasCapability(Capability<?> capability, EnumFacing facing) {
                        return capability == ValkyrienWarfareMod.airshipCounter;
                    }

                    @Override
                    public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
                        return capability == ValkyrienWarfareMod.airshipCounter
                                ? ValkyrienWarfareMod.airshipCounter.<T>cast(inst)
                                : null;
                    }

                    @Override
                    public NBTTagIntArray serializeNBT() {
                        return (NBTTagIntArray) ValkyrienWarfareMod.airshipCounter.getStorage()
                                .writeNBT(ValkyrienWarfareMod.airshipCounter, inst, null);
                    }

                    @Override
                    public void deserializeNBT(NBTTagIntArray nbt) {
                        //Otherwise its old, then ignore it
                        if (nbt instanceof NBTTagIntArray) {
                            ValkyrienWarfareMod.airshipCounter.getStorage()
                                    .readNBT(ValkyrienWarfareMod.airshipCounter, inst, null, nbt);
                        }
                    }
                });
    }
}