From b1cda6bc4e25c065e8391f862f8d3c7c1bbd2ee5 Mon Sep 17 00:00:00 2001 From: 502647092 Date: Tue, 5 Jul 2016 00:56:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=92=8C=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 502647092 --- .../java/pw/yumc/MiaoBoard/MiaoBoard.java | 22 +++++++++------ .../MiaoBoard/config/MiaoBoardConfig.java | 27 +++++++++++++++++++ .../MiaoBoard/listener/PlayerListener.java | 6 +++++ .../pw/yumc/MiaoBoard/model/BoardModel.java | 22 +++++++++++++++ .../scoreboard/ScoreBoardManager.java | 24 +++++++++++++++-- .../scoreboard/updater/BodyUpdater.java | 9 ++++++- .../scoreboard/updater/TitleUpdater.java | 3 ++- src/main/resources/config.yml | 9 +++++++ 8 files changed, 110 insertions(+), 12 deletions(-) create mode 100644 src/main/java/pw/yumc/MiaoBoard/config/MiaoBoardConfig.java create mode 100644 src/main/java/pw/yumc/MiaoBoard/model/BoardModel.java diff --git a/src/main/java/pw/yumc/MiaoBoard/MiaoBoard.java b/src/main/java/pw/yumc/MiaoBoard/MiaoBoard.java index 7c8bcb5..167fe9c 100644 --- a/src/main/java/pw/yumc/MiaoBoard/MiaoBoard.java +++ b/src/main/java/pw/yumc/MiaoBoard/MiaoBoard.java @@ -4,7 +4,11 @@ import org.bukkit.plugin.java.JavaPlugin; import cn.citycraft.PluginHelper.commands.HandlerCommand; import cn.citycraft.PluginHelper.commands.HandlerCommands; -import cn.citycraft.PluginHelper.config.FileConfig; +import cn.citycraft.PluginHelper.commands.InvokeCommandEvent; +import cn.citycraft.PluginHelper.commands.InvokeSubCommand; +import pw.yumc.MiaoBoard.config.MiaoBoardConfig; +import pw.yumc.MiaoBoard.listener.PlayerListener; +import pw.yumc.MiaoBoard.scoreboard.ScoreBoardManager; /** * 喵式记分板主类 @@ -13,25 +17,27 @@ import cn.citycraft.PluginHelper.config.FileConfig; * @author 喵♂呜 */ public class MiaoBoard extends JavaPlugin implements HandlerCommands { - private FileConfig config; @Override - public FileConfig getConfig() { - return config; + public void onDisable() { + ScoreBoardManager.status = false; } @Override public void onEnable() { - + new InvokeSubCommand(this, "mb").registerCommands(this); + new ScoreBoardManager().start(); + new PlayerListener(); } @Override public void onLoad() { - config = new FileConfig(this); + new MiaoBoardConfig(); } @HandlerCommand(name = "reload", description = "重新载入配置文件") - public void reload() { - config.reload(); + public void reload(final InvokeCommandEvent e) { + MiaoBoardConfig.reload(); + e.getSender().sendMessage("§a配置重载完毕!"); } } diff --git a/src/main/java/pw/yumc/MiaoBoard/config/MiaoBoardConfig.java b/src/main/java/pw/yumc/MiaoBoard/config/MiaoBoardConfig.java new file mode 100644 index 0000000..741dfcb --- /dev/null +++ b/src/main/java/pw/yumc/MiaoBoard/config/MiaoBoardConfig.java @@ -0,0 +1,27 @@ +package pw.yumc.MiaoBoard.config; + +import cn.citycraft.PluginHelper.config.FileConfig; +import cn.citycraft.PluginHelper.kit.PKit; +import pw.yumc.MiaoBoard.model.BoardModel; +import pw.yumc.MiaoBoard.scoreboard.ScoreBoardManager; + +public class MiaoBoardConfig { + public static FileConfig config; + + public MiaoBoardConfig() { + config = new FileConfig(PKit.i()); + } + + public static BoardModel getModel(final String path) { + return new BoardModel(config.getConfigurationSection(getRoot(path))); + } + + public static String getRoot(final String path) { + return "Boards." + path; + } + + public static void reload() { + config.reload(); + ScoreBoardManager.bm = getModel("default"); + } +} diff --git a/src/main/java/pw/yumc/MiaoBoard/listener/PlayerListener.java b/src/main/java/pw/yumc/MiaoBoard/listener/PlayerListener.java index bc61ee4..3f29e53 100644 --- a/src/main/java/pw/yumc/MiaoBoard/listener/PlayerListener.java +++ b/src/main/java/pw/yumc/MiaoBoard/listener/PlayerListener.java @@ -1,9 +1,11 @@ package pw.yumc.MiaoBoard.listener; +import org.bukkit.Bukkit; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; +import cn.citycraft.PluginHelper.kit.PKit; import pw.yumc.MiaoBoard.scoreboard.ScoreBoardManager; /** @@ -12,6 +14,10 @@ import pw.yumc.MiaoBoard.scoreboard.ScoreBoardManager; * @author 喵♂呜 */ public class PlayerListener implements Listener { + public PlayerListener() { + Bukkit.getPluginManager().registerEvents(this, PKit.i()); + } + public void onPlayerJoin(final PlayerJoinEvent e) { ScoreBoardManager.add(e.getPlayer()); } diff --git a/src/main/java/pw/yumc/MiaoBoard/model/BoardModel.java b/src/main/java/pw/yumc/MiaoBoard/model/BoardModel.java new file mode 100644 index 0000000..5e556d7 --- /dev/null +++ b/src/main/java/pw/yumc/MiaoBoard/model/BoardModel.java @@ -0,0 +1,22 @@ +package pw.yumc.MiaoBoard.model; + +import java.util.LinkedList; +import java.util.List; + +import org.bukkit.configuration.ConfigurationSection; + +public class BoardModel { + public String title; + public String permission; + public List lines = new LinkedList<>();; + + public BoardModel(final ConfigurationSection config) { + this(config.getString("title"), config.getString("permission"), config.getStringList("lines")); + } + + public BoardModel(final String title, final String permission, final List lines) { + this.title = title; + this.permission = permission; + this.lines = lines; + } +} diff --git a/src/main/java/pw/yumc/MiaoBoard/scoreboard/ScoreBoardManager.java b/src/main/java/pw/yumc/MiaoBoard/scoreboard/ScoreBoardManager.java index 131b04e..17059ae 100644 --- a/src/main/java/pw/yumc/MiaoBoard/scoreboard/ScoreBoardManager.java +++ b/src/main/java/pw/yumc/MiaoBoard/scoreboard/ScoreBoardManager.java @@ -4,7 +4,10 @@ import org.bukkit.entity.Player; import cn.citycraft.PluginHelper.kit.PKit; import cn.citycraft.PluginHelper.scoreboard.BoardUpdateFunction; +import cn.citycraft.PluginHelper.scoreboard.Condition; import cn.citycraft.PluginHelper.scoreboard.SidebarBoard; +import pw.yumc.MiaoBoard.config.MiaoBoardConfig; +import pw.yumc.MiaoBoard.model.BoardModel; import pw.yumc.MiaoBoard.scoreboard.updater.BodyUpdater; import pw.yumc.MiaoBoard.scoreboard.updater.TitleUpdater; @@ -13,10 +16,14 @@ import pw.yumc.MiaoBoard.scoreboard.updater.TitleUpdater; * @since 2016年6月24日 下午3:31:31 * @author 喵♂呜 */ -public class ScoreBoardManager { - static SidebarBoard sbd; +public class ScoreBoardManager implements Condition { + public static SidebarBoard sbd; + public static BoardModel bm; + public static boolean status; public ScoreBoardManager() { + status = true; + bm = MiaoBoardConfig.getModel("default"); sbd = new SidebarBoard(PKit.i(), new BoardUpdateFunction(new TitleUpdater(), new BodyUpdater())); } @@ -24,7 +31,20 @@ public class ScoreBoardManager { sbd.addTarget(player); } + public static BoardModel getModel() { + return bm; + } + public static void remove(final Player player) { sbd.removeTarget(player); } + + @Override + public boolean get() { + return status; + } + + public void start() { + sbd.update(this, 10); + } } diff --git a/src/main/java/pw/yumc/MiaoBoard/scoreboard/updater/BodyUpdater.java b/src/main/java/pw/yumc/MiaoBoard/scoreboard/updater/BodyUpdater.java index 50c4232..2d13bb7 100644 --- a/src/main/java/pw/yumc/MiaoBoard/scoreboard/updater/BodyUpdater.java +++ b/src/main/java/pw/yumc/MiaoBoard/scoreboard/updater/BodyUpdater.java @@ -1,10 +1,13 @@ package pw.yumc.MiaoBoard.scoreboard.updater; +import java.util.LinkedList; import java.util.List; import org.bukkit.entity.Player; import cn.citycraft.PluginHelper.callback.CallBackReturn; +import cn.citycraft.PluginHelper.pluginapi.PluginAPI; +import pw.yumc.MiaoBoard.scoreboard.ScoreBoardManager; /** * @@ -15,7 +18,11 @@ public class BodyUpdater extends CallBackReturn.One> { @Override public List run(final Player param) { - return null; + final List temp = new LinkedList<>(); + for (final String line : ScoreBoardManager.bm.lines) { + temp.add(PluginAPI.PlaceholderAPI(param, line)); + } + return temp; } } diff --git a/src/main/java/pw/yumc/MiaoBoard/scoreboard/updater/TitleUpdater.java b/src/main/java/pw/yumc/MiaoBoard/scoreboard/updater/TitleUpdater.java index 16c80c7..0bb7a3c 100644 --- a/src/main/java/pw/yumc/MiaoBoard/scoreboard/updater/TitleUpdater.java +++ b/src/main/java/pw/yumc/MiaoBoard/scoreboard/updater/TitleUpdater.java @@ -4,6 +4,7 @@ import org.bukkit.entity.Player; import cn.citycraft.PluginHelper.callback.CallBackReturn; import cn.citycraft.PluginHelper.pluginapi.PluginAPI; +import pw.yumc.MiaoBoard.scoreboard.ScoreBoardManager; /** * @@ -14,7 +15,7 @@ public class TitleUpdater extends CallBackReturn.One { @Override public String run(final Player param) { - return PluginAPI.PlaceholderAPI(param, param.getName()); + return PluginAPI.PlaceholderAPI(param, ScoreBoardManager.bm.title); } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 7999d4f..e0b5a5f 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,3 +1,12 @@ #关闭记分板的世界 DisableWorld: - WorldName +#记分板 +Boards: + #默认记分板 + default: + title: 标题 + permission: mb.default + lines: + - '这是第一行' + - '' \ No newline at end of file