fix: home transfer (#2327)

* fix: home transfer

* Update HomeSceneItem.java
This commit is contained in:
hamusuke
2023-09-03 08:04:02 +09:00
committed by GitHub
parent f8fb6732de
commit 1894296ed4
6 changed files with 150 additions and 137 deletions

View File

@@ -9,9 +9,12 @@ import emu.grasscutter.game.entity.EntityHomeAnimal;
import emu.grasscutter.game.world.Position;
import emu.grasscutter.game.world.Scene;
import emu.grasscutter.net.proto.HomeSceneArrangementInfoOuterClass.HomeSceneArrangementInfo;
import javax.annotation.Nullable;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
import lombok.*;
import lombok.experimental.FieldDefaults;
@@ -81,6 +84,21 @@ public class HomeSceneItem {
return mainHouse == null || mainHouse.getAsItem() == null;
}
@Nullable
public Position getTeleportPointPos(int guid) {
var pos = new AtomicReference<Position>();
this.getBlockItems().values().stream()
.map(HomeBlockItem::getDeployFurnitureList)
.flatMap(Collection::stream)
.filter(homeFurnitureItem -> homeFurnitureItem.getGuid() == guid)
.map(HomeFurnitureItem::getSpawnPos)
.findFirst()
.ifPresent(pos::set);
return pos.get();
}
public List<EntityHomeAnimal> getAnimals(Scene scene) {
return this.blockItems.values().stream()
.map(HomeBlockItem::getDeployAnimalList)