FlatFile.java: Code:JAVA import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.Serializable;import java.util.zip.GZIPInputStream;import java.util.zip.GZIPOutputStream; import org.bukkit.util.io.BukkitObjectInputStream;import org.bukkit.util.io.BukkitObjectOutputStream; public class FlatFile { public static <T extends Serializable> boolean save(String filePath, T object) { try { BukkitObjectOutputStream out = new BukkitObjectOutputStream(new GZIPOutputStream(new FileOutputStream(filePath))); out.writeObject(object); out.close(); return true; } catch (IOException e) { return false; } } public static <T extends Serializable> T load(String filePath){ try { BukkitObjectInputStream in = new BukkitObjectInputStream(new GZIPInputStream(new FileInputStream(filePath))); T object = (T) in.readObject(); in.close(); return object; } catch (ClassNotFoundException | IOException e) { return null; } }} Usage: Code:JAVA // Objects you are saving and loading must implement/extend Serializable or a Compilation Error will occur FlatFile.save(plugin.getDataFolder() + "/fileName.extension", objectToSave);// You must ensure that the data stored in the file being loaded corresponds to the object being loaded back or a Runtime Error will occur objectToLoad = FlatFile.load(plugin.getDataFolder() + "/fileName.extension");