Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.christ.AntiDonkeyDupe;
- import io.netty.channel.*;
- import net.minecraft.server.v1_12_R1.PacketPlayInSteerVehicle;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.craftbukkit.v1_12_R1.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 net.minecraft.util.io.netty.channel.Channel;
- import net.minecraft.util.io.netty.channel.ChannelDuplexHandler;
- import net.minecraft.util.io.netty.channel.ChannelHandlerContext;
- import net.minecraft.util.io.netty.channel.ChannelPromise;
- public class AntiDonkeyDupe extends JavaPlugin implements Listener {
- @Override
- public void onEnable() {
- Bukkit.getPluginManager().registerEvents(this, this);
- System.out.println("[AntiDonkeyDupe] Plugin v1.2 was successfully enabled.");
- }
- @EventHandler
- public void onjoin(PlayerJoinEvent event){
- injectPlayer(event.getPlayer());
- }
- @EventHandler
- public void onleave(PlayerQuitEvent event){
- removePlayer(event.getPlayer());
- }
- private void removePlayer(Player player) {
- Channel channel = ((CraftPlayer) player).getHandle().playerConnection.networkManager.channel;
- channel.eventLoop().submit(() -> {
- channel.pipeline().remove(player.getName());
- return null;
- });
- }
- private void injectPlayer(Player player) {
- ChannelDuplexHandler channelDuplexHandler = new ChannelDuplexHandler() {
- @Override
- public void channelRead(ChannelHandlerContext channelHandlerContext, Object packet) throws Exception {
- if(player.isInsideVehicle()) {
- if(packet instanceof PacketPlayInSteerVehicle){
- PacketPlayInSteerVehicle PacketPlayInSteerVehicle = (PacketPlayInSteerVehicle) packet;
- return;
- }
- }
- super.channelRead(channelHandlerContext, packet);
- }
- };
- ChannelPipeline pipeline = ((CraftPlayer) player).getHandle().playerConnection.networkManager.channel.pipeline();
- pipeline.addBefore("packet_handler", player.getName(), channelDuplexHandler);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement