// Path: src/main/java/com/nametagedit/plugin/api/data/GroupData.java
// @Data
// @AllArgsConstructor
// public class GroupData implements INametag {
// 
//     private String groupName;
//     private String prefix;
//     private String suffix;
//     private String permission;
//     private Permission bukkitPermission;
//     private int sortPriority;
// 
//     public GroupData() {
// 
//     }
// 
//     public void setPermission(String permission) {
//         this.permission = permission;
//         bukkitPermission = new Permission(permission, PermissionDefault.FALSE);
//     }
// 
//     @Override
//     public boolean isPlayerTag() {
//         return false;
//     }
// 
// }
// 
// Path: src/main/java/com/nametagedit/plugin/api/data/PlayerData.java
// @Getter
// @Setter
// @AllArgsConstructor
// public class PlayerData implements INametag {
// 
//     private String name;
//     private UUID uuid;
//     private String prefix;
//     private String suffix;
//     private int sortPriority;
// 
//     public PlayerData() {
// 
//     }
// 
//     public static PlayerData fromFile(String key, YamlConfiguration file) {
//         if (!file.contains("Players." + key)) return null;
//         PlayerData data = new PlayerData();
//         data.setUuid(UUID.fromString(key));
//         data.setName(file.getString("Players." + key + ".Name"));
//         data.setPrefix(file.getString("Players." + key + ".Prefix", ""));
//         data.setSuffix(file.getString("Players." + key + ".Suffix", ""));
//         data.setSortPriority(file.getInt("Players." + key + ".SortPriority", -1));
//         return data;
//     }
// 
//     @Override
//     public boolean isPlayerTag() {
//         return true;
//     }
// 
// }


import com.nametagedit.plugin.api.data.GroupData;
import com.nametagedit.plugin.api.data.PlayerData;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.List;
import java.util.UUID;
package com.nametagedit.plugin.storage;



/**
 * This is responsible for abstracting
 * a database/flat file storage
 */
public interface AbstractConfig {

    void load();

    void reload();

    void shutdown();

    void load(Player player, boolean loggedIn);

    void save(PlayerData... playerData);

// Path: src/main/java/com/nametagedit/plugin/api/data/GroupData.java
// @Data
// @AllArgsConstructor
// public class GroupData implements INametag {
// 
//     private String groupName;
//     private String prefix;
//     private String suffix;
//     private String permission;
//     private Permission bukkitPermission;
//     private int sortPriority;
// 
//     public GroupData() {
// 
//     }
// 
//     public void setPermission(String permission) {
//         this.permission = permission;
//         bukkitPermission = new Permission(permission, PermissionDefault.FALSE);
//     }
// 
//     @Override
//     public boolean isPlayerTag() {
//         return false;
//     }
// 
// }
// 
// Path: src/main/java/com/nametagedit/plugin/api/data/PlayerData.java
// @Getter
// @Setter
// @AllArgsConstructor
// public class PlayerData implements INametag {
// 
//     private String name;
//     private UUID uuid;
//     private String prefix;
//     private String suffix;
//     private int sortPriority;
// 
//     public PlayerData() {
// 
//     }
// 
//     public static PlayerData fromFile(String key, YamlConfiguration file) {
//         if (!file.contains("Players." + key)) return null;
//         PlayerData data = new PlayerData();
//         data.setUuid(UUID.fromString(key));
//         data.setName(file.getString("Players." + key + ".Name"));
//         data.setPrefix(file.getString("Players." + key + ".Prefix", ""));
//         data.setSuffix(file.getString("Players." + key + ".Suffix", ""));
//         data.setSortPriority(file.getInt("Players." + key + ".SortPriority", -1));
//         return data;
//     }
// 
//     @Override
//     public boolean isPlayerTag() {
//         return true;
//     }
// 
// }


// Path: src/main/java/com/nametagedit/plugin/storage/AbstractConfig.java
import com.nametagedit.plugin.api.data.GroupData;
import com.nametagedit.plugin.api.data.PlayerData;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.List;
import java.util.UUID;

package com.nametagedit.plugin.storage;



/**
 * This is responsible for abstracting
 * a database/flat file storage
 */
public interface AbstractConfig {

    void load();

    void reload();

    void shutdown();

    void load(Player player, boolean loggedIn);

    void save(PlayerData... playerData);

    void save(GroupData... groupData);