mirror of
				https://e.coding.net/circlecloud/MiaoBoard.git
				synced 2025-11-03 17:56:30 +00:00 
			
		
		
		
	@@ -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配置重载完毕!");
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										45
									
								
								src/main/java/pw/yumc/MiaoBoard/event/BodyUpdateEvent.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								src/main/java/pw/yumc/MiaoBoard/event/BodyUpdateEvent.java
									
									
									
									
									
										Normal 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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										41
									
								
								src/main/java/pw/yumc/MiaoBoard/event/TitleUpdateEvent.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								src/main/java/pw/yumc/MiaoBoard/event/TitleUpdateEvent.java
									
									
									
									
									
										Normal 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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -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());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										46
									
								
								src/main/java/pw/yumc/MiaoBoard/listener/SelfListener.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								src/main/java/pw/yumc/MiaoBoard/listener/SelfListener.java
									
									
									
									
									
										Normal 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;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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 {
 | 
			
		||||
 
 | 
			
		||||
@@ -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();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user