Protocoller API icon

Protocoller API -----

A feature rich and easy to use Minecraft packet sniffer



Protocoller
This is a very easy-to-use "interceptor" of outgoing / incoming Minecraft packets.
Sometimes it is not possible to do anything using standard APIs, with this plugin, you get the ability to intercept packets when they are sent/received and edit them, which greatly expands the possibilities of the plugin developer. You can also create your own packets, which is also simple here, all (almost) Minecraft classes necessary for creating packets are present and deobfuscated, and everything is also adapted for multiversion.


API example:
(Or on GitHub)
Code (Java):
package ExamplePlugin ;

import net.alis.protocoller.Protocoller ;
import net.alis.protocoller.ProtocollerClient ;
import net.alis.protocoller.event.PacketEventsManager ;
import net.alis.protocoller.event.impl.ManagerType ;
import net.alis.protocoller.plugin.exception.BannedClientException ;
import org.bukkit.plugin.Plugin ;
import org.bukkit.plugin.java.JavaPlugin ;


public final class MainClass extends JavaPlugin {

    public static ProtocollerClient protocollerApi ;
    public static PacketEventsManager syncEventManager ;
    public static PacketEventsManager asyncEventManager ;

    @Override
    public void onEnable ( ) {
        try {
            protocollerApi = Protocoller. get ( ). registerClient ( (Plugin ) this ) ;
        } catch (BannedClientException e ) {
            throw new RuntimeException (e ) ;
        }

        syncEventManager = protocollerApi. getEventManager (ManagerType. SYNCHRONOUS ) ;
        asyncEventManager = protocollerApi. getEventManager (ManagerType. ASYNCHRONOUS ) ;

        syncEventManager. registerListener (protocollerApi, new ExampleSyncPacketListener ( ) ) ;

        asyncEventManager. registerListener (protocollerApi, new ExampleAsyncPacketListener ( ) ) ;

    }

    @Override
    public void onDisable ( ) { }
}
 
Code (Java):
package ExamplePlugin ;

import net.alis.protocoller.event.async.AsyncPacketLoginReceiveEvent ;
import net.alis.protocoller.event.impl.PacketEventHandler ;
import net.alis.protocoller.event.impl.PacketEventPriority ;
import net.alis.protocoller.event.impl.PacketListener ;
import net.alis.protocoller.packet.PacketType ;
import net.alis.protocoller.packet.packets.login.PacketLoginInStart ;
import net.alis.protocoller.plugin.managers.LogsManager ;
import net.alis.protocoller.samples.authlib.GameProfile ;

public class ExampleAsyncPacketListener implements PacketListener {

    @PacketEventHandler (eventPriority = PacketEventPriority. NORMAL, ignoreCancelled = true )
    public void onPlayerLoginStart (AsyncPacketLoginReceiveEvent event ) {
        if (event. getPacketType ( ) == PacketType. Login. Client. START ) {
            PacketLoginInStart loginPack = new PacketLoginInStart (event. getData ( ) ) ;
            GameProfile prePlayerData = loginPack. getGameProfile ( ) ;
            LogsManager. get ( ). getLogger ( ). info ( "Player \"" + prePlayerData. getName ( ) + "\" will join the server soon" ) ;
        }

    }

}
Code (Java):
package ExamplePlugin ;

import net.alis.protocoller.NetworkPlayer ;
import net.alis.protocoller.event.impl.PacketListener ;
import net.alis.protocoller.event.sync.PacketPlaySendEvent ;
import net.alis.protocoller.packet.PacketType ;
import net.alis.protocoller.packet.packets.game.PacketPlayOutAbilities ;
import org.bukkit.entity.Player ;

public class ExampleSyncPacketListener implements PacketListener {

    public void yourCustomMethodName (PacketPlaySendEvent event ) {
        if (event. getPacketType ( ) == PacketType. Play. Server. ABILITIES ) {
            PacketPlayOutAbilities abilities = new PacketPlayOutAbilities (event. getData ( ) ) ;
            NetworkPlayer networkPlayer = event. getNetworkPlayer ( ) ;
            Player player = event. getNetworkPlayer ( ). getBukkitPlayer ( ) ;
            if (player. getName ( ). equalsIgnoreCase ( "ALis" ) ) {
                if ( !abilities. isCanFly ( ) ) abilities. setCanFly ( true ) ;
                event. setPacket (abilities ) ;
            }
            return ;
        }

    }


}
Code (Java):
package ExamplePlugin ;

import net.alis.protocoller.NetworkPlayer ;
import net.alis.protocoller.NetworkServer ;
import net.alis.protocoller.packet.packets.game.PacketPlayOutChat ;
import net.alis.protocoller.plugin.enums.Version ;
import net.alis.protocoller.samples.network.NetworkManager ;
import net.alis.protocoller.samples.network.PlayerConnection ;
import net.alis.protocoller.samples.network.chat.ChatComponent ;
import net.md_5.bungee.api.MessageType ;
import net.md_5.bungee.api.chat.HoverEvent ;
import org.bukkit.Bukkit ;
import java.util.UUID ;

public class NetworkPlayerWorkExample {

    public void networkPlayerWorking ( ) {
        NetworkServer server = MainClass. protocollerApi. getServer ( ) ;
        NetworkPlayer player = server. getPlayer (UUID. fromString ( "ALis" ) ) ;
        NetworkPlayer player1 = server. getPlayer ( "ALis" ) ;
        NetworkPlayer player2 = server. getPlayer (Bukkit. getPlayer ( "ALis" ) ) ;

        PlayerConnection connection = player. getConnection ( ) ;
        int ping = player. getPing ( ) ;
        int protocol = player. getVersion ( ). getProtocol ( ) ;
        String versionName = player. getVersion ( ). asString ( ) ;

        ChatComponent component = new ChatComponent ( "Welcome to the " ) ;
        component. append ( "server " + player. getName ( ) ). setHoverEvent (HoverEvent. Action. SHOW_TEXT, "You amazing!" ) ;
        connection. sendPacket ( new PacketPlayOutChat (component, MessageType. CHAT, player. getUniqueId ( ) ) ) ;

        NetworkManager manager = connection. getNetworkManager ( ) ;
    }


}
Code (Java):
package ExamplePlugin ;

import io.netty.channel.ChannelFuture ;
import net.alis.protocoller.NetworkServer ;
import net.alis.protocoller.samples.authlib.GameProfile ;
import net.alis.protocoller.samples.authlib.properties.Property ;
import net.alis.protocoller.samples.network.NetworkManager ;
import net.alis.protocoller.samples.network.chat.ChatComponent ;
import net.alis.protocoller.samples.network.status.ServerData ;
import net.alis.protocoller.samples.network.status.ServerPing ;
import net.alis.protocoller.samples.network.status.ServerPingPlayerSample ;
import net.alis.protocoller.samples.server.ServerConnection ;
import net.alis.protocoller.samples.server.rcon.QueryThreadGC4 ;
import net.alis.protocoller.samples.server.rcon.RconThread ;
import net.alis.protocoller.samples.server.rcon.RemoteControlSession ;
import net.alis.protocoller.samples.server.rcon.RemoteStatusReply ;
import java.util.ArrayList ;
import java.util.List ;
import java.util.UUID ;


public class NetworkServerWorkExample {

    public static void serverConnectionAccess ( ) {
        NetworkServer server = MainClass. protocollerApi. getServer ( ) ;
        ServerConnection connection = server. getConnection ( ) ;
        List <NetworkManager > managers = connection. getConnections ( ) ;
        List <ChannelFuture > channels = connection. getChannels ( ) ;
        NetworkManager manager = managers. get ( 0 ) ;
        Property [ ] p = manager. getSpoofedProfiles ( ) ;
    }

    public static void changeServerStatusInfo ( ) {
        NetworkServer server = MainClass. protocollerApi. getServer ( ) ;
        ServerPing ping = server. getServerStatus ( ) ;
        ping. setVersion ( new ServerData ( "Spigot 1.25.1", 756 ) ) ;
        ping. setFavicon ( "Some favicon" ) ;
        ping. setDescription ( new ChatComponent ( "A best minecraft server!" ) ) ;
        ServerPingPlayerSample playerSample = new ServerPingPlayerSample ( 10000, 999 ) ;
        List <GameProfile > profiles = new ArrayList <> ( ) ;
        profiles. add ( new GameProfile (UUID. randomUUID ( ), "ALis" ) ) ;
        profiles. add ( new GameProfile (UUID. randomUUID ( ), "Tasher228" ) ) ;
        profiles. add ( new GameProfile (UUID. randomUUID ( ), "Notch" ) ) ;
        playerSample. setSample (profiles. toArray ( new GameProfile [ 0 ] ) ) ;
        ping. setPlayers (playerSample ) ;
        server. setServerStatus (ping ) ;
    }


    public static void changeGC4Thread ( ) {
        NetworkServer server = MainClass. protocollerApi. getServer ( ) ;
        QueryThreadGC4 query = server. getQueryThreadGC4 ( ) ;
        if (query != null ) { //QueryThread can be null(Может возвращать null)
            query. setMaxPlayers ( 1000 ) ;
            RemoteStatusReply statusReply = query. getRulesResponse ( ) ;
            byte [ ] replyBytes = statusReply. toByteArray ( ) ;
            query. setServerIp ( "1.1.1.1" ) ;
            query. setServerName ( "Best minecraft server" ) ;
            int queryPort = query. getQueryPort ( ) ;
        }
    }

    public void rconCheck ( ) {
        NetworkServer server = MainClass. protocollerApi. getServer ( ) ;
        RconThread rcon = server. getRconThread ( ) ; //RconThread can be null
        if (rcon != null ) {
            List <RemoteControlSession > sessions = rcon. getClients ( ) ;
            RemoteControlSession session = sessions. get ( 0 ) ;
            if (session. isAuthed ( ) ) {
                session. setAuthed ( false ) ;
            }
        }
    }

}

 
Resource Information
Author:
----------
Total Downloads: 186
First Release: Apr 8, 2023
Last Update: Apr 24, 2023
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings