Skip to content

Commit 4e5b5b5

Browse files
committed
Cache preference viewers and serialize database IO
1 parent 09103ff commit 4e5b5b5

9 files changed

Lines changed: 1087 additions & 462 deletions

File tree

common/src/main/java/com/loohp/interactionvisualizer/InteractionVisualizer.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,7 @@ public void onDisable() {
277277
if (preferenceManager != null) {
278278
preferenceManager.close();
279279
}
280+
Database.close();
280281
TaskManager.shutdown();
281282
DisplayManager.shutdown();
282283
TileEntityManager.shutdown();

common/src/main/java/com/loohp/interactionvisualizer/api/InteractionVisualizerAPI.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,14 @@
4141
import org.bukkit.util.EulerAngle;
4242
import org.bukkit.util.Vector;
4343

44+
import java.util.Arrays;
4445
import java.util.Collection;
4546
import java.util.Collections;
4647
import java.util.HashSet;
4748
import java.util.List;
4849
import java.util.Set;
4950
import java.util.UUID;
5051
import java.util.stream.Collectors;
51-
import java.util.stream.Stream;
5252

5353
public class InteractionVisualizerAPI {
5454

@@ -113,13 +113,19 @@ public static Collection<Player> getPlayerModuleList(Modules module, EntryKey en
113113
*/
114114
public static Collection<Player> getPlayerModuleList(Modules module, EntryKey entry, boolean excludeDisabledWorlds, Player... excludes) {
115115
Collection<Player> players = InteractionVisualizer.preferenceManager.getPlayerList(module, entry);
116-
Set<Player> excludedPlayers = Stream.of(excludes).collect(Collectors.toSet());
117-
if (excludeDisabledWorlds) {
118-
Set<String> disabledWorlds = getDisabledWorlds();
119-
players = SynchronizedFilteredCollection.filter(players, each -> !excludedPlayers.contains(each) && !disabledWorlds.contains(each.getWorld().getName()));
120-
} else {
121-
players = SynchronizedFilteredCollection.filter(players, each -> !excludedPlayers.contains(each));
116+
Set<String> disabledWorlds = excludeDisabledWorlds
117+
? InteractionVisualizer.disabledWorlds : Set.of();
118+
if (excludes.length == 0 && disabledWorlds.isEmpty()) {
119+
return players;
122120
}
121+
Set<Player> excludedPlayers = excludes.length == 0
122+
? Set.of()
123+
: excludes.length == 1 ? Collections.singleton(excludes[0])
124+
: new HashSet<>(Arrays.asList(excludes));
125+
players = SynchronizedFilteredCollection.filter(players,
126+
each -> !excludedPlayers.contains(each)
127+
&& (disabledWorlds.isEmpty()
128+
|| !disabledWorlds.contains(each.getWorld().getName())));
123129
return SynchronizedFilteredCollection.unmodifiableCollection(players);
124130
}
125131

@@ -176,7 +182,8 @@ public static boolean hasPlayerEnabledModule(UUID uuid, Modules module, EntryKey
176182
return hasPlayerEnabledModule(player, module, entry);
177183
} else {
178184
InteractionVisualizer.preferenceManager.loadPlayer(uuid, "", false);
179-
boolean value = hasPlayerEnabledModule(player, module, entry);
185+
boolean value = InteractionVisualizer.preferenceManager
186+
.getPlayerPreference(uuid, module, entry);
180187
InteractionVisualizer.preferenceManager.unloadPlayerWithoutSaving(uuid);
181188
return value;
182189
}

0 commit comments

Comments
 (0)