mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2026-03-25 00:53:47 +01:00
Use thread executors to speed up the database loading process
This commit is contained in:
@@ -1,7 +1,5 @@
|
||||
package emu.grasscutter.game.inventory;
|
||||
|
||||
import static emu.grasscutter.config.Configuration.INVENTORY_LIMITS;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.common.ItemParamData;
|
||||
@@ -22,11 +20,14 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||
import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
|
||||
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import static emu.grasscutter.config.Configuration.INVENTORY_LIMITS;
|
||||
|
||||
public class Inventory extends BasePlayerManager implements Iterable<GameItem> {
|
||||
private final Long2ObjectMap<GameItem> store;
|
||||
private final Int2ObjectMap<InventoryTab> inventoryTypes;
|
||||
@@ -572,6 +573,9 @@ public class Inventory extends BasePlayerManager implements Iterable<GameItem> {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Load avatars after inventory.
|
||||
this.getPlayer().getAvatars().postLoad();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1313,16 +1313,17 @@ public class Player implements PlayerHook, FieldFetch {
|
||||
}
|
||||
|
||||
// Load from db
|
||||
this.achievements = Achievements.getByPlayer(this);
|
||||
this.getAvatars().loadFromDatabase();
|
||||
this.getInventory().loadFromDatabase();
|
||||
var runner = Grasscutter.getThreadPool();
|
||||
runner.submit(() -> this.achievements = Achievements.getByPlayer(this));
|
||||
|
||||
this.getFriendsList().loadFromDatabase();
|
||||
this.getMailHandler().loadFromDatabase();
|
||||
this.getQuestManager().loadFromDatabase();
|
||||
runner.submit(this.getAvatars()::loadFromDatabase);
|
||||
runner.submit(this.getInventory()::loadFromDatabase);
|
||||
|
||||
this.loadBattlePassManager();
|
||||
this.getAvatars().postLoad(); // Needs to be called after inventory is handled
|
||||
runner.submit(this.getFriendsList()::loadFromDatabase);
|
||||
runner.submit(this.getMailHandler()::loadFromDatabase);
|
||||
runner.submit(this.getQuestManager()::loadFromDatabase);
|
||||
|
||||
runner.submit(this::loadBattlePassManager);
|
||||
|
||||
this.getPlayerProgress().setPlayer(this); // Add reference to the player.
|
||||
}
|
||||
@@ -1397,7 +1398,7 @@ public class Player implements PlayerHook, FieldFetch {
|
||||
home = GameHome.getByUid(getUid());
|
||||
home.onOwnerLogin(this);
|
||||
// Activity
|
||||
activityManager = new ActivityManager(this);
|
||||
this.activityManager = new ActivityManager(this);
|
||||
|
||||
session.send(new PacketPlayerEnterSceneNotify(this)); // Enter game world
|
||||
session.send(new PacketPlayerLevelRewardUpdateNotify(rewardedLevels));
|
||||
|
||||
Reference in New Issue
Block a user