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;
|
package cc.carm.plugin.commanditem.configuration;
|
||||||
|
|
||||||
|
|
||||||
|
import cc.carm.lib.easyplugin.configuration.language.EasyMessageList;
|
||||||
import cc.carm.lib.easyplugin.configuration.language.MessagesRoot;
|
import cc.carm.lib.easyplugin.configuration.language.MessagesRoot;
|
||||||
|
|
||||||
public class PluginMessages extends 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 UUID uuid;
|
||||||
|
|
||||||
@NotNull ItemSettings configuration;
|
@NotNull ItemSettings settings;
|
||||||
@NotNull ItemStack itemStack;
|
@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.uuid = uuid;
|
||||||
this.configuration = configuration;
|
this.settings = settings;
|
||||||
this.itemStack = itemStack;
|
this.itemStack = itemStack;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -22,8 +22,8 @@ public class CommandItem {
|
|||||||
return uuid;
|
return uuid;
|
||||||
}
|
}
|
||||||
|
|
||||||
public @NotNull ItemSettings getConfiguration() {
|
public @NotNull ItemSettings getSettings() {
|
||||||
return configuration;
|
return settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
public @NotNull ItemStack getItemStack() {
|
public @NotNull ItemStack getItemStack() {
|
||||||
|
@ -1,11 +1,16 @@
|
|||||||
package cc.carm.plugin.commanditem.item;
|
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.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.configuration.ConfigurationSection;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
public class ItemRestrictions {
|
public class ItemRestrictions {
|
||||||
|
|
||||||
long startTime;
|
long startTime;
|
||||||
@ -18,7 +23,6 @@ public class ItemRestrictions {
|
|||||||
public ItemRestrictions(long startTime, long endTime) {
|
public ItemRestrictions(long startTime, long endTime) {
|
||||||
this.startTime = startTime;
|
this.startTime = startTime;
|
||||||
this.endTime = endTime;
|
this.endTime = endTime;
|
||||||
Main.debugging("ItemRestrictions: " + startTime + " -> " + endTime);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -45,10 +49,41 @@ public class ItemRestrictions {
|
|||||||
|
|
||||||
public enum CheckResult {
|
public enum CheckResult {
|
||||||
|
|
||||||
AVAILABLE,
|
AVAILABLE(() -> null, (res) -> null),
|
||||||
INVALID,
|
|
||||||
NOT_STARTED,
|
INVALID(() -> PluginMessages.Restrictions.INVALID, (res) -> null),
|
||||||
EXPIRED;
|
|
||||||
|
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.CommandItemAPI;
|
||||||
import cc.carm.plugin.commanditem.configuration.PluginConfig;
|
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.CommandItem;
|
||||||
import cc.carm.plugin.commanditem.item.ItemActionGroup;
|
import cc.carm.plugin.commanditem.item.ItemActionGroup;
|
||||||
import cc.carm.plugin.commanditem.item.ItemRestrictions;
|
import cc.carm.plugin.commanditem.item.ItemRestrictions;
|
||||||
|
import cc.carm.plugin.commanditem.item.ItemSettings;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.Item;
|
import org.bukkit.entity.Item;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -42,16 +44,21 @@ public class ItemListener implements Listener {
|
|||||||
|
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
if (!isClickable(player.getUniqueId())) {
|
if (!isClickable(player.getUniqueId())) {
|
||||||
// TODO 给玩家发消息告诉他还在冷却
|
PluginMessages.COOLDOWN.send(player, getRemainSeconds(player.getUniqueId()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (commandItem.getConfiguration().checkRestrictions() != ItemRestrictions.CheckResult.AVAILABLE) {
|
ItemSettings settings = commandItem.getSettings();
|
||||||
// TODO 给玩家发消息告诉他还不能用
|
|
||||||
|
// 检查物品的相关使用限制是否满足要求
|
||||||
|
ItemRestrictions.CheckResult result = settings.getRestrictions().check();
|
||||||
|
if (result != ItemRestrictions.CheckResult.AVAILABLE) {
|
||||||
|
result.send(player, settings.getRestrictions()); // 发送提示
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemActionGroup actions = commandItem.getConfiguration().getPlayerActions(player);
|
// 获取玩家的对应操作组
|
||||||
|
ItemActionGroup actions = settings.getPlayerActions(player);
|
||||||
if (actions == null) return;
|
if (actions == null) return;
|
||||||
|
|
||||||
updateTime(player.getUniqueId());
|
updateTime(player.getUniqueId());
|
||||||
@ -116,5 +123,12 @@ public class ItemListener implements Listener {
|
|||||||
|| System.currentTimeMillis() - this.clickTime.get(uuid) > PluginConfig.CoolDown.TIME.get();
|
|| 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:
|
restrictions:
|
||||||
time: # 允许领取的时间范围
|
time: # 允许领取的时间范围, 格式为 “yyyy-MM-dd HH:mm:ss” (必须用 "" 或 ‘’ 包裹)
|
||||||
start: 2021-12-21 15:33:21 # 开始时间,若无该选项则不限制开始时间
|
start: "2021-12-21 15:33:21" # 开始时间,若无该选项则不限制开始时间
|
||||||
end: 2022-01-21 15:33:21 # 结束时间,若无该选项则不限制结束时间
|
end: "2022-01-21 15:33:21" # 结束时间,若无该选项则不限制结束时间
|
||||||
|
|
||||||
# 相关权限设定
|
# 相关权限设定
|
||||||
# 若玩家拥有配置的权限,则会执行权限对应的操作;
|
# 若玩家拥有配置的权限,则会执行权限对应的操作;
|
||||||
|
Loading…
Reference in New Issue
Block a user