更新
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
package me.skymc.taboolib.playerdata;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.database.PlayerDataManager;
|
||||
import me.skymc.taboolib.exception.PlayerOfflineException;
|
||||
import me.skymc.taboolib.fileutils.FileUtils;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
@@ -14,141 +14,139 @@ import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.server.PluginDisableEvent;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.database.PlayerDataManager;
|
||||
import me.skymc.taboolib.exception.PlayerOfflineException;
|
||||
import me.skymc.taboolib.fileutils.FileUtils;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class DataUtils implements Listener {
|
||||
|
||||
public static final ConcurrentHashMap<String, HashMap<String, FileConfiguration>> CACHE_DATA_PLUGIN = new ConcurrentHashMap<>();
|
||||
|
||||
public static void saveAllCahces(Plugin plugin) {
|
||||
saveAllCaches(plugin, false);
|
||||
}
|
||||
|
||||
public static void saveAllCaches(Plugin plugin, boolean remove) {
|
||||
if (plugin == null || !CACHE_DATA_PLUGIN.containsKey(plugin.getName())) {
|
||||
return;
|
||||
}
|
||||
for (String fileName : CACHE_DATA_PLUGIN.get(plugin.getName()).keySet()) {
|
||||
saveConfiguration(CACHE_DATA_PLUGIN.get(plugin.getName()).get(fileName), FileUtils.file(getDataSaveFolder(plugin), fileName));
|
||||
}
|
||||
if (remove) {
|
||||
CACHE_DATA_PLUGIN.remove(plugin.getName());
|
||||
}
|
||||
}
|
||||
|
||||
public static void saveAllCaches() {
|
||||
saveAllCaches(false);
|
||||
}
|
||||
|
||||
public static void saveAllCaches(boolean remove) {
|
||||
long time = System.currentTimeMillis();
|
||||
for (String plugin : CACHE_DATA_PLUGIN.keySet()) {
|
||||
saveAllCaches(getFixedPlugin(plugin), remove);
|
||||
}
|
||||
if (!Main.getInst().getConfig().getBoolean("HIDE-NOTIFY")) {
|
||||
MsgUtils.send("保存 &f" + DataUtils.CACHE_DATA_PLUGIN.size() + " &7条插件数据, 耗时: &f" + (System.currentTimeMillis() - time) + " &7(ms)");
|
||||
}
|
||||
}
|
||||
|
||||
public static void saveConfiguration(FileConfiguration conf, File file) {
|
||||
try {
|
||||
conf.save(file);
|
||||
} catch (IOException e) {
|
||||
MsgUtils.warn("文件 &4" + file.getName() + "&c 保存失败, 原因: &4" + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public static String getFixedFileName(String name) {
|
||||
return name.contains(".") ? name : name + ".yml";
|
||||
}
|
||||
|
||||
public static Plugin getFixedPlugin(String pluginName) {
|
||||
return Bukkit.getPluginManager().getPlugin(pluginName) == null ? Main.getInst() : Bukkit.getPluginManager().getPlugin(pluginName);
|
||||
}
|
||||
|
||||
public static File getDataSaveFolder(Plugin plugin) {
|
||||
return plugin == null || plugin.equals(Main.getInst()) ? Main.getServerDataFolder() : plugin.getDataFolder();
|
||||
}
|
||||
|
||||
public static String getDataSaveKey(Plugin plugin) {
|
||||
return plugin == null || plugin.equals(Main.getInst()) ? Main.getInst().getName() : plugin.getName();
|
||||
}
|
||||
|
||||
public static FileConfiguration addPluginData(String name, Plugin plugin) {
|
||||
return setPluginData(getFixedFileName(name), plugin, YamlConfiguration.loadConfiguration(FileUtils.file(getDataSaveFolder(plugin), getFixedFileName(name))));
|
||||
}
|
||||
|
||||
public static FileConfiguration getPluginData(String name, Plugin plugin) {
|
||||
return !CACHE_DATA_PLUGIN.containsKey(getDataSaveKey(plugin)) ? null : CACHE_DATA_PLUGIN.get(getDataSaveKey(plugin)).get(getFixedFileName(name));
|
||||
}
|
||||
|
||||
public static FileConfiguration setPluginData(String name, Plugin plugin, FileConfiguration conf) {
|
||||
if (!CACHE_DATA_PLUGIN.containsKey(getDataSaveKey(plugin))) {
|
||||
CACHE_DATA_PLUGIN.put(getDataSaveKey(plugin), new HashMap<>());
|
||||
}
|
||||
CACHE_DATA_PLUGIN.get(getDataSaveKey(plugin)).put(getFixedFileName(name), conf);
|
||||
return conf;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void disable(PluginDisableEvent e) {
|
||||
if (e.getPlugin().equals(Main.getInst())) {
|
||||
return;
|
||||
}
|
||||
if (CACHE_DATA_PLUGIN.containsKey(e.getPlugin().getName())) {
|
||||
saveAllCaches(e.getPlugin(), true);
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static FileConfiguration getPlayerData(String name) {
|
||||
try {
|
||||
return PlayerDataManager.getPlayerData(name, true);
|
||||
}
|
||||
catch (PlayerOfflineException e) {
|
||||
return new YamlConfiguration();
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static FileConfiguration addPlayerData(String name) {
|
||||
return PlayerDataManager.loadPlayerData(name);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static void savePlayerData(String name, boolean remove) {
|
||||
PlayerDataManager.savePlayerData(name, remove);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static FileConfiguration registerServerData(String name) {
|
||||
return addPluginData(name, null);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static FileConfiguration getPlayerData(OfflinePlayer p) {
|
||||
return getPlayerData(p.getName());
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static void setPlayerData(OfflinePlayer p, String s, Object o) {
|
||||
getPlayerData(p.getName()).set(s, o);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static void saveData(OfflinePlayer p) {
|
||||
saveOnline(p.getName());
|
||||
}
|
||||
|
||||
public static Long getOnline(OfflinePlayer p) {
|
||||
return getPlayerData(p).getLong("TabooLib.Offline");
|
||||
}
|
||||
|
||||
public static void saveOnline(String p) {
|
||||
getPlayerData(p).set("TabooLib.Offline", System.currentTimeMillis());
|
||||
}
|
||||
|
||||
public static final ConcurrentHashMap<String, HashMap<String, FileConfiguration>> CACHE_DATA_PLUGIN = new ConcurrentHashMap<>();
|
||||
|
||||
public static void saveAllCaches(Plugin plugin) {
|
||||
saveAllCaches(plugin, false);
|
||||
}
|
||||
|
||||
public static void saveAllCaches(Plugin plugin, boolean remove) {
|
||||
if (plugin == null || !CACHE_DATA_PLUGIN.containsKey(plugin.getName())) {
|
||||
return;
|
||||
}
|
||||
for (String fileName : CACHE_DATA_PLUGIN.get(plugin.getName()).keySet()) {
|
||||
saveConfiguration(CACHE_DATA_PLUGIN.get(plugin.getName()).get(fileName), FileUtils.file(getDataSaveFolder(plugin), fileName));
|
||||
}
|
||||
if (remove) {
|
||||
CACHE_DATA_PLUGIN.remove(plugin.getName());
|
||||
}
|
||||
}
|
||||
|
||||
public static void saveAllCaches() {
|
||||
saveAllCaches(false);
|
||||
}
|
||||
|
||||
public static void saveAllCaches(boolean remove) {
|
||||
long time = System.currentTimeMillis();
|
||||
for (String plugin : CACHE_DATA_PLUGIN.keySet()) {
|
||||
saveAllCaches(getFixedPlugin(plugin), remove);
|
||||
}
|
||||
if (!Main.getInst().getConfig().getBoolean("HIDE-NOTIFY")) {
|
||||
MsgUtils.send("保存 &f" + DataUtils.CACHE_DATA_PLUGIN.size() + " &7条插件数据, 耗时: &f" + (System.currentTimeMillis() - time) + " &7(ms)");
|
||||
}
|
||||
}
|
||||
|
||||
public static void saveConfiguration(FileConfiguration conf, File file) {
|
||||
try {
|
||||
conf.save(file);
|
||||
} catch (IOException e) {
|
||||
MsgUtils.warn("文件 &4" + file.getName() + "&c 保存失败, 原因: &4" + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public static String getFixedFileName(String name) {
|
||||
return name.contains(".") ? name : name + ".yml";
|
||||
}
|
||||
|
||||
public static Plugin getFixedPlugin(String pluginName) {
|
||||
return Bukkit.getPluginManager().getPlugin(pluginName) == null ? Main.getInst() : Bukkit.getPluginManager().getPlugin(pluginName);
|
||||
}
|
||||
|
||||
public static File getDataSaveFolder(Plugin plugin) {
|
||||
return plugin == null || plugin.equals(Main.getInst()) ? Main.getServerDataFolder() : plugin.getDataFolder();
|
||||
}
|
||||
|
||||
public static String getDataSaveKey(Plugin plugin) {
|
||||
return plugin == null || plugin.equals(Main.getInst()) ? Main.getInst().getName() : plugin.getName();
|
||||
}
|
||||
|
||||
public static FileConfiguration addPluginData(String name, Plugin plugin) {
|
||||
return setPluginData(getFixedFileName(name), plugin, YamlConfiguration.loadConfiguration(FileUtils.file(getDataSaveFolder(plugin), getFixedFileName(name))));
|
||||
}
|
||||
|
||||
public static FileConfiguration getPluginData(String name, Plugin plugin) {
|
||||
return !CACHE_DATA_PLUGIN.containsKey(getDataSaveKey(plugin)) ? new YamlConfiguration() : CACHE_DATA_PLUGIN.get(getDataSaveKey(plugin)).get(getFixedFileName(name));
|
||||
}
|
||||
|
||||
public static FileConfiguration setPluginData(String name, Plugin plugin, FileConfiguration conf) {
|
||||
if (!CACHE_DATA_PLUGIN.containsKey(getDataSaveKey(plugin))) {
|
||||
CACHE_DATA_PLUGIN.put(getDataSaveKey(plugin), new HashMap<>());
|
||||
}
|
||||
CACHE_DATA_PLUGIN.get(getDataSaveKey(plugin)).put(getFixedFileName(name), conf);
|
||||
return conf;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void disable(PluginDisableEvent e) {
|
||||
if (e.getPlugin().equals(Main.getInst())) {
|
||||
return;
|
||||
}
|
||||
if (CACHE_DATA_PLUGIN.containsKey(e.getPlugin().getName())) {
|
||||
saveAllCaches(e.getPlugin(), true);
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static FileConfiguration getPlayerData(String name) {
|
||||
try {
|
||||
return PlayerDataManager.getPlayerData(name, true);
|
||||
} catch (PlayerOfflineException e) {
|
||||
return new YamlConfiguration();
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static FileConfiguration addPlayerData(String name) {
|
||||
return PlayerDataManager.loadPlayerData(name);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static void savePlayerData(String name, boolean remove) {
|
||||
PlayerDataManager.savePlayerData(name, remove);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static FileConfiguration registerServerData(String name) {
|
||||
return addPluginData(name, null);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static FileConfiguration getPlayerData(OfflinePlayer p) {
|
||||
return getPlayerData(p.getName());
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static void setPlayerData(OfflinePlayer p, String s, Object o) {
|
||||
getPlayerData(p.getName()).set(s, o);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static void saveData(OfflinePlayer p) {
|
||||
saveOnline(p.getName());
|
||||
}
|
||||
|
||||
public static Long getOnline(OfflinePlayer p) {
|
||||
return getPlayerData(p).getLong("TabooLib.Offline");
|
||||
}
|
||||
|
||||
public static void saveOnline(String p) {
|
||||
getPlayerData(p).set("TabooLib.Offline", System.currentTimeMillis());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user