mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-03-11 07:37:45 +08:00
Handle existing players who might already have passed a level.
This commit is contained in:
parent
af7bbdaadd
commit
b266854c72
@ -463,7 +463,7 @@ public class Player {
|
||||
this.updateProfile();
|
||||
|
||||
// Handle OpenState unlocks from level-up.
|
||||
this.getOpenStateManager().onPlayerLevelUp();
|
||||
this.getOpenStateManager().unlockLevelDependentStates();
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -1535,7 +1535,11 @@ public class Player {
|
||||
this.forgingManager.sendForgeDataNotify();
|
||||
this.resinManager.onPlayerLogin();
|
||||
this.cookingManager.sendCookDataNofity();
|
||||
|
||||
// Unlock in case this is an existing user that reached a level before we implemented unlocking.
|
||||
this.openStateManager.unlockLevelDependentStates();
|
||||
this.openStateManager.onPlayerLogin();
|
||||
|
||||
getTodayMoonCard(); // The timer works at 0:0, some users log in after that, use this method to check if they have received a reward today or not. If not, send the reward.
|
||||
|
||||
// Battle Pass trigger
|
||||
|
@ -55,11 +55,9 @@ public class PlayerOpenStateManager {
|
||||
|
||||
public void setOpenState(OpenState openState, Integer value) {
|
||||
Integer previousValue = this.map.getOrDefault(openState.getValue(),0);
|
||||
if(!(value == previousValue)) {
|
||||
if(value != previousValue) {
|
||||
this.map.put(openState.getValue(), value);
|
||||
player.getSession().send(new PacketOpenStateChangeNotify(openState.getValue(),value));
|
||||
} else {
|
||||
Grasscutter.getLogger().debug("Warning: OpenState {} is already set to {}!", openState, value);
|
||||
}
|
||||
}
|
||||
|
||||
@ -73,9 +71,9 @@ public class PlayerOpenStateManager {
|
||||
player.getSession().send(new PacketOpenStateUpdateNotify(this));
|
||||
}
|
||||
|
||||
public void onPlayerLevelUp() {
|
||||
public void unlockLevelDependentStates() {
|
||||
Stream.of(OpenState.values())
|
||||
.filter(s -> s.getUnlockLevel() == this.player.getLevel())
|
||||
.filter(s -> s.getUnlockLevel() > 1 && s.getUnlockLevel() <= this.player.getLevel())
|
||||
.forEach(s -> this.setOpenState(s, 1));
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user