/
DenizenPacketListenerImpl.java
65 lines (54 loc) · 2.57 KB
/
DenizenPacketListenerImpl.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package com.denizenscript.denizen.nms.v1_13.impl.packets.handlers;
import com.denizenscript.denizen.nms.NMSHandler;
import com.denizenscript.denizen.nms.interfaces.packets.PacketHandler;
import io.netty.util.concurrent.Future;
import io.netty.util.concurrent.GenericFutureListener;
import com.denizenscript.denizen.nms.v1_13.impl.packets.PacketInResourcePackStatusImpl;
import com.denizenscript.denizen.nms.v1_13.impl.packets.PacketInSteerVehicleImpl;
import net.minecraft.server.v1_13_R2.EntityPlayer;
import net.minecraft.server.v1_13_R2.NetworkManager;
import net.minecraft.server.v1_13_R2.Packet;
import net.minecraft.server.v1_13_R2.PacketPlayInResourcePackStatus;
import net.minecraft.server.v1_13_R2.PacketPlayInSteerVehicle;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import javax.annotation.Nullable;
public class DenizenPacketListenerImpl extends AbstractListenerPlayInImpl {
private static PacketHandler packetHandler;
public DenizenPacketListenerImpl(NetworkManager networkManager, EntityPlayer entityPlayer) {
super(networkManager, entityPlayer, entityPlayer.playerConnection);
}
public static void enable(PacketHandler handler) {
packetHandler = handler;
Bukkit.getServer().getPluginManager().registerEvents(new PlayerEventListener(), NMSHandler.getJavaPlugin());
}
@Override
public void a(final PacketPlayInSteerVehicle packet) {
if (!packetHandler.receivePacket(player.getBukkitEntity(), new PacketInSteerVehicleImpl(packet))) {
super.a(packet);
}
}
@Override
public void a(PacketPlayInResourcePackStatus packet) {
packetHandler.receivePacket(player.getBukkitEntity(), new PacketInResourcePackStatusImpl(packet));
super.a(packet);
}
// For compatibility with other plugins using Reflection weirdly...
@Override
public void sendPacket(Packet packet) {
super.sendPacket(packet);
}
@Override
public void a(Packet<?> packet, @Nullable GenericFutureListener<? extends Future<? super Void>> genericfuturelistener) {
super.a(packet, genericfuturelistener);
}
public static class PlayerEventListener implements Listener {
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerJoin(PlayerJoinEvent event) {
DenizenNetworkManagerImpl.setNetworkManager(event.getPlayer(), packetHandler);
}
}
}