refactor: extract proxy & fix bungee chaneel
Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
		@@ -1,4 +1,4 @@
 | 
				
			|||||||
import { injectable, inject, provideSingleton } from "@ccms/container"
 | 
					import { injectable } from "@ccms/container"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export namespace channel {
 | 
					export namespace channel {
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -63,156 +63,4 @@ export namespace channel {
 | 
				
			|||||||
         */
 | 
					         */
 | 
				
			||||||
        abstract unregister(channel: string, listener?: any): void
 | 
					        abstract unregister(channel: string, listener?: any): void
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    export namespace proxy {
 | 
					 | 
				
			||||||
        const CHANNEL_NAME = "BungeeCord"
 | 
					 | 
				
			||||||
        const ByteArrayOutputStream = Java.type('java.io.ByteArrayOutputStream')
 | 
					 | 
				
			||||||
        const DataOutputStream = Java.type('java.io.DataOutputStream')
 | 
					 | 
				
			||||||
        const ByteStreams = Java.type('com.google.common.io.ByteStreams')
 | 
					 | 
				
			||||||
        namespace bungeecord {
 | 
					 | 
				
			||||||
            export class SubChannelBuilder {
 | 
					 | 
				
			||||||
                private channel: Channel
 | 
					 | 
				
			||||||
                private player: any
 | 
					 | 
				
			||||||
                private params: string[]
 | 
					 | 
				
			||||||
                constructor(channel: Channel, player: any) {
 | 
					 | 
				
			||||||
                    this.channel = channel
 | 
					 | 
				
			||||||
                    this.player = player
 | 
					 | 
				
			||||||
                    this.params = []
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                connect(server: string) {
 | 
					 | 
				
			||||||
                    this.params.push("Connect")
 | 
					 | 
				
			||||||
                    this.params.push(server)
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                connectOther(player: string, server: string) {
 | 
					 | 
				
			||||||
                    this.params.push("ConnectOther")
 | 
					 | 
				
			||||||
                    this.params.push(player)
 | 
					 | 
				
			||||||
                    this.params.push(server)
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                ip() {
 | 
					 | 
				
			||||||
                    this.params.push("IP")
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                ipOther(player: string) {
 | 
					 | 
				
			||||||
                    this.params.push("IPOther")
 | 
					 | 
				
			||||||
                    this.params.push(player)
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                playerCount(server: string | "ALL") {
 | 
					 | 
				
			||||||
                    this.params.push("PlayerCount")
 | 
					 | 
				
			||||||
                    this.params.push(server)
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                /**
 | 
					 | 
				
			||||||
                 * Get a list of players connected on a certain server, or on ALL the servers.
 | 
					 | 
				
			||||||
                 * @param server count server
 | 
					 | 
				
			||||||
                 * Response:
 | 
					 | 
				
			||||||
                 * String server = in.readUTF(); // The name of the server you got the player list of, as given in args.  
 | 
					 | 
				
			||||||
                 * String[] playerList = in.readUTF().split(", ");
 | 
					 | 
				
			||||||
                 */
 | 
					 | 
				
			||||||
                playerList(server: string | "ALL") {
 | 
					 | 
				
			||||||
                    this.params.push("PlayerList")
 | 
					 | 
				
			||||||
                    this.params.push(server)
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                /**
 | 
					 | 
				
			||||||
                 * Get a list of server name strings, as defined in BungeeCord's config.yml
 | 
					 | 
				
			||||||
                 * Response:
 | 
					 | 
				
			||||||
                 * String[] serverList = in.readUTF().split(", ");
 | 
					 | 
				
			||||||
                 */
 | 
					 | 
				
			||||||
                getServers() {
 | 
					 | 
				
			||||||
                    this.params.push("GetServers")
 | 
					 | 
				
			||||||
                    return this.finalSend()
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                /**
 | 
					 | 
				
			||||||
                 * Get this server's name, as defined in BungeeCord's config.yml
 | 
					 | 
				
			||||||
                 */
 | 
					 | 
				
			||||||
                getServer() {
 | 
					 | 
				
			||||||
                    this.params.push("GetServer")
 | 
					 | 
				
			||||||
                    return this.finalSend()
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                broadcast(message: string) {
 | 
					 | 
				
			||||||
                    this.message("ALL", message)
 | 
					 | 
				
			||||||
                    return this.finalSend()
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                /**
 | 
					 | 
				
			||||||
                 * Send a message (as in, a chat message) to the specified player.
 | 
					 | 
				
			||||||
                 * @param player who reciver message
 | 
					 | 
				
			||||||
                 * @param message message content
 | 
					 | 
				
			||||||
                 */
 | 
					 | 
				
			||||||
                message(player: string | "ALL", message: string) {
 | 
					 | 
				
			||||||
                    this.params.push("Message")
 | 
					 | 
				
			||||||
                    this.params.push(player)
 | 
					 | 
				
			||||||
                    this.params.push(message)
 | 
					 | 
				
			||||||
                    return this.finalSend()
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                /**
 | 
					 | 
				
			||||||
                 * Send a raw message (as in, a chat message) to the specified player. The advantage of this method over Message is that you can include click events and hover events.
 | 
					 | 
				
			||||||
                 * @param player who reciver message
 | 
					 | 
				
			||||||
                 * @param message message content
 | 
					 | 
				
			||||||
                 */
 | 
					 | 
				
			||||||
                messageRaw(player: string | "ALL", json: string) {
 | 
					 | 
				
			||||||
                    this.params.push("MessageRaw")
 | 
					 | 
				
			||||||
                    this.params.push(player)
 | 
					 | 
				
			||||||
                    this.params.push(json)
 | 
					 | 
				
			||||||
                    return this.finalSend()
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                forwardAll(channel: string, data: any) {
 | 
					 | 
				
			||||||
                    this.forward("ALL", channel, data)
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                /**
 | 
					 | 
				
			||||||
                 * Send a custom plugin message to said server. This is one of the most useful channels ever.  
 | 
					 | 
				
			||||||
                 * Remember, the sending and receiving server(s) need to have a player online.
 | 
					 | 
				
			||||||
                 * @param server reciver
 | 
					 | 
				
			||||||
                 * @param channel channelName
 | 
					 | 
				
			||||||
                 * @param data data
 | 
					 | 
				
			||||||
                 */
 | 
					 | 
				
			||||||
                forward(server: string | "ALL", channel: string, data: any) {
 | 
					 | 
				
			||||||
                    this.params.push("Forward")
 | 
					 | 
				
			||||||
                    this.params.push(server)
 | 
					 | 
				
			||||||
                    this.params.push(channel)
 | 
					 | 
				
			||||||
                    this.params.push(typeof data === "string" ? data : JSON.stringify(data))
 | 
					 | 
				
			||||||
                    return this.finalSend()
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                /**
 | 
					 | 
				
			||||||
                 * Send a custom plugin message to said server. This is one of the most useful channels ever.  
 | 
					 | 
				
			||||||
                 * Remember, the sending and receiving server(s) need to have a player online.
 | 
					 | 
				
			||||||
                 * @param server reciver
 | 
					 | 
				
			||||||
                 * @param channel channelName
 | 
					 | 
				
			||||||
                 * @param data data
 | 
					 | 
				
			||||||
                 */
 | 
					 | 
				
			||||||
                forwardToPlayer(server: string | "ALL", channel: string, data: any) {
 | 
					 | 
				
			||||||
                    this.params.push("Forward")
 | 
					 | 
				
			||||||
                    this.params.push(server)
 | 
					 | 
				
			||||||
                    this.params.push(channel)
 | 
					 | 
				
			||||||
                    this.params.push(typeof data === "string" ? data : JSON.stringify(data))
 | 
					 | 
				
			||||||
                    return this.finalSend()
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                generic(...args: string[]) {
 | 
					 | 
				
			||||||
                    args && this.params.concat(...args)
 | 
					 | 
				
			||||||
                    return this.finalSend()
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                private send(...middlewares: ((out: java.io.DataOutputStream) => void)[]) {
 | 
					 | 
				
			||||||
                    let byteArray = new ByteArrayOutputStream()
 | 
					 | 
				
			||||||
                    let out = new DataOutputStream(byteArray)
 | 
					 | 
				
			||||||
                    this.params.forEach(utf => out.writeUTF(utf))
 | 
					 | 
				
			||||||
                    for (let middleware of middlewares) {
 | 
					 | 
				
			||||||
                        middleware(out)
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    this.channel.send(this.player, CHANNEL_NAME, byteArray.toByteArray())
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                private finalSend() {
 | 
					 | 
				
			||||||
                    return {
 | 
					 | 
				
			||||||
                        send: this.send.bind(this)
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        @provideSingleton(BungeeCord)
 | 
					 | 
				
			||||||
        export class BungeeCord {
 | 
					 | 
				
			||||||
            @inject(Channel)
 | 
					 | 
				
			||||||
            private channel: Channel
 | 
					 | 
				
			||||||
            /**
 | 
					 | 
				
			||||||
             * 获得代理
 | 
					 | 
				
			||||||
             * @param player 玩家
 | 
					 | 
				
			||||||
             */
 | 
					 | 
				
			||||||
            for(player: any): bungeecord.SubChannelBuilder {
 | 
					 | 
				
			||||||
                return new bungeecord.SubChannelBuilder(this.channel, player)
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,6 +3,7 @@ import "@ccms/nashorn"
 | 
				
			|||||||
export * from './chat'
 | 
					export * from './chat'
 | 
				
			||||||
export * from './task'
 | 
					export * from './task'
 | 
				
			||||||
export * from './event'
 | 
					export * from './event'
 | 
				
			||||||
 | 
					export * from './proxy'
 | 
				
			||||||
export * from './console'
 | 
					export * from './console'
 | 
				
			||||||
export * from './channel'
 | 
					export * from './channel'
 | 
				
			||||||
export * from './command'
 | 
					export * from './command'
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										160
									
								
								packages/api/src/proxy.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										160
									
								
								packages/api/src/proxy.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,160 @@
 | 
				
			|||||||
 | 
					import { provideSingleton, Autowired } from '@ccms/container'
 | 
				
			||||||
 | 
					import { channel } from './channel'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export namespace proxy {
 | 
				
			||||||
 | 
					    const ByteArrayOutputStream = Java.type('java.io.ByteArrayOutputStream')
 | 
				
			||||||
 | 
					    const DataOutputStream = Java.type('java.io.DataOutputStream')
 | 
				
			||||||
 | 
					    namespace bungeecord {
 | 
				
			||||||
 | 
					        const CHANNEL_NAME = "BungeeCord"
 | 
				
			||||||
 | 
					        export class SubChannelBuilder {
 | 
				
			||||||
 | 
					            private channel: channel.Channel
 | 
				
			||||||
 | 
					            private player: any
 | 
				
			||||||
 | 
					            private params: string[]
 | 
				
			||||||
 | 
					            constructor(channel: channel.Channel, player: any) {
 | 
				
			||||||
 | 
					                this.channel = channel
 | 
				
			||||||
 | 
					                this.player = player
 | 
				
			||||||
 | 
					                this.params = []
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            connect(server: string) {
 | 
				
			||||||
 | 
					                this.params.push("Connect")
 | 
				
			||||||
 | 
					                this.params.push(server)
 | 
				
			||||||
 | 
					                return this.finalSend()
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            connectOther(player: string, server: string) {
 | 
				
			||||||
 | 
					                this.params.push("ConnectOther")
 | 
				
			||||||
 | 
					                this.params.push(player)
 | 
				
			||||||
 | 
					                this.params.push(server)
 | 
				
			||||||
 | 
					                return this.finalSend()
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            ip() {
 | 
				
			||||||
 | 
					                this.params.push("IP")
 | 
				
			||||||
 | 
					                return this.finalSend()
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            ipOther(player: string) {
 | 
				
			||||||
 | 
					                this.params.push("IPOther")
 | 
				
			||||||
 | 
					                this.params.push(player)
 | 
				
			||||||
 | 
					                return this.finalSend()
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            playerCount(server: string | "ALL") {
 | 
				
			||||||
 | 
					                this.params.push("PlayerCount")
 | 
				
			||||||
 | 
					                this.params.push(server)
 | 
				
			||||||
 | 
					                return this.finalSend()
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            /**
 | 
				
			||||||
 | 
					             * Get a list of players connected on a certain server, or on ALL the servers.
 | 
				
			||||||
 | 
					             * @param server count server
 | 
				
			||||||
 | 
					             * Response:
 | 
				
			||||||
 | 
					             * String server = in.readUTF(); // The name of the server you got the player list of, as given in args.  
 | 
				
			||||||
 | 
					             * String[] playerList = in.readUTF().split(", ");
 | 
				
			||||||
 | 
					             */
 | 
				
			||||||
 | 
					            playerList(server: string | "ALL") {
 | 
				
			||||||
 | 
					                this.params.push("PlayerList")
 | 
				
			||||||
 | 
					                this.params.push(server)
 | 
				
			||||||
 | 
					                return this.finalSend()
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            /**
 | 
				
			||||||
 | 
					             * Get a list of server name strings, as defined in BungeeCord's config.yml
 | 
				
			||||||
 | 
					             * Response:
 | 
				
			||||||
 | 
					             * String[] serverList = in.readUTF().split(", ");
 | 
				
			||||||
 | 
					             */
 | 
				
			||||||
 | 
					            getServers() {
 | 
				
			||||||
 | 
					                this.params.push("GetServers")
 | 
				
			||||||
 | 
					                return this.finalSend()
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            /**
 | 
				
			||||||
 | 
					             * Get this server's name, as defined in BungeeCord's config.yml
 | 
				
			||||||
 | 
					             */
 | 
				
			||||||
 | 
					            getServer() {
 | 
				
			||||||
 | 
					                this.params.push("GetServer")
 | 
				
			||||||
 | 
					                return this.finalSend()
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            broadcast(message: string) {
 | 
				
			||||||
 | 
					                this.message("ALL", message)
 | 
				
			||||||
 | 
					                return this.finalSend()
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            /**
 | 
				
			||||||
 | 
					             * Send a message (as in, a chat message) to the specified player.
 | 
				
			||||||
 | 
					             * @param player who reciver message
 | 
				
			||||||
 | 
					             * @param message message content
 | 
				
			||||||
 | 
					             */
 | 
				
			||||||
 | 
					            message(player: string | "ALL", message: string) {
 | 
				
			||||||
 | 
					                this.params.push("Message")
 | 
				
			||||||
 | 
					                this.params.push(player)
 | 
				
			||||||
 | 
					                this.params.push(message)
 | 
				
			||||||
 | 
					                return this.finalSend()
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            /**
 | 
				
			||||||
 | 
					             * Send a raw message (as in, a chat message) to the specified player. The advantage of this method over Message is that you can include click events and hover events.
 | 
				
			||||||
 | 
					             * @param player who reciver message
 | 
				
			||||||
 | 
					             * @param message message content
 | 
				
			||||||
 | 
					             */
 | 
				
			||||||
 | 
					            messageRaw(player: string | "ALL", json: string) {
 | 
				
			||||||
 | 
					                this.params.push("MessageRaw")
 | 
				
			||||||
 | 
					                this.params.push(player)
 | 
				
			||||||
 | 
					                this.params.push(json)
 | 
				
			||||||
 | 
					                return this.finalSend()
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            forwardAll(channel: string, data: any) {
 | 
				
			||||||
 | 
					                return this.forward("ALL", channel, data)
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            /**
 | 
				
			||||||
 | 
					             * Send a custom plugin message to said server. This is one of the most useful channels ever.  
 | 
				
			||||||
 | 
					             * Remember, the sending and receiving server(s) need to have a player online.
 | 
				
			||||||
 | 
					             * @param server reciver
 | 
				
			||||||
 | 
					             * @param channel channelName
 | 
				
			||||||
 | 
					             * @param data data
 | 
				
			||||||
 | 
					             */
 | 
				
			||||||
 | 
					            forward(server: string | "ALL", channel: string, data: any) {
 | 
				
			||||||
 | 
					                this.params.push("Forward")
 | 
				
			||||||
 | 
					                this.params.push(server)
 | 
				
			||||||
 | 
					                this.params.push(channel)
 | 
				
			||||||
 | 
					                this.params.push(typeof data === "string" ? data : JSON.stringify(data))
 | 
				
			||||||
 | 
					                return this.finalSend()
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            /**
 | 
				
			||||||
 | 
					             * Send a custom plugin message to said server. This is one of the most useful channels ever.  
 | 
				
			||||||
 | 
					             * Remember, the sending and receiving server(s) need to have a player online.
 | 
				
			||||||
 | 
					             * @param server reciver
 | 
				
			||||||
 | 
					             * @param channel channelName
 | 
				
			||||||
 | 
					             * @param data data
 | 
				
			||||||
 | 
					             */
 | 
				
			||||||
 | 
					            forwardToPlayer(server: string | "ALL", channel: string, data: any) {
 | 
				
			||||||
 | 
					                this.params.push("Forward")
 | 
				
			||||||
 | 
					                this.params.push(server)
 | 
				
			||||||
 | 
					                this.params.push(channel)
 | 
				
			||||||
 | 
					                this.params.push(typeof data === "string" ? data : JSON.stringify(data))
 | 
				
			||||||
 | 
					                return this.finalSend()
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            generic(...args: string[]) {
 | 
				
			||||||
 | 
					                args && this.params.concat(...args)
 | 
				
			||||||
 | 
					                return this.finalSend()
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            private send(...middlewares: ((out: java.io.DataOutputStream) => void)[]) {
 | 
				
			||||||
 | 
					                let byteArray = new ByteArrayOutputStream()
 | 
				
			||||||
 | 
					                let out = new DataOutputStream(byteArray)
 | 
				
			||||||
 | 
					                this.params.forEach(utf => out.writeUTF(utf))
 | 
				
			||||||
 | 
					                for (let middleware of middlewares) {
 | 
				
			||||||
 | 
					                    middleware(out)
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                return this.channel.send(this.player, CHANNEL_NAME, byteArray.toByteArray())
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            private finalSend() {
 | 
				
			||||||
 | 
					                return {
 | 
				
			||||||
 | 
					                    send: this.send.bind(this)
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    @provideSingleton(BungeeCord)
 | 
				
			||||||
 | 
					    export class BungeeCord {
 | 
				
			||||||
 | 
					        @Autowired()
 | 
				
			||||||
 | 
					        private channel: channel.Channel
 | 
				
			||||||
 | 
					        /**
 | 
				
			||||||
 | 
					         * 获得代理
 | 
				
			||||||
 | 
					         * @param player 玩家
 | 
				
			||||||
 | 
					         */
 | 
				
			||||||
 | 
					        for(player: any): bungeecord.SubChannelBuilder {
 | 
				
			||||||
 | 
					            return new bungeecord.SubChannelBuilder(this.channel, player)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -6,20 +6,20 @@ const Bungee: net.md_5.bungee.api.ProxyServer = base.getInstance().getProxy()
 | 
				
			|||||||
@provideSingleton(channel.Channel)
 | 
					@provideSingleton(channel.Channel)
 | 
				
			||||||
export class BungeeChannel extends channel.Channel {
 | 
					export class BungeeChannel extends channel.Channel {
 | 
				
			||||||
    @inject(event.Event)
 | 
					    @inject(event.Event)
 | 
				
			||||||
    private eventManager: event.Event;
 | 
					    private eventManager: event.Event
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    send(player: any, channel: string, data: any) {
 | 
					    send(player: any, channel: string, data: any) {
 | 
				
			||||||
        throw new Error("Method not implemented.");
 | 
					        throw new Error("Method not implemented.")
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    register(channel: string, listener: channel.ChannelListener) {
 | 
					    register(channel: string, listener: channel.ChannelListener) {
 | 
				
			||||||
        Bungee.registerChannel(channel);
 | 
					        Bungee.registerChannel(channel)
 | 
				
			||||||
        // console.console('§6[§eWARN§6] §eMiaoScript channel in BungeeCord only register. you need self hanler PluginMessageEvent!')
 | 
					        // console.console('§6[§eWARN§6] §eMiaoScript channel in BungeeCord only register. you need self hanler PluginMessageEvent!')
 | 
				
			||||||
        return this.eventManager.listen({ description: { name: channel } }, "PluginMessageEvent", (event: net.md_5.bungee.api.event.PluginMessageEvent) => {
 | 
					        return this.eventManager.listen({ description: { name: channel } }, "PluginMessageEvent", (event: net.md_5.bungee.api.event.PluginMessageEvent) => {
 | 
				
			||||||
            listener(event.getData(), event)
 | 
					            listener(event.getData(), event)
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    unregister(channel: string, listener: any) {
 | 
					    unregister(channel: string, off: any) {
 | 
				
			||||||
        Bungee.unregisterChannel(channel);
 | 
					        Bungee.unregisterChannel(channel)
 | 
				
			||||||
        listener.off();
 | 
					        off()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user