Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.bukkit.Bukkit;
- import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.player.PlayerJoinEvent;
- import org.bukkit.event.player.PlayerQuitEvent;
- import org.bukkit.plugin.java.JavaPlugin;
- import io.netty.channel.Channel;
- import io.netty.channel.ChannelDuplexHandler;
- import io.netty.channel.ChannelHandlerContext;
- import io.netty.channel.ChannelPipeline;
- import io.netty.channel.ChannelPromise;
- import net.minecraft.server.v1_8_R3.PacketPlayOutTabComplete;
- public class Main extends JavaPlugin implements Listener {
- @Override
- public void onEnable() {
- Bukkit.getServer().getPluginManager().registerEvents(this, this);
- }
- @EventHandler
- public void onJoin(PlayerJoinEvent e) {
- injectPlayer(e.getPlayer());
- }
- @EventHandler
- public void onQuit(PlayerQuitEvent e) {
- removePlayer(e.getPlayer());
- }
- private void removePlayer(Player player) {
- Channel channel = ((CraftPlayer) player).getHandle().playerConnection.networkManager.channel;
- channel.eventLoop().submit(() -> {
- channel.pipeline().remove(player.getName());
- });
- }
- private void injectPlayer(Player player) {
- ChannelDuplexHandler handler = new ChannelDuplexHandler() {
- @Override
- public void channelRead(ChannelHandlerContext context, Object packet) throws Exception {
- super.channelRead(context, packet);
- if (packet instanceof PacketPlayOutTabComplete) {
- return;
- }
- }
- @Override
- public void write(ChannelHandlerContext context, Object packet, ChannelPromise promise) throws Exception {
- super.write(context, packet, promise);
- }
- };
- ChannelPipeline pipeline = ((CraftPlayer) player).getHandle().playerConnection.networkManager.channel
- .pipeline();
- pipeline.addBefore("packet_handler", player.getName(), handler);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement