mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-16 08:56:04 +01:00
Teapot Implementations & Fixes (#2032)
* Add realm switching
Fix realm unlock items
* Implement exiting teapot
* Implement home level rewards
* Fix small issues
* Fix call issue
* Add 'seen unlock' packets
* Fix Sumeru Main House bricking accounts
This is only for the house, not the full realm
* Fixed realm 5
Main house needs to be placed manually for Sumeru realm (module 5) as the resources for defaults in Sumeru realm are missing. Sumeru main house cannot be exited from the door, issue due to the same missing res.
* Fix Grass main house bricking accounts
* Remove references
* Formatting change (web editor)
* Whitespace & Formatting
* Whitespace
* Make 'seen' status persistent
* Fix misnamed field
* Revert "Fix misnamed field"
This reverts commit 21ef404e14.
* Implement gaining trust (realm exp)
Add gaining trust by crafting
Add gaining trust via `/give`
Show trust in djinn menu
* Interior check for prevScene
* Correct positions & rotations
Return to front of main house when exiting from inside
* Update HandlerBackMyWorldReq.java
---------
Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>
Co-authored-by: GanyusLeftHorn <1244229+GanyusLeftHorn@users.noreply.github.com>
This commit is contained in:
@@ -69,8 +69,11 @@ public class GameHome {
|
||||
if (defaultItem != null) {
|
||||
Grasscutter.getLogger().info("Set player {} home {} to initial setting", ownerUid, sceneId);
|
||||
return HomeSceneItem.parseFrom(defaultItem, sceneId);
|
||||
} else {
|
||||
// Realm res missing bricks account, use default realm data to allow main house
|
||||
defaultItem = GameData.getHomeworldDefaultSaveData().get(2001);
|
||||
return HomeSceneItem.parseFrom(defaultItem, sceneId);
|
||||
}
|
||||
return null;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -85,6 +88,11 @@ public class GameHome {
|
||||
player.getSession().send(new PacketHomeAllUnlockedBgmIdListNotify(player));
|
||||
}
|
||||
|
||||
// Tell the client the reward is claimed or realm unlocked
|
||||
public void onClaimReward(Player player){
|
||||
player.getSession().send(new PacketPlayerHomeCompInfoNotify(player));
|
||||
}
|
||||
|
||||
public Player getPlayer() {
|
||||
if (this.player == null)
|
||||
this.player = Grasscutter.getGameServer().getPlayerByUid((int) this.ownerUid, true);
|
||||
@@ -123,4 +131,27 @@ public class GameHome {
|
||||
.map(Int2ObjectMap.Entry::getIntKey)
|
||||
.collect(Collectors.toUnmodifiableSet());
|
||||
}
|
||||
|
||||
// Same as Player.java addExpDirectly
|
||||
public void addExp(Player player, int count) {
|
||||
exp += count;
|
||||
int reqExp = getExpRequired(level);
|
||||
|
||||
while (exp >= reqExp && reqExp > 0) {
|
||||
exp -= reqExp;
|
||||
level += 1;
|
||||
reqExp = getExpRequired(level);
|
||||
|
||||
// Update client level and exp
|
||||
player.getSession().send(new PacketHomeBasicInfoNotify(player, false));
|
||||
}
|
||||
|
||||
// Update client home
|
||||
onOwnerLogin(player);
|
||||
}
|
||||
|
||||
private int getExpRequired(int level) {
|
||||
HomeWorldLevelData levelData = GameData.getHomeWorldLevelDataMap().get(level);
|
||||
return levelData != null ? levelData.getExp() : 0;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user