package com.nisovin.magicspells.volatilecode;
import java.lang.reflect.InvocationTargetException;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.ProtocolManager;
import com.comphenix.protocol.events.PacketContainer;
public class VolatileCodeProtocolLib extends VolatileCodeDisabled {
protected ProtocolManager protocolManager;
public VolatileCodeProtocolLib() {
protocolManager = ProtocolLibrary.getProtocolManager();
}
@Override
public void playSound(Location location, String sound, float volume, float pitch) {
PacketContainer packet = protocolManager.createPacket(62);
packet.getStrings().write(0, sound);
int p = (int)(pitch * 63D);
if (p < 0) p = 0;
if (p > 255) p = 255;
packet.getIntegers()
.write(0, (int)(location.getX() * 8D))
.write(1, (int)(location.getY() * 8D))
.write(2, (int)(location.getZ() * 8D))
.write(3, p);
packet.getFloat().write(0, volume);
protocolManager.broadcastServerPacket(packet, location, volume > 1.0 ? (int)(16 * volume) : 16);
}
@Override
public void playSound(Player player, String sound, float volume, float pitch) {
Location loc = player.getLocation();
PacketContainer packet = protocolManager.createPacket(62);
packet.getStrings().write(0, sound);
int p = (int)(pitch * 63D);
if (p < 0) p = 0;
if (p > 255) p = 255;
packet.getIntegers()
.write(0, (int)(loc.getX() * 8D))
.write(1, (int)(loc.getY() * 8D))
.write(2, (int)(loc.getZ() * 8D))
.write(3, p);
packet.getFloat().write(0, volume);
try {
protocolManager.sendServerPacket(player, packet);
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
@Override
public void playParticleEffect(Location location, String name, float spreadHoriz, float spreadVert, float speed, int count, int radius, float yOffset) {
PacketContainer packet = protocolManager.createPacket(63);
packet.getStrings().write(0, name);
packet.getFloat()
.write(0, (float)location.getX())
.write(1, (float)location.getY() + yOffset)
.write(2, (float)location.getZ())
.write(3, spreadHoriz)
.write(4, spreadVert)
.write(5, spreadHoriz)
.write(6, speed);
packet.getIntegers().write(0, count);
packet.getBooleans().write(0, radius > 200);
protocolManager.broadcastServerPacket(packet, location, radius);
}
}