feat: implement teapot suite (#2344)

* feat: implement teapot suite

* fix: home animals, check respawn, etc

* fix: NPE and cancel summon events

* fix: forgot to send eventId also
This commit is contained in:
hamusuke
2023-09-08 12:34:03 +09:00
committed by GitHub
Unverified
parent 83602f78ae
commit fc42f665a7
36 changed files with 1125 additions and 210 deletions
@@ -1,7 +1,5 @@
package emu.grasscutter.server.packet.recv;
import emu.grasscutter.game.world.Position;
import emu.grasscutter.game.world.Scene;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
@@ -19,9 +17,10 @@ public class HandlerHomeChangeModuleReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
HomeChangeModuleReqOuterClass.HomeChangeModuleReq req =
HomeChangeModuleReqOuterClass.HomeChangeModuleReq.parseFrom(payload);
HomeChangeModuleReqOuterClass.HomeChangeModuleReq.parseFrom(payload);
if (!session.getPlayer().getCurHomeWorld().getGuests().isEmpty()) {
var homeWorld = session.getPlayer().getCurHomeWorld();
if (!homeWorld.getGuests().isEmpty()) {
session.send(new PacketHomeChangeModuleRsp());
return;
}
@@ -33,13 +32,10 @@ public class HandlerHomeChangeModuleReq extends PacketHandler {
session.send(new PacketHomeComfortInfoNotify(session.getPlayer()));
int realmId = 2000 + req.getTargetModuleId();
var scene = homeWorld.getSceneById(realmId);
var pos = scene.getScriptManager().getConfig().born_pos;
Scene scene = session.getPlayer().getWorld().getSceneById(realmId);
Position pos = scene.getScriptManager().getConfig().born_pos;
session
.getPlayer()
.getWorld()
.transferPlayerToScene(session.getPlayer(), realmId, TeleportType.WAYPOINT, pos);
homeWorld.transferPlayerToScene(session.getPlayer(), realmId, TeleportType.WAYPOINT, pos);
homeWorld.refreshModuleManager();
}
}