diff --git a/src/main/java/emu/grasscutter/game/home/GameHome.java b/src/main/java/emu/grasscutter/game/home/GameHome.java index a77bee5dc..10d488aa2 100644 --- a/src/main/java/emu/grasscutter/game/home/GameHome.java +++ b/src/main/java/emu/grasscutter/game/home/GameHome.java @@ -13,17 +13,16 @@ import emu.grasscutter.net.proto.HomeAvatarTalkFinishInfoOuterClass.HomeAvatarTa import emu.grasscutter.server.packet.send.*; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.IntSets; -import lombok.AccessLevel; -import lombok.Builder; -import lombok.Data; -import lombok.experimental.FieldDefaults; - import java.time.ZonedDateTime; import java.time.temporal.ChronoUnit; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; import java.util.stream.Stream; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Data; +import lombok.experimental.FieldDefaults; @Entity(value = "homes", useDiscriminator = false) @Data @@ -39,8 +38,9 @@ public class GameHome { .map(SceneData::getId) .collect(Collectors.toUnmodifiableSet()); public static final Set HOME_MODULE_IDS = - GameData.getHomeWorldModuleDataMap().isEmpty() ? - IntSets.fromTo(1, 6) : GameData.getHomeWorldModuleDataMap().keySet(); + GameData.getHomeWorldModuleDataMap().isEmpty() + ? IntSets.fromTo(1, 6) + : GameData.getHomeWorldModuleDataMap().keySet(); @Id String id; @@ -205,7 +205,9 @@ public class GameHome { return; } - this.player.getRealmList().removeIf(integer -> !HOME_MODULE_IDS.contains(integer)); // Delete invalid module ids. + this.player + .getRealmList() + .removeIf(integer -> !HOME_MODULE_IDS.contains(integer)); // Delete invalid module ids. if (this.player.getRealmList().isEmpty()) { this.player.setRealmList(null); @@ -217,7 +219,11 @@ public class GameHome { int firstRId = this.player.getRealmList().iterator().next(); this.player.setCurrentRealmId(firstRId); this.player.save(); - Grasscutter.getLogger().info("Set player {}'s current realm id to {} cuz the id is invalid.", this.player.getUid(), firstRId); + Grasscutter.getLogger() + .info( + "Set player {}'s current realm id to {} cuz the id is invalid.", + this.player.getUid(), + firstRId); } this.player.getCurHomeWorld().refreshModuleManager(); // Apply module id fix. @@ -268,8 +274,7 @@ public class GameHome { return this.finishedTalkIdMap.get(avatarId); } - public List - toAvatarTalkFinishInfoProto() { + public List toAvatarTalkFinishInfoProto() { if (this.finishedTalkIdMap == null) { this.finishedTalkIdMap = new HashMap<>(); } diff --git a/src/main/java/emu/grasscutter/game/home/HomeModuleManager.java b/src/main/java/emu/grasscutter/game/home/HomeModuleManager.java index 6ecff98de..6d824d584 100644 --- a/src/main/java/emu/grasscutter/game/home/HomeModuleManager.java +++ b/src/main/java/emu/grasscutter/game/home/HomeModuleManager.java @@ -12,14 +12,13 @@ import emu.grasscutter.net.proto.HomeAvatarSummonAllEventNotifyOuterClass.HomeAv import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode; import emu.grasscutter.server.packet.send.PacketHomeAvatarSummonAllEventNotify; import emu.grasscutter.utils.Either; +import java.util.*; +import java.util.stream.Stream; +import javax.annotation.Nullable; import lombok.AccessLevel; import lombok.Getter; import lombok.experimental.FieldDefaults; -import javax.annotation.Nullable; -import java.util.*; -import java.util.stream.Stream; - @Getter @FieldDefaults(level = AccessLevel.PRIVATE) public class HomeModuleManager { @@ -27,10 +26,8 @@ public class HomeModuleManager { final HomeWorld homeWorld; final GameHome home; final int moduleId; - @Nullable - final HomeScene outdoor; - @Nullable - HomeScene indoor; + @Nullable final HomeScene outdoor; + @Nullable HomeScene indoor; final List rewardEvents; final List summonEvents; @@ -77,45 +74,45 @@ public class HomeModuleManager { private void fireAllAvatarRewardEvents() { this.rewardEvents.clear(); var allBlockItems = - Stream.of(this.getOutdoorSceneItem(), this.getIndoorSceneItem()) - .filter(Objects::nonNull) - .map(HomeSceneItem::getBlockItems) - .map(Map::values) - .flatMap(Collection::stream) - .toList(); + Stream.of(this.getOutdoorSceneItem(), this.getIndoorSceneItem()) + .filter(Objects::nonNull) + .map(HomeSceneItem::getBlockItems) + .map(Map::values) + .flatMap(Collection::stream) + .toList(); var suites = - allBlockItems.stream() - .map(HomeBlockItem::getSuiteList) - .filter(Objects::nonNull) - .flatMap(Collection::stream) - .distinct() - .toList(); + allBlockItems.stream() + .map(HomeBlockItem::getSuiteList) + .filter(Objects::nonNull) + .flatMap(Collection::stream) + .distinct() + .toList(); allBlockItems.stream() - .map(HomeBlockItem::getDeployNPCList) - .flatMap(Collection::stream) - .forEach( - avatar -> { - suites.forEach( - suite -> { - var data = - SuiteEventType.HOME_AVATAR_REWARD_EVENT.getEventDataFrom( - avatar.getAvatarId(), suite.getSuiteId()); - if (data == null || this.home.isRewardEventFinished(data.getId())) { - return; - } + .map(HomeBlockItem::getDeployNPCList) + .flatMap(Collection::stream) + .forEach( + avatar -> { + suites.forEach( + suite -> { + var data = + SuiteEventType.HOME_AVATAR_REWARD_EVENT.getEventDataFrom( + avatar.getAvatarId(), suite.getSuiteId()); + if (data == null || this.home.isRewardEventFinished(data.getId())) { + return; + } - this.rewardEvents.add( - new HomeAvatarRewardEvent( - homeOwner, - data.getId(), - data.getRewardID(), - data.getAvatarID(), - data.getSuiteId(), - suite.getGuid())); + this.rewardEvents.add( + new HomeAvatarRewardEvent( + homeOwner, + data.getId(), + data.getRewardID(), + data.getAvatarID(), + data.getSuiteId(), + suite.getGuid())); + }); }); - }); if (this.summonEvents != null) { var suiteIdList = this.rewardEvents.stream().map(HomeAvatarRewardEvent::getSuiteId).toList(); @@ -125,15 +122,15 @@ public class HomeModuleManager { private void cancelSummonEventsIfAvatarLeave() { var avatars = - Stream.of(this.getOutdoorSceneItem(), this.getIndoorSceneItem()) - .filter(Objects::nonNull) - .map(HomeSceneItem::getBlockItems) - .map(Map::values) - .flatMap(Collection::stream) - .map(HomeBlockItem::getDeployNPCList) - .flatMap(Collection::stream) - .map(HomeNPCItem::getAvatarId) - .toList(); + Stream.of(this.getOutdoorSceneItem(), this.getIndoorSceneItem()) + .filter(Objects::nonNull) + .map(HomeSceneItem::getBlockItems) + .map(Map::values) + .flatMap(Collection::stream) + .map(HomeBlockItem::getDeployNPCList) + .flatMap(Collection::stream) + .map(HomeNPCItem::getAvatarId) + .toList(); this.summonEvents.removeIf(event -> !avatars.contains(event.getAvatarId())); } @@ -156,16 +153,16 @@ public class HomeModuleManager { } public Either fireAvatarSummonEvent( - Player owner, int avatarId, int guid, int suiteId) { + Player owner, int avatarId, int guid, int suiteId) { HomeSuiteItem targetSuite = null; if (owner.getScene() instanceof HomeScene homeScene) { - targetSuite = homeScene - .getSceneItem().getBlockItems().values().stream() - .map(HomeBlockItem::getSuiteList) - .flatMap(Collection::stream) - .filter(suite -> suite.getGuid() == guid) - .findFirst() - .orElse(null); + targetSuite = + homeScene.getSceneItem().getBlockItems().values().stream() + .map(HomeBlockItem::getSuiteList) + .flatMap(Collection::stream) + .filter(suite -> suite.getGuid() == guid) + .findFirst() + .orElse(null); } if (this.isInRewardEvent(avatarId)) { @@ -188,8 +185,8 @@ public class HomeModuleManager { } var event = - new HomeAvatarSummonEvent( - owner, eventData.getId(), eventData.getRewardID(), avatarId, suiteId, guid); + new HomeAvatarSummonEvent( + owner, eventData.getId(), eventData.getRewardID(), avatarId, suiteId, guid); this.summonEvents.add(event); owner.sendPacket(new PacketHomeAvatarSummonAllEventNotify(owner)); return Either.left(event); @@ -205,9 +202,9 @@ public class HomeModuleManager { notify.setRewardEvent(this.rewardEvents.get(0).toProto()).setIsEventTrigger(true); notify.addAllPendingList( - this.rewardEvents.subList(1, this.rewardEvents.size()).stream() - .map(HomeAvatarRewardEvent::toProto) - .toList()); + this.rewardEvents.subList(1, this.rewardEvents.size()).stream() + .map(HomeAvatarRewardEvent::toProto) + .toList()); } return notify.build(); @@ -215,22 +212,20 @@ public class HomeModuleManager { public HomeAvatarSummonAllEventNotify toSummonEventProto() { return HomeAvatarSummonAllEventNotify.newBuilder() - .addAllSummonEventList( - this.summonEvents.stream().map(HomeAvatarSummonEvent::toProto).toList()) - .build(); + .addAllSummonEventList( + this.summonEvents.stream().map(HomeAvatarSummonEvent::toProto).toList()) + .build(); } public boolean isInRewardEvent(int avatarId) { return this.rewardEvents.stream().anyMatch(e -> e.getAvatarId() == avatarId); } - @Nullable - public HomeSceneItem getOutdoorSceneItem() { + @Nullable public HomeSceneItem getOutdoorSceneItem() { return this.outdoor == null ? null : this.outdoor.getSceneItem(); } - @Nullable - public HomeSceneItem getIndoorSceneItem() { + @Nullable public HomeSceneItem getIndoorSceneItem() { return this.indoor == null ? null : this.indoor.getSceneItem(); } diff --git a/src/main/java/emu/grasscutter/game/home/HomeWorld.java b/src/main/java/emu/grasscutter/game/home/HomeWorld.java index cf6257df2..582273d4b 100644 --- a/src/main/java/emu/grasscutter/game/home/HomeWorld.java +++ b/src/main/java/emu/grasscutter/game/home/HomeWorld.java @@ -10,11 +10,10 @@ import emu.grasscutter.server.game.GameServer; import emu.grasscutter.server.packet.send.PacketDelTeamEntityNotify; import emu.grasscutter.server.packet.send.PacketPlayerChatNotify; import emu.grasscutter.server.packet.send.PacketPlayerGameTimeNotify; -import lombok.Getter; - -import javax.annotation.Nullable; import java.util.List; import java.util.function.Consumer; +import javax.annotation.Nullable; +import lombok.Getter; @Getter public class HomeWorld extends World { @@ -170,8 +169,7 @@ public class HomeWorld extends World { } @Override - @Nullable - public HomeScene getSceneById(int sceneId) { + @Nullable public HomeScene getSceneById(int sceneId) { var scene = this.getScenes().get(sceneId); if (scene instanceof HomeScene homeScene) { return homeScene; diff --git a/src/main/java/emu/grasscutter/game/home/HomeWorldMPSystem.java b/src/main/java/emu/grasscutter/game/home/HomeWorldMPSystem.java index 95b8b6ec4..a5697ce86 100644 --- a/src/main/java/emu/grasscutter/game/home/HomeWorldMPSystem.java +++ b/src/main/java/emu/grasscutter/game/home/HomeWorldMPSystem.java @@ -144,10 +144,7 @@ public class HomeWorldMPSystem extends BaseGameSystem { Position pos; if (scene != null) { - pos = - toSafe - ? scene.getScriptManager().getConfig().born_pos - : item.getBornPos(); + pos = toSafe ? scene.getScriptManager().getConfig().born_pos : item.getBornPos(); } else { pos = item.getBornPos(); } diff --git a/src/main/java/emu/grasscutter/game/world/World.java b/src/main/java/emu/grasscutter/game/world/World.java index c2635b53a..4c53acb8c 100644 --- a/src/main/java/emu/grasscutter/game/world/World.java +++ b/src/main/java/emu/grasscutter/game/world/World.java @@ -1,5 +1,7 @@ package emu.grasscutter.game.world; +import static emu.grasscutter.server.event.player.PlayerTeleportEvent.TeleportType.SCRIPT; + import emu.grasscutter.Grasscutter; import emu.grasscutter.data.GameData; import emu.grasscutter.data.excels.dungeon.DungeonData; @@ -27,11 +29,6 @@ import io.netty.util.concurrent.FastThreadLocalThread; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; -import lombok.Getter; -import lombok.val; -import org.jetbrains.annotations.NotNull; - -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; @@ -40,8 +37,10 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.LinkedBlockingDeque; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; - -import static emu.grasscutter.server.event.player.PlayerTeleportEvent.TeleportType.SCRIPT; +import javax.annotation.Nullable; +import lombok.Getter; +import lombok.val; +import org.jetbrains.annotations.NotNull; public class World implements Iterable { @Getter private final GameServer server; @@ -140,8 +139,7 @@ public class World implements Iterable { * @param sceneId The scene ID. * @return The scene. */ - @Nullable - public Scene getSceneById(int sceneId) { + @Nullable public Scene getSceneById(int sceneId) { // Get scene normally var scene = this.getScenes().get(sceneId); if (scene != null) { diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeSceneJumpReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeSceneJumpReq.java index efd876aba..b91bd3ff6 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeSceneJumpReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeSceneJumpReq.java @@ -34,8 +34,7 @@ public class HandlerHomeSceneJumpReq extends PacketHandler { pos = home.getSceneMap().get(realmId).getBornPos(); } - world.transferPlayerToScene( - session.getPlayer(), scene.getId(), pos); + world.transferPlayerToScene(session.getPlayer(), scene.getId(), pos); session.send(new PacketHomeSceneJumpRsp(req.getIsEnterRoomScene())); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeChangeModuleRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeChangeModuleRsp.java index 0762e2620..47d013c8e 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeChangeModuleRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeChangeModuleRsp.java @@ -10,10 +10,8 @@ public class PacketHomeChangeModuleRsp extends BasePacket { public PacketHomeChangeModuleRsp(int targetModuleId) { super(PacketOpcodes.HomeChangeModuleRsp); - var proto = HomeChangeModuleRsp.newBuilder() - .setRetcode(0) - .setTargetModuleId(targetModuleId) - .build(); + var proto = + HomeChangeModuleRsp.newBuilder().setRetcode(0).setTargetModuleId(targetModuleId).build(); this.setData(proto); } @@ -21,7 +19,6 @@ public class PacketHomeChangeModuleRsp extends BasePacket { public PacketHomeChangeModuleRsp(Retcode retcode) { super(PacketOpcodes.HomeChangeModuleRsp); - this.setData(HomeChangeModuleRsp.newBuilder() - .setRetcode(retcode.getNumber())); + this.setData(HomeChangeModuleRsp.newBuilder().setRetcode(retcode.getNumber())); } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeMarkPointNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeMarkPointNotify.java index 238d8e862..349854225 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeMarkPointNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeMarkPointNotify.java @@ -8,7 +8,6 @@ import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.HomeMarkPointNotifyOuterClass.HomeMarkPointNotify; import emu.grasscutter.net.proto.HomeMarkPointSceneDataOuterClass.HomeMarkPointSceneData; - import java.util.Collection; import java.util.Set; @@ -30,41 +29,43 @@ public class PacketHomeMarkPointNotify extends BasePacket { var moduleId = owner.getCurrentRealmId(); var scene = world.getSceneById(moduleId + 2000); if (scene == null) { - Grasscutter.getLogger().warn("Current Realm id is invalid! SceneExcelConfigData.json, game resource not loaded correctly or the realm id maybe wrong?!"); + Grasscutter.getLogger() + .warn( + "Current Realm id is invalid! SceneExcelConfigData.json, game resource not loaded correctly or the realm id maybe wrong?!"); return; } var homeScene = home.getHomeSceneItem(moduleId + 2000); var mainHouse = home.getMainHouseItem(moduleId + 2000); Set.of(homeScene, mainHouse) - .forEach( - homeSceneItem -> { - var markPointData = - HomeMarkPointSceneData.newBuilder() - .setModuleId(moduleId) - .setSceneId(homeSceneItem.getSceneId()); + .forEach( + homeSceneItem -> { + var markPointData = + HomeMarkPointSceneData.newBuilder() + .setModuleId(moduleId) + .setSceneId(homeSceneItem.getSceneId()); - if (!homeSceneItem.isRoom()) { - var config = scene.getScriptManager().getConfig(); - markPointData - .setSafePointPos( - config == null - ? homeSceneItem.getBornPos().toProto() - : config.born_pos.toProto()) - .setTeapotSpiritPos(homeSceneItem.getDjinnPos().toProto()); - } + if (!homeSceneItem.isRoom()) { + var config = scene.getScriptManager().getConfig(); + markPointData + .setSafePointPos( + config == null + ? homeSceneItem.getBornPos().toProto() + : config.born_pos.toProto()) + .setTeapotSpiritPos(homeSceneItem.getDjinnPos().toProto()); + } - var marks = - homeSceneItem.getBlockItems().values().stream() - .map(HomeBlockItem::getMarkPointProtoFactories) - .flatMap(Collection::stream) - .filter(HomeMarkPointProtoFactory::isProtoConvertible) - .map(HomeMarkPointProtoFactory::toMarkPointProto) - .toList(); + var marks = + homeSceneItem.getBlockItems().values().stream() + .map(HomeBlockItem::getMarkPointProtoFactories) + .flatMap(Collection::stream) + .filter(HomeMarkPointProtoFactory::isProtoConvertible) + .map(HomeMarkPointProtoFactory::toMarkPointProto) + .toList(); - markPointData.addAllFurnitureList(marks); - proto.addMarkPointDataList(markPointData); - }); + markPointData.addAllFurnitureList(marks); + proto.addMarkPointDataList(markPointData); + }); this.setData(proto); }