140 lines
5.5 KiB
Java
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;
|
|
}
|
|
}
|