diff --git a/pom.xml b/pom.xml index c276d63..b3f602a 100644 --- a/pom.xml +++ b/pom.xml @@ -58,14 +58,14 @@ 2.0.9 - 1.17-R0.1-SNAPSHOT - 1.17.0 + 1.16.5-R0.1-SNAPSHOT + 1.16.5-SNAPSHOT ${build.version}-SNAPSHOT -LOCAL - 2.7.2 + 2.8.0 BentoBoxWorld_Level bentobox-world https://sonarcloud.io @@ -249,7 +249,33 @@ 3.0.0-M5 - --illegal-access=permit + --add-opens java.base/java.lang=ALL-UNNAMED + --add-opens java.base/java.math=ALL-UNNAMED + --add-opens java.base/java.io=ALL-UNNAMED + --add-opens java.base/java.util=ALL-UNNAMED + --add-opens + java.base/java.util.stream=ALL-UNNAMED + --add-opens java.base/java.text=ALL-UNNAMED + --add-opens + java.base/java.util.regex=ALL-UNNAMED + --add-opens + java.base/java.nio.channels.spi=ALL-UNNAMED + --add-opens java.base/sun.nio.ch=ALL-UNNAMED + --add-opens java.base/java.net=ALL-UNNAMED + --add-opens + java.base/java.util.concurrent=ALL-UNNAMED + --add-opens java.base/sun.nio.fs=ALL-UNNAMED + --add-opens java.base/sun.nio.cs=ALL-UNNAMED + --add-opens java.base/java.nio.file=ALL-UNNAMED + --add-opens + java.base/java.nio.charset=ALL-UNNAMED + --add-opens + java.base/java.lang.reflect=ALL-UNNAMED + --add-opens + java.logging/java.util.logging=ALL-UNNAMED + --add-opens java.base/java.lang.ref=ALL-UNNAMED + --add-opens java.base/java.util.jar=ALL-UNNAMED + --add-opens java.base/java.util.zip=ALL-UNNAMED diff --git a/src/main/java/world/bentobox/level/Level.java b/src/main/java/world/bentobox/level/Level.java index df3004d..1416194 100644 --- a/src/main/java/world/bentobox/level/Level.java +++ b/src/main/java/world/bentobox/level/Level.java @@ -3,8 +3,11 @@ package world.bentobox.level; import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.UUID; +import java.util.stream.Collectors; import org.bukkit.Bukkit; import org.bukkit.World; @@ -208,6 +211,12 @@ public class Level extends Addon implements Listener { // Name getPlugin().getPlaceholdersManager().registerPlaceholder(this, gm.getDescription().getName().toLowerCase() + "_top_name_" + i, u -> getRankName(gm.getOverWorld(), rank)); + // Island Name + getPlugin().getPlaceholdersManager().registerPlaceholder(this, + gm.getDescription().getName().toLowerCase() + "_top_island_name_" + i, u -> getRankIslandName(gm.getOverWorld(), rank)); + // Members + getPlugin().getPlaceholdersManager().registerPlaceholder(this, + gm.getDescription().getName().toLowerCase() + "_top_members_" + i, u -> getRankMembers(gm.getOverWorld(), rank)); // Level getPlugin().getPlaceholdersManager().registerPlaceholder(this, gm.getDescription().getName().toLowerCase() + "_top_value_" + i, u -> getRankLevel(gm.getOverWorld(), rank)); @@ -224,6 +233,37 @@ public class Level extends Addon implements Listener { return getPlayers().getName(getManager().getTopTen(world, TEN).keySet().stream().skip(rank - 1L).limit(1L).findFirst().orElse(null)); } + String getRankIslandName(World world, int rank) { + if (rank < 1) rank = 1; + if (rank > TEN) rank = TEN; + UUID owner = getManager().getTopTen(world, TEN).keySet().stream().skip(rank - 1L).limit(1L).findFirst().orElse(null); + if (owner != null) { + Island island = getIslands().getIsland(world, owner); + if (island != null) { + return island.getName() == null ? "" : island.getName(); + } + } + return ""; + } + + String getRankMembers(World world, int rank) { + if (rank < 1) rank = 1; + if (rank > TEN) rank = TEN; + UUID owner = getManager().getTopTen(world, TEN).keySet().stream().skip(rank - 1L).limit(1L).findFirst().orElse(null); + if (owner != null) { + Island island = getIslands().getIsland(world, owner); + if (island != null) { + // Sort members by rank + return island.getMembers().entrySet().stream() + .sorted(Collections.reverseOrder(Map.Entry.comparingByValue())) + .map(Map.Entry::getKey) + .map(getPlayers()::getName) + .collect(Collectors.joining(",")); + } + } + return ""; + } + String getRankLevel(World world, int rank) { if (rank < 1) rank = 1; if (rank > TEN) rank = TEN; diff --git a/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java b/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java index 5dd2523..7052077 100644 --- a/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java +++ b/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java @@ -203,7 +203,7 @@ public class IslandLevelCalculator { private long calculateLevel(long blockAndDeathPoints) { String calcString = addon.getSettings().getLevelCalc(); String withValues = calcString.replace("blocks", String.valueOf(blockAndDeathPoints)).replace("level_cost", String.valueOf(this.addon.getSettings().getLevelCost())); - return (long)eval(withValues) - this.island.getLevelHandicap() - (addon.getSettings().isZeroNewIslandLevels() ? results.initialLevel.get() : 0); + return (long)eval(withValues) - (addon.getSettings().isZeroNewIslandLevels() ? results.initialLevel.get() : 0); } /** diff --git a/src/main/java/world/bentobox/level/events/IslandLevelCalculatedEvent.java b/src/main/java/world/bentobox/level/events/IslandLevelCalculatedEvent.java index 8db2679..b59c6c5 100644 --- a/src/main/java/world/bentobox/level/events/IslandLevelCalculatedEvent.java +++ b/src/main/java/world/bentobox/level/events/IslandLevelCalculatedEvent.java @@ -3,6 +3,9 @@ package world.bentobox.level.events; import java.util.List; import java.util.UUID; +import org.bukkit.event.HandlerList; +import org.eclipse.jdt.annotation.NonNull; + import world.bentobox.bentobox.api.events.IslandBaseEvent; import world.bentobox.bentobox.database.objects.Island; import world.bentobox.level.calculators.Results; @@ -18,6 +21,17 @@ public class IslandLevelCalculatedEvent extends IslandBaseEvent { private UUID targetPlayer; + private static final HandlerList handlers = new HandlerList(); + + @Override + public @NonNull HandlerList getHandlers() { + return getHandlerList(); + } + + public static HandlerList getHandlerList() { + return handlers; + } + /** * @param targetPlayer - target player * @param island - island diff --git a/src/main/java/world/bentobox/level/events/IslandPreLevelEvent.java b/src/main/java/world/bentobox/level/events/IslandPreLevelEvent.java index 453ab58..0845233 100644 --- a/src/main/java/world/bentobox/level/events/IslandPreLevelEvent.java +++ b/src/main/java/world/bentobox/level/events/IslandPreLevelEvent.java @@ -2,6 +2,9 @@ package world.bentobox.level.events; import java.util.UUID; +import org.bukkit.event.HandlerList; +import org.eclipse.jdt.annotation.NonNull; + import world.bentobox.bentobox.api.events.IslandBaseEvent; import world.bentobox.bentobox.database.objects.Island; @@ -13,6 +16,16 @@ import world.bentobox.bentobox.database.objects.Island; public class IslandPreLevelEvent extends IslandBaseEvent { private final UUID targetPlayer; + private static final HandlerList handlers = new HandlerList(); + + @Override + public @NonNull HandlerList getHandlers() { + return getHandlerList(); + } + + public static HandlerList getHandlerList() { + return handlers; + } /** diff --git a/src/main/resources/addon.yml b/src/main/resources/addon.yml index 181fe2c..d7e5b6d 100755 --- a/src/main/resources/addon.yml +++ b/src/main/resources/addon.yml @@ -2,7 +2,7 @@ name: Level main: world.bentobox.level.Level version: ${version}${build.number} icon: DIAMOND -api-version: 1.17 +api-version: 1.16.5 authors: tastybento