I need to send a PacketPlayOutEntityEffect to a player.
I tried four ways:
Sending packet trough ProtocolLib
Sending packet trough NMS
Sending packet trough PacketEvents
And sending packet trought player.sendPluginMessage()
No one of above doesn't work
Here's my current code.
What am i doing wrong?
I tried four ways:
Sending packet trough ProtocolLib
Sending packet trough NMS
Sending packet trough PacketEvents
And sending packet trought player.sendPluginMessage()
No one of above doesn't work
Here's my current code.
Java:
public static void CreateFakeEffectForClient(Player packetReciever, LivingEntity entity, PotionEffect effect) {
CraftPlayer reciever = (CraftPlayer) packetReciever;
PacketPlayOutEntityEffect fakeEffect = new PacketPlayOutEntityEffect(entity.getEntityId(), CraftPotionUtil.fromBukkit(effect));
reciever.getHandle().b.a(fakeEffect);
ByteBuf buffer = Unpooled.buffer();
PacketDataSerializer serializer = new PacketDataSerializer(buffer);
fakeEffect.a(serializer);
byte[] message = serializer.array();
packetReciever.sendPluginMessage(UltraViolence.GetInstance(), "ultraviolence:stc", message);
//ProtocolManager manager = ProtocolLibrary.getProtocolManager();
//PacketContainer packet = manager.createPacket(PacketType.Play.Server.ENTITY_EFFECT);
//byte flags = 0;
//flags += effect.isAmbient() ? 0x01 : 0;
//flags += effect.hasParticles() ? 0x02 : 0;
//flags += effect.hasIcon() ? 0x04 : 0;
//packet.getIntegers().write(0, entity.getEntityId());
//packet.getBytes().write(0, (byte) (1 + ArrayUtils.indexOf(PotionEffectType.values(), effect.getType())));
//packet.getBytes().write(1, (byte) effect.getAmplifier());
//packet.getIntegers().write(1, effect.getDuration());
//packet.getBytes().write(2, flags);
//
//try {
// manager.sendServerPacket(packetReciever, packet);
//} catch (InvocationTargetException e) {
// e.printStackTrace();
//}
}