Skip to content

Commit 0a5ae2b

Browse files
authored
Merge pull request #31 from BentoBoxWorld/develop
Version 1.14.0
2 parents 78c3223 + 29be67f commit 0a5ae2b

File tree

2 files changed

+42
-34
lines changed

2 files changed

+42
-34
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
<!-- Do not change unless you want different name for local builds. -->
6767
<build.number>-LOCAL</build.number>
6868
<!-- This allows to change between versions. -->
69-
<build.version>1.13.0</build.version>
69+
<build.version>1.14.0</build.version>
7070
<!-- Sonar Cloud -->
7171
<sonar.projectKey>BentoBoxWorld_addon-invSwitcher</sonar.projectKey>
7272
<sonar.organization>bentobox-world</sonar.organization>

src/main/java/com/wasteofplastic/invswitcher/Store.java

Lines changed: 41 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import java.util.Map;
3232
import java.util.Objects;
3333
import java.util.UUID;
34+
import java.util.concurrent.CompletableFuture;
3435
import java.util.stream.Collectors;
3536

3637
import org.bukkit.Bukkit;
@@ -56,6 +57,7 @@
5657
*
5758
*/
5859
public class Store {
60+
private static final Material[] MAT = Material.values();
5961
private static final CharSequence THE_END = "_the_end";
6062
private static final CharSequence NETHER = "_nether";
6163
private final Database<InventoryStorage> database;
@@ -247,50 +249,56 @@ public void storeAndSave(Player player, World world) {
247249
store.setEnderChest(overworldName, contents);
248250
}
249251
if (addon.getSettings().isStatistics()) {
250-
saveStats(store, player, overworldName);
252+
saveStats(store, player, overworldName).thenAccept(database::saveObjectAsync);
253+
return;
251254
}
252255
database.saveObjectAsync(store);
253256
}
254257

255-
private void saveStats(InventoryStorage store, Player player, String worldName) {
258+
private CompletableFuture<InventoryStorage> saveStats(InventoryStorage store, Player player, String worldName) {
259+
CompletableFuture<InventoryStorage> result = new CompletableFuture<>();
256260
store.clearStats(worldName);
257261
// Statistics
258-
Arrays.stream(Statistic.values()).forEach(s -> {
259-
Map<Material, Integer> map;
260-
Map<EntityType, Integer> entMap;
261-
switch (s.getType()) {
262-
case BLOCK -> {
263-
map = Arrays.stream(Material.values()).filter(Material::isBlock).filter(m -> !m.isLegacy())
264-
.filter(m -> player.getStatistic(s, m) > 0)
265-
.collect(Collectors.toMap(k -> k, v -> player.getStatistic(s, v)));
266-
if (!map.isEmpty()) {
267-
store.getBlockStats(worldName).put(s, map);
262+
Bukkit.getScheduler().runTaskAsynchronously(addon.getPlugin(), () -> {
263+
Arrays.stream(Statistic.values()).forEach(s -> {
264+
Map<Material, Integer> map;
265+
Map<EntityType, Integer> entMap;
266+
switch (s.getType()) {
267+
case BLOCK -> {
268+
map = Arrays.stream(MAT).filter(Material::isBlock).filter(m -> !m.isLegacy())
269+
.filter(m -> player.getStatistic(s, m) > 0)
270+
.collect(Collectors.toMap(k -> k, v -> player.getStatistic(s, v)));
271+
if (!map.isEmpty()) {
272+
store.getBlockStats(worldName).put(s, map);
273+
}
268274
}
269-
}
270-
case ITEM -> {
271-
map = Arrays.stream(Material.values()).filter(Material::isItem).filter(m -> !m.isLegacy())
272-
.filter(m -> player.getStatistic(s, m) > 0)
273-
.collect(Collectors.toMap(k -> k, v -> player.getStatistic(s, v)));
274-
if (!map.isEmpty()) {
275-
store.getItemStats(worldName).put(s, map);
275+
case ITEM -> {
276+
map = Arrays.stream(MAT).filter(Material::isItem).filter(m -> !m.isLegacy())
277+
.filter(m -> player.getStatistic(s, m) > 0)
278+
.collect(Collectors.toMap(k -> k, v -> player.getStatistic(s, v)));
279+
if (!map.isEmpty()) {
280+
store.getItemStats(worldName).put(s, map);
281+
}
276282
}
277-
}
278-
case ENTITY -> {
279-
entMap = Arrays.stream(EntityType.values()).filter(EntityType::isAlive)
280-
.filter(m -> player.getStatistic(s, m) > 0)
281-
.collect(Collectors.toMap(k -> k, v -> player.getStatistic(s, v)));
282-
if (!entMap.isEmpty()) {
283-
store.getEntityStats(worldName).put(s, entMap);
283+
case ENTITY -> {
284+
entMap = Arrays.stream(EntityType.values()).filter(EntityType::isAlive)
285+
.filter(m -> player.getStatistic(s, m) > 0)
286+
.collect(Collectors.toMap(k -> k, v -> player.getStatistic(s, v)));
287+
if (!entMap.isEmpty()) {
288+
store.getEntityStats(worldName).put(s, entMap);
289+
}
284290
}
285-
}
286-
case UNTYPED -> {
287-
int sc = player.getStatistic(s);
288-
if (sc > 0) {
289-
store.getUntypedStats(worldName).put(s, sc);
291+
case UNTYPED -> {
292+
int sc = player.getStatistic(s);
293+
if (sc > 0) {
294+
store.getUntypedStats(worldName).put(s, sc);
295+
}
290296
}
291-
}
292-
}
297+
}
298+
});
299+
result.complete(store);
293300
});
301+
return result;
294302

295303
}
296304

0 commit comments

Comments
 (0)