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() {