1
0
mirror of https://e.coding.net/circlecloud/MiaoBoard.git synced 2025-11-03 17:56:30 +00:00

feat: 添加记分板更新事件

Signed-off-by: 502647092 <admin@yumc.pw>
This commit is contained in:
2017-03-09 09:25:49 +08:00
parent ab424ee25f
commit 76e567618d
15 changed files with 814 additions and 180 deletions

View File

@@ -5,6 +5,7 @@ import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import pw.yumc.MiaoBoard.listener.PlayerListener;
import pw.yumc.MiaoBoard.listener.SelfListener;
import pw.yumc.MiaoBoard.misc.Checker;
import pw.yumc.MiaoBoard.scoreboard.ScoreBoardManager;
import pw.yumc.YumCore.bukkit.Log;
@@ -30,7 +31,7 @@ public class MiaoBoard extends JavaPlugin implements Executor {
@Cmd(permission = "mb.toggle", executor = Cmd.Executor.PLAYER)
@Help("关闭记分板")
@Sort(2)
public void off(final Player player) {
public void off(Player player) {
Checker.offList.add(player.getName());
Log.sender(player, "§c记分板已关闭!");
}
@@ -38,7 +39,7 @@ public class MiaoBoard extends JavaPlugin implements Executor {
@Cmd(permission = "mb.toggle", executor = Cmd.Executor.PLAYER)
@Help("打开记分板")
@Sort(1)
public void on(final Player player) {
public void on(Player player) {
Checker.offList.remove(player.getName());
Log.sender(player, "§a记分板已打开!");
}
@@ -53,6 +54,7 @@ public class MiaoBoard extends JavaPlugin implements Executor {
scoreBoardManager.start();
new CommandSub("mb", this);
new PlayerListener();
new SelfListener();
}
@Override
@@ -62,7 +64,7 @@ public class MiaoBoard extends JavaPlugin implements Executor {
@Cmd(permission = "mb.reload")
@Help("重新载入配置文件")
public void reload(final CommandSender sender) {
public void reload(CommandSender sender) {
scoreBoardManager.reload();
Log.sender(sender, "§a配置重载完毕!");
}

View File

@@ -0,0 +1,45 @@
package pw.yumc.MiaoBoard.event;
import java.util.Collections;
import java.util.List;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
/**
* 记分板更新事件
* Created by 蒋天蓓 on 2017/3/7 0007.
*/
public class BodyUpdateEvent extends Event {
private Player player;
private List<String> body = Collections.emptyList();
public BodyUpdateEvent(Player player) {
this.player = player;
}
public void setBody(List<String> body) {
this.body = body;
}
public Player getPlayer() {
return player;
}
public List<String> getBody() {
return body;
}
private static HandlerList handlerList = new HandlerList();
public static HandlerList getHandlerList() {
return handlerList;
}
@Override
public HandlerList getHandlers() {
return handlerList;
}
}

View File

@@ -0,0 +1,41 @@
package pw.yumc.MiaoBoard.event;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
/**
* 记分板标题更新
* Created by 蒋天蓓 on 2017/3/7 0007.
*/
public class TitleUpdateEvent extends Event {
private Player player;
private String title;
public TitleUpdateEvent(Player player) {
this.player = player;
}
public void setTitle(String title) {
this.title = title;
}
public Player getPlayer() {
return player;
}
public String getTitle() {
return title;
}
private static HandlerList handlerList = new HandlerList();
public static HandlerList getHandlerList() {
return handlerList;
}
@Override
public HandlerList getHandlers() {
return handlerList;
}
}

View File

@@ -31,7 +31,7 @@ public class PlayerListener implements Listener {
}
@EventHandler
public void onPlayerChangeWorld(final PlayerChangedWorldEvent e) {
public void onPlayerChangeWorld(PlayerChangedWorldEvent e) {
if (MiaoBoardConfig.i().DisableWorld.contains(e.getPlayer().getWorld().getName())) {
manager.removeTarget(e.getPlayer());
} else {
@@ -40,12 +40,12 @@ public class PlayerListener implements Listener {
}
@EventHandler
public void onPlayerJoin(final PlayerJoinEvent e) {
public void onPlayerJoin(PlayerJoinEvent e) {
manager.addTarget(e.getPlayer());
}
@EventHandler
public void onPlayerQuit(final PlayerQuitEvent e) {
public void onPlayerQuit(PlayerQuitEvent e) {
manager.removeTarget(e.getPlayer());
}
}

View File

@@ -0,0 +1,46 @@
package pw.yumc.MiaoBoard.listener;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import pw.yumc.MiaoBoard.MiaoBoard;
import pw.yumc.MiaoBoard.event.BodyUpdateEvent;
import pw.yumc.MiaoBoard.event.TitleUpdateEvent;
import pw.yumc.MiaoBoard.misc.Checker;
import pw.yumc.MiaoBoard.misc.Replace;
import pw.yumc.MiaoBoard.model.BoardModel;
import pw.yumc.YumCore.bukkit.P;
/**
* 自身记分板监听类
* Created by 蒋天蓓 on 2017/3/7 0007.
*/
public class SelfListener implements Listener {
private MiaoBoard plugin = P.getPlugin();
public SelfListener() {
Bukkit.getPluginManager().registerEvents(this, plugin);
}
@EventHandler(priority = EventPriority.LOWEST)
public void onBodyUpdate(BodyUpdateEvent event) {
for (BoardModel bmodel : plugin.getScoreBoardManager().getModels()) {
if (Checker.$(event.getPlayer(), bmodel)) {
event.setBody(Replace.$(event.getPlayer(), bmodel.lines));
break;
}
}
}
@EventHandler(priority = EventPriority.LOWEST)
public void onTitleUpdate(TitleUpdateEvent event) {
for (BoardModel bmodel : plugin.getScoreBoardManager().getModels()) {
if (Checker.$(event.getPlayer(), bmodel)) {
event.setTitle(Replace.$(event.getPlayer(), bmodel.title));
break;
}
}
}
}

View File

@@ -31,21 +31,11 @@ public class BoardModel extends InjectConfigurationSection {
/**
* 自动载入配置
*
* @param name
* @param config
*/
public BoardModel(final ConfigurationSection config) {
public BoardModel(String name, final ConfigurationSection config) {
super(config);
}
/**
* 设置模型名称
*
* @param name
* 名称
* @return {@link BoardModel}
*/
public BoardModel setName(final String name) {
this.name = name;
return this;
}
}

View File

@@ -1,6 +1,5 @@
package pw.yumc.MiaoBoard.scoreboard;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
@@ -50,10 +49,8 @@ public class ScoreBoardManager {
public void load() {
bms.clear();
for (final String bmn : config.getConfigurationSection("Boards").getKeys(false)) {
bms.add(new BoardModel(config.getConfigurationSection("Boards." + bmn)).setName(bmn));
}
Collections.sort(bms, new BoardComparator());
config.getConfigurationSection("Boards").getKeys(false).forEach(bmn -> bms.add(new BoardModel(bmn, config.getConfigurationSection("Boards." + bmn))));
bms.sort(Comparator.comparing(o -> o.index));
}
public void reload() {
@@ -69,16 +66,7 @@ public class ScoreBoardManager {
public void start() {
sbd.update(cot.set(true), MiaoBoardConfig.i().UpdateTime);
for (final Player player : C.Player.getOnlinePlayers()) {
addTarget(player);
}
}
private class BoardComparator implements Comparator<BoardModel> {
@Override
public int compare(final BoardModel o1, final BoardModel o2) {
return o1.index.compareTo(o2.index);
}
C.Player.getOnlinePlayers().forEach(this::addTarget);
}
private class Status implements Condition {

View File

@@ -1,14 +1,12 @@
package pw.yumc.MiaoBoard.scoreboard.updater;
import java.util.Collections;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import pw.yumc.MiaoBoard.MiaoBoard;
import pw.yumc.MiaoBoard.misc.Checker;
import pw.yumc.MiaoBoard.misc.Replace;
import pw.yumc.MiaoBoard.model.BoardModel;
import pw.yumc.MiaoBoard.event.BodyUpdateEvent;
import pw.yumc.YumCore.bukkit.P;
import pw.yumc.YumCore.callback.CallBackReturn;
@@ -23,10 +21,9 @@ public class BodyUpdater extends CallBackReturn.One<Player, List<String>> {
@Override
public List<String> run(final Player param) {
for (BoardModel bmodel : plugin.getScoreBoardManager().getModels()) {
if (Checker.$(param, bmodel)) { return Replace.$(param, bmodel.lines); }
}
return Collections.emptyList();
BodyUpdateEvent event = new BodyUpdateEvent(param);
Bukkit.getPluginManager().callEvent(event);
return event.getBody();
}
}

View File

@@ -1,11 +1,10 @@
package pw.yumc.MiaoBoard.scoreboard.updater;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import pw.yumc.MiaoBoard.MiaoBoard;
import pw.yumc.MiaoBoard.misc.Checker;
import pw.yumc.MiaoBoard.misc.Replace;
import pw.yumc.MiaoBoard.model.BoardModel;
import pw.yumc.MiaoBoard.event.TitleUpdateEvent;
import pw.yumc.YumCore.bukkit.P;
import pw.yumc.YumCore.callback.CallBackReturn;
@@ -20,10 +19,9 @@ public class TitleUpdater extends CallBackReturn.One<Player, String> {
@Override
public String run(final Player param) {
for (BoardModel bmodel : plugin.getScoreBoardManager().getModels()) {
if (Checker.$(param, bmodel)) { return Replace.$(param, bmodel.title); }
}
return null;
TitleUpdateEvent event = new TitleUpdateEvent(param);
Bukkit.getPluginManager().callEvent(event);
return event.getTitle();
}
}