Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package dashnetwork.protocolsupportpotions.listeners;
- import java.util.HashSet;
- import java.util.UUID;
- import org.bukkit.entity.Entity;
- import org.bukkit.entity.SplashPotion;
- import org.bukkit.plugin.Plugin;
- import org.bukkit.potion.PotionEffect;
- import com.comphenix.protocol.PacketType;
- import com.comphenix.protocol.ProtocolLibrary;
- import com.comphenix.protocol.events.ListenerPriority;
- import com.comphenix.protocol.events.ListeningWhitelist;
- import com.comphenix.protocol.events.PacketAdapter;
- import com.comphenix.protocol.events.PacketContainer;
- import com.comphenix.protocol.events.PacketEvent;
- import com.comphenix.protocol.injector.GamePhase;
- import dashnetwork.protocolsupportpotions.main.Main;
- import dashnetwork.protocolsupportpotions.utils.ConversionUtils;
- import dashnetwork.protocolsupportpotions.utils.ProtocolUtils;
- /**
- * Created by MasterMatt5 on 10/26/2016.
- */
- public class PacketListeners extends PacketAdapter {
- public PacketListeners() {
- super(new AdapterParameteters().gamePhase(GamePhase.BOTH).plugin(Main.getInstance()).types(new HashSet<>(Main.getInstance().getAllPackets())).listenerPriority(ListenerPriority.HIGHEST));
- }
- public void start() {
- ProtocolLibrary.getProtocolManager().addPacketListener(this);
- }
- public void stop() {
- ProtocolLibrary.getProtocolManager().removePacketListener(this);
- }
- @Override
- public void onPacketReceiving(PacketEvent event) {}
- @Override
- public void onPacketSending(PacketEvent event) {
- if (event.getPacket().getType().equals(PacketType.Play.Server.SPAWN_ENTITY)) {
- if (event.getPacket().getIntegers().readSafely(6) == 73) {
- event.setCancelled(true);
- PacketContainer packet = event.getPacket();
- PacketContainer spawnEntity = new PacketContainer(PacketType.Play.Server.SPAWN_ENTITY);
- spawnEntity.getSpecificModifier(UUID.class).writeSafely(0, event.getPacket().getSpecificModifier(UUID.class).readSafely(0));
- spawnEntity.getIntegers().writeSafely(0, event.getPacket().getIntegers().readSafely(0));
- spawnEntity.getIntegers().writeSafely(1, event.getPacket().getIntegers().readSafely(1));
- spawnEntity.getIntegers().writeSafely(2, event.getPacket().getIntegers().readSafely(2));
- spawnEntity.getIntegers().writeSafely(3, event.getPacket().getIntegers().readSafely(3));
- spawnEntity.getIntegers().writeSafely(4, event.getPacket().getIntegers().readSafely(4));
- spawnEntity.getIntegers().writeSafely(5, event.getPacket().getIntegers().readSafely(5));
- spawnEntity.getIntegers().writeSafely(6, event.getPacket().getIntegers().readSafely(6));
- spawnEntity.getIntegers().writeSafely(7, event.getPacket().getIntegers().readSafely(7));
- spawnEntity.getDoubles().writeSafely(0, event.getPacket().getDoubles().readSafely(0));
- spawnEntity.getDoubles().writeSafely(1, event.getPacket().getDoubles().readSafely(1));
- spawnEntity.getDoubles().writeSafely(2, event.getPacket().getDoubles().readSafely(2));
- Entity entity = event.getPacket().getEntityModifier(event).readSafely(0);
- if (entity != null) {
- SplashPotion potion = (SplashPotion) entity;
- for (PotionEffect effect : potion.getEffects()) {
- spawnEntity.getIntegers().writeSafely(7, ConversionUtils.getPotionType(effect.getType()));
- }
- }
- try {
- if (ProtocolUtils.isOlder(event.getPlayer(), false)) {
- ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), spawnEntity, false);
- }
- else {
- ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), packet, false);
- }
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- else if (event.getPacket().getType().equals(PacketType.Play.Server.WORLD_EVENT)) {
- int effectId = event.getPacket().getIntegers().readSafely(0);
- if (effectId == 2002 || effectId == 2007) {
- event.setCancelled(true);
- PacketContainer packet = event.getPacket();
- PacketContainer worldEvent = new PacketContainer(PacketType.Play.Server.WORLD_EVENT);
- if (ProtocolUtils.isOlder(event.getPlayer(), false)) {
- worldEvent.getBlockPositionModifier().writeSafely(0, event.getPacket().getBlockPositionModifier().readSafely(0));
- worldEvent.getSpecificModifier(boolean.class).writeSafely(0, event.getPacket().getSpecificModifier(boolean.class).readSafely(0));
- worldEvent.getIntegers().writeSafely(0, 2002);
- worldEvent.getIntegers().writeSafely(1, ConversionUtils.getPotionType(event.getPacket().getIntegers().readSafely(1), false));
- try {
- ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), worldEvent, false);
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- }
- else if (ProtocolUtils.isOlder(event.getPlayer(), true)) {
- worldEvent.getBlockPositionModifier().writeSafely(0, event.getPacket().getBlockPositionModifier().readSafely(0));
- worldEvent.getSpecificModifier(boolean.class).writeSafely(0, event.getPacket().getSpecificModifier(boolean.class).readSafely(0));
- worldEvent.getIntegers().writeSafely(0, 2002);
- worldEvent.getIntegers().writeSafely(1, ConversionUtils.getPotionType(event.getPacket().getIntegers().readSafely(1), true));
- try {
- ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), worldEvent, false);
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- }
- else {
- try {
- ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), packet, false);
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- }
- }
- @Override
- public Plugin getPlugin() {
- return Main.getInstance();
- }
- @Override
- public ListeningWhitelist getReceivingWhitelist() {
- return ListeningWhitelist.newBuilder().types(new HashSet<>(Main.getInstance().getAllPackets())).gamePhase(GamePhase.BOTH).priority(ListenerPriority.HIGHEST).build();
- }
- @Override
- public ListeningWhitelist getSendingWhitelist() {
- return ListeningWhitelist.newBuilder().types(new HashSet<>(Main.getInstance().getAllPackets())).gamePhase(GamePhase.BOTH).priority(ListenerPriority.HIGHEST).build();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment