package com.yaohun.consumereward; import com.yaohun.consumereward.config.Config; import com.yaohun.consumereward.data.PlayerData; import com.yaohun.consumereward.gui.RewardGui; import com.yaohun.consumereward.manage.PlayerManager; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.TreeMap; public class ConsumeReward extends JavaPlugin { private static ConsumeReward instance; private static PlayerManager playerManager; @Override public void onEnable() { instance = this; saveDefaultConfig(); Config.reloadConfig(this); playerManager = new PlayerManager(); getServer().getPluginManager().registerEvents(new RewardGui(),this); } @Override public void onDisable() { super.onDisable(); } @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if(args.length == 1 && "open".equalsIgnoreCase(args[0])){ RewardGui.OpenGui((Player) sender); return true; } if(!sender.isOp()){ RewardGui.OpenGui((Player) sender); return true; } if(args.length == 0){ sender.sendMessage(""); sender.sendMessage("§e------- ======= §6累积消费礼包 §e======= -------"); sender.sendMessage("§2/"+label+" open §f- §2打开界面"); sender.sendMessage("§2/"+label+" reset §e[玩家名] §f- §2重置玩家数据"); sender.sendMessage("§2/"+label+" §e[奖励Key] §2<玩家名> §f- §2设置玩家领取状态"); sender.sendMessage("§2/"+label+" reload §f- §2重载配置文件"); sender.sendMessage("§2/"+label+" convert §f- §c导入旧版奖励领取数据"); sender.sendMessage("§e------- ======= §6累积消费礼包 §e======= -------"); sender.sendMessage(""); return true; } if("reload".equalsIgnoreCase(args[0])){ Config.reloadConfig(this); playerManager.saveAllPlayerData(); sender.sendMessage("[消费奖励] 配置文件已重载."); return true; } if("reset".equalsIgnoreCase(args[0])){ if(args.length == 1){ sender.sendMessage("[消费奖励] 缺少玩家名参数."); return true; } String playerName = args[1]; PlayerData playerData = playerManager.getPlayerData(playerName); playerData.carryOutRound(); sender.sendMessage("[消费奖励] 玩家 "+playerName+" 已完成重置."); return true; } if(args.length == 2) { String rewardKey = args[0]; if(Config.getRewardData(rewardKey) == null){ sender.sendMessage("[消费奖励] 奖励代号 "+rewardKey+" 不存在."); return true; } String playerName = args[1]; PlayerData playerData = playerManager.getPlayerData(playerName); if(playerData.isReceive(rewardKey)){ playerData.removeRewardReceive(rewardKey); sender.sendMessage("[消费奖励] 玩家: "+playerName+" 奖励: "+rewardKey+" [SET] NO"); } else { playerData.addRewardReceive(rewardKey); sender.sendMessage("[消费奖励] 玩家: "+playerName+" 奖励: "+rewardKey+" [SET] YES"); } return true; } if("convert".equalsIgnoreCase(args[0])){ // 转换后的 map: 玩家名 -> 参与的 key 列表 Map> playerToKeys = new TreeMap<>(); File file = new File("plugins/DemonRechargeOrConsume","config.yml"); FileConfiguration config = YamlConfiguration.loadConfiguration(file); ConfigurationSection section = config.getConfigurationSection("ClaimRecordData"); if(section == null){ return true; } for (String key : section.getKeys(false)){ String data = section.getString(key+".recordData"); // 去掉开头的 , 并按 , 拆分 String[] names = data.replaceFirst("^,", "").split(","); for (String name : names) { if (name.isEmpty()) { continue; } playerToKeys.computeIfAbsent(name, k -> new ArrayList<>()).add(key); } } // 打印结果 int count = 0; for (Map.Entry> entry : playerToKeys.entrySet()) { PlayerData playerData = playerManager.getPlayerData(entry.getKey()); playerData.setRewardList(entry.getValue()); playerData.savePlayerData(); count++; } sender.sendMessage("[消费奖励] 数据已进行转换 "+count+"名"); return true; } return false; } public static ConsumeReward inst() { return instance; } public static PlayerManager getPlayerManager() { return playerManager; } }