diff --git a/pom.xml b/pom.xml
index fea6aea..048f6ad 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
pw.yumc
MiaoBoard
- 1.4.4
+ 1.4.5
MiaoBoard
${project.name}
diff --git a/src/main/java/pw/yumc/MiaoBoard/misc/Checker.java b/src/main/java/pw/yumc/MiaoBoard/misc/Checker.java
index 01a858e..6e85ddb 100644
--- a/src/main/java/pw/yumc/MiaoBoard/misc/Checker.java
+++ b/src/main/java/pw/yumc/MiaoBoard/misc/Checker.java
@@ -6,6 +6,11 @@ import pw.yumc.MiaoBoard.model.BoardModel;
public class Checker {
public static boolean $(final Player player, final BoardModel model) {
- return player.hasPermission(model.permission);
+ return player.hasPermission(model.permission) && dataCheck(model);
+ }
+
+ public static boolean dataCheck(final BoardModel model) {
+ final long now = System.currentTimeMillis();
+ return model.time_start != null && model.time_start.getTime() <= now && model.time_end != null && now <= model.time_end.getTime();
}
}
diff --git a/src/main/java/pw/yumc/MiaoBoard/misc/Replace.java b/src/main/java/pw/yumc/MiaoBoard/misc/Replace.java
index 5c05b12..cdf5d3f 100644
--- a/src/main/java/pw/yumc/MiaoBoard/misc/Replace.java
+++ b/src/main/java/pw/yumc/MiaoBoard/misc/Replace.java
@@ -1,6 +1,9 @@
package pw.yumc.MiaoBoard.misc;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
import java.util.Arrays;
+import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -26,6 +29,8 @@ public class Replace {
static class SimpleRelpace {
private static final Pattern PLACEHOLDER_PATTERN = Pattern.compile("[%]([^%]+)[%]");
+ private static final SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ private static final String EMPTY = "";
public static String $(final Player player, String text) {
final Matcher m = PLACEHOLDER_PATTERN.matcher(text);
@@ -44,6 +49,9 @@ public class Replace {
case "plugin":
value = plugin(player, ka[1]);
break;
+ case "time":
+ value = time(player, ka[1]);
+ break;
}
text = text.replace("%" + format + "%", Matcher.quoteReplacement(value));
}
@@ -59,6 +67,10 @@ public class Replace {
return String.valueOf(player.getLocation().getBlockY());
case "z":
return String.valueOf(player.getLocation().getBlockZ());
+ case "yaw":
+ return String.valueOf(Math.round(player.getLocation().getYaw() * 100) / 100);
+ case "pitch":
+ return String.valueOf(Math.round(player.getLocation().getPitch() * 100) / 100);
case "world":
return player.getWorld().getName();
case "name":
@@ -70,7 +82,7 @@ public class Replace {
case "max_health":
return String.valueOf(player.getMaxHealth());
default:
- return "";
+ return EMPTY;
}
}
@@ -83,7 +95,7 @@ public class Replace {
case "author":
return Arrays.toString(P.getDescription().getAuthors().toArray());
default:
- return "";
+ return EMPTY;
}
}
@@ -101,8 +113,39 @@ public class Replace {
case "ram_max":
return String.valueOf(runtime.maxMemory() / 1048576L);
default:
- return "";
+ return EMPTY;
}
}
+
+ private static String time(final Player player, final String key) {
+ final Date date = new Date();
+ if (key.startsWith("left") && key.contains("_")) {
+ final String time = key.split("_")[1].replace("`", " ");
+ String value = "解析错误";
+ try {
+ final long left = df.parse(time).getTime() - System.currentTimeMillis();
+ value = String.valueOf(left / 1000);
+ } catch (final ParseException e) {
+ }
+ return value;
+ }
+ switch (key) {
+ case "now":
+ return df.format(date);
+ case "year":
+ return String.valueOf(date.getYear() + 1900);
+ case "month":
+ return String.valueOf(date.getMonth() + 1);
+ case "day":
+ return String.valueOf(date.getDate());
+ case "hour":
+ return String.valueOf(date.getHours() + 1);
+ case "minute":
+ return String.valueOf(date.getMinutes());
+ case "second":
+ return String.valueOf(date.getSeconds());
+ }
+ return EMPTY;
+ }
}
}
diff --git a/src/main/java/pw/yumc/MiaoBoard/model/BoardModel.java b/src/main/java/pw/yumc/MiaoBoard/model/BoardModel.java
index 8963484..99a51de 100644
--- a/src/main/java/pw/yumc/MiaoBoard/model/BoardModel.java
+++ b/src/main/java/pw/yumc/MiaoBoard/model/BoardModel.java
@@ -1,5 +1,6 @@
package pw.yumc.MiaoBoard.model;
+import java.util.Date;
import java.util.List;
import org.bukkit.configuration.ConfigurationSection;
@@ -13,7 +14,10 @@ import cn.citycraft.PluginHelper.config.InjectConfigurationSection;
* @author 喵♂呜
*/
public class BoardModel extends InjectConfigurationSection {
- public int index;
+ public transient String name;
+ public Integer index;
+ public Date time_start;
+ public Date time_end;
public String title;
public String permission;
public List lines;
@@ -26,4 +30,16 @@ public class BoardModel extends InjectConfigurationSection {
public BoardModel(final ConfigurationSection config) {
super(config);
}
+
+ /**
+ * 设置模型名称
+ *
+ * @param name
+ * 名称
+ * @return {@link BoardModel}
+ */
+ public BoardModel setName(final String name) {
+ this.name = name;
+ return this;
+ }
}
diff --git a/src/main/java/pw/yumc/MiaoBoard/scoreboard/ScoreBoardManager.java b/src/main/java/pw/yumc/MiaoBoard/scoreboard/ScoreBoardManager.java
index 669db2d..6d1429c 100644
--- a/src/main/java/pw/yumc/MiaoBoard/scoreboard/ScoreBoardManager.java
+++ b/src/main/java/pw/yumc/MiaoBoard/scoreboard/ScoreBoardManager.java
@@ -1,8 +1,8 @@
package pw.yumc.MiaoBoard.scoreboard;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
+import java.util.LinkedList;
import java.util.List;
import org.bukkit.entity.Player;
@@ -28,7 +28,7 @@ public class ScoreBoardManager {
public static Status cot = new Status();
public static SidebarBoard sbd = new SidebarBoard(P.instance, new BoardUpdateFunction(new TitleUpdater(), new BodyUpdater()));
public static FileConfig config = MiaoBoardConfig.i().getConfig();;
- public static List bms = new ArrayList<>();
+ public static List bms = new LinkedList<>();
public static List getModels() {
return bms;
@@ -41,7 +41,7 @@ public class ScoreBoardManager {
public static void load() {
bms.clear();
for (final String bmn : config.getConfigurationSection("Boards").getKeys(false)) {
- bms.add(new BoardModel(config.getConfigurationSection("Boards." + bmn)));
+ bms.add(new BoardModel(config.getConfigurationSection("Boards." + bmn)).setName(bmn));
}
Collections.sort(bms, new BoardComparator());
}
@@ -54,7 +54,7 @@ public class ScoreBoardManager {
}
public static void start() {
- sbd.update(cot, MiaoBoardConfig.UpdateTime);
+ sbd.update(cot.set(true), MiaoBoardConfig.UpdateTime);
for (final Player player : C.Player.getOnlinePlayers()) {
sbd.addTarget(player);
}
@@ -63,7 +63,7 @@ public class ScoreBoardManager {
private static class BoardComparator implements Comparator {
@Override
public int compare(final BoardModel o1, final BoardModel o2) {
- return o2.index > o1.index ? 1 : 0;
+ return o1.index.compareTo(o2.index);
}
}
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index 6a5c843..aaf16b6 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -10,13 +10,19 @@ DisableWorld:
Boards:
#默认记分板
default:
- #记分板顺序(将按照从小到大依次检测 比如 1-5 优先检测 1 符合则显示 不符合 检测 2 ...)
+ #记分板顺序(将按照从小到大依次检测 比如 1-50 优先检测 1 符合则显示 不符合 检测 2 ...)
index: 50
+ #显示时间(格式为yyyy-MM-dd HH:mm:ss)
+ time:
+ start: '2016-01-01 00:00:00'
+ end: '2020-01-01 00:00:00'
#记分板标题
- title: '记分板简介'
+ title: '喵式记分板简介'
#记分板权限
permission: mb.default
- #记分板内容(不得超过38个字符 包括颜色字符 超过部分自动截取)
+ #记分板内容
+ #注意 不得超过38个字符 包括颜色字符 超过部分自动截取
+ #注意 不得超过15行 超出部分 自动忽略
lines:
- '&6插件名称: &a%plugin_name%'
- '&7------------------------------'
@@ -28,5 +34,8 @@ Boards:
- '&7------------------------------'
- '&6您所在的位置: &b%player_world% &a%player_x%,%player_y%,%player_z%'
- '&7------------------------------'
+ - '&6您所在的角度: &bYaw &a%player_yaw% &bPitch &a%player_pitch%'
+ - '&7------------------------------'
- '&6服务器使用内存: &a%server_ram_used%/%server_ram_total%'
- - '&7------------------------------'
\ No newline at end of file
+ - '&7------------------------------'
+ - '&6离2017年还剩: &a%time_left_2017-01-01`00:00:00%秒'
\ No newline at end of file