package joshie.progression.api.special;
import com.google.gson.JsonObject;
/** Implement this interface on rewards, triggers, conditions or filters
* to have special cased loading and saving of JSON data,
* public variables will still be loaded by default.
* private variables and transient are totally ignored
* Default things capable of being read
* ---------------------
* ==== Stuff
* + Enum Classes
* ---------------------
* ==== Types
* + boolean
* + integer
* + double
* + float
* ---------------------
* ==== Classes
* + String
* + Item
* + Block
* + ItemStack
* + NBTTagCompound
* ---------------------
* ==== Lists of (i.e. List<IItemFilter>)
* + IItemFilter
* + IEntityFilter
*
* */
public interface ISpecialJSON {
/** If this is true, default reading will not be performed,
* and only these methods will be used to read / write extra data.*/
public boolean onlySpecial();
/** Read data from JSON **/
public void readFromJSON(JsonObject data);
/** Write data to JSON **/
public void writeToJSON(JsonObject object);
}