mirror of
https://github.com/carm-outsource/TimeReward.git
synced 2024-09-19 19:25:49 +00:00
添加变量显示
This commit is contained in:
parent
e7f2b91af3
commit
95251ce02d
16
README.md
16
README.md
@ -39,6 +39,22 @@
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 插件变量
|
||||||
|
|
||||||
|
```text
|
||||||
|
# %TimeReward_time%
|
||||||
|
- 得到玩家总共的在线时长(秒)。
|
||||||
|
|
||||||
|
# %TimeReward_reward_<奖励ID>%
|
||||||
|
- 得到某个奖励配置的名称。
|
||||||
|
|
||||||
|
# %TimeReward_claimed_<奖励ID>%
|
||||||
|
- 得到玩家是否已经领取了某个奖励。
|
||||||
|
- * 也可以代表玩家是否可以领取某个奖励
|
||||||
|
- * 因为一旦可以领取就会自动领取,变为已领取状态
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
## 配置文件
|
## 配置文件
|
||||||
|
|
||||||
### 插件配置文件 ([config.yml](src/main/resources/config.yml))
|
### 插件配置文件 ([config.yml](src/main/resources/config.yml))
|
||||||
|
@ -2,8 +2,10 @@ package cc.carm.plugin.timereward;
|
|||||||
|
|
||||||
import cc.carm.lib.easyplugin.EasyPlugin;
|
import cc.carm.lib.easyplugin.EasyPlugin;
|
||||||
import cc.carm.lib.easyplugin.i18n.EasyPluginMessageProvider;
|
import cc.carm.lib.easyplugin.i18n.EasyPluginMessageProvider;
|
||||||
|
import cc.carm.lib.easyplugin.utils.MessageUtils;
|
||||||
import cc.carm.plugin.timereward.configuration.PluginConfig;
|
import cc.carm.plugin.timereward.configuration.PluginConfig;
|
||||||
import cc.carm.plugin.timereward.database.DataManager;
|
import cc.carm.plugin.timereward.database.DataManager;
|
||||||
|
import cc.carm.plugin.timereward.hooker.PAPIExpansion;
|
||||||
import cc.carm.plugin.timereward.listener.UserListener;
|
import cc.carm.plugin.timereward.listener.UserListener;
|
||||||
import cc.carm.plugin.timereward.manager.ConfigManager;
|
import cc.carm.plugin.timereward.manager.ConfigManager;
|
||||||
import cc.carm.plugin.timereward.manager.RewardManager;
|
import cc.carm.plugin.timereward.manager.RewardManager;
|
||||||
@ -57,6 +59,13 @@ public class Main extends EasyPlugin {
|
|||||||
|
|
||||||
log("注册指令...");
|
log("注册指令...");
|
||||||
|
|
||||||
|
if (MessageUtils.hasPlaceholderAPI()) {
|
||||||
|
log("注册变量...");
|
||||||
|
new PAPIExpansion(this).register();
|
||||||
|
} else {
|
||||||
|
log("检测到未安装PlaceholderAPI,跳过变量注册。");
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,88 @@
|
|||||||
|
package cc.carm.plugin.timereward.hooker;
|
||||||
|
|
||||||
|
import cc.carm.plugin.timereward.TimeRewardAPI;
|
||||||
|
import cc.carm.plugin.timereward.data.RewardContents;
|
||||||
|
import cc.carm.plugin.timereward.data.TimeRewardUser;
|
||||||
|
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class PAPIExpansion extends PlaceholderExpansion {
|
||||||
|
|
||||||
|
private static final List<String> PLACEHOLDERS = Arrays.asList(
|
||||||
|
"%TimeReward_time%",
|
||||||
|
"%TimeReward_reward_<奖励ID>%",
|
||||||
|
"%TimeReward_claimed_<奖励ID>%"
|
||||||
|
);
|
||||||
|
|
||||||
|
private final JavaPlugin plugin;
|
||||||
|
|
||||||
|
public PAPIExpansion(JavaPlugin plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull List<String> getPlaceholders() {
|
||||||
|
return PLACEHOLDERS;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canRegister() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull String getAuthor() {
|
||||||
|
return plugin.getDescription().getAuthors().toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull String getIdentifier() {
|
||||||
|
return plugin.getDescription().getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull String getVersion() {
|
||||||
|
return plugin.getDescription().getVersion();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onPlaceholderRequest(Player player, @NotNull String identifier) {
|
||||||
|
if (player == null) return "加载中...";
|
||||||
|
String[] args = identifier.split("_");
|
||||||
|
|
||||||
|
if (args.length < 1) {
|
||||||
|
return "Error Params";
|
||||||
|
}
|
||||||
|
|
||||||
|
TimeRewardUser user = TimeRewardAPI.getUserManager().get(player);
|
||||||
|
|
||||||
|
switch (args[0].toLowerCase()) {
|
||||||
|
case "time": {
|
||||||
|
return Long.toString(user.getAllSeconds());
|
||||||
|
}
|
||||||
|
case "reward": {
|
||||||
|
if (args.length < 2) return "请填写奖励ID";
|
||||||
|
String rewardName = args[1];
|
||||||
|
RewardContents contents = TimeRewardAPI.getRewardManager().getReward(rewardName);
|
||||||
|
if (contents == null) return "奖励不存在";
|
||||||
|
return contents.getDisplayName();
|
||||||
|
}
|
||||||
|
case "claimed": {
|
||||||
|
if (args.length < 2) return "请填写奖励ID";
|
||||||
|
return Boolean.toString(user.isClaimed(args[1]));
|
||||||
|
}
|
||||||
|
case "version": {
|
||||||
|
return getVersion();
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
return "参数错误";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -73,6 +73,10 @@ public class RewardManager {
|
|||||||
return new HashMap<>(getRewardsMap());
|
return new HashMap<>(getRewardsMap());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public RewardContents getReward(String rewardID) {
|
||||||
|
return getRewardsMap().get(rewardID);
|
||||||
|
}
|
||||||
|
|
||||||
protected HashMap<String, RewardContents> getRewardsMap() {
|
protected HashMap<String, RewardContents> getRewardsMap() {
|
||||||
return PluginConfig.REWARDS.getOptional().orElse(new HashMap<>());
|
return PluginConfig.REWARDS.getOptional().orElse(new HashMap<>());
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,7 @@ rewards:
|
|||||||
|
|
||||||
# 奖励的显示名称,可以是任意字符串
|
# 奖励的显示名称,可以是任意字符串
|
||||||
# 可以在commands 中使用 %(name) 来获取该奖励的名称
|
# 可以在commands 中使用 %(name) 来获取该奖励的名称
|
||||||
# 也可以使用变量 %TimeReward_<奖励ID>_name% 来获取对应奖励的名称
|
# 也可以使用变量 %TimeReward_reward_<奖励ID>% 来获取对应奖励的名称
|
||||||
name: "&f[初级奖励] &e总在线时长 2小时"
|
name: "&f[初级奖励] &e总在线时长 2小时"
|
||||||
|
|
||||||
# 该奖励自动领取需要的在线时长,单位为秒
|
# 该奖励自动领取需要的在线时长,单位为秒
|
||||||
|
Loading…
Reference in New Issue
Block a user