From be4cd7ac7fe1229a4a14a643a0a1b126b1cb2782 Mon Sep 17 00:00:00 2001 From: yaohunya <1763917516@qq.com> Date: Fri, 11 Jul 2025 22:49:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 36 ++++++++ .../com/yaohun/levelreward/LevelReward.java | 57 ++++++++++++ .../yaohun/levelreward/data/PlayerData.java | 87 +++++++++++++++++++ .../com/yaohun/levelreward/gui/RewardGui.java | 7 ++ .../levelreward/manage/PlayerManager.java | 32 +++++++ .../Event/LevelRewardReceiveEvent.java | 40 +++++++++ src/main/resources/plugin.yml | 5 ++ 7 files changed, 264 insertions(+) create mode 100644 pom.xml create mode 100644 src/main/java/com/yaohun/levelreward/LevelReward.java create mode 100644 src/main/java/com/yaohun/levelreward/data/PlayerData.java create mode 100644 src/main/java/com/yaohun/levelreward/gui/RewardGui.java create mode 100644 src/main/java/com/yaohun/levelreward/manage/PlayerManager.java create mode 100644 src/main/java/me/Demon/DemonLevelReward/Event/LevelRewardReceiveEvent.java create mode 100644 src/main/resources/plugin.yml diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..02a463d --- /dev/null +++ b/pom.xml @@ -0,0 +1,36 @@ + + + 4.0.0 + + com.yaohun.guaji.AuGuaJi + DemonLevelReward + 1.0-SNAPSHOT + + + 8 + 8 + UTF-8 + + + + + public-rpg + https://repo.aurora-pixels.com/repository/public-rpg/ + + + + + + me.Demon.DemonPlugin + DemonAPI + 2.2.9 + + + org.spigotmc + spigot-api + 1.12.2 + + + \ No newline at end of file diff --git a/src/main/java/com/yaohun/levelreward/LevelReward.java b/src/main/java/com/yaohun/levelreward/LevelReward.java new file mode 100644 index 0000000..0cd3294 --- /dev/null +++ b/src/main/java/com/yaohun/levelreward/LevelReward.java @@ -0,0 +1,57 @@ +package com.yaohun.levelreward; + +import com.yaohun.levelreward.manage.PlayerManager; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.plugin.java.JavaPlugin; + +public class LevelReward extends JavaPlugin { + + private static LevelReward instance; + private static PlayerManager playerManager; + + + @Override + public void onEnable() { + instance = this; + playerManager = new PlayerManager(); + } + + @Override + public void onDisable() { + + } + + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if("open".equalsIgnoreCase(args[0])){ + return true; + } + if(!sender.isOp()) { + return true; + } + if (args.length == 0) { + sender.sendMessage(""); + sender.sendMessage("§e------- ======= §6等级成长礼包 §e======= -------"); + sender.sendMessage("§2/"+label+" add §e[方案] §2<玩家> §f- §2增加礼包"); + sender.sendMessage("§2/"+label+" reset §e[方案] §2<玩家> §f- §2重置礼包"); + sender.sendMessage("§2/"+label+" show §e[方案] §f- §2查看礼包内容"); + sender.sendMessage("§2/"+label+" edit §e[方案] §f- §2设置礼包内容"); + sender.sendMessage("§2/"+label+" list §f- §2查看礼包方案"); + sender.sendMessage("§2/"+label+" reload §f- §2重载配置文件"); + sender.sendMessage("§e------- ======= §6等级成长礼包 §e======= -------"); + sender.sendMessage(""); + return true; + } + return false; + } + + + public static LevelReward inst() { + return instance; + } + + public static PlayerManager getPlayerManager() { + return playerManager; + } +} diff --git a/src/main/java/com/yaohun/levelreward/data/PlayerData.java b/src/main/java/com/yaohun/levelreward/data/PlayerData.java new file mode 100644 index 0000000..2da7a26 --- /dev/null +++ b/src/main/java/com/yaohun/levelreward/data/PlayerData.java @@ -0,0 +1,87 @@ +package com.yaohun.levelreward.data; + +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; + +import java.io.File; +import java.io.IOException; +import java.util.List; + +/** + * @author Administrator + */ +public class PlayerData { + + /** + * 玩家数据管理类 + * 用于保存和管理玩家的游戏数据,特别是玩家的奖励信息 + */ + private final File file; + private final FileConfiguration configuration; + + /** + * 存储玩家奖励的列表 + */ + private final List rewardList; + + /** + * 构造玩家数据对象 + * + * @param playerName 玩家名称,用于标识和加载对应的玩家数据文件 + */ + public PlayerData(String playerName){ + // 初始化文件路径 + this.file = new File("plugins/AuData/LevelReward", playerName + ".yml"); + // 检查并创建玩家数据文件的父目录 + if(!file.getParentFile().exists()) { + file.getParentFile().mkdirs(); + this.configuration = YamlConfiguration.loadConfiguration(file); + } else { + this.configuration = YamlConfiguration.loadConfiguration(file); + } + // 从配置中加载玩家的奖励列表 + this.rewardList = this.configuration.getStringList("RewardList"); + } + + /** + * 保存玩家数据到文件 + * 将玩家的奖励列表保存到配置文件中,并写入磁盘 + */ + public void savePlayerData(){ + this.configuration.set("RewardList", rewardList); + try { + this.configuration.save(file); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + /** + * 检查玩家是否已有指定的奖励 + * + * @param rewardKey 奖励的唯一键值 + * @return 如果玩家已有指定的奖励,则返回true;否则返回false + */ + public boolean isHasReward(String rewardKey){ + return rewardList.contains(rewardKey); + } + + /** + * 给玩家添加新的奖励 + * + * @param rewardKey 新增奖励的唯一键值 + */ + public void addReward(String rewardKey){ + rewardList.add(rewardKey); + } + + /** + * 获取玩家的奖励列表 + * + * @return 返回包含玩家所有奖励键值的列表 + */ + public List getRewardList() { + return rewardList; + } + +} diff --git a/src/main/java/com/yaohun/levelreward/gui/RewardGui.java b/src/main/java/com/yaohun/levelreward/gui/RewardGui.java new file mode 100644 index 0000000..7e8e97d --- /dev/null +++ b/src/main/java/com/yaohun/levelreward/gui/RewardGui.java @@ -0,0 +1,7 @@ +package com.yaohun.levelreward.gui; + +import org.bukkit.event.Listener; + +public class RewardGui implements Listener { + +} diff --git a/src/main/java/com/yaohun/levelreward/manage/PlayerManager.java b/src/main/java/com/yaohun/levelreward/manage/PlayerManager.java new file mode 100644 index 0000000..a45f5db --- /dev/null +++ b/src/main/java/com/yaohun/levelreward/manage/PlayerManager.java @@ -0,0 +1,32 @@ +package com.yaohun.levelreward.manage; + +import com.yaohun.levelreward.data.PlayerData; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +import java.util.HashMap; + +public class PlayerManager { + + private final HashMap playerDataMap = new HashMap<>(); + + public PlayerManager() { + for (Player player : Bukkit.getOnlinePlayers()) { + String playerName = player.getName(); + playerDataMap.put(playerName,new PlayerData(playerName)); + } + } + + public void saveAllPlayerData() { + for (PlayerData playerData : playerDataMap.values()) { + playerData.savePlayerData(); + } + } + + public PlayerData getPlayerData(String playerName) { + if (!playerDataMap.containsKey(playerName)) { + playerDataMap.put(playerName,new PlayerData(playerName)); + } + return playerDataMap.get(playerName); + } +} diff --git a/src/main/java/me/Demon/DemonLevelReward/Event/LevelRewardReceiveEvent.java b/src/main/java/me/Demon/DemonLevelReward/Event/LevelRewardReceiveEvent.java new file mode 100644 index 0000000..fddf9eb --- /dev/null +++ b/src/main/java/me/Demon/DemonLevelReward/Event/LevelRewardReceiveEvent.java @@ -0,0 +1,40 @@ +package me.Demon.DemonLevelReward.Event; + +import org.bukkit.entity.Player; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class LevelRewardReceiveEvent extends Event { + + private static HandlerList handlers = new HandlerList(); + private Player player; + private String rewardKey; + private int levels; + + @Override + public HandlerList getHandlers() { + return handlers; + } + public static HandlerList getHandlerList() { + return handlers; + } + public LevelRewardReceiveEvent(Player player, String rewardKey, int levels) { + this.player = player; + this.rewardKey = rewardKey; + this.levels = levels; + } + + public Player getPlayer() { + return player; + } + + public String getRewardKey() { + return rewardKey; + } + + public int getLevels() { + return levels; + } + + +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..4653cba --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,5 @@ +name: DemonLevelReward +main: com.yaohun.levelreward.LevelReward +version: 2.0.6 +commands: + levelreward: \ No newline at end of file