Files
Grasscutter/src/main/java/emu/grasscutter/server/packet/send/PacketHomeMarkPointNotify.java
T

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);
}
}