feat: 完善功能
This commit is contained in:
@@ -13,6 +13,7 @@ import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||
import org.bukkit.event.player.PlayerLoginEvent;
|
||||
@@ -84,7 +85,7 @@ public class BallBukkitListener extends BallListener implements Listener {
|
||||
Bukkit.shutdown();
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH)
|
||||
public void onPlayerLogin(PlayerLoginEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
Location location = playerToLocation.remove(player.getUniqueId());
|
||||
@@ -93,7 +94,7 @@ public class BallBukkitListener extends BallListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH)
|
||||
public void onAsyncPlayerChat(AsyncPlayerChatEvent event) {
|
||||
|
||||
}
|
||||
|
@@ -13,6 +13,7 @@ import cn.hamster3.mc.plugin.ball.common.event.player.*;
|
||||
import cn.hamster3.mc.plugin.ball.common.event.server.ServerOfflineEvent;
|
||||
import cn.hamster3.mc.plugin.ball.common.event.server.ServerOnlineEvent;
|
||||
import cn.hamster3.mc.plugin.ball.common.listener.BallListener;
|
||||
import cn.hamster3.mc.plugin.ball.common.listener.ListenerPriority;
|
||||
import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
|
||||
import cn.hamster3.mc.plugin.core.common.constant.CoreConstantObjects;
|
||||
import cn.hamster3.mc.plugin.core.common.data.Message;
|
||||
@@ -75,8 +76,8 @@ public abstract class BallAPI {
|
||||
|
||||
addListener(new BallListener() {
|
||||
@Override
|
||||
public int getPriority() {
|
||||
return 0;
|
||||
public ListenerPriority getPriority() {
|
||||
return ListenerPriority.LOW;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -431,9 +432,9 @@ public abstract class BallAPI {
|
||||
/**
|
||||
* 给玩家发送一条消息
|
||||
*
|
||||
* @param receiver 玩家
|
||||
* @param message 消息
|
||||
* @param cache 当玩家不在线时,是否缓存消息等待玩家上线再发送
|
||||
* @param receiver 玩家
|
||||
* @param message 消息
|
||||
* @param cache 当玩家不在线时,是否缓存消息等待玩家上线再发送
|
||||
*/
|
||||
public void sendMessageToPlayer(@NotNull Set<UUID> receiver, @NotNull Message message, boolean cache) {
|
||||
for (UUID uuid : receiver) {
|
||||
@@ -662,7 +663,7 @@ public abstract class BallAPI {
|
||||
|
||||
public void addListener(@NotNull BallListener listener) {
|
||||
listeners.add(listener);
|
||||
listeners.sort(Comparator.comparingInt(BallListener::getPriority));
|
||||
listeners.sort(Comparator.comparing(BallListener::getPriority));
|
||||
}
|
||||
|
||||
public void removeListener(@NotNull BallListener listener) {
|
||||
|
@@ -109,33 +109,11 @@ public class BallChannelInboundHandler extends SimpleChannelInboundHandler<Strin
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BallPlayerChatEvent.ACTION: {
|
||||
BallPlayerChatEvent event = CoreConstantObjects.GSON.fromJson(info.getContent(), BallPlayerChatEvent.class);
|
||||
case BallPlayerPreLoginEvent.ACTION: {
|
||||
BallPlayerPreLoginEvent event = CoreConstantObjects.GSON.fromJson(info.getContent(), BallPlayerPreLoginEvent.class);
|
||||
for (BallListener listener : BallAPI.getInstance().getListeners()) {
|
||||
try {
|
||||
listener.onPlayerChat(event);
|
||||
} catch (Exception | Error e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BallPlayerConnectServerEvent.ACTION: {
|
||||
BallPlayerConnectServerEvent event = CoreConstantObjects.GSON.fromJson(info.getContent(), BallPlayerConnectServerEvent.class);
|
||||
for (BallListener listener : BallAPI.getInstance().getListeners()) {
|
||||
try {
|
||||
listener.onBallPlayerConnectServer(event);
|
||||
} catch (Exception | Error e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BallPlayerLogoutEvent.ACTION: {
|
||||
BallPlayerLogoutEvent event = CoreConstantObjects.GSON.fromJson(info.getContent(), BallPlayerLogoutEvent.class);
|
||||
for (BallListener listener : BallAPI.getInstance().getListeners()) {
|
||||
try {
|
||||
listener.onBallPlayerLogout(event);
|
||||
listener.onBallPlayerPreLogin(event);
|
||||
} catch (Exception | Error e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@@ -153,17 +131,6 @@ public class BallChannelInboundHandler extends SimpleChannelInboundHandler<Strin
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BallPlayerPostConnectServerEvent.ACTION: {
|
||||
BallPlayerPostConnectServerEvent event = CoreConstantObjects.GSON.fromJson(info.getContent(), BallPlayerPostConnectServerEvent.class);
|
||||
for (BallListener listener : BallAPI.getInstance().getListeners()) {
|
||||
try {
|
||||
listener.onBallPlayerPostConnectServer(event);
|
||||
} catch (Exception | Error e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BallPlayerPostLoginEvent.ACTION: {
|
||||
BallPlayerPostLoginEvent event = CoreConstantObjects.GSON.fromJson(info.getContent(), BallPlayerPostLoginEvent.class);
|
||||
for (BallListener listener : BallAPI.getInstance().getListeners()) {
|
||||
@@ -186,11 +153,44 @@ public class BallChannelInboundHandler extends SimpleChannelInboundHandler<Strin
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BallPlayerPreLoginEvent.ACTION: {
|
||||
BallPlayerPreLoginEvent event = CoreConstantObjects.GSON.fromJson(info.getContent(), BallPlayerPreLoginEvent.class);
|
||||
case BallPlayerConnectServerEvent.ACTION: {
|
||||
BallPlayerConnectServerEvent event = CoreConstantObjects.GSON.fromJson(info.getContent(), BallPlayerConnectServerEvent.class);
|
||||
for (BallListener listener : BallAPI.getInstance().getListeners()) {
|
||||
try {
|
||||
listener.onBallPlayerPreLogin(event);
|
||||
listener.onBallPlayerConnectServer(event);
|
||||
} catch (Exception | Error e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BallPlayerPostConnectServerEvent.ACTION: {
|
||||
BallPlayerPostConnectServerEvent event = CoreConstantObjects.GSON.fromJson(info.getContent(), BallPlayerPostConnectServerEvent.class);
|
||||
for (BallListener listener : BallAPI.getInstance().getListeners()) {
|
||||
try {
|
||||
listener.onBallPlayerPostConnectServer(event);
|
||||
} catch (Exception | Error e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BallPlayerLogoutEvent.ACTION: {
|
||||
BallPlayerLogoutEvent event = CoreConstantObjects.GSON.fromJson(info.getContent(), BallPlayerLogoutEvent.class);
|
||||
for (BallListener listener : BallAPI.getInstance().getListeners()) {
|
||||
try {
|
||||
listener.onBallPlayerLogout(event);
|
||||
} catch (Exception | Error e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BallPlayerChatEvent.ACTION: {
|
||||
BallPlayerChatEvent event = CoreConstantObjects.GSON.fromJson(info.getContent(), BallPlayerChatEvent.class);
|
||||
for (BallListener listener : BallAPI.getInstance().getListeners()) {
|
||||
try {
|
||||
listener.onBallPlayerChat(event);
|
||||
} catch (Exception | Error e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
@@ -7,7 +7,6 @@ import lombok.Data;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
|
@@ -6,7 +6,6 @@ import lombok.Data;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
|
@@ -8,6 +8,8 @@ import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* 玩家准备进入子服
|
||||
* <p>
|
||||
* 仅在使用 velocity 代理端时才会触发这个事件
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
|
@@ -5,7 +5,7 @@ import lombok.Data;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* 玩家准备连接到服务器
|
||||
* 玩家准备连接到代理服务器
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
|
@@ -10,13 +10,11 @@ import org.jetbrains.annotations.NotNull;
|
||||
public abstract class BallListener {
|
||||
/**
|
||||
* 该监听器的执行优先级
|
||||
* <p>
|
||||
* 数字越低越先执行
|
||||
*
|
||||
* @return 优先级
|
||||
*/
|
||||
public int getPriority() {
|
||||
return 100;
|
||||
public ListenerPriority getPriority() {
|
||||
return ListenerPriority.NORMAL;
|
||||
}
|
||||
|
||||
public void onBroadcastPlayerMessage(@NotNull BroadcastPlayerMessageEvent event) {
|
||||
@@ -61,7 +59,7 @@ public abstract class BallListener {
|
||||
public void onBallPlayerLogout(@NotNull BallPlayerLogoutEvent event) {
|
||||
}
|
||||
|
||||
public void onPlayerChat(@NotNull BallPlayerChatEvent event) {
|
||||
public void onBallPlayerChat(@NotNull BallPlayerChatEvent event) {
|
||||
}
|
||||
|
||||
public void onServerOffline(@NotNull ServerOfflineEvent event) {
|
||||
@@ -70,10 +68,10 @@ public abstract class BallListener {
|
||||
public void onServerOnline(@NotNull ServerOnlineEvent event) {
|
||||
}
|
||||
|
||||
public void onMessageReceived(@NotNull MessageInfo event) {
|
||||
public void onMessageSend(@NotNull MessageInfo event) {
|
||||
}
|
||||
|
||||
public void onMessageSend(@NotNull MessageInfo event) {
|
||||
public void onMessageReceived(@NotNull MessageInfo event) {
|
||||
}
|
||||
|
||||
public void onConnectInactive() {
|
||||
|
@@ -0,0 +1,45 @@
|
||||
package cn.hamster3.mc.plugin.ball.common.listener;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public enum ListenerPriority {
|
||||
|
||||
/**
|
||||
* Event call is of very low importance and should be ran first, to allow
|
||||
* other plugins to further customise the outcome
|
||||
*/
|
||||
LOWEST(0),
|
||||
/**
|
||||
* Event call is of low importance
|
||||
*/
|
||||
LOW(1),
|
||||
/**
|
||||
* Event call is neither important nor unimportant, and may be ran
|
||||
* normally
|
||||
*/
|
||||
NORMAL(2),
|
||||
/**
|
||||
* Event call is of high importance
|
||||
*/
|
||||
HIGH(3),
|
||||
/**
|
||||
* Event call is critical and must have the final say in what happens
|
||||
* to the event
|
||||
*/
|
||||
HIGHEST(4),
|
||||
/**
|
||||
* Event is listened to purely for monitoring the outcome of an event.
|
||||
* <p>
|
||||
* No modifications to the event should be made under this priority
|
||||
*/
|
||||
MONITOR(5);
|
||||
|
||||
private final int slot;
|
||||
|
||||
ListenerPriority(int slot) {
|
||||
this.slot = slot;
|
||||
}
|
||||
|
||||
public int getSlot() {
|
||||
return slot;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user