mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-05-12 06:56:02 +08:00
38 lines
1.5 KiB
Java
38 lines
1.5 KiB
Java
package emu.grasscutter.server.packet.recv;
|
|
|
|
import emu.grasscutter.game.player.Player;
|
|
import emu.grasscutter.net.packet.Opcodes;
|
|
import emu.grasscutter.net.packet.PacketHandler;
|
|
import emu.grasscutter.net.packet.PacketOpcodes;
|
|
import emu.grasscutter.net.proto.SetWidgetSlotReqOuterClass;
|
|
import emu.grasscutter.net.proto.WidgetSlotOpOuterClass;
|
|
import emu.grasscutter.server.game.GameSession;
|
|
import emu.grasscutter.server.packet.send.PacketSetWidgetSlotRsp;
|
|
import emu.grasscutter.server.packet.send.PacketWidgetSlotChangeNotify;
|
|
|
|
@Opcodes(PacketOpcodes.SetWidgetSlotReq)
|
|
public class HandlerSetWidgetSlotReq extends PacketHandler {
|
|
|
|
@Override
|
|
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
|
SetWidgetSlotReqOuterClass.SetWidgetSlotReq req = SetWidgetSlotReqOuterClass.SetWidgetSlotReq.parseFrom(payload);
|
|
|
|
Player player = session.getPlayer();
|
|
player.setWidgetId(req.getMaterialId());
|
|
|
|
// WidgetSlotChangeNotify op & slot key
|
|
session.send(new PacketWidgetSlotChangeNotify(WidgetSlotOpOuterClass.WidgetSlotOp.WIDGET_SLOT_OP_DETACH));
|
|
|
|
//only attaching the widget can set it
|
|
if(req.getOp() == WidgetSlotOpOuterClass.WidgetSlotOp.WIDGET_SLOT_OP_ATTACH){
|
|
// WidgetSlotChangeNotify slot
|
|
session.send(new PacketWidgetSlotChangeNotify(req.getMaterialId()));
|
|
}
|
|
|
|
// SetWidgetSlotRsp
|
|
session.send(new PacketSetWidgetSlotRsp(req.getMaterialId()));
|
|
}
|
|
|
|
}
|
|
|