1
mirror of https://github.com/carm-outsource/TimeReward.git synced 2026-06-04 15:28:16 +08:00

feat(auto): 支持针对单间物品的自动领取配置以支持”按时提醒“功能。

This commit is contained in:
2023-04-06 19:59:46 +08:00
parent 7e598d1912
commit 6585f7f21d
5 changed files with 29 additions and 37 deletions
@@ -3,7 +3,6 @@ package cc.carm.plugin.timereward.manager;
import cc.carm.lib.easyplugin.utils.MessageUtils;
import cc.carm.plugin.timereward.Main;
import cc.carm.plugin.timereward.TimeRewardAPI;
import cc.carm.plugin.timereward.conf.FunctionConfig;
import cc.carm.plugin.timereward.conf.PluginConfig;
import cc.carm.plugin.timereward.storage.RewardContents;
import cc.carm.plugin.timereward.storage.UserData;
@@ -27,17 +26,18 @@ public class RewardManager {
this.runnable = new BukkitRunnable() {
@Override
public void run() {
if (!FunctionConfig.AUTO_CLAIM.getNotNull()) return;
if (Bukkit.getOnlinePlayers().isEmpty()) return;
for (Player player : Bukkit.getOnlinePlayers()) {
List<RewardContents> unclaimedRewards = getUnclaimedRewards(player);
if (unclaimedRewards.isEmpty()) continue;
List<RewardContents> rewards = getUnclaimedRewards(player).stream()
.filter(RewardContents::isAutoClaimed)
.collect(Collectors.toList());
if (rewards.isEmpty()) continue;
main.getScheduler().run(() -> unclaimedRewards.forEach(
// 在同步进程中为玩家发放奖励
unclaimedReward -> claimReward(player, unclaimedReward, false)
));
main.getScheduler().run(() -> rewards.forEach(r -> {
// 在同步进程中为玩家发放奖励
claimReward(player, r, true); // 二次检查避免重复发奖
}));
}
}
};
@@ -68,7 +68,6 @@ public class RewardManager {
.collect(Collectors.toList());
}
public boolean isClaimable(Player player, RewardContents reward) {
UserData user = TimeRewardAPI.getUserManager().getData(player);
return !user.isClaimed(reward.getRewardID()) // 未曾领取