From f4b37b12b5d621938184075d61cdf8e3abc2e950 Mon Sep 17 00:00:00 2001 From: YuTian <2953516620@qq.com> Date: Tue, 6 Aug 2024 14:01:55 +0800 Subject: [PATCH] fix --- pom.xml | 23 ++++ .../java/com/yaohun/questsystem/Main.java | 30 ++--- .../com/yaohun/questsystem/api/QuestAPI.java | 108 +++++++++--------- .../yaohun/questsystem/data/PlayerData.java | 77 +++++++------ .../yaohun/questsystem/data/QuestData.java | 31 ++--- .../questsystem/data/database/SqlManager.java | 42 +++---- .../questsystem/listener/JoinEvent.java | 9 +- .../yaohun/questsystem/manage/DataManage.java | 67 +++++------ .../com/yaohun/questsystem/util/SqlUtil.java | 12 +- .../com/yaohun/questsystem/util/TimeType.java | 2 +- 10 files changed, 210 insertions(+), 191 deletions(-) diff --git a/pom.xml b/pom.xml index 693564b..cd3563e 100644 --- a/pom.xml +++ b/pom.xml @@ -14,17 +14,40 @@ + + papermc-repo + https://repo.papermc.io/repository/maven-public/ + + + sonatype + https://oss.sonatype.org/content/groups/public/ + public https://repo.aurora-pixels.com/repository/public/ + + public-rpg + https://repo.aurora-pixels.com/repository/public-rpg/ + + + io.papermc.paper + paper-api + 1.18.2-R0.1-SNAPSHOT + provided + com.google.code.gson gson 2.8.8 + + me.Demon.DemonPlugin + DemonAPI + 1.2.0 + \ No newline at end of file diff --git a/src/main/java/com/yaohun/questsystem/Main.java b/src/main/java/com/yaohun/questsystem/Main.java index 8d34cd7..a64b496 100644 --- a/src/main/java/com/yaohun/questsystem/Main.java +++ b/src/main/java/com/yaohun/questsystem/Main.java @@ -31,59 +31,61 @@ public class Main extends JavaPlugin { LinkMySqlData(); saveDefaultConfig(); dataManage = new DataManage(); - for (Player player : Bukkit.getOnlinePlayers()){ + for (Player player : Bukkit.getOnlinePlayers()) { Main.dataManage.loadPlayerData(player); } - getServer().getPluginManager().registerEvents(new JoinEvent(),this); + getServer().getPluginManager().registerEvents(new JoinEvent(), this); DemonAPI.sendConsoleMessage("§f[§6!§f] §aQuestSystem §f加载完成,祝你使用愉快!"); DemonAPI.sendConsoleMessage("§f[§6!§f] §b极光像素工作室出品"); } - public void LinkMySqlData(){ + public void LinkMySqlData() { String SQL_Host = "gz-cdb-r9koldtt.sql.tencentcdb.com"; String SQL_Port = "29320"; String SQL_Users = "root"; String SQL_Password = "Pixel@123456"; String SQL_Database = "quest"; sqlManager = new SqlManager(); - sqlUtil = new SqlUtil(SQL_Host,SQL_Port,SQL_Database,SQL_Users,SQL_Password); + sqlUtil = new SqlUtil(SQL_Host, SQL_Port, SQL_Database, SQL_Users, SQL_Password); + sqlUtil.openConnection(); sqlManager.createTable(); } @Override public void onDisable() { - for (Player player : Bukkit.getOnlinePlayers()){ + for (Player player : Bukkit.getOnlinePlayers()) { dataManage.savePlayerData(player); } + sqlUtil.closeConnection(); DemonAPI.sendConsoleMessage("§f[§c!§f] §aQuestSystem §f卸载完成,欢迎下次使用!"); } @Override public boolean onCommand(CommandSender sender, Command command, String Command, String[] args) { if (Command.equalsIgnoreCase("questinfo") && sender instanceof Player player) { - sender.sendMessage("§f[§e!§f]§7查询玩家: "+player.getName()); + sender.sendMessage("§f[§e!§f]§7查询玩家: " + player.getName()); sender.sendMessage("§f[§e!§f]§7任务数据:"); PlayerData data = dataManage.getPlayerData(player); List everydayList = QuestAPI.getPlayerQuestList(player, TimeType.EVERYDAY); - for (QuestData quest : everydayList){ - sender.sendMessage(" [每日] §b"+quest.getQuestKey()+" §f进度: §c"+data.getQuestAmount(quest)+"§f/§a"+quest.getNeedAmount()); + for (QuestData quest : everydayList) { + sender.sendMessage(" [每日] §b" + quest.getQuestKey() + " §f进度: §c" + data.getQuestAmount(quest) + "§f/§a" + quest.getNeedAmount()); } List weeklyList = QuestAPI.getPlayerQuestList(player, TimeType.WEEKLY); - for (QuestData quest : weeklyList){ - sender.sendMessage(" [每周] §b"+quest.getQuestKey()+" §f进度: §c"+data.getQuestAmount(quest)+"§f/§a"+quest.getNeedAmount()); + for (QuestData quest : weeklyList) { + sender.sendMessage(" [每周] §b" + quest.getQuestKey() + " §f进度: §c" + data.getQuestAmount(quest) + "§f/§a" + quest.getNeedAmount()); } List longTermList = QuestAPI.getPlayerQuestList(player, TimeType.LONGTERM); - for (QuestData quest : longTermList){ - sender.sendMessage(" [长期] §b"+quest.getQuestKey()+" §f进度: §c"+data.getQuestAmount(quest)+"§f/§a"+quest.getNeedAmount()); + for (QuestData quest : longTermList) { + sender.sendMessage(" [长期] §b" + quest.getQuestKey() + " §f进度: §c" + data.getQuestAmount(quest) + "§f/§a" + quest.getNeedAmount()); } } if (Command.equalsIgnoreCase("quest")) { Player player = (Player) sender; - if(args.length == 1 && args[0].equalsIgnoreCase("save")) { + if (args.length == 1 && args[0].equalsIgnoreCase("save")) { if (dataManage.getPlayerData(player) != null) { dataManage.savePlayerData(player); } - DemonAPI.sendMessage(sender,"数据已保存至数据库."); + DemonAPI.sendMessage(sender, "数据已保存至数据库."); } /*if(args.length == 2 && args[0].equalsIgnoreCase("js")) { String questKey = args[1]; diff --git a/src/main/java/com/yaohun/questsystem/api/QuestAPI.java b/src/main/java/com/yaohun/questsystem/api/QuestAPI.java index 5d13606..bc830b7 100644 --- a/src/main/java/com/yaohun/questsystem/api/QuestAPI.java +++ b/src/main/java/com/yaohun/questsystem/api/QuestAPI.java @@ -5,7 +5,6 @@ import com.yaohun.questsystem.data.PlayerData; import com.yaohun.questsystem.data.QuestData; import com.yaohun.questsystem.manage.DataManage; import com.yaohun.questsystem.util.TimeType; -import org.bukkit.Bukkit; import org.bukkit.entity.Player; import java.util.ArrayList; @@ -15,31 +14,31 @@ import java.util.Set; public class QuestAPI { - public static PlayerData getPlayerData(Player p){ + public static PlayerData getPlayerData(Player p) { DataManage dataManage = Main.dataManage; PlayerData playerData = dataManage.getPlayerData(p); - if(playerData == null){ + if (playerData == null) { return null; } return playerData; } /* - * 获取玩家的任务列表 - * */ - public static Set getPlayerQuestList(Player p){ + * 获取玩家的任务列表 + * */ + public static Set getPlayerQuestList(Player p) { PlayerData data = Main.dataManage.getPlayerData(p); return data.getQuests(); } /* - * 获取玩家已接受任务 指定周期任务列表 - * */ + * 获取玩家已接受任务 指定周期任务列表 + * */ public static List getPlayerQuestList(Player p, TimeType timeType) { List questDataList = new ArrayList<>(); PlayerData data = Main.dataManage.getPlayerData(p); - for (QuestData questData : data.getQuests()){ - if(questData.getTimeType() == timeType){ + for (QuestData questData : data.getQuests()) { + if (questData.getTimeType() == timeType) { questDataList.add(questData); } } @@ -47,91 +46,92 @@ public class QuestAPI { } /* - * 获取指定任务信息数据 - * */ - public static QuestData getQuestData(String questKey){ + * 获取指定任务信息数据 + * */ + public static QuestData getQuestData(String questKey) { QuestData quest = Main.dataManage.getQuestData(questKey); - if(quest == null){ - System.out.println("[错误 - 任务] 任务: "+questKey+" 配置文件不存在."); + if (quest == null) { + System.out.println("[错误 - 任务] 任务: " + questKey + " 配置文件不存在."); return null; } return quest; } /* - * 增加任务进度 - * */ - public static void addQuestProgress(Player p,String questKey,int amount){ + * 增加任务进度 + * */ + public static void addQuestProgress(Player p, String questKey, int amount) { QuestData quest = Main.dataManage.getQuestData(questKey); - if(quest == null){ - System.out.println("[错误 - 任务] 任务: "+questKey+" 配置文件不存在."); + if (quest == null) { + System.out.println("[错误 - 任务] 任务: " + questKey + " 配置文件不存在."); return; } PlayerData data = Main.dataManage.getPlayerData(p); - data.addQuestAmount(quest,amount); + data.addQuestAmount(quest, amount); } /* - * 设置任务进度 - * */ - public static void setQuestProgress(Player p,String questKey,int amount){ + * 设置任务进度 + * */ + public static void setQuestProgress(Player p, String questKey, int amount) { QuestData quest = Main.dataManage.getQuestData(questKey); - if(quest == null){ - System.out.println("[错误 - 任务] 任务: "+questKey+" 配置文件不存在."); + if (quest == null) { + System.out.println("[错误 - 任务] 任务: " + questKey + " 配置文件不存在."); return; } PlayerData data = Main.dataManage.getPlayerData(p); - data.setQuestAmount(quest,amount); + data.setQuestAmount(quest, amount); } /* - * 强制完成任务进度 - * */ - public static void forceCompleteQuest(Player p,String questKey){ + * 强制完成任务进度 + * */ + public static void forceCompleteQuest(Player p, String questKey) { QuestData quest = Main.dataManage.getQuestData(questKey); - if(quest == null){ - System.out.println("[错误 - 任务] 任务: "+questKey+" 配置文件不存在."); + if (quest == null) { + System.out.println("[错误 - 任务] 任务: " + questKey + " 配置文件不存在."); return; } PlayerData data = Main.dataManage.getPlayerData(p); - data.setQuestAmount(quest,-1); + data.setQuestAmount(quest, -1); } + /* - * 强制完成任务进度并触发奖励 - * */ - public static void forceCompleteQuestFinish(Player p,String questKey,boolean finish){ + * 强制完成任务进度并触发奖励 + * */ + public static void forceCompleteQuestFinish(Player p, String questKey, boolean finish) { QuestData quest = Main.dataManage.getQuestData(questKey); - if(quest == null){ - System.out.println("[错误 - 任务] 任务: "+questKey+" 配置文件不存在."); + if (quest == null) { + System.out.println("[错误 - 任务] 任务: " + questKey + " 配置文件不存在."); return; } PlayerData data = Main.dataManage.getPlayerData(p); - data.setQuestAmount(quest,-1); - if(finish){ + data.setQuestAmount(quest, -1); + if (finish) { quest.sendFinishCommand(p); } } /* - * 重置任务进度(若已完成也会返回0%) - * */ - public static void resetCompleteQuest(Player p,String questKey){ + * 重置任务进度(若已完成也会返回0%) + * */ + public static void resetCompleteQuest(Player p, String questKey) { QuestData quest = Main.dataManage.getQuestData(questKey); - if(quest == null){ - System.out.println("[错误 - 任务] 任务: "+questKey+" 配置文件不存在."); + if (quest == null) { + System.out.println("[错误 - 任务] 任务: " + questKey + " 配置文件不存在."); return; } PlayerData data = Main.dataManage.getPlayerData(p); - data.setQuestAmount(quest,0); + data.setQuestAmount(quest, 0); } /* - * 删除任务 - * */ - public static void deletePlayerDataQuest(Player p,String questKey){ + * 删除任务 + * */ + public static void deletePlayerDataQuest(Player p, String questKey) { QuestData quest = Main.dataManage.getQuestData(questKey); - if(quest == null){ - System.out.println("[错误 - 任务] 任务: "+questKey+" 配置文件不存在."); + if (quest == null) { + System.out.println("[错误 - 任务] 任务: " + questKey + " 配置文件不存在."); return; } PlayerData data = Main.dataManage.getPlayerData(p); @@ -141,9 +141,9 @@ public class QuestAPI { } /* - * 删除所有任务 - * */ - public static void deleteAllPlayerDataQuest(Player p){ + * 删除所有任务 + * */ + public static void deleteAllPlayerDataQuest(Player p) { PlayerData data = Main.dataManage.getPlayerData(p); HashMap hashMap = new HashMap<>(); data.setQuestMap(hashMap); diff --git a/src/main/java/com/yaohun/questsystem/data/PlayerData.java b/src/main/java/com/yaohun/questsystem/data/PlayerData.java index f787763..ff5bd33 100644 --- a/src/main/java/com/yaohun/questsystem/data/PlayerData.java +++ b/src/main/java/com/yaohun/questsystem/data/PlayerData.java @@ -9,24 +9,25 @@ import java.util.Set; public class PlayerData { private String name; // 玩家名字 - private HashMap questAmount; + private HashMap questAmount; - public PlayerData(String name){ + public PlayerData(String name) { this.name = name; this.questAmount = new HashMap<>(); } - public PlayerData(String name,HashMap hashMap){ + public PlayerData(String name, HashMap hashMap) { this.name = name; this.questAmount = hashMap; - for (QuestData quest : hashMap.keySet()){ - System.out.println("[调试 - 输出] 任务名: "+quest.getQuestKey()+" 进度: "+getQuestAmount(quest)+"/"+quest.getNeedAmount()); + for (QuestData quest : hashMap.keySet()) { + System.out.println("[调试 - 输出] 任务名: " + quest.getQuestKey() + " 进度: " + getQuestAmount(quest) + "/" + quest.getNeedAmount()); } } public String getName() { return name; } + public HashMap getQuestAmount() { return questAmount; } @@ -38,11 +39,12 @@ public class PlayerData { public Set getQuests() { return this.questAmount.keySet(); } + // 获取玩家已完成任务数量 - public int getFinishedAmount(){ + public int getFinishedAmount() { int i = 0; - for (QuestData quest : getQuests()){ - if(isFinished(quest)){ + for (QuestData quest : getQuests()) { + if (isFinished(quest)) { i++; } } @@ -50,54 +52,57 @@ public class PlayerData { } /* - * 接受任务 - * */ - public void acceptQuest(QuestData quest){ - if(!isAcceptQuest(quest)){ - this.questAmount.put(quest,0); + * 接受任务 + * */ + public void acceptQuest(QuestData quest) { + if (!isAcceptQuest(quest)) { + this.questAmount.put(quest, 0); } } /* - * 判断任务是否已接受 - * */ - public boolean isAcceptQuest(QuestData quest){ - if(this.questAmount.get(quest) == null){ + * 判断任务是否已接受 + * */ + public boolean isAcceptQuest(QuestData quest) { + if (this.questAmount.get(quest) == null) { return false; } return true; } + /* - * 判断任务是否已完成 - * */ + * 判断任务是否已完成 + * */ public boolean isFinished(QuestData quest) { // 判断任务是否已接受 - if(isAcceptQuest(quest)){ + if (isAcceptQuest(quest)) { // 判断任务是否已提交 - if(this.questAmount.get(quest) <= -1){ + if (this.questAmount.get(quest) <= -1) { return true; } } return false; } + /* - * 提交任务 - * */ + * 提交任务 + * */ public void submitQuest(QuestData quest) { // 提交任务后触发命令 quest.sendFinishCommand(Bukkit.getPlayer(this.name)); // 设置任务提交后的状态为 -1 this.questAmount.put(quest, -1); } + /* - * 判断玩家是否达到要求可提交任务 - * */ + * 判断玩家是否达到要求可提交任务 + * */ public boolean canSubmitQuest(QuestData quest) { // 判断玩家是否接受任务 if (isAcceptQuest(quest)) { // 判断玩家是否已达到任务要求数量 int amount = this.questAmount.get(quest); - if(amount >= quest.getNeedAmount()){ + if (amount >= quest.getNeedAmount()) { return true; } } @@ -105,18 +110,18 @@ public class PlayerData { } /* - * 获取玩家当前任务进度 - * */ - public int getQuestAmount(QuestData quest){ - if(this.questAmount.get(quest) == null){ + * 获取玩家当前任务进度 + * */ + public int getQuestAmount(QuestData quest) { + if (this.questAmount.get(quest) == null) { return 0; } return this.questAmount.get(quest); } /*增加任务进度*/ - public void addQuestAmount(QuestData quest){ - addQuestAmount(quest,1); + public void addQuestAmount(QuestData quest) { + addQuestAmount(quest, 1); } /*增加任务进度*/ @@ -140,6 +145,7 @@ public class PlayerData { } this.questAmount.put(quest, new_amount); } + /*设置任务进度*/ public void setQuestAmount(QuestData quest, int amount) { // 若玩家未接受任务直接返回 @@ -150,8 +156,8 @@ public class PlayerData { } /* - * 获取任务的进度 - * */ + * 获取任务的进度 + * */ public double getProgress(QuestData quest) { if (!isAcceptQuest(quest)) { return 0.0D; @@ -160,11 +166,12 @@ public class PlayerData { double d = amount / quest.getNeedAmount(); if (d < 0.0D) { d = 0.0D; - }else if (d > 1.0D) { + } else if (d > 1.0D) { d = 1.0D; } return d; } + public void reload(List questDataList) { HashMap newData = new HashMap<>(); for (QuestData newQuest : questDataList) { diff --git a/src/main/java/com/yaohun/questsystem/data/QuestData.java b/src/main/java/com/yaohun/questsystem/data/QuestData.java index b2c706d..119406f 100644 --- a/src/main/java/com/yaohun/questsystem/data/QuestData.java +++ b/src/main/java/com/yaohun/questsystem/data/QuestData.java @@ -2,7 +2,6 @@ package com.yaohun.questsystem.data; import com.yaohun.questsystem.util.TimeType; import me.Demon.DemonPlugin.DemonAPI; -import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; @@ -19,22 +18,22 @@ public class QuestData { private List finish; private List description; - public QuestData(String questKey,FileConfiguration yml){ + public QuestData(String questKey, FileConfiguration yml) { this.questKey = questKey; - String cycle = yml.getString(questKey+".timeType","longTerm"); - if(cycle.equalsIgnoreCase("everyday")){ + String cycle = yml.getString(questKey + ".timeType", "longTerm"); + if (cycle.equalsIgnoreCase("everyday")) { timeType = TimeType.EVERYDAY; - }else if(cycle.equalsIgnoreCase("weekly")){ + } else if (cycle.equalsIgnoreCase("weekly")) { timeType = TimeType.WEEKLY; - }else if(cycle.equalsIgnoreCase("longTerm")){ + } else if (cycle.equalsIgnoreCase("longTerm")) { timeType = TimeType.LONGTERM; } - this.name = yml.getString(questKey+".name"); - this.type = yml.getString(questKey+".type"); - this.target = yml.getString(questKey+".content.name"); - this.needAmount = yml.getInt(questKey+".content.amount"); - this.finish = yml.getStringList(questKey+".finish"); - this.description = yml.getStringList(questKey+".description"); + this.name = yml.getString(questKey + ".name"); + this.type = yml.getString(questKey + ".type"); + this.target = yml.getString(questKey + ".content.name"); + this.needAmount = yml.getInt(questKey + ".content.amount"); + this.finish = yml.getStringList(questKey + ".finish"); + this.description = yml.getStringList(questKey + ".description"); } public String getQuestKey() { @@ -65,9 +64,11 @@ public class QuestData { return description; } - public void sendFinishCommand(Player player){ - if(player == null){return;} - DemonAPI.ConsoleOutCommandList(player,getFinish()); + public void sendFinishCommand(Player player) { + if (player == null) { + return; + } + DemonAPI.ConsoleOutCommandList(player, getFinish()); } public List getFinish() { diff --git a/src/main/java/com/yaohun/questsystem/data/database/SqlManager.java b/src/main/java/com/yaohun/questsystem/data/database/SqlManager.java index 4441ab1..5747ac7 100644 --- a/src/main/java/com/yaohun/questsystem/data/database/SqlManager.java +++ b/src/main/java/com/yaohun/questsystem/data/database/SqlManager.java @@ -2,41 +2,34 @@ package com.yaohun.questsystem.data.database; import com.yaohun.questsystem.Main; import com.yaohun.questsystem.util.SqlUtil; -import org.bukkit.Bukkit; import java.sql.ResultSet; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; -import java.util.HashMap; public class SqlManager { - public String table = "quest_playerdata"; // 创建数据库表格格式 public void createTable() { // 数据库结构组成 // 玩家名(VARCHAR) 数据(VARCHAR) 数据保存时间(VARCHAR) - String s = "CREATE TABLE IF NOT EXISTS "+table+"(" + + String s = "CREATE TABLE IF NOT EXISTS " + table + "(" + " name VARCHAR(32) NOT NULL," + " data VARCHAR(8000) NOT NULL," + " savetime VARCHAR(256) NOT NULL" + ") ENGINE = InnoDB"; - getSQL().openConnection(); getSQL().updateSQL(s); - getSQL().closeConnection(); } // 创建玩家数据 - public void createPlayerData(String name){ - getSQL().openConnection(); + public void createPlayerData(String name) { boolean butt = true; - String select = "SELECT * FROM "+table+" WHERE name = '%name%'"; - try { - ResultSet resultSet = getSQL().querySQL(select.replace("%name%", name)); + String select = "SELECT * FROM " + table + " WHERE name = '%name%'"; + try (ResultSet resultSet = getSQL().querySQL(select.replace("%name%", name))) { while (resultSet.next()) { butt = false; } @@ -44,19 +37,18 @@ public class SqlManager { e.printStackTrace(); } // 若数据库没有name的数据则会创建数据 - if(butt) { + if (butt) { String set = "INSERT INTO " + table + " (`name`,`data`, `savetime`) " + "VALUES ('%name%','%data%', '%savetime%')"; set = set.replace("%name%", name); set = set.replace("%data%", ""); set = set.replace("%savetime%", getNowTimeString()); getSQL().updateSQL(set); - System.out.println("[调试 - 输出] "+name+" 数据库数据已创建."); + System.out.println("[调试 - 输出] " + name + " 数据库数据已创建."); } - getSQL().closeConnection(); } - public String getNowTimeString(){ + public String getNowTimeString() { // 获取当前时间戳 Instant now = Instant.now(); // 将时间戳转换为本地日期时间 @@ -68,34 +60,28 @@ public class SqlManager { // 获取玩家任务数据 public String getQuestData(String name) { - String select = "SELECT * FROM "+table+" WHERE name = '%name%'"; - try { - getSQL().openConnection(); - ResultSet resultSet = getSQL().querySQL(select.replace("%name%", name)); + String select = "SELECT * FROM " + table + " WHERE name = '%name%'"; + try (ResultSet resultSet = getSQL().querySQL(select.replace("%name%", name))) { while (resultSet.next()) { String string = resultSet.getString("data"); - if(string.length() >= 3) { + if (string.length() >= 3) { System.out.println("[调试 - 输出] " + name + " 数据: " + string); return string; } } } catch (Exception e) { e.printStackTrace(); - } finally { - getSQL().closeConnection(); } return null; } - public void SavePlayerData(String name,String jsonData){ - String set = "UPDATE `"+table+"` SET " + + public void SavePlayerData(String name, String jsonData) { + String set = "UPDATE `" + table + "` SET " + "`data` = '%data%'," + - "`savetime` = '%savetime%' WHERE `"+table+"`.`name` = '%name%'"; - getSQL().openConnection(); + "`savetime` = '%savetime%' WHERE `" + table + "`.`name` = '%name%'"; getSQL().updateSQL(set.replace("%name%", name). replace("%data%", jsonData). - replace("%savetime%",getNowTimeString())); - getSQL().closeConnection(); + replace("%savetime%", getNowTimeString())); } private SqlUtil getSQL() { diff --git a/src/main/java/com/yaohun/questsystem/listener/JoinEvent.java b/src/main/java/com/yaohun/questsystem/listener/JoinEvent.java index c0e0b4a..ba8c711 100644 --- a/src/main/java/com/yaohun/questsystem/listener/JoinEvent.java +++ b/src/main/java/com/yaohun/questsystem/listener/JoinEvent.java @@ -1,7 +1,6 @@ package com.yaohun.questsystem.listener; import com.yaohun.questsystem.Main; -import com.yaohun.questsystem.data.PlayerData; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -13,24 +12,24 @@ import org.bukkit.scheduler.BukkitRunnable; public class JoinEvent implements Listener { @EventHandler - public void onJoin(PlayerJoinEvent e){ + public void onJoin(PlayerJoinEvent e) { Player p = e.getPlayer(); new BukkitRunnable() { @Override public void run() { Main.dataManage.loadPlayerData(p); } - }.runTaskLater(Main.plugin,20L); + }.runTaskLater(Main.plugin, 20L); } @EventHandler - public void onQuit(PlayerQuitEvent e){ + public void onQuit(PlayerQuitEvent e) { Player p = e.getPlayer(); Main.dataManage.savePlayerData(p); } @EventHandler - public void onKick(PlayerKickEvent e){ + public void onKick(PlayerKickEvent e) { Player p = e.getPlayer(); Main.dataManage.savePlayerData(p); } diff --git a/src/main/java/com/yaohun/questsystem/manage/DataManage.java b/src/main/java/com/yaohun/questsystem/manage/DataManage.java index 252e013..e98b0a1 100644 --- a/src/main/java/com/yaohun/questsystem/manage/DataManage.java +++ b/src/main/java/com/yaohun/questsystem/manage/DataManage.java @@ -7,15 +7,15 @@ import com.google.gson.JsonObject; import com.yaohun.questsystem.Main; import com.yaohun.questsystem.data.PlayerData; import com.yaohun.questsystem.data.QuestData; -import com.yaohun.questsystem.util.TimeType; import me.Demon.DemonPlugin.DemonAPI; -import org.bukkit.Bukkit; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; import java.io.File; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Set; public class DataManage { @@ -24,19 +24,19 @@ public class DataManage { private ArrayList questDataArrayList = new ArrayList<>(); - public DataManage(){ - File file = new File(Main.plugin.getDataFolder(),"quest.yml"); + public DataManage() { + File file = new File(Main.plugin.getDataFolder(), "quest.yml"); FileConfiguration fileConfiguration = YamlConfiguration.loadConfiguration(file); HashMap dataHashMap = new HashMap<>(); - for (String questKey : fileConfiguration.getKeys(false)){ - QuestData questData = new QuestData(questKey,fileConfiguration); - dataHashMap.put(questKey,questData); - if(!questDataArrayList.contains(questData)) { + for (String questKey : fileConfiguration.getKeys(false)) { + QuestData questData = new QuestData(questKey, fileConfiguration); + dataHashMap.put(questKey, questData); + if (!questDataArrayList.contains(questData)) { questDataArrayList.add(questData); } } this.questDataMap = dataHashMap; - DemonAPI.sendConsoleMessage("§f[§a!§f] §f任务列表 §8> §6"+questDataMap.size()+" 个"); + DemonAPI.sendConsoleMessage("§f[§a!§f] §f任务列表 §8> §6" + questDataMap.size() + " 个"); } public ArrayList getQuestDataArrayList() { @@ -46,23 +46,24 @@ public class DataManage { public HashMap getQuestDataMap() { return questDataMap; } - public QuestData getQuestData(String questKey){ - if(this.questDataMap.get(questKey) == null){ + + public QuestData getQuestData(String questKey) { + if (this.questDataMap.get(questKey) == null) { return null; } return this.questDataMap.get(questKey); } /* - * 载入玩家数据 - * */ + * 载入玩家数据 + * */ public void loadPlayerData(Player player) { String name = player.getName(); String sqlJson = Main.sqlManager.getQuestData(name); // 创建 Gson 实例 Gson gson = new Gson(); // 解析 JSON 数据 - if (sqlJson != null && sqlJson.length() >= 3){ + if (sqlJson != null && sqlJson.length() >= 3) { JsonObject jsonObject = gson.fromJson(sqlJson, JsonObject.class); JsonArray questsArray = jsonObject.getAsJsonArray("quest"); // 创建 HashMap 来存储结果 @@ -84,39 +85,39 @@ public class DataManage { // 创建初始化数据 PlayerData playerData = new PlayerData(name, questData); this.dataHashMap.put(player, playerData); - }else{ + } else { // 判断玩家数据库中是否已存在数据 Main.sqlManager.createPlayerData(name); // 创建初始化数据 PlayerData playerData = new PlayerData(name); this.dataHashMap.put(player, playerData); } - player.sendMessage("§f[§e!§f]§7玩家 §6"+name+" §7任务数据已载入."); + player.sendMessage("§f[§e!§f]§7玩家 §6" + name + " §7任务数据已载入."); } /* - * 删除玩家数据 - * */ - public void deletePlayerData(Player player){ - if(this.dataHashMap.get(player) == null){ + * 删除玩家数据 + * */ + public void deletePlayerData(Player player) { + if (this.dataHashMap.get(player) == null) { return; } this.dataHashMap.remove(player); } /* - * 保存玩家数据 - * */ - public void savePlayerData(Player player){ - if(this.dataHashMap.get(player) == null){ + * 保存玩家数据 + * */ + public void savePlayerData(Player player) { + if (this.dataHashMap.get(player) == null) { return; } PlayerData data = this.dataHashMap.get(player); JsonObject jsonObject = new JsonObject(); JsonArray questArray = new JsonArray(); // 用于存储多个quest对象 - HashMap questAmount = data.getQuestAmount(); - for (QuestData quest : questAmount.keySet()){ - String questKey = quest.getQuestKey(); + HashMap questAmount = data.getQuestAmount(); + for (QuestData quest : questAmount.keySet()) { + String questKey = quest.getQuestKey(); int amount = data.getQuestAmount(quest); JsonObject questObject = new JsonObject(); questObject.addProperty("key", questKey); @@ -125,20 +126,22 @@ public class DataManage { } jsonObject.add("quest", questArray); String jsonString = jsonObject.toString(); - Main.sqlManager.SavePlayerData(player.getName(),jsonString); + Main.sqlManager.SavePlayerData(player.getName(), jsonString); } - public PlayerData getPlayerData(Player player){ + public PlayerData getPlayerData(Player player) { // 获取玩家是否在数据库中 - if(this.dataHashMap.get(player) == null){ + if (this.dataHashMap.get(player) == null) { String name = player.getName(); - this.dataHashMap.put(player,new PlayerData(name)); + this.dataHashMap.put(player, new PlayerData(name)); } return this.dataHashMap.get(player); } + public HashMap getDataHashMap() { return dataHashMap; } + public Set getQuests() { return this.dataHashMap.keySet(); } diff --git a/src/main/java/com/yaohun/questsystem/util/SqlUtil.java b/src/main/java/com/yaohun/questsystem/util/SqlUtil.java index d07fe83..a2065c9 100644 --- a/src/main/java/com/yaohun/questsystem/util/SqlUtil.java +++ b/src/main/java/com/yaohun/questsystem/util/SqlUtil.java @@ -33,9 +33,9 @@ public class SqlUtil extends MegumiSQL { public void openConnection() { try { String mcVersion = getMinecraftVersion(); - if(mcVersion.contains("1_20")){ + if (mcVersion.contains("1_20")) { Class.forName("com.mysql.cj.jdbc.Driver"); // 1.20.4的mysql路径 - }else{ + } else { Class.forName("com.mysql.jdbc.Driver"); // 1.18.2的mysql路径 } this.connection = DriverManager.getConnection("jdbc:mysql://" + this.hostname + ":" + this.port + "/" + this.database + "?useSSL=false", this.username, this.password); @@ -98,13 +98,11 @@ public class SqlUtil extends MegumiSQL { public boolean updateSQL(String data) { Connection conn; - if (checkConnection()) + if (checkConnection()) { conn = getConnection(); - else + } else return false; - Statement stat = null; - try { - stat = conn.createStatement(); + try (Statement stat = conn.createStatement()) { stat.executeUpdate(data); return true; } catch (SQLException e) { diff --git a/src/main/java/com/yaohun/questsystem/util/TimeType.java b/src/main/java/com/yaohun/questsystem/util/TimeType.java index 3eb10fa..e53a4cf 100644 --- a/src/main/java/com/yaohun/questsystem/util/TimeType.java +++ b/src/main/java/com/yaohun/questsystem/util/TimeType.java @@ -1,5 +1,5 @@ package com.yaohun.questsystem.util; public enum TimeType { - EVERYDAY,WEEKLY,LONGTERM + EVERYDAY, WEEKLY, LONGTERM }