From b5e161d59e8c3b410b0b92fce2a53eb3c55a1343 Mon Sep 17 00:00:00 2001 From: tastybento Date: Sat, 12 Sep 2020 08:47:09 -0700 Subject: [PATCH] Rationalize output of IslandLevelCalculatedEvent Level is now the fully calculated level, i.e., what the user sees. The initial level is subtracted if the config settings are set to do that. https://github.com/BentoBoxWorld/Level/issues/188 --- .../java/world/bentobox/level/LevelsManager.java | 13 ++----------- .../level/calculators/IslandLevelCalculator.java | 6 ++++++ .../level/events/IslandLevelCalculatedEvent.java | 3 +-- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/main/java/world/bentobox/level/LevelsManager.java b/src/main/java/world/bentobox/level/LevelsManager.java index 5a8084b..2f74b85 100644 --- a/src/main/java/world/bentobox/level/LevelsManager.java +++ b/src/main/java/world/bentobox/level/LevelsManager.java @@ -205,11 +205,7 @@ public class LevelsManager { keyValues.put("eventName", "IslandLevelCalculatedEvent"); keyValues.put("targetPlayer", targetPlayer); keyValues.put("islandUUID", island.getUniqueId()); - if (addon.getSettings().isZeroNewIslandLevels()) { - keyValues.put("level", results.getLevel() - results.getInitialLevel()); - } else { - keyValues.put("level", results.getLevel()); - } + keyValues.put("level", results.getLevel()); keyValues.put("pointsToNextLevel", results.getPointsToNextLevel()); keyValues.put("deathHandicap", results.getDeathHandicap()); keyValues.put("initialLevel", results.getInitialLevel()); @@ -542,12 +538,7 @@ public class LevelsManager { Island island = addon.getIslands().getIsland(world, owner); if (island == null) return; IslandLevels ld = levelsCache.computeIfAbsent(island.getUniqueId(), IslandLevels::new); - // Remove the initial level - if (addon.getSettings().isZeroNewIslandLevels()) { - ld.setLevel(r.getLevel() - ld.getInitialLevel()); - } else { - ld.setLevel(r.getLevel()); - } + 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))); ld.setPointsToNextLevel(r.getPointsToNextLevel()); diff --git a/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java b/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java index c567a16..ca1c243 100644 --- a/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java +++ b/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java @@ -531,6 +531,12 @@ public class IslandLevelCalculator { } this.results.level.set(calculateLevel(blockAndDeathPoints)); + // Adjust for initial level + if (addon.getSettings().isZeroNewIslandLevels()) { + long oldLevel = this.results.level.get(); + this.results.level.set(oldLevel - this.results.initialLevel.get()); + } + // Calculate how many points are required to get to the next level long nextLevel = this.results.level.get(); long blocks = blockAndDeathPoints; diff --git a/src/main/java/world/bentobox/level/events/IslandLevelCalculatedEvent.java b/src/main/java/world/bentobox/level/events/IslandLevelCalculatedEvent.java index 196219f..8db2679 100644 --- a/src/main/java/world/bentobox/level/events/IslandLevelCalculatedEvent.java +++ b/src/main/java/world/bentobox/level/events/IslandLevelCalculatedEvent.java @@ -45,8 +45,7 @@ public class IslandLevelCalculatedEvent extends IslandBaseEvent { } /** - * Get the island's initial level. It may be zero if it was never calculated - * or if a player was registered to the island after it was made. + * Get the island's initial level. It may be zero if it was never calculated. * @return initial level of island as calculated when the island was created. */ public long getInitialLevel() {