From 629aa7411e2034fb6f8cc6ae9d063a25bb95e601 Mon Sep 17 00:00:00 2001 From: yaohunya <1763917516@qq.com> Date: Sat, 12 Jul 2025 10:02:55 +0800 Subject: [PATCH] 1.2.1 --- .../yaohun/consumereward/data/PlayerData.java | 26 +++++++++++++++++++ .../yaohun/consumereward/gui/RewardGui.java | 17 +++++++----- .../yaohun/consumereward/util/StackUtil.java | 14 ++++++++-- src/main/resources/plugin.yml | 2 +- 4 files changed, 50 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/yaohun/consumereward/data/PlayerData.java b/src/main/java/com/yaohun/consumereward/data/PlayerData.java index 562d0d0..23a6a67 100644 --- a/src/main/java/com/yaohun/consumereward/data/PlayerData.java +++ b/src/main/java/com/yaohun/consumereward/data/PlayerData.java @@ -18,6 +18,9 @@ public class PlayerData { * 玩家数据类,用于管理玩家的奖励接收情况 */ private final String playerName; + private int roundAmount; + + private int recordConsume; /** * 存储玩家已接收的奖励列表 @@ -35,11 +38,34 @@ public class PlayerData { // 加载玩家的奖励数据文件 File file = new File("plugins/AuData/ConsumeReward", playerName + ".yml"); YamlConfiguration config = YamlConfiguration.loadConfiguration(file); + this.roundAmount = config.getInt("RoundAmount"); + this.recordConsume = config.getInt("RecordConsume"); List rewards = config.getStringList("RewardsReceive"); // 使用 LinkedHashSet 保持插入顺序,避免重复 this.rewardList = new LinkedHashSet<>(rewards); } + + public String getPlayerName() { + return playerName; + } + + public int getRoundAmount() { + return roundAmount; + } + + public void setRoundAmount(int roundAmount) { + this.roundAmount = roundAmount; + } + + public int getRecordConsume() { + return recordConsume; + } + + public void setRecordConsume(int recordConsume) { + this.recordConsume = recordConsume; + } + /** * 检查玩家是否已经接收了指定的奖励 * diff --git a/src/main/java/com/yaohun/consumereward/gui/RewardGui.java b/src/main/java/com/yaohun/consumereward/gui/RewardGui.java index 6bcfead..540638a 100644 --- a/src/main/java/com/yaohun/consumereward/gui/RewardGui.java +++ b/src/main/java/com/yaohun/consumereward/gui/RewardGui.java @@ -37,14 +37,18 @@ public class RewardGui implements Listener { Inventory inv = Bukkit.createInventory(null,54, Config.langData.getMessage("invTitle")); // 填充界面底部的玻璃物品 for (int i = 0;i<9;i++){ inv.setItem(i, DemonAPI.glass(DemonAPI.getRandomInt(7,1),"§r")); } - // 设置玩家数据展示位置 - inv.setItem(4, StackUtil.getDataInfo(playerName)); // 获取玩家管理器和玩家数据 PlayerManager playerManager = ConsumeReward.getPlayerManager(); PlayerData playerData = playerManager.getPlayerData(playerName); - // 根据配置文件设置奖励展示位置 - for (RewardData rewardData : Config.getRewardDataList()){ - inv.setItem(rewardData.getSlot(), StackUtil.getRewardGiftBox(playerData, rewardData)); + // 设置玩家数据展示位置 + inv.setItem(4, StackUtil.getDataInfo(playerData)); + if(playerData.getRewardList().size() >= 16){ + inv.setItem(22, Config.getItemStack("resetStack")); + } else { + // 根据配置文件设置奖励展示位置 + for (RewardData rewardData : Config.getRewardDataList()) { + inv.setItem(rewardData.getSlot(), StackUtil.getRewardGiftBox(playerData, rewardData)); + } } // 打开界面 player.openInventory(inv); @@ -119,7 +123,8 @@ public class RewardGui implements Listener { message = message.replace("{itemName}", DemonAPI.getItemName(stack)); Bukkit.broadcastMessage(message); // 发送奖励成功领取信息 - MessageUtil.sendMessageKey(player, "receivedSuccessfully", Sound.ENTITY_PLAYER_LEVELUP); + String msg = Config.langData.getMessage("receivedSuccessfully"); + MessageUtil.sendMessage(player, msg.replace("{itemName}", DemonAPI.getItemName(stack)), Sound.ENTITY_PLAYER_LEVELUP); } } } diff --git a/src/main/java/com/yaohun/consumereward/util/StackUtil.java b/src/main/java/com/yaohun/consumereward/util/StackUtil.java index eb16427..468b351 100644 --- a/src/main/java/com/yaohun/consumereward/util/StackUtil.java +++ b/src/main/java/com/yaohun/consumereward/util/StackUtil.java @@ -24,7 +24,7 @@ public class StackUtil { * @param playerName 玩家名 * @return 包含玩家消费数据的物品堆 */ - public static ItemStack getDataInfo(String playerName){ + public static ItemStack getDataInfo(PlayerData playerData){ // 获取配置中的数据信息物品堆模板 ItemStack stack = Config.getItemStack("dataInfo"); ItemMeta meta = stack.getItemMeta(); @@ -37,9 +37,19 @@ public class StackUtil { lore.set(i, line.replace("{name}", playerName)); continue; } + if(line.contains("{resetAmount}")){ + lore.set(i, line.replace("{resetAmount}", String.valueOf(playerData.getRoundAmount()))); + continue; + } + if(line.contains("{totalValue}")){ + int consumeValue = ConsumeAPI.getConsumeData(playerName, TimeType.ANNUAL); + lore.set(i, line.replace("{totalValue}", String.valueOf(consumeValue))); + continue; + } if(line.contains("{consume}")){ int consumeValue = ConsumeAPI.getConsumeData(playerName, TimeType.ANNUAL); - lore.set(i, line.replace("{consume}", String.valueOf(consumeValue))); + int recording = playerData.getRecordConsume(); + lore.set(i, line.replace("{consume}", String.valueOf(consumeValue - recording))); } } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index d1d1eab..afd1c5b 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: AuConsumeReward main: com.yaohun.consumereward.ConsumeReward -version: 1.2.0 +version: 1.2.1 depend: - DemonAPI commands: