mirror of
https://github.com/CarmJos/ScriptItems
synced 2024-09-19 21:35:50 +00:00
完善消息提示
This commit is contained in:
parent
b0b94a4b95
commit
a4ecbe216f
@ -1,9 +1,31 @@
|
||||
package cc.carm.plugin.commanditem.configuration;
|
||||
|
||||
|
||||
import cc.carm.lib.easyplugin.configuration.language.EasyMessageList;
|
||||
import cc.carm.lib.easyplugin.configuration.language.MessagesRoot;
|
||||
|
||||
public class PluginMessages extends MessagesRoot {
|
||||
|
||||
|
||||
public final static EasyMessageList COOLDOWN = EasyMessageList.builder()
|
||||
.contents("&f您需要等待 &c%(time)秒 &f才可再次使用指令物品。")
|
||||
.params("time").build();
|
||||
|
||||
public static class Restrictions {
|
||||
|
||||
public final static EasyMessageList INVALID = EasyMessageList.builder()
|
||||
.contents("&c&l抱歉!&f由于配置的时间限制错误,该物品目前暂不可用。")
|
||||
.build();
|
||||
|
||||
public final static EasyMessageList NOT_STARTED = EasyMessageList.builder()
|
||||
.contents("&f该物品目前还到可使用的时间,请在 &c%(time) &f后使用~")
|
||||
.params("time")
|
||||
.build();
|
||||
|
||||
public final static EasyMessageList EXPIRED = EasyMessageList.builder()
|
||||
.contents("&c&l抱歉!&f由于该物品已过最后使用期限,故无法继续使用。")
|
||||
.params("time")
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -9,12 +9,12 @@ public class CommandItem {
|
||||
|
||||
@NotNull UUID uuid;
|
||||
|
||||
@NotNull ItemSettings configuration;
|
||||
@NotNull ItemSettings settings;
|
||||
@NotNull ItemStack itemStack;
|
||||
|
||||
public CommandItem(@NotNull UUID uuid, @NotNull ItemSettings configuration, @NotNull ItemStack itemStack) {
|
||||
public CommandItem(@NotNull UUID uuid, @NotNull ItemSettings settings, @NotNull ItemStack itemStack) {
|
||||
this.uuid = uuid;
|
||||
this.configuration = configuration;
|
||||
this.settings = settings;
|
||||
this.itemStack = itemStack;
|
||||
}
|
||||
|
||||
@ -22,8 +22,8 @@ public class CommandItem {
|
||||
return uuid;
|
||||
}
|
||||
|
||||
public @NotNull ItemSettings getConfiguration() {
|
||||
return configuration;
|
||||
public @NotNull ItemSettings getSettings() {
|
||||
return settings;
|
||||
}
|
||||
|
||||
public @NotNull ItemStack getItemStack() {
|
||||
|
@ -1,11 +1,16 @@
|
||||
package cc.carm.plugin.commanditem.item;
|
||||
|
||||
import cc.carm.lib.easyplugin.configuration.language.EasyMessageList;
|
||||
import cc.carm.lib.easysql.api.util.TimeDateUtils;
|
||||
import cc.carm.plugin.commanditem.Main;
|
||||
import cc.carm.plugin.commanditem.configuration.PluginMessages;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class ItemRestrictions {
|
||||
|
||||
long startTime;
|
||||
@ -18,7 +23,6 @@ public class ItemRestrictions {
|
||||
public ItemRestrictions(long startTime, long endTime) {
|
||||
this.startTime = startTime;
|
||||
this.endTime = endTime;
|
||||
Main.debugging("ItemRestrictions: " + startTime + " -> " + endTime);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -45,10 +49,41 @@ public class ItemRestrictions {
|
||||
|
||||
public enum CheckResult {
|
||||
|
||||
AVAILABLE,
|
||||
INVALID,
|
||||
NOT_STARTED,
|
||||
EXPIRED;
|
||||
AVAILABLE(() -> null, (res) -> null),
|
||||
|
||||
INVALID(() -> PluginMessages.Restrictions.INVALID, (res) -> null),
|
||||
|
||||
NOT_STARTED(
|
||||
() -> PluginMessages.Restrictions.NOT_STARTED,
|
||||
(res) -> new Object[]{TimeDateUtils.getTimeString(res.getStartTime())}
|
||||
),
|
||||
|
||||
EXPIRED(
|
||||
() -> PluginMessages.Restrictions.EXPIRED,
|
||||
(res) -> new Object[]{TimeDateUtils.getTimeString(res.getEndTime())}
|
||||
);
|
||||
|
||||
Supplier<@Nullable EasyMessageList> message;
|
||||
Function<@NotNull ItemRestrictions, Object[]> params;
|
||||
|
||||
CheckResult(@NotNull Supplier<@Nullable EasyMessageList> message,
|
||||
@NotNull Function<@NotNull ItemRestrictions, @Nullable Object[]> params) {
|
||||
this.message = message;
|
||||
this.params = params;
|
||||
}
|
||||
|
||||
public Supplier<EasyMessageList> getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void send(Player player, ItemRestrictions restrictions) {
|
||||
Object[] params = this.params.apply(restrictions);
|
||||
if (params == null) {
|
||||
getMessage().get().send(player);
|
||||
} else {
|
||||
getMessage().get().send(player, params);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -2,9 +2,11 @@ package cc.carm.plugin.commanditem.listener;
|
||||
|
||||
import cc.carm.plugin.commanditem.CommandItemAPI;
|
||||
import cc.carm.plugin.commanditem.configuration.PluginConfig;
|
||||
import cc.carm.plugin.commanditem.configuration.PluginMessages;
|
||||
import cc.carm.plugin.commanditem.item.CommandItem;
|
||||
import cc.carm.plugin.commanditem.item.ItemActionGroup;
|
||||
import cc.carm.plugin.commanditem.item.ItemRestrictions;
|
||||
import cc.carm.plugin.commanditem.item.ItemSettings;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Item;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -42,16 +44,21 @@ public class ItemListener implements Listener {
|
||||
|
||||
Player player = event.getPlayer();
|
||||
if (!isClickable(player.getUniqueId())) {
|
||||
// TODO 给玩家发消息告诉他还在冷却
|
||||
PluginMessages.COOLDOWN.send(player, getRemainSeconds(player.getUniqueId()));
|
||||
return;
|
||||
}
|
||||
|
||||
if (commandItem.getConfiguration().checkRestrictions() != ItemRestrictions.CheckResult.AVAILABLE) {
|
||||
// TODO 给玩家发消息告诉他还不能用
|
||||
ItemSettings settings = commandItem.getSettings();
|
||||
|
||||
// 检查物品的相关使用限制是否满足要求
|
||||
ItemRestrictions.CheckResult result = settings.getRestrictions().check();
|
||||
if (result != ItemRestrictions.CheckResult.AVAILABLE) {
|
||||
result.send(player, settings.getRestrictions()); // 发送提示
|
||||
return;
|
||||
}
|
||||
|
||||
ItemActionGroup actions = commandItem.getConfiguration().getPlayerActions(player);
|
||||
// 获取玩家的对应操作组
|
||||
ItemActionGroup actions = settings.getPlayerActions(player);
|
||||
if (actions == null) return;
|
||||
|
||||
updateTime(player.getUniqueId());
|
||||
@ -116,5 +123,12 @@ public class ItemListener implements Listener {
|
||||
|| System.currentTimeMillis() - this.clickTime.get(uuid) > PluginConfig.CoolDown.TIME.get();
|
||||
}
|
||||
|
||||
public int getRemainSeconds(UUID uuid) {
|
||||
if (!this.clickTime.containsKey(uuid)) return 0;
|
||||
if (!PluginConfig.CoolDown.ENABLE.get()) return 0;
|
||||
long start = this.clickTime.get(uuid);
|
||||
return (int) ((PluginConfig.CoolDown.TIME.get() * 1000 - (System.currentTimeMillis() - start)) / 1000) + 1;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -30,9 +30,9 @@ functions:
|
||||
|
||||
# 限定相关配置
|
||||
restrictions:
|
||||
time: # 允许领取的时间范围
|
||||
start: 2021-12-21 15:33:21 # 开始时间,若无该选项则不限制开始时间
|
||||
end: 2022-01-21 15:33:21 # 结束时间,若无该选项则不限制结束时间
|
||||
time: # 允许领取的时间范围, 格式为 “yyyy-MM-dd HH:mm:ss” (必须用 "" 或 ‘’ 包裹)
|
||||
start: "2021-12-21 15:33:21" # 开始时间,若无该选项则不限制开始时间
|
||||
end: "2022-01-21 15:33:21" # 结束时间,若无该选项则不限制结束时间
|
||||
|
||||
# 相关权限设定
|
||||
# 若玩家拥有配置的权限,则会执行权限对应的操作;
|
||||
|
Loading…
Reference in New Issue
Block a user