diff --git a/src/main/java/pw/yumc/MiaoBoard/MiaoBoard.java b/src/main/java/pw/yumc/MiaoBoard/MiaoBoard.java index 1177042..35dc247 100644 --- a/src/main/java/pw/yumc/MiaoBoard/MiaoBoard.java +++ b/src/main/java/pw/yumc/MiaoBoard/MiaoBoard.java @@ -1,12 +1,15 @@ package pw.yumc.MiaoBoard; +import java.net.MalformedURLException; + import org.bukkit.plugin.java.JavaPlugin; import cn.citycraft.PluginHelper.commands.HandlerCommand; import cn.citycraft.PluginHelper.commands.HandlerCommands; import cn.citycraft.PluginHelper.commands.InvokeCommandEvent; import cn.citycraft.PluginHelper.commands.InvokeSubCommand; -import pw.yumc.MiaoBoard.config.MiaoBoardConfig; +import cn.citycraft.PluginHelper.kit.PluginKit; +import cn.citycraft.PluginHelper.utils.VersionChecker; import pw.yumc.MiaoBoard.listener.PlayerListener; import pw.yumc.MiaoBoard.scoreboard.ScoreBoardManager; @@ -20,20 +23,25 @@ public class MiaoBoard extends JavaPlugin implements HandlerCommands { @Override public void onDisable() { - ScoreBoardManager.status = false; + ScoreBoardManager.getSidebarBoard().cancel(); } @Override public void onEnable() { new InvokeSubCommand(this, "mb").registerCommands(this); - new ScoreBoardManager().start(); - ScoreBoardManager.load(); new PlayerListener(); + try { + new VersionChecker(this, "aHR0cDovL2NpLnl1bWMucHcvam9iL01pYW9Cb2FyZC9sYXN0U3VjY2Vzc2Z1bEJ1aWxkL2FydGlmYWN0L3BvbS54bWw=".getBytes()); + ScoreBoardManager.start(); + } catch (final MalformedURLException e) { + PluginKit.disable("DON'T TRY TO CHANGE THE URL..."); + throw new IllegalAccessError("Access Check Failed..."); + } } @Override public void onLoad() { - MiaoBoardConfig.i(); + ScoreBoardManager.load(); } @HandlerCommand(name = "reload", description = "重新载入配置文件") diff --git a/src/main/java/pw/yumc/MiaoBoard/config/MiaoBoardConfig.java b/src/main/java/pw/yumc/MiaoBoard/config/MiaoBoardConfig.java index 86cd004..0a7d40d 100644 --- a/src/main/java/pw/yumc/MiaoBoard/config/MiaoBoardConfig.java +++ b/src/main/java/pw/yumc/MiaoBoard/config/MiaoBoardConfig.java @@ -3,20 +3,13 @@ package pw.yumc.MiaoBoard.config; import java.util.ArrayList; import java.util.List; -import cn.citycraft.PluginHelper.config.FileConfig; import cn.citycraft.PluginHelper.config.InjectConfig; -import cn.citycraft.PluginHelper.kit.PKit; -import pw.yumc.MiaoBoard.MiaoBoard; -public class MiaoBoardConfig extends InjectConfig { +public class MiaoBoardConfig extends InjectConfig { public static Integer UpdateTime; public static List DisableWorld = new ArrayList<>(); public transient static MiaoBoardConfig instance = new MiaoBoardConfig();; - public MiaoBoardConfig() { - super((MiaoBoard) PKit.i()); - } - public static MiaoBoardConfig i() { return instance; } @@ -24,8 +17,4 @@ public class MiaoBoardConfig extends InjectConfig { public static void reInject() { instance.reload(); } - - public FileConfig getConfig() { - return config; - } } diff --git a/src/main/java/pw/yumc/MiaoBoard/listener/PlayerListener.java b/src/main/java/pw/yumc/MiaoBoard/listener/PlayerListener.java index eb4160a..06838c3 100644 --- a/src/main/java/pw/yumc/MiaoBoard/listener/PlayerListener.java +++ b/src/main/java/pw/yumc/MiaoBoard/listener/PlayerListener.java @@ -24,21 +24,21 @@ public class PlayerListener implements Listener { @EventHandler public void onPlayerChangeWorld(final PlayerChangedWorldEvent e) { if (MiaoBoardConfig.DisableWorld.contains(e.getPlayer().getWorld().getName())) { - ScoreBoardManager.remove(e.getPlayer()); + ScoreBoardManager.getSidebarBoard().removeTarget(e.getPlayer()); } else { - ScoreBoardManager.add(e.getPlayer()); + ScoreBoardManager.getSidebarBoard().addTarget(e.getPlayer()); } } @EventHandler public void onPlayerJoin(final PlayerJoinEvent e) { if (!MiaoBoardConfig.DisableWorld.contains(e.getPlayer().getWorld().getName())) { - ScoreBoardManager.add(e.getPlayer()); + ScoreBoardManager.getSidebarBoard().addTarget(e.getPlayer()); } } @EventHandler public void onPlayerQuit(final PlayerQuitEvent e) { - ScoreBoardManager.remove(e.getPlayer()); + ScoreBoardManager.getSidebarBoard().removeTarget(e.getPlayer()); } } diff --git a/src/main/java/pw/yumc/MiaoBoard/scoreboard/ScoreBoardManager.java b/src/main/java/pw/yumc/MiaoBoard/scoreboard/ScoreBoardManager.java index f17d443..7358e30 100644 --- a/src/main/java/pw/yumc/MiaoBoard/scoreboard/ScoreBoardManager.java +++ b/src/main/java/pw/yumc/MiaoBoard/scoreboard/ScoreBoardManager.java @@ -10,6 +10,7 @@ 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 cn.citycraft.PluginHelper.utils.CompatibleUtil; import pw.yumc.MiaoBoard.config.MiaoBoardConfig; import pw.yumc.MiaoBoard.model.BoardModel; import pw.yumc.MiaoBoard.scoreboard.updater.BodyUpdater; @@ -20,28 +21,20 @@ import pw.yumc.MiaoBoard.scoreboard.updater.TitleUpdater; * @since 2016年6月24日 下午3:31:31 * @author 喵♂呜 */ -public class ScoreBoardManager implements Condition { - public static Condition cot; - public static boolean status; - public static SidebarBoard sbd; - public static FileConfig config; +public class ScoreBoardManager { + public static Status cot = new Status(); + public static SidebarBoard sbd = new SidebarBoard(PKit.i(), new BoardUpdateFunction(new TitleUpdater(), new BodyUpdater())); + public static FileConfig config = MiaoBoardConfig.i().getConfig();; public static List bms = new ArrayList<>(); - public ScoreBoardManager() { - status = true; - cot = this; - config = MiaoBoardConfig.i().getConfig(); - sbd = new SidebarBoard(PKit.i(), new BoardUpdateFunction(new TitleUpdater(), new BodyUpdater())); - } - - public static void add(final Player player) { - sbd.addTarget(player); - } - public static List getModels() { return bms; } + public static SidebarBoard getSidebarBoard() { + return sbd; + } + public static void load() { bms.clear(); for (final String bmn : config.getConfigurationSection("Boards").getKeys(false)) { @@ -50,20 +43,30 @@ public class ScoreBoardManager implements Condition { } public static void reload() { + sbd.cancel(); MiaoBoardConfig.reInject(); load(); + start(); } - public static void remove(final Player player) { - sbd.removeTarget(player); - } - - @Override - public boolean get() { - return status; - } - - public void start() { + public static void start() { sbd.update(cot, MiaoBoardConfig.UpdateTime); + for (final Player player : CompatibleUtil.getOnlinePlayers()) { + sbd.addTarget(player); + } + } + + public static class Status implements Condition { + private boolean status = true; + + @Override + public boolean get() { + return status; + } + + public Status set(final boolean status) { + this.status = status; + return this; + } } }