All Downloads are FREE. Search and download functionalities are using the official Maven repository.

emu.grasscutter.server.packet.send.PacketServerBuffChangeNotify Maven / Gradle / Ivy

There is a newer version: 1.5.0
Show newest version
package emu.grasscutter.server.packet.send;

import java.util.Collection;
import java.util.stream.Stream;

import emu.grasscutter.game.player.Player;
import emu.grasscutter.game.player.PlayerBuffManager.PlayerBuff;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.ServerBuffChangeNotifyOuterClass.ServerBuffChangeNotify;
import emu.grasscutter.net.proto.ServerBuffChangeNotifyOuterClass.ServerBuffChangeNotify.ServerBuffChangeType;

public class PacketServerBuffChangeNotify extends BasePacket {

    public PacketServerBuffChangeNotify(Player player, ServerBuffChangeType changeType, PlayerBuff buff) {
        this(player, changeType, Stream.of(buff));
    }

    public PacketServerBuffChangeNotify(Player player, ServerBuffChangeType changeType, Collection buffs) {
        this(player, changeType, buffs.stream());
    }

    public PacketServerBuffChangeNotify(Player player, ServerBuffChangeType changeType, Stream buffs) {
        super(PacketOpcodes.ServerBuffChangeNotify);

        var proto = ServerBuffChangeNotify.newBuilder();

        player.getTeamManager().getActiveTeam().stream()
            .mapToLong(entity -> entity.getAvatar().getGuid())
            .forEach(proto::addAvatarGuidList);

        proto.setServerBuffChangeType(changeType);
        buffs.map(PlayerBuff::toProto)
            .forEach(proto::addServerBuffList);

        this.setData(proto);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy