feat: 完善功能
This commit is contained in:
@@ -13,6 +13,7 @@ import org.bukkit.Bukkit;
|
|||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
import org.bukkit.event.player.PlayerLoginEvent;
|
import org.bukkit.event.player.PlayerLoginEvent;
|
||||||
@@ -84,7 +85,7 @@ public class BallBukkitListener extends BallListener implements Listener {
|
|||||||
Bukkit.shutdown();
|
Bukkit.shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(ignoreCancelled = true)
|
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH)
|
||||||
public void onPlayerLogin(PlayerLoginEvent event) {
|
public void onPlayerLogin(PlayerLoginEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
Location location = playerToLocation.remove(player.getUniqueId());
|
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) {
|
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.ServerOfflineEvent;
|
||||||
import cn.hamster3.mc.plugin.ball.common.event.server.ServerOnlineEvent;
|
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.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.api.CoreAPI;
|
||||||
import cn.hamster3.mc.plugin.core.common.constant.CoreConstantObjects;
|
import cn.hamster3.mc.plugin.core.common.constant.CoreConstantObjects;
|
||||||
import cn.hamster3.mc.plugin.core.common.data.Message;
|
import cn.hamster3.mc.plugin.core.common.data.Message;
|
||||||
@@ -75,8 +76,8 @@ public abstract class BallAPI {
|
|||||||
|
|
||||||
addListener(new BallListener() {
|
addListener(new BallListener() {
|
||||||
@Override
|
@Override
|
||||||
public int getPriority() {
|
public ListenerPriority getPriority() {
|
||||||
return 0;
|
return ListenerPriority.LOW;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -662,7 +663,7 @@ public abstract class BallAPI {
|
|||||||
|
|
||||||
public void addListener(@NotNull BallListener listener) {
|
public void addListener(@NotNull BallListener listener) {
|
||||||
listeners.add(listener);
|
listeners.add(listener);
|
||||||
listeners.sort(Comparator.comparingInt(BallListener::getPriority));
|
listeners.sort(Comparator.comparing(BallListener::getPriority));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeListener(@NotNull BallListener listener) {
|
public void removeListener(@NotNull BallListener listener) {
|
||||||
|
@@ -109,33 +109,11 @@ public class BallChannelInboundHandler extends SimpleChannelInboundHandler<Strin
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case BallPlayerChatEvent.ACTION: {
|
case BallPlayerPreLoginEvent.ACTION: {
|
||||||
BallPlayerChatEvent event = CoreConstantObjects.GSON.fromJson(info.getContent(), BallPlayerChatEvent.class);
|
BallPlayerPreLoginEvent event = CoreConstantObjects.GSON.fromJson(info.getContent(), BallPlayerPreLoginEvent.class);
|
||||||
for (BallListener listener : BallAPI.getInstance().getListeners()) {
|
for (BallListener listener : BallAPI.getInstance().getListeners()) {
|
||||||
try {
|
try {
|
||||||
listener.onPlayerChat(event);
|
listener.onBallPlayerPreLogin(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);
|
|
||||||
} catch (Exception | Error e) {
|
} catch (Exception | Error e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@@ -153,17 +131,6 @@ public class BallChannelInboundHandler extends SimpleChannelInboundHandler<Strin
|
|||||||
}
|
}
|
||||||
break;
|
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: {
|
case BallPlayerPostLoginEvent.ACTION: {
|
||||||
BallPlayerPostLoginEvent event = CoreConstantObjects.GSON.fromJson(info.getContent(), BallPlayerPostLoginEvent.class);
|
BallPlayerPostLoginEvent event = CoreConstantObjects.GSON.fromJson(info.getContent(), BallPlayerPostLoginEvent.class);
|
||||||
for (BallListener listener : BallAPI.getInstance().getListeners()) {
|
for (BallListener listener : BallAPI.getInstance().getListeners()) {
|
||||||
@@ -186,11 +153,44 @@ public class BallChannelInboundHandler extends SimpleChannelInboundHandler<Strin
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case BallPlayerPreLoginEvent.ACTION: {
|
case BallPlayerConnectServerEvent.ACTION: {
|
||||||
BallPlayerPreLoginEvent event = CoreConstantObjects.GSON.fromJson(info.getContent(), BallPlayerPreLoginEvent.class);
|
BallPlayerConnectServerEvent event = CoreConstantObjects.GSON.fromJson(info.getContent(), BallPlayerConnectServerEvent.class);
|
||||||
for (BallListener listener : BallAPI.getInstance().getListeners()) {
|
for (BallListener listener : BallAPI.getInstance().getListeners()) {
|
||||||
try {
|
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) {
|
} catch (Exception | Error e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
@@ -7,7 +7,6 @@ import lombok.Data;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@@ -6,7 +6,6 @@ import lombok.Data;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@@ -8,6 +8,8 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 玩家准备进入子服
|
* 玩家准备进入子服
|
||||||
|
* <p>
|
||||||
|
* 仅在使用 velocity 代理端时才会触发这个事件
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
|
@@ -5,7 +5,7 @@ import lombok.Data;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 玩家准备连接到服务器
|
* 玩家准备连接到代理服务器
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
|
@@ -10,13 +10,11 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
public abstract class BallListener {
|
public abstract class BallListener {
|
||||||
/**
|
/**
|
||||||
* 该监听器的执行优先级
|
* 该监听器的执行优先级
|
||||||
* <p>
|
|
||||||
* 数字越低越先执行
|
|
||||||
*
|
*
|
||||||
* @return 优先级
|
* @return 优先级
|
||||||
*/
|
*/
|
||||||
public int getPriority() {
|
public ListenerPriority getPriority() {
|
||||||
return 100;
|
return ListenerPriority.NORMAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onBroadcastPlayerMessage(@NotNull BroadcastPlayerMessageEvent event) {
|
public void onBroadcastPlayerMessage(@NotNull BroadcastPlayerMessageEvent event) {
|
||||||
@@ -61,7 +59,7 @@ public abstract class BallListener {
|
|||||||
public void onBallPlayerLogout(@NotNull BallPlayerLogoutEvent event) {
|
public void onBallPlayerLogout(@NotNull BallPlayerLogoutEvent event) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onPlayerChat(@NotNull BallPlayerChatEvent event) {
|
public void onBallPlayerChat(@NotNull BallPlayerChatEvent event) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onServerOffline(@NotNull ServerOfflineEvent event) {
|
public void onServerOffline(@NotNull ServerOfflineEvent event) {
|
||||||
@@ -70,10 +68,10 @@ public abstract class BallListener {
|
|||||||
public void onServerOnline(@NotNull ServerOnlineEvent event) {
|
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() {
|
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