Guest User

PacketListeners

a guest
Feb 17th, 2018
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.34 KB | None | 0 0
  1. package dashnetwork.protocolsupportpotions.listeners;
  2.  
  3. import java.util.HashSet;
  4. import java.util.UUID;
  5.  
  6. import org.bukkit.entity.Entity;
  7. import org.bukkit.entity.SplashPotion;
  8. import org.bukkit.plugin.Plugin;
  9. import org.bukkit.potion.PotionEffect;
  10.  
  11. import com.comphenix.protocol.PacketType;
  12. import com.comphenix.protocol.ProtocolLibrary;
  13. import com.comphenix.protocol.events.ListenerPriority;
  14. import com.comphenix.protocol.events.ListeningWhitelist;
  15. import com.comphenix.protocol.events.PacketAdapter;
  16. import com.comphenix.protocol.events.PacketContainer;
  17. import com.comphenix.protocol.events.PacketEvent;
  18. import com.comphenix.protocol.injector.GamePhase;
  19.  
  20. import dashnetwork.protocolsupportpotions.main.Main;
  21. import dashnetwork.protocolsupportpotions.utils.ConversionUtils;
  22. import dashnetwork.protocolsupportpotions.utils.ProtocolUtils;
  23.  
  24. /**
  25.  * Created by MasterMatt5 on 10/26/2016.
  26.  */
  27. public class PacketListeners extends PacketAdapter {
  28.  
  29.     public PacketListeners() {
  30.             super(new AdapterParameteters().gamePhase(GamePhase.BOTH).plugin(Main.getInstance()).types(new HashSet<>(Main.getInstance().getAllPackets())).listenerPriority(ListenerPriority.HIGHEST));
  31.     }
  32.  
  33.     public void start() {
  34.             ProtocolLibrary.getProtocolManager().addPacketListener(this);
  35.     }
  36.  
  37.     public void stop() {
  38.             ProtocolLibrary.getProtocolManager().removePacketListener(this);
  39.     }
  40.  
  41.     @Override
  42.     public void onPacketReceiving(PacketEvent event) {}
  43.  
  44.     @Override
  45.     public void onPacketSending(PacketEvent event) {
  46.             if (event.getPacket().getType().equals(PacketType.Play.Server.SPAWN_ENTITY)) {
  47.             if (event.getPacket().getIntegers().readSafely(6) == 73) {
  48.                 event.setCancelled(true);
  49.                
  50.                 PacketContainer packet = event.getPacket();
  51.                 PacketContainer spawnEntity = new PacketContainer(PacketType.Play.Server.SPAWN_ENTITY);
  52.                
  53.                 spawnEntity.getSpecificModifier(UUID.class).writeSafely(0, event.getPacket().getSpecificModifier(UUID.class).readSafely(0));
  54.                 spawnEntity.getIntegers().writeSafely(0, event.getPacket().getIntegers().readSafely(0));
  55.                 spawnEntity.getIntegers().writeSafely(1, event.getPacket().getIntegers().readSafely(1));
  56.                 spawnEntity.getIntegers().writeSafely(2, event.getPacket().getIntegers().readSafely(2));
  57.                 spawnEntity.getIntegers().writeSafely(3, event.getPacket().getIntegers().readSafely(3));
  58.                 spawnEntity.getIntegers().writeSafely(4, event.getPacket().getIntegers().readSafely(4));
  59.                 spawnEntity.getIntegers().writeSafely(5, event.getPacket().getIntegers().readSafely(5));
  60.                     spawnEntity.getIntegers().writeSafely(6, event.getPacket().getIntegers().readSafely(6));
  61.                     spawnEntity.getIntegers().writeSafely(7, event.getPacket().getIntegers().readSafely(7));
  62.                     spawnEntity.getDoubles().writeSafely(0, event.getPacket().getDoubles().readSafely(0));
  63.                     spawnEntity.getDoubles().writeSafely(1, event.getPacket().getDoubles().readSafely(1));
  64.                     spawnEntity.getDoubles().writeSafely(2, event.getPacket().getDoubles().readSafely(2));
  65.                
  66.                     Entity entity = event.getPacket().getEntityModifier(event).readSafely(0);
  67.                
  68.                     if (entity != null) {
  69.                         SplashPotion potion = (SplashPotion) entity;
  70.                    
  71.                         for (PotionEffect effect : potion.getEffects()) {
  72.                             spawnEntity.getIntegers().writeSafely(7, ConversionUtils.getPotionType(effect.getType()));
  73.                         }
  74.                     }
  75.                    
  76.                     try {
  77.                         if (ProtocolUtils.isOlder(event.getPlayer(), false)) {
  78.                             ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), spawnEntity, false);
  79.                         }
  80.                         else {
  81.                             ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), packet, false);
  82.                         }
  83.                     }
  84.                     catch (Exception e) {
  85.                         e.printStackTrace();
  86.                     }
  87.             }
  88.         }
  89.         else if (event.getPacket().getType().equals(PacketType.Play.Server.WORLD_EVENT)) {
  90.             int effectId = event.getPacket().getIntegers().readSafely(0);
  91.            
  92.             if (effectId == 2002 || effectId == 2007) {
  93.                 event.setCancelled(true);
  94.                
  95.                 PacketContainer packet = event.getPacket();
  96.                 PacketContainer worldEvent = new PacketContainer(PacketType.Play.Server.WORLD_EVENT);
  97.                
  98.                 if (ProtocolUtils.isOlder(event.getPlayer(), false)) {
  99.                     worldEvent.getBlockPositionModifier().writeSafely(0, event.getPacket().getBlockPositionModifier().readSafely(0));
  100.                     worldEvent.getSpecificModifier(boolean.class).writeSafely(0, event.getPacket().getSpecificModifier(boolean.class).readSafely(0));
  101.                     worldEvent.getIntegers().writeSafely(0, 2002);
  102.                     worldEvent.getIntegers().writeSafely(1, ConversionUtils.getPotionType(event.getPacket().getIntegers().readSafely(1), false));
  103.                    
  104.                     try {
  105.                         ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), worldEvent, false);
  106.                     }
  107.                     catch (Exception e) {
  108.                         e.printStackTrace();
  109.                     }
  110.                 }
  111.                 else if (ProtocolUtils.isOlder(event.getPlayer(), true)) {
  112.                     worldEvent.getBlockPositionModifier().writeSafely(0, event.getPacket().getBlockPositionModifier().readSafely(0));
  113.                     worldEvent.getSpecificModifier(boolean.class).writeSafely(0, event.getPacket().getSpecificModifier(boolean.class).readSafely(0));
  114.                     worldEvent.getIntegers().writeSafely(0, 2002);
  115.                     worldEvent.getIntegers().writeSafely(1, ConversionUtils.getPotionType(event.getPacket().getIntegers().readSafely(1), true));
  116.                    
  117.                     try {
  118.                         ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), worldEvent, false);
  119.                     }
  120.                     catch (Exception e) {
  121.                         e.printStackTrace();
  122.                     }
  123.                 }
  124.                 else {
  125.                     try {
  126.                         ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), packet, false);
  127.                     }
  128.                     catch (Exception e) {
  129.                         e.printStackTrace();
  130.                     }
  131.                 }
  132.             }
  133.         }
  134.     }
  135.    
  136.     @Override
  137.     public Plugin getPlugin() {
  138.             return Main.getInstance();
  139.     }
  140.  
  141.     @Override
  142.     public ListeningWhitelist getReceivingWhitelist() {
  143.         return ListeningWhitelist.newBuilder().types(new HashSet<>(Main.getInstance().getAllPackets())).gamePhase(GamePhase.BOTH).priority(ListenerPriority.HIGHEST).build();
  144.     }
  145.  
  146.     @Override
  147.     public ListeningWhitelist getSendingWhitelist() {
  148.         return ListeningWhitelist.newBuilder().types(new HashSet<>(Main.getInstance().getAllPackets())).gamePhase(GamePhase.BOTH).priority(ListenerPriority.HIGHEST).build();
  149.     }
  150. }
Advertisement
Add Comment
Please, Sign In to add comment