1
mirror of https://github.com/carm-outsource/TimeReward.git synced 2026-06-05 09:11:10 +08:00

feat(time): 尝试支持按日/周/月/总时长判别奖励。

This commit is contained in:
2023-09-02 17:14:00 +08:00
parent e1f4172a7f
commit dd80c5c9f7
24 changed files with 589 additions and 372 deletions
@@ -1,12 +1,11 @@
package cc.carm.plugin.timereward.command.sub;
import cc.carm.lib.easyplugin.command.SubCommand;
import cc.carm.plugin.timereward.Main;
import cc.carm.plugin.timereward.TimeRewardAPI;
import cc.carm.plugin.timereward.command.MainCommand;
import cc.carm.plugin.timereward.conf.PluginMessages;
import cc.carm.plugin.timereward.manager.RewardManager;
import cc.carm.plugin.timereward.data.RewardContents;
import cc.carm.plugin.timereward.manager.RewardManager;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
@@ -40,11 +39,8 @@ public class ClaimCommand extends SubCommand<MainCommand> {
return null;
}
Main.getInstance().getScheduler().run(() -> unclaimedRewards.forEach(
// 在同步进程中为玩家发放奖励
unclaimedReward -> manager.claimReward(player, unclaimedReward, false)
));
// 为玩家发放奖励
manager.claimRewards(player, unclaimedRewards, false);
} else {
RewardContents reward = manager.getReward(rewardID);
@@ -57,8 +53,16 @@ public class ClaimCommand extends SubCommand<MainCommand> {
PluginMessages.NOT_CLAIMABLE.send(sender, reward.getDisplayName());
return null;
}
Main.getInstance().getScheduler().run(() -> manager.claimReward(player, reward, false));
// 为玩家发放奖励
manager.claimReward(player, reward, false);
}
return null;
}
@Override
public boolean hasPermission(@NotNull CommandSender sender) {
return sender.hasPermission("TimeReward.claim");
}
}
@@ -25,12 +25,12 @@ public class ListCommand extends SubCommand<MainCommand> {
for (RewardContents reward : awards) {
if (reward.getPermission() != null) {
PluginMessages.LIST.OBJECT_PERM.send(sender,
reward.getRewardID(), reward.getDisplayName(),
reward.getRewardID(), reward.getDisplayName(), reward.getType().name(),
reward.getTime(), reward.getPermission()
);
} else {
PluginMessages.LIST.OBJECT.send(sender,
reward.getRewardID(), reward.getDisplayName(), reward.getTime()
reward.getRewardID(), reward.getDisplayName(), reward.getType().name(), reward.getTime()
);
}
}
@@ -24,6 +24,7 @@ public class ReloadCommand extends SubCommand<MainCommand> {
try {
Main.getInstance().getConfigProvider().reload();
Main.getInstance().getMessageProvider().reload();
Main.getInstance().getRewardProvider().reload();
PluginMessages.RELOAD.COMPLETE.send(sender, System.currentTimeMillis() - s1, TimeRewardAPI.getRewardManager().listRewards().size());
} catch (Exception e) {
@@ -5,13 +5,15 @@ import cc.carm.lib.easyplugin.command.SubCommand;
import cc.carm.plugin.timereward.TimeRewardAPI;
import cc.carm.plugin.timereward.command.MainCommand;
import cc.carm.plugin.timereward.conf.PluginMessages;
import cc.carm.plugin.timereward.data.UserData;
import cc.carm.plugin.timereward.data.IntervalType;
import cc.carm.plugin.timereward.user.UserRewardData;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
import java.time.format.DateTimeFormatter;
import java.util.List;
public class UserCommand extends SubCommand<MainCommand> {
@@ -30,11 +32,21 @@ public class UserCommand extends SubCommand<MainCommand> {
return null;
}
UserData user = TimeRewardAPI.getUserManager().getData(player);
UserRewardData user = TimeRewardAPI.getUserManager().get(player);
PluginMessages.USER_INFO.send(sender,
player.getName(), user.getAllSeconds(),
user.getClaimedRewards().size(), String.join("&8, &f", user.getClaimedRewards())
player.getName(),
user.getOnlineDuration(IntervalType.DAILY).getSeconds(),
user.getOnlineDuration(IntervalType.WEEKLY).getSeconds(),
user.getOnlineDuration(IntervalType.MONTHLY).getSeconds(),
user.getOnlineDuration(IntervalType.TOTAL).getSeconds(),
user.getClaimedRewards().size()
);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
user.getClaimedRewards().forEach((id, time) -> {
PluginMessages.USER_RECEIVED.send(sender, id, time.format(formatter));
});
return null;
}