Class TinyProtocol
- java.lang.Object
-
- me.bimmr.bimmcore.reflection.tinyprotocol.TinyProtocol
-
public abstract class TinyProtocol extends java.lang.ObjectRepresents a very tiny alternative to ProtocolLib.It now supports intercepting packets during login and status ping (such as OUT_SERVER_PING)!
-
-
Constructor Summary
Constructors Constructor Description TinyProtocol(org.bukkit.plugin.Plugin plugin)Construct a new instance of TinyProtocol, and start intercepting packets for all connected clients and future clients.
-
Method Summary
Modifier and Type Method Description voidclose()Cease listening for packets.io.netty.channel.ChannelgetChannel(org.bukkit.entity.Player player)Retrieve the Netty channel associated with a player.booleanhasInjected(io.netty.channel.Channel channel)Determine if the given channel has been injected by TinyProtocol.booleanhasInjected(org.bukkit.entity.Player player)Determine if the given player has been injected by TinyProtocol.voidinjectChannel(io.netty.channel.Channel channel)Add a custom channel handler to the given channel.voidinjectPlayer(org.bukkit.entity.Player player)Add a custom channel handler to the given player's channel pipeline, allowing us to intercept sent and received packets.java.lang.ObjectonPacketInAsync(org.bukkit.entity.Player sender, io.netty.channel.Channel channel, java.lang.Object packet)Invoked when the server has received a packet from a given player.java.lang.ObjectonPacketOutAsync(org.bukkit.entity.Player receiver, io.netty.channel.Channel channel, java.lang.Object packet)Invoked when the server is starting to send a packet to a player.voidreceivePacket(io.netty.channel.Channel channel, java.lang.Object packet)Pretend that a given packet has been received from a given client.voidreceivePacket(org.bukkit.entity.Player player, java.lang.Object packet)Pretend that a given packet has been received from a player.voidsendPacket(io.netty.channel.Channel channel, java.lang.Object packet)Send a packet to a particular client.voidsendPacket(org.bukkit.entity.Player player, java.lang.Object packet)Send a packet to a particular player.voiduninjectChannel(io.netty.channel.Channel channel)Uninject a specific channel.voiduninjectPlayer(org.bukkit.entity.Player player)Uninject a specific player.
-
-
-
Method Detail
-
onPacketOutAsync
public java.lang.Object onPacketOutAsync(org.bukkit.entity.Player receiver, io.netty.channel.Channel channel, java.lang.Object packet)Invoked when the server is starting to send a packet to a player.Note that this is not executed on the main thread.
- Parameters:
receiver- - the receiving player, NULL for early login/status packets.channel- - the channel that received the packet. Never NULL.packet- - the packet being sent.- Returns:
- The packet to send instead, or NULL to cancel the transmission.
-
onPacketInAsync
public java.lang.Object onPacketInAsync(org.bukkit.entity.Player sender, io.netty.channel.Channel channel, java.lang.Object packet)Invoked when the server has received a packet from a given player.Use
Channel.remoteAddress()to get the remote address of the client.- Parameters:
sender- - the player that sent the packet, NULL for early login/status packets.channel- - channel that received the packet. Never NULL.packet- - the packet being received.- Returns:
- The packet to recieve instead, or NULL to cancel.
-
sendPacket
public void sendPacket(org.bukkit.entity.Player player, java.lang.Object packet)Send a packet to a particular player.Note that
onPacketOutAsync(Player, Channel, Object)will be invoked with this packet.- Parameters:
player- - the destination player.packet- - the packet to send.
-
sendPacket
public void sendPacket(io.netty.channel.Channel channel, java.lang.Object packet)Send a packet to a particular client.Note that
onPacketOutAsync(Player, Channel, Object)will be invoked with this packet.- Parameters:
channel- - client identified by a channel.packet- - the packet to send.
-
receivePacket
public void receivePacket(org.bukkit.entity.Player player, java.lang.Object packet)Pretend that a given packet has been received from a player.Note that
onPacketInAsync(Player, Channel, Object)will be invoked with this packet.- Parameters:
player- - the player that sent the packet.packet- - the packet that will be received by the server.
-
receivePacket
public void receivePacket(io.netty.channel.Channel channel, java.lang.Object packet)Pretend that a given packet has been received from a given client.Note that
onPacketInAsync(Player, Channel, Object)will be invoked with this packet.- Parameters:
channel- - client identified by a channel.packet- - the packet that will be received by the server.
-
injectPlayer
public void injectPlayer(org.bukkit.entity.Player player)
Add a custom channel handler to the given player's channel pipeline, allowing us to intercept sent and received packets.This will automatically be called when a player has logged in.
- Parameters:
player- - the player to inject.
-
injectChannel
public void injectChannel(io.netty.channel.Channel channel)
Add a custom channel handler to the given channel.- Parameters:
channel- - the channel to inject.
-
getChannel
public io.netty.channel.Channel getChannel(org.bukkit.entity.Player player)
Retrieve the Netty channel associated with a player. This is cached.- Parameters:
player- - the player.- Returns:
- The Netty channel.
-
uninjectPlayer
public void uninjectPlayer(org.bukkit.entity.Player player)
Uninject a specific player.- Parameters:
player- - the injected player.
-
uninjectChannel
public void uninjectChannel(io.netty.channel.Channel channel)
Uninject a specific channel.This will also disable the automatic channel injection that occurs when a player has properly logged in.
- Parameters:
channel- - the injected channel.
-
hasInjected
public boolean hasInjected(org.bukkit.entity.Player player)
Determine if the given player has been injected by TinyProtocol.- Parameters:
player- - the player.- Returns:
- TRUE if it is, FALSE otherwise.
-
hasInjected
public boolean hasInjected(io.netty.channel.Channel channel)
Determine if the given channel has been injected by TinyProtocol.- Parameters:
channel- - the channel.- Returns:
- TRUE if it is, FALSE otherwise.
-
close
public final void close()
Cease listening for packets. This is called automatically when your plugin is disabled.
-
-