Advertisement
Guest User

AntiDonkeyDupe.java

a guest
Apr 1st, 2020
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.41 KB | None | 0 0
  1. package com.christ.AntiDonkeyDupe;
  2.  
  3. import io.netty.channel.*;
  4. import net.minecraft.server.v1_12_R1.PacketPlayInSteerVehicle;
  5. import org.bukkit.Bukkit;
  6. import org.bukkit.ChatColor;
  7. import org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer;
  8. import org.bukkit.entity.Player;
  9. import org.bukkit.event.EventHandler;
  10. import org.bukkit.event.Listener;
  11. import org.bukkit.event.player.PlayerJoinEvent;
  12. import org.bukkit.event.player.PlayerQuitEvent;
  13. import org.bukkit.plugin.java.JavaPlugin;
  14. import net.minecraft.util.io.netty.channel.Channel;
  15. import net.minecraft.util.io.netty.channel.ChannelDuplexHandler;
  16. import net.minecraft.util.io.netty.channel.ChannelHandlerContext;
  17. import net.minecraft.util.io.netty.channel.ChannelPromise;
  18.  
  19. public class AntiDonkeyDupe extends JavaPlugin implements Listener {
  20.  
  21.     @Override
  22.     public void onEnable() {
  23.         Bukkit.getPluginManager().registerEvents(this, this);
  24.         System.out.println("[AntiDonkeyDupe] Plugin v1.2 was successfully enabled.");
  25.     }
  26.  
  27.     @EventHandler
  28.     public void onjoin(PlayerJoinEvent event){
  29.         injectPlayer(event.getPlayer());
  30.     }
  31.  
  32.     @EventHandler
  33.     public void onleave(PlayerQuitEvent event){
  34.         removePlayer(event.getPlayer());
  35.     }
  36.     private void removePlayer(Player player) {
  37.         Channel channel = ((CraftPlayer) player).getHandle().playerConnection.networkManager.channel;
  38.         channel.eventLoop().submit(() -> {
  39.             channel.pipeline().remove(player.getName());
  40.             return null;
  41.         });
  42.     }
  43.  
  44.     private void injectPlayer(Player player) {
  45.         ChannelDuplexHandler channelDuplexHandler = new ChannelDuplexHandler() {
  46.  
  47.             @Override
  48.             public void channelRead(ChannelHandlerContext channelHandlerContext, Object packet) throws Exception {
  49.                
  50.                 if(player.isInsideVehicle()) {
  51.                     if(packet instanceof PacketPlayInSteerVehicle){
  52.                         PacketPlayInSteerVehicle PacketPlayInSteerVehicle = (PacketPlayInSteerVehicle) packet;
  53.                         return;
  54.                     }
  55.                 }
  56.                 super.channelRead(channelHandlerContext, packet);
  57.             }
  58.         };
  59.  
  60.         ChannelPipeline pipeline = ((CraftPlayer) player).getHandle().playerConnection.networkManager.channel.pipeline();
  61.         pipeline.addBefore("packet_handler", player.getName(), channelDuplexHandler);
  62.  
  63.     }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement