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