mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-22 03:45:10 +01:00
Fireworks support (#1393)
* Firework Implement * add legacy function * remove obfusucated names * remove obfusucated names * remove obfusucated names * remove obfusucated names Co-authored-by: Melledy <52122272+Melledy@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
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.FireWorkReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketFireworkNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketFireworkRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.FireworkReq)
|
||||
public class HandlerFireWorkReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
|
||||
var req
|
||||
= FireWorkReqOuterClass.FireWorkReq.parseFrom(payload);
|
||||
session.send(new PacketFireworkNotify(req.getFireWorkData()));
|
||||
session.send(new PacketFireworkRsp());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
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.FireworkSetReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketFireworkSetNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketFireworkSetRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.FireworkSetReq)
|
||||
public class HandlerFireworkSetReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
|
||||
var req
|
||||
= FireworkSetReqOuterClass.FireworkSetReq.parseFrom(payload);
|
||||
|
||||
|
||||
session.send(new PacketFireworkSetNotify(req.getData()));
|
||||
session.send(new PacketFireworkSetRsp());
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,14 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.excels.GadgetData;
|
||||
import emu.grasscutter.game.entity.EntityVehicle;
|
||||
import emu.grasscutter.game.entity.GameEntity;
|
||||
import emu.grasscutter.game.props.LifeState;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.*;
|
||||
import emu.grasscutter.net.proto.WidgetDoBagReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketSceneEntityAppearNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketWidgetCoolDownNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketWidgetDoBagRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketWidgetGadgetDataNotify;
|
||||
@@ -41,12 +38,31 @@ public class HandlerWidgetDoBagReq extends PacketHandler {
|
||||
|
||||
session.getPlayer().getScene().addEntity(entity);
|
||||
|
||||
session.send(new PacketWidgetGadgetDataNotify(70500025, List.of(entity.getId()))); // ???
|
||||
session.send(new PacketWidgetGadgetDataNotify(70500025, entity.getId())); // ???
|
||||
session.send(new PacketWidgetCoolDownNotify(15, System.currentTimeMillis() + 5000L, true));
|
||||
session.send(new PacketWidgetCoolDownNotify(15, System.currentTimeMillis() + 5000L, true));
|
||||
// Send twice, and I don't know why, Ask mhy
|
||||
session.send(new PacketWidgetDoBagRsp());
|
||||
}
|
||||
case 220047 -> {
|
||||
GadgetData gadgetData = GameData.getGadgetDataMap().get(70800058);
|
||||
Position pos = new Position(req.getWidgetCreatorInfo().getLocationInfo().getPos());
|
||||
Position rot = new Position(req.getWidgetCreatorInfo().getLocationInfo().getRot());
|
||||
GameEntity entity = new EntityVehicle(
|
||||
session.getPlayer().getScene(),
|
||||
session.getPlayer(),
|
||||
gadgetData.getId(),
|
||||
0,
|
||||
pos,
|
||||
rot
|
||||
);
|
||||
|
||||
session.getPlayer().getScene().addEntity(entity);
|
||||
|
||||
session.send(new PacketWidgetGadgetDataNotify(70800058, entity.getId())); // ???
|
||||
// Send twice, and I don't know why, Ask mhy
|
||||
session.send(new PacketWidgetDoBagRsp());
|
||||
}
|
||||
default -> {
|
||||
session.send(new PacketWidgetDoBagRsp());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user