public final class Leveling_System extends JavaPlugin implements Listener {

    @Override
    public void onEnable() {
        // Plugin startup logic
        createCustomConfig();
        getCommand("level").setExecutor(new command(this));
    }
    private void createCustomConfig()
    {
        File createDataFile = new File(getDataFolder(), "players.yml");
        if(!createDataFile.exists())
        {
            createDataFile.getParentFile().mkdirs();
            saveResource("players.yml", false);
        }
    }

    @Override
    public void onDisable() {
        saveConfig();
    }
    @EventHandler
    private void onJoinEvent(PlayerJoinEvent event)
    {
        playerData data = new playerData();
        File dat = new File(getDataFolder().getAbsolutePath() + "/players.yml");
        FileConfiguration conf = YamlConfiguration.loadConfiguration(dat);
        if(conf.contains("players." + event.getPlayer().getUniqueId().toString()))
        {
            data.setLevel(conf.getInt("players." + event.getPlayer().getUniqueId().toString() + ".main.level"));
            data.setReq(conf.getInt("players." + event.getPlayer().getUniqueId().toString() + ".main.required"));
            data.setExp(conf.getInt("players." + event.getPlayer().getUniqueId().toString() + ".main.exp"));
            data.setBoost(conf.getInt("players." + event.getPlayer().getUniqueId().toString() + ".main.boost"));
        } else {
            data.setLevel(1);
            data.setReq(50);
            data.setExp(0);
            data.setBoost(1);
        }
        command.setPlayerData(event.getPlayer(), data);
    }
    @EventHandler
    private void onQuit(PlayerQuitEvent event)
    {
        playerData data = command.getPlayerData(event.getPlayer());
        File dat = new File(getDataFolder().getAbsolutePath() + "/players.yml");
        FileConfiguration conf = YamlConfiguration.loadConfiguration(dat);
        conf.set("players." + event.getPlayer().getUniqueId().toString() + ".main.level", data.getLevel());
        conf.set("players." + event.getPlayer().getUniqueId().toString() + ".main.required", data.getReq());
        conf.set("players." + event.getPlayer().getUniqueId().toString() + ".main.exp", data.getExp());
        conf.set("players." + event.getPlayer().getUniqueId().toString() + ".main.boost", data.getBoost());
        try {
            conf.save(dat);
        } catch
        (IOException e){
            e.printStackTrace();
        }
        command.resPlayerData(event.getPlayer());
    }
}