1717 */
1818package com .viaversion .viarewind .protocol .v1_8to1_7_6_10 .storage ;
1919
20+ import com .google .common .collect .ArrayListMultimap ;
21+ import com .google .common .collect .HashMultimap ;
22+ import com .google .common .collect .ListMultimap ;
23+ import com .google .common .collect .Multimap ;
2024import com .viaversion .nbt .tag .CompoundTag ;
2125import com .viaversion .nbt .tag .ListTag ;
2226import com .viaversion .nbt .tag .StringTag ;
3438
3539public class GameProfileStorage extends StoredObject {
3640 private final Map <UUID , GameProfile > properties = new HashMap <>();
41+ private final ListMultimap <String , GameProfile > nameToProfile = ArrayListMultimap .create ();
3742
3843 public GameProfileStorage (UserConnection user ) {
3944 super (user );
@@ -42,26 +47,17 @@ public GameProfileStorage(UserConnection user) {
4247 public GameProfile put (UUID uuid , String name , String displayName , int ping , int gamemode ) {
4348 GameProfile gameProfile = new GameProfile (uuid , name , displayName , ping , gamemode );
4449 properties .put (uuid , gameProfile );
50+ nameToProfile .put (name , gameProfile );
4551 return gameProfile ;
4652 }
4753
4854 public GameProfile get (UUID uuid ) {
4955 return properties .get (uuid );
5056 }
5157
52- public GameProfile get (String name , boolean ignoreCase ) {
58+ public List < GameProfile > get (String name , boolean ignoreCase ) {
5359 if (ignoreCase ) name = name .toLowerCase ();
54-
55- for (GameProfile profile : properties .values ()) {
56- if (profile .name == null ) continue ;
57-
58- String n = ignoreCase ? profile .name .toLowerCase () : profile .name ;
59-
60- if (n .equals (name )) {
61- return profile ;
62- }
63- }
64- return null ;
60+ return nameToProfile .get (name );
6561 }
6662
6763 public List <GameProfile > getAllWithPrefix (String prefix , boolean ignoreCase ) {
@@ -81,7 +77,9 @@ public List<GameProfile> getAllWithPrefix(String prefix, boolean ignoreCase) {
8177 }
8278
8379 public GameProfile remove (UUID uuid ) {
84- return properties .remove (uuid );
80+ GameProfile removedProfile = properties .remove (uuid );
81+ nameToProfile .get (removedProfile .name ).remove (removedProfile );
82+ return removedProfile ;
8583 }
8684
8785
0 commit comments