package openmods.serializable; import net.minecraft.nbt.NBTTagCompound; import openmods.utils.io.INBTSerializer; import openmods.utils.io.INbtReader; import openmods.utils.io.INbtWriter; public class NbtSerializable<T> implements INbtSerializable { public T value; private final String name; private final INbtWriter<T> nbtWriter; private final INbtReader<T> nbtReader; public NbtSerializable(T value, String name, INbtWriter<T> nbtWriter, INbtReader<T> nbtReader) { this.value = value; this.name = name; this.nbtWriter = nbtWriter; this.nbtReader = nbtReader; } public NbtSerializable(T value, String name, INBTSerializer<T> nbtSerializer) { this.value = value; this.name = name; this.nbtWriter = nbtSerializer; this.nbtReader = nbtSerializer; } @Override public void writeToNBT(NBTTagCompound nbt) { nbtWriter.writeToNBT(value, nbt, name); } @Override public void readFromNBT(NBTTagCompound nbt) { value = nbtReader.readFromNBT(nbt, name); } }