mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2026-06-01 00:49:51 +08:00
Add async bulk saving of objects
This commit is contained in:
@@ -1,11 +1,10 @@
|
||||
package emu.grasscutter.game.player;
|
||||
|
||||
import static emu.grasscutter.config.Configuration.GAME_OPTIONS;
|
||||
|
||||
import dev.morphia.annotations.*;
|
||||
import emu.grasscutter.*;
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.excels.avatar.AvatarSkillDepotData;
|
||||
import emu.grasscutter.database.Database;
|
||||
import emu.grasscutter.game.avatar.Avatar;
|
||||
import emu.grasscutter.game.entity.*;
|
||||
import emu.grasscutter.game.props.*;
|
||||
@@ -23,9 +22,12 @@ import emu.grasscutter.server.packet.send.*;
|
||||
import emu.grasscutter.utils.Utils;
|
||||
import it.unimi.dsi.fastutil.ints.*;
|
||||
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
||||
import lombok.*;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Stream;
|
||||
import lombok.*;
|
||||
|
||||
import static emu.grasscutter.config.Configuration.GAME_OPTIONS;
|
||||
|
||||
@Entity
|
||||
public final class TeamManager extends BasePlayerDataManager {
|
||||
@@ -404,7 +406,7 @@ public final class TeamManager extends BasePlayerDataManager {
|
||||
// Unload removed entities
|
||||
for (var entity : existingAvatars.values()) {
|
||||
this.getPlayer().getScene().removeEntity(entity);
|
||||
entity.getAvatar().save();
|
||||
entity.getAvatar().save(true);
|
||||
}
|
||||
|
||||
// Set new selected character index
|
||||
@@ -965,11 +967,13 @@ public final class TeamManager extends BasePlayerDataManager {
|
||||
return respawnPoint.get().getPointData().getTranPos();
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs a bulk save operation on all avatars.
|
||||
*/
|
||||
public void saveAvatars() {
|
||||
// Save all avatars from active team
|
||||
for (EntityAvatar entity : this.getActiveTeam()) {
|
||||
entity.getAvatar().save();
|
||||
}
|
||||
Database.saveAll(this.getActiveTeam().stream()
|
||||
.map(EntityAvatar::getAvatar)
|
||||
.toList());
|
||||
}
|
||||
|
||||
public void onPlayerLogin() { // Hack for now to fix resonances on login
|
||||
|
||||
Reference in New Issue
Block a user