Advertisement
Guest User

Untitled

a guest
Jan 13th, 2018
691
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.39 KB | None | 0 0
  1. @EventHandler
  2. public void onJoin(PlayerJoinEvent event) {
  3. injectPlayer(event.getPlayer());
  4. }
  5.  
  6. @EventHandler
  7. public void onLeave(PlayerQuitEvent event) {
  8. removePlayer(event.getPlayer());
  9. }
  10.  
  11. public void removePlayer(Player player) {
  12. Channel channel = ((CraftPlayer) player).getHandle().playerConnection.networkManager.channel;
  13. channel.eventLoop().submit(() -> {
  14. channel.pipeline().remove(player.getName());
  15. });
  16. }
  17.  
  18. public void injectPlayer(Player player) {
  19. ChannelDuplexHandler channelDuplexHandler = new ChannelDuplexHandler() {
  20.  
  21. @Override
  22. public void channelRead(ChannelHandlerContext channelHandlerContext, Object packet) throws Exception {
  23.  
  24. if(packet instanceof PacketPlayInUseEntity) {
  25. PacketPlayInUseEntity use = (PacketPlayInUseEntity) packet;
  26. Field f = use.getClass().getField("a");
  27. f.setAccessible(true);
  28. int entityId = (int) f.get(use);
  29. }
  30. super.channelRead(channelHandlerContext, packet);
  31. }
  32.  
  33. @Override
  34. public void write(ChannelHandlerContext channelHandlerContext, Object packet, ChannelPromise channelPromise) throws Exception {
  35.  
  36. super.write(channelHandlerContext, packet, channelPromise);
  37. }
  38.  
  39. };
  40.  
  41. ChannelPipeline pipeline = ((CraftPlayer) player).getHandle().playerConnection.networkManager.channel.pipeline();
  42. pipeline.addBefore("packet_handler", player.getName(), channelDuplexHandler);
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement