From eef1759d99d27fc39a6255a0d381af0f582d94bd Mon Sep 17 00:00:00 2001 From: NotThorny Date: Fri, 27 Jan 2023 22:24:19 -0700 Subject: [PATCH] Fix small issues --- src/main/java/emu/grasscutter/game/home/GameHome.java | 2 +- src/main/java/emu/grasscutter/game/player/Player.java | 3 ++- .../server/packet/recv/HandlerBackMyWorldReq.java | 7 +++++++ .../server/packet/send/PacketPlayerEnterSceneNotify.java | 5 +++-- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/emu/grasscutter/game/home/GameHome.java b/src/main/java/emu/grasscutter/game/home/GameHome.java index aece38626..3f3d9b9f8 100644 --- a/src/main/java/emu/grasscutter/game/home/GameHome.java +++ b/src/main/java/emu/grasscutter/game/home/GameHome.java @@ -85,7 +85,7 @@ public class GameHome { player.getSession().send(new PacketHomeAllUnlockedBgmIdListNotify(player)); } - // Let the game know the reward is claimed + // Tell the client the reward is claimed or realm unlocked public void onClaimReward(Player player){ player.getSession().send(new PacketPlayerHomeCompInfoNotify(player)); } diff --git a/src/main/java/emu/grasscutter/game/player/Player.java b/src/main/java/emu/grasscutter/game/player/Player.java index cf11ead60..543937069 100644 --- a/src/main/java/emu/grasscutter/game/player/Player.java +++ b/src/main/java/emu/grasscutter/game/player/Player.java @@ -393,7 +393,8 @@ public class Player { // Tell the client the realm is unlocked if(realmId > 3){ // Realms 3 and below are default 'unlocked' - this.sendPacket(new PacketHomeModuleUnlockNotify(realmId)); // Update needs scene change? + this.sendPacket(new PacketHomeModuleUnlockNotify(realmId)); + this.getHome().onClaimReward(this); } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerBackMyWorldReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerBackMyWorldReq.java index 7b2ce1969..5ebffe586 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerBackMyWorldReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerBackMyWorldReq.java @@ -15,6 +15,13 @@ public class HandlerBackMyWorldReq extends PacketHandler { public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { Scene scene = session.getPlayer().getScene(); + int prevScene = scene.getPrevScene(); + + // Sanity check for switching between teapot realms + if(prevScene >= 2000 && prevScene <= 2006){ + prevScene = 3; + } + session.getPlayer().getWorld().transferPlayerToScene( session.getPlayer(), scene.getPrevScene(), diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerEnterSceneNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerEnterSceneNotify.java index d30774bb2..db696347e 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerEnterSceneNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerEnterSceneNotify.java @@ -44,9 +44,10 @@ public class PacketPlayerEnterSceneNotify extends BasePacket { super(PacketOpcodes.PlayerEnterSceneNotify); // Set previous position - if(newScene != 3){ // Hardcoded for now else you always return to beach - // TODO: Don't update position within same scene + if(!(newScene == 3)){ // Hardcoded for now else weird positions will occur + // Don't update position within same scene or teapot }else{ + // Only used for exiting teapot currently player.setPrevPos(player.getPosition()); }