diff --git a/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java b/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java index dc1ddcc..518ecfb 100644 --- a/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java +++ b/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java @@ -305,7 +305,7 @@ private List getReport() { donatedBlocks.entrySet().stream() .sorted(Map.Entry.comparingByValue().reversed()) .forEach(entry -> { - Integer value = addon.getBlockConfig().getBlockValues().getOrDefault(entry.getKey().toLowerCase(java.util.Locale.ENGLISH), 0); + Integer value = Objects.requireNonNullElse(addon.getBlockConfig().getValue(island.getWorld(), entry.getKey().toLowerCase(java.util.Locale.ENGLISH)), 0); long totalValue = (long) value * entry.getValue(); reportLines.add(" " + Util.prettifyText(entry.getKey()) + " x " + String.format("%,d", entry.getValue()) @@ -730,8 +730,17 @@ public void tidyUp() { results.rawBlockCount .addAndGet((long) (results.underWaterBlockCount.get() * addon.getSettings().getUnderWaterMultiplier())); - // Add donated block points (permanent contributions that persist across recalculations) - long donatedPoints = addon.getManager().getDonatedPoints(island); + // Add donated block points (permanent contributions that persist across recalculations). + // Recalculate from the donated blocks map using current block config values so the + // level always reflects the current configuration, even if block values changed since donation. + Map donatedBlocksMap = addon.getManager().getDonatedBlocks(island); + long donatedPoints = donatedBlocksMap.entrySet().stream() + .mapToLong(entry -> { + Integer value = addon.getBlockConfig().getValue(island.getWorld(), + entry.getKey().toLowerCase(java.util.Locale.ENGLISH)); + return (long) Objects.requireNonNullElse(value, 0) * entry.getValue(); + }) + .sum(); results.rawBlockCount.addAndGet(donatedPoints); results.donatedPoints.set(donatedPoints);