/******************************************************************************* * AbyssalCraft * Copyright (c) 2012 - 2017 Shinoow. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v3 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/lgpl-3.0.txt * * Contributors: * Shinoow - implementation ******************************************************************************/ package com.shinoow.abyssalcraft.common.caps; import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagInt; import net.minecraft.nbt.NBTTagList; import net.minecraft.nbt.NBTTagString; import net.minecraft.util.EnumFacing; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.Capability.IStorage; public class NecroDataCapabilityStorage implements IStorage<INecroDataCapability> { public static IStorage<INecroDataCapability> instance = new NecroDataCapabilityStorage(); @Override public NBTBase writeNBT(Capability<INecroDataCapability> capability, INecroDataCapability instance, EnumFacing side) { //serialize stuff NBTTagCompound properties = new NBTTagCompound(); NBTTagList l = new NBTTagList(); for(String name : instance.getEntityTriggers()) if(name != null) l.appendTag(new NBTTagString(name)); properties.setTag("entityTriggers", l); l = new NBTTagList(); for(String name : instance.getBiomeTriggers()) if(name != null) l.appendTag(new NBTTagString(name)); properties.setTag("biomeTriggers", l); l = new NBTTagList(); for(int id : instance.getDimensionTriggers()) l.appendTag(new NBTTagInt(id)); properties.setTag("dimensionTriggers", l); return properties; } @Override public void readNBT(Capability<INecroDataCapability> capability, INecroDataCapability instance, EnumFacing side, NBTBase nbt) { NBTTagCompound properties = (NBTTagCompound)nbt; NBTTagList l = properties.getTagList("entityTriggers", 8); for(int i = 0; i < l.tagCount(); i++) instance.triggerEntityUnlock(l.getStringTagAt(i)); l = properties.getTagList("biomeTriggers", 8); for(int i = 0; i < l.tagCount(); i++) instance.triggerBiomeUnlock(l.getStringTagAt(i)); l = properties.getTagList("dimensionTriggers", 3); for(int i = 0; i < l.tagCount(); i++) instance.triggerDimensionUnlock(l.getIntAt(i)); } }