mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2026-05-30 10:29:58 +08:00
fix: home transfer (#2327)
* fix: home transfer * Update HomeSceneItem.java
This commit is contained in:
committed by
GitHub
Unverified
parent
f8fb6732de
commit
1894296ed4
@@ -1,11 +1,11 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import com.github.davidmoten.guavamini.Lists;
|
||||
import emu.grasscutter.game.home.HomeFurnitureItem;
|
||||
import emu.grasscutter.net.packet.*;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.HomeTransferReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import java.util.List;
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeTransferReq)
|
||||
public class HandlerHomeTransferReq extends PacketHandler {
|
||||
@@ -16,28 +16,15 @@ public class HandlerHomeTransferReq extends PacketHandler {
|
||||
var home = player.getCurHomeWorld().getHome();
|
||||
var item = home.getHomeSceneItem(player.getSceneId());
|
||||
|
||||
if (req.getIsTransferToSafePoint()) {
|
||||
player
|
||||
.getCurHomeWorld()
|
||||
.transferPlayerToScene(player, player.getSceneId(), item.getBornPos());
|
||||
} else {
|
||||
for (var homeBlockItem : item.getBlockItems().values()) {
|
||||
List<HomeFurnitureItem> items = Lists.newArrayList();
|
||||
items.addAll(homeBlockItem.getDeployFurnitureList());
|
||||
items.addAll(homeBlockItem.getPersistentFurnitureList());
|
||||
items.stream()
|
||||
.filter(homeFurnitureItem -> homeFurnitureItem.getGuid() == req.getGuid())
|
||||
.findFirst()
|
||||
.ifPresent(
|
||||
homeFurnitureItem -> {
|
||||
player
|
||||
.getCurHomeWorld()
|
||||
.transferPlayerToScene(
|
||||
player, player.getSceneId(), homeFurnitureItem.getSpawnPos());
|
||||
});
|
||||
var pos = req.getIsTransferToMainHousePoint() ? item.getBornPos() : player.getCurHomeWorld().getSceneById(player.getSceneId()).getScriptManager().getConfig().born_pos;
|
||||
if (req.getGuid() != 0) {
|
||||
var target = item.getTeleportPointPos(req.getGuid());
|
||||
if (target != null) {
|
||||
pos = target;
|
||||
}
|
||||
}
|
||||
|
||||
player.getCurHomeWorld().transferPlayerToScene(player, player.getSceneId(), pos);
|
||||
session.send(new BasePacket(PacketOpcodes.HomeTransferRsp));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.home.GameHome;
|
||||
import emu.grasscutter.net.packet.*;
|
||||
import emu.grasscutter.net.proto.*;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.FriendEnterHomeOptionOuterClass;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
import emu.grasscutter.net.proto.TryEnterHomeReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketTryEnterHomeRsp;
|
||||
|
||||
@@ -45,15 +49,16 @@ public class HandlerTryEnterHomeReq extends PacketHandler {
|
||||
RetcodeOuterClass.Retcode.RET_HOME_HOME_REFUSE_GUEST_ENTER_VALUE,
|
||||
req.getTargetUid()));
|
||||
}
|
||||
case FriendEnterHomeOptionOuterClass.FriendEnterHomeOption
|
||||
.FRIEND_ENTER_HOME_OPTION_DIRECT_VALUE -> {
|
||||
session.getServer().getHomeWorldMPSystem().enterHome(session.getPlayer(), targetPlayer);
|
||||
|
||||
case FriendEnterHomeOptionOuterClass.FriendEnterHomeOption.FRIEND_ENTER_HOME_OPTION_DIRECT_VALUE -> {
|
||||
session.getServer().getHomeWorldMPSystem().enterHome(session.getPlayer(), targetPlayer, req.getTargetPoint(), req.getIsTransferToSafePoint());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
session.getServer().getHomeWorldMPSystem().enterHome(session.getPlayer(), targetPlayer);
|
||||
session.getServer().getHomeWorldMPSystem().enterHome(session.getPlayer(), targetPlayer, req.getTargetPoint(), req.getIsTransferToSafePoint());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user