AuConsumeReward/src/main/java/com/yaohun/consumereward/ConsumeReward.java
2025-07-13 05:48:35 +08:00

140 lines
5.5 KiB
Java

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<String, List<String>> 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<String, List<String>> 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;
}
}