From c67e324a2eff1e448703a5af6df3b07d48a06d87 Mon Sep 17 00:00:00 2001 From: LDA Date: Fri, 29 Apr 2022 00:04:37 -0700 Subject: [PATCH] Fix sitting in chairs --- .../grasscutter/net/packet/PacketOpcodes.java | 2 ++ .../recv/HandlerEvtAvatarLockChairReq.java | 25 +++++++++++++++++++ .../recv/HandlerEvtAvatarSitDownNotify.java | 4 +-- .../recv/HandlerEvtAvatarStandUpNotify.java | 20 +++++++++++++++ .../send/PacketEvtAvatarLockChairRsp.java | 23 +++++++++++++++++ .../send/PacketEvtAvatarStandUpNotify.java | 21 ++++++++++++++++ 6 files changed, 93 insertions(+), 2 deletions(-) create mode 100644 src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtAvatarLockChairReq.java create mode 100644 src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtAvatarStandUpNotify.java create mode 100644 src/main/java/emu/grasscutter/server/packet/send/PacketEvtAvatarLockChairRsp.java create mode 100644 src/main/java/emu/grasscutter/server/packet/send/PacketEvtAvatarStandUpNotify.java diff --git a/src/main/java/emu/grasscutter/net/packet/PacketOpcodes.java b/src/main/java/emu/grasscutter/net/packet/PacketOpcodes.java index ce0f6f2a0..9be2e5b32 100644 --- a/src/main/java/emu/grasscutter/net/packet/PacketOpcodes.java +++ b/src/main/java/emu/grasscutter/net/packet/PacketOpcodes.java @@ -355,6 +355,8 @@ public class PacketOpcodes { public static final int EvtAvatarSitDownNotify = 392; public static final int EvtAvatarStandUpNotify = 358; public static final int EvtAvatarUpdateFocusNotify = 365; + public static final int EvtAvatarLockChairReq = 354; + public static final int EvtAvatarLockChairRsp = 335; public static final int EvtBeingHitNotify = 360; public static final int EvtBeingHitsCombineNotify = 381; public static final int EvtBulletDeactiveNotify = 388; diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtAvatarLockChairReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtAvatarLockChairReq.java new file mode 100644 index 000000000..2a325b438 --- /dev/null +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtAvatarLockChairReq.java @@ -0,0 +1,25 @@ +package emu.grasscutter.server.packet.recv; + +import emu.grasscutter.game.entity.EntityAvatar; +import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.EvtAvatarLockChairReqOuterClass.EvtAvatarLockChairReq; +import emu.grasscutter.net.proto.PacketHeadOuterClass.PacketHead; +import emu.grasscutter.server.game.GameSession; +import emu.grasscutter.server.packet.send.PacketEvtAvatarLockChairRsp; + +@Opcodes(PacketOpcodes.EvtAvatarLockChairReq) +public class HandlerEvtAvatarLockChairReq extends PacketHandler { + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + PacketHead head = PacketHead.parseFrom(header); + EvtAvatarLockChairReq lockChairReq = EvtAvatarLockChairReq.parseFrom(payload); + + EntityAvatar entityAvatar = session.getPlayer().getTeamManager().getCurrentAvatarEntity(); + + session.send(new PacketEvtAvatarLockChairRsp(head.getClientSequenceId(), entityAvatar, lockChairReq)); + } + +} diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtAvatarSitDownNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtAvatarSitDownNotify.java index d825bf21a..91b774240 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtAvatarSitDownNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtAvatarSitDownNotify.java @@ -1,9 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.EvtAvatarSitDownNotifyOuterClass.EvtAvatarSitDownNotify; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketEvtAvatarSitDownNotify; @@ -14,7 +14,7 @@ public class HandlerEvtAvatarSitDownNotify extends PacketHandler { public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { EvtAvatarSitDownNotify notify = EvtAvatarSitDownNotify.parseFrom(payload); - session.send(new PacketEvtAvatarSitDownNotify(notify)); + session.getPlayer().getScene().broadcastPacket(new PacketEvtAvatarSitDownNotify(notify)); } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtAvatarStandUpNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtAvatarStandUpNotify.java new file mode 100644 index 000000000..ebb02c41e --- /dev/null +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtAvatarStandUpNotify.java @@ -0,0 +1,20 @@ +package emu.grasscutter.server.packet.recv; + +import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.EvtAvatarStandUpNotifyOuterClass.EvtAvatarStandUpNotify; +import emu.grasscutter.server.game.GameSession; +import emu.grasscutter.server.packet.send.PacketEvtAvatarStandUpNotify; + +@Opcodes(PacketOpcodes.EvtAvatarStandUpNotify) +public class HandlerEvtAvatarStandUpNotify extends PacketHandler { + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + EvtAvatarStandUpNotify notify = EvtAvatarStandUpNotify.parseFrom(payload); + + session.getPlayer().getScene().broadcastPacket(new PacketEvtAvatarStandUpNotify(notify)); + } + +} diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketEvtAvatarLockChairRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketEvtAvatarLockChairRsp.java new file mode 100644 index 000000000..5b703aea3 --- /dev/null +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketEvtAvatarLockChairRsp.java @@ -0,0 +1,23 @@ +package emu.grasscutter.server.packet.send; + +import emu.grasscutter.game.entity.EntityAvatar; +import emu.grasscutter.net.packet.BasePacket; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.EvtAvatarLockChairReqOuterClass.EvtAvatarLockChairReq; +import emu.grasscutter.net.proto.EvtAvatarLockChairRspOuterClass.EvtAvatarLockChairRsp; +import emu.grasscutter.net.proto.RetcodeOuterClass; + +public class PacketEvtAvatarLockChairRsp extends BasePacket { + public PacketEvtAvatarLockChairRsp(int clientSequence, EntityAvatar entityAvatar, EvtAvatarLockChairReq lockChairReq) { + super(PacketOpcodes.EvtAvatarLockChairRsp); + + EvtAvatarLockChairRsp p = EvtAvatarLockChairRsp.newBuilder() + .setRetcode(RetcodeOuterClass.Retcode.RET_SUCC_VALUE) + .setEntityId(entityAvatar.getId()) + .setPosition(lockChairReq.getPosition()) + .setChairId(lockChairReq.getChairId()) + .build(); + + this.setData(p); + } +} diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketEvtAvatarStandUpNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketEvtAvatarStandUpNotify.java new file mode 100644 index 000000000..07cdf9054 --- /dev/null +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketEvtAvatarStandUpNotify.java @@ -0,0 +1,21 @@ +package emu.grasscutter.server.packet.send; + +import emu.grasscutter.net.packet.BasePacket; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.EvtAvatarStandUpNotifyOuterClass.EvtAvatarStandUpNotify; + +public class PacketEvtAvatarStandUpNotify extends BasePacket { + + public PacketEvtAvatarStandUpNotify(EvtAvatarStandUpNotify notify) { + super(PacketOpcodes.EvtAvatarStandUpNotify); + + EvtAvatarStandUpNotify proto = EvtAvatarStandUpNotify.newBuilder() + .setEntityId(notify.getEntityId()) + .setDirection(notify.getDirection()) + .setPerformID(notify.getPerformID()) + .setChairId(notify.getChairId()) + .build(); + + this.setData(proto); + } +}