Skip to content

Commit

Permalink
Fixes bugs with tests. Support old Biomes addons.
Browse files Browse the repository at this point in the history
  • Loading branch information
tastybento committed Aug 21, 2020
1 parent 6c16873 commit 284f18c
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 0 deletions.
17 changes: 17 additions & 0 deletions src/main/java/world/bentobox/level/Level.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import world.bentobox.level.config.ConfigSettings;
import world.bentobox.level.listeners.IslandActivitiesListeners;
import world.bentobox.level.listeners.JoinLeaveListener;
import world.bentobox.level.objects.LevelsData;
import world.bentobox.level.requests.LevelRequestHandler;
import world.bentobox.level.requests.TopTenRequestHandler;

Expand Down Expand Up @@ -325,4 +326,20 @@ public void calculateIslandLevel(World world, @Nullable User user, @NonNull UUID
if (island != null) getManager().calculateLevel(playerUUID, island);
}

/**
* Provide the levels data for the target player
* @param targetPlayer - UUID of target player
* @return LevelsData object or null if not found. Only island levels are set!
* @deprecated Do not use this anymore. Use {@link #getIslandLevel(World, UUID)}
*/
@Deprecated
public LevelsData getLevelsData(UUID targetPlayer) {
LevelsData ld = new LevelsData(targetPlayer);
getPlugin().getAddonsManager().getGameModeAddons().stream()
.filter(gm -> !settings.getGameModes().contains(gm.getDescription().getName()))
.forEach(gm -> {
ld.setLevel(gm.getOverWorld(), this.getIslandLevel(gm.getOverWorld(), targetPlayer));
});
return ld;
}
}
6 changes: 6 additions & 0 deletions src/main/java/world/bentobox/level/LevelsManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,8 @@ public CompletableFuture<Results> calculateLevel(UUID targetPlayer, Island islan
addon.getPipeliner().addIsland(island).thenAccept(r -> {
// Results are irrelevant because the island is unowned or deleted, or IslandLevelCalcEvent is cancelled
if (r == null || fireIslandLevelCalcEvent(targetPlayer, island, r)) {
System.out.println("results are null or event canceled");

result.complete(null);
}
// Save result
Expand Down Expand Up @@ -498,6 +500,8 @@ public void setIslandLevel(@NonNull World world, @NonNull UUID targetPlayer, lon
// Remove the initial level
if (addon.getSettings().isZeroNewIslandLevels()) {
il.setLevel(lv - il.getInitialLevel());
} else {
il.setLevel(lv);
}
handler.saveObjectAsync(levelsCache.get(id));
// Update TopTen
Expand All @@ -520,6 +524,8 @@ private void setIslandResults(World world, @NonNull UUID owner, Results r) {
// Remove the initial level
if (addon.getSettings().isZeroNewIslandLevels()) {
ld.setLevel(r.getLevel() - ld.getInitialLevel());
} else {
ld.setLevel(r.getLevel());
}
ld.setUwCount(Maps.asMap(r.getUwCount().elementSet(), elem -> r.getUwCount().count(elem)));
ld.setMdCount(Maps.asMap(r.getMdCount().elementSet(), elem -> r.getMdCount().count(elem)));
Expand Down
1 change: 1 addition & 0 deletions src/test/java/world/bentobox/level/LevelsManagerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,7 @@ public void testCalculateLevel() {
results.setLevel(10000);
results.setInitialLevel(3);
lm.calculateLevel(uuid, island);
// Complete the pipelined completable future
cf.complete(results);

assertEquals(10000L, lm.getLevelsData(island).getLevel());
Expand Down

0 comments on commit 284f18c

Please sign in to comment.