mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2026-05-18 05:39:56 +08:00
52 lines
1.9 KiB
Java
52 lines
1.9 KiB
Java
package emu.grasscutter.server.packet.send;
|
|
|
|
import emu.grasscutter.game.home.HomeBlockItem;
|
|
import emu.grasscutter.game.player.Player;
|
|
import emu.grasscutter.net.packet.BasePacket;
|
|
import emu.grasscutter.net.packet.PacketOpcodes;
|
|
import emu.grasscutter.net.proto.HomeMarkPointNotifyOuterClass;
|
|
import emu.grasscutter.net.proto.HomeMarkPointSceneDataOuterClass;
|
|
|
|
import java.util.Collection;
|
|
|
|
public class PacketHomeMarkPointNotify extends BasePacket {
|
|
|
|
public PacketHomeMarkPointNotify(Player player) {
|
|
super(PacketOpcodes.HomeMarkPointNotify);
|
|
|
|
var proto = HomeMarkPointNotifyOuterClass.HomeMarkPointNotify.newBuilder();
|
|
var owner = player.getCurHomeWorld().getHost();
|
|
var home = player.getCurHomeWorld().getHome();
|
|
|
|
if (owner.getRealmList() == null) {
|
|
return;
|
|
}
|
|
|
|
for (var moduleId : owner.getRealmList()) {
|
|
var homeScene = home.getHomeSceneItem(moduleId + 2000);
|
|
|
|
var markPointData =
|
|
HomeMarkPointSceneDataOuterClass.HomeMarkPointSceneData.newBuilder()
|
|
.setModuleId(moduleId)
|
|
.setSceneId(moduleId + 2000)
|
|
.setSafePointPos(homeScene.getBornPos().toProto())
|
|
.setTeapotSpiritPos(homeScene.getDjinnPos().toProto());
|
|
|
|
// Now it only supports the teleport point
|
|
// TODO add more types
|
|
var marks =
|
|
homeScene.getBlockItems().values().stream()
|
|
.map(HomeBlockItem::getDeployFurnitureList)
|
|
.flatMap(Collection::stream)
|
|
.filter(i -> i.getFurnitureId() == 373501)
|
|
.map(x -> x.toMarkPointProto(3))
|
|
.toList();
|
|
|
|
markPointData.addAllFurnitureList(marks);
|
|
proto.addMarkPointDataList(markPointData);
|
|
}
|
|
|
|
this.setData(proto);
|
|
}
|
|
}
|