mirror of
https://github.com/BentoBoxWorld/Level.git
synced 2024-12-26 11:08:15 +01:00
Adds %Level_[gamemode]_island_level_max% placeholder
This records the lifetime maximum level the island has ever had. Addresses #271
This commit is contained in:
parent
3988659dcc
commit
f3ee8a381c
@ -228,6 +228,9 @@ public class Level extends Addon {
|
|||||||
getPlugin().getPlaceholdersManager().registerPlaceholder(this,
|
getPlugin().getPlaceholdersManager().registerPlaceholder(this,
|
||||||
gm.getDescription().getName().toLowerCase() + "_points_to_next_level",
|
gm.getDescription().getName().toLowerCase() + "_points_to_next_level",
|
||||||
user -> getManager().getPointsToNextString(gm.getOverWorld(), user.getUniqueId()));
|
user -> getManager().getPointsToNextString(gm.getOverWorld(), user.getUniqueId()));
|
||||||
|
getPlugin().getPlaceholdersManager().registerPlaceholder(this,
|
||||||
|
gm.getDescription().getName().toLowerCase() + "_island_level_max",
|
||||||
|
user -> String.valueOf(getManager().getIslandMaxLevel(gm.getOverWorld(), user.getUniqueId())));
|
||||||
|
|
||||||
// Visited Island Level
|
// Visited Island Level
|
||||||
getPlugin().getPlaceholdersManager().registerPlaceholder(this,
|
getPlugin().getPlaceholdersManager().registerPlaceholder(this,
|
||||||
|
@ -231,6 +231,19 @@ public class LevelsManager {
|
|||||||
return island == null ? 0L : getLevelsData(island).getLevel();
|
return island == null ? 0L : getLevelsData(island).getLevel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the maximum level ever given to this island
|
||||||
|
* @param world - world where the island is
|
||||||
|
* @param targetPlayer - target player UUID
|
||||||
|
* @return Max level of the player's island or zero if player is unknown or UUID is null
|
||||||
|
*/
|
||||||
|
public long getIslandMaxLevel(@NonNull World world, @Nullable UUID targetPlayer) {
|
||||||
|
if (targetPlayer == null) return 0L;
|
||||||
|
// Get the island
|
||||||
|
Island island = addon.getIslands().getIsland(world, targetPlayer);
|
||||||
|
return island == null ? 0L : getLevelsData(island).getMaxLevel();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a formatted string of the target player's island level
|
* Returns a formatted string of the target player's island level
|
||||||
* @param world - world where the island is
|
* @param world - world where the island is
|
||||||
|
@ -43,6 +43,11 @@ public class IslandLevels implements DataObject {
|
|||||||
*/
|
*/
|
||||||
@Expose
|
@Expose
|
||||||
private long pointsToNextLevel;
|
private long pointsToNextLevel;
|
||||||
|
/**
|
||||||
|
* The maximum level this island has ever had
|
||||||
|
*/
|
||||||
|
@Expose
|
||||||
|
private long maxLevel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Underwater count
|
* Underwater count
|
||||||
@ -94,6 +99,10 @@ public class IslandLevels implements DataObject {
|
|||||||
*/
|
*/
|
||||||
public void setLevel(long level) {
|
public void setLevel(long level) {
|
||||||
this.level = level;
|
this.level = level;
|
||||||
|
// Track maximum level
|
||||||
|
if (level > this.maxLevel) {
|
||||||
|
maxLevel = level;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -124,6 +133,14 @@ public class IslandLevels implements DataObject {
|
|||||||
this.pointsToNextLevel = pointsToNextLevel;
|
this.pointsToNextLevel = pointsToNextLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the maximum level ever set using {@link #setLevel(long)}
|
||||||
|
* @return the maxLevel
|
||||||
|
*/
|
||||||
|
public long getMaxLevel() {
|
||||||
|
return maxLevel;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the uwCount
|
* @return the uwCount
|
||||||
*/
|
*/
|
||||||
|
@ -270,6 +270,15 @@ public class LevelsManagerTest {
|
|||||||
//Map<UUID, Long> tt = lm.getTopTen(world, 10);
|
//Map<UUID, Long> tt = lm.getTopTen(world, 10);
|
||||||
//assertEquals(1, tt.size());
|
//assertEquals(1, tt.size());
|
||||||
//assertTrue(tt.get(uuid) == 10000);
|
//assertTrue(tt.get(uuid) == 10000);
|
||||||
|
assertEquals(10000L, lm.getIslandMaxLevel(world, uuid));
|
||||||
|
|
||||||
|
results.setLevel(5000);
|
||||||
|
lm.calculateLevel(uuid, island);
|
||||||
|
// Complete the pipelined completable future
|
||||||
|
cf.complete(results);
|
||||||
|
assertEquals(5000L, lm.getLevelsData(island).getLevel());
|
||||||
|
// Still should be 10000
|
||||||
|
assertEquals(10000L, lm.getIslandMaxLevel(world, uuid));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user