mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-20 10:55:08 +01:00
SetPlayerPropReq Handler and player.setProperty() sanity check.
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.props.PlayerProperty;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.PropValueOuterClass.PropValue;
|
||||
import emu.grasscutter.net.proto.SetPlayerPropReqOuterClass.SetPlayerPropReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketSetPlayerNameRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketSetPlayerPropRsp;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Opcodes(PacketOpcodes.SetPlayerPropReq)
|
||||
public class HandlerSetPlayerPropReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
// Auto template
|
||||
SetPlayerPropReq req = SetPlayerPropReq.parseFrom(payload);
|
||||
Player player = session.getPlayer();
|
||||
List<PropValue> propList = req.getPropListList();
|
||||
for (int i = 0; i < propList.size(); i++) {
|
||||
if (!player.setProperty(PlayerProperty.getPropById(propList.get(i).getType()), (int)propList.get(i).getVal())) {
|
||||
session.send(new PacketSetPlayerPropRsp(1));
|
||||
}
|
||||
}
|
||||
player.save();
|
||||
session.send(new PacketSetPlayerPropRsp(0));
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user