P2P-Develop/PeyangSuperbAntiCheat

View on GitHub
src/main/java/ml/peya/plugins/BungeeProxy/Events.java

Summary

Maintainability
A
0 mins
Test Coverage
package ml.peya.plugins.BungeeProxy;

import com.google.common.io.ByteStreams;
import net.md_5.bungee.api.config.ServerInfo;
import net.md_5.bungee.api.connection.Server;
import net.md_5.bungee.api.event.PluginMessageEvent;
import net.md_5.bungee.api.event.ServerConnectedEvent;
import net.md_5.bungee.api.event.ServerDisconnectEvent;
import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.event.EventHandler;

import static ml.peya.plugins.Variables.bungeeChannel;
import static ml.peya.plugins.Variables.bungeeCommand;
import static ml.peya.plugins.Variables.logger;

/**
 * Bungeecordプロキシのサーバーから受け取るデータに基づくイベントを管理します。
 */
public class Events implements Listener
{
    /**
     * プラグインメッセージをサーバーから受け取った時の処理。
     *
     * @param e イベントハンドラ引数。
     */
    @EventHandler
    public void onPluginMessage(PluginMessageEvent e)
    {
        if (!e.getTag().equals(bungeeChannel) || !(e.getSender() instanceof Server))
            return;

        bungeeCommand.runCommand(ByteStreams.newDataInput(e.getData()).readUTF(), ((Server) e.getSender()).getInfo().getName());
    }

    /**
     * プレイヤーが接続を切ったときのやつ。
     *
     * @param e イベントハンドラ引数。
     */
    @EventHandler
    public void onServerDisconnect(ServerDisconnectEvent e)
    {
        if (e.getTarget().getPlayers().size() != 0) //プレイヤー人数が0人だったら開放
            return;
        PeyangSuperbAntiCheatProxy.servers.remove(e.getTarget().getName());
        logger.info("<-> Server [" + e.getTarget().getName() + "] has disconnected");
    }

    /**
     * プレイヤーが接続を<b>完了</b>したときのやつ
     *
     * @param e イベントハンドラ引数。
     */
    @EventHandler
    public void onServerConnecteD(ServerConnectedEvent e)
    {
        if (PeyangSuperbAntiCheatProxy.servers.contains(e.getServer().getInfo().getName())) //サーバがすでに登録済みの場合はreturn
            return;
        ServerInfo info = e.getServer().getInfo();
        logger.info("<-> Server [" + info.getName() + "] pinging...");
        PeyangSuperbAntiCheatProxy.sendData(info, "ping");
    }
}