@@ -30,69 +30,72 @@ public class PlaceholderManager {
3030 private final BentoBox plugin ;
3131
3232 public PlaceholderManager (Level addon ) {
33- this .addon = addon ;
34- this .plugin = addon .getPlugin ();
33+ this .addon = addon ;
34+ this .plugin = addon .getPlugin ();
3535 }
3636
3737 protected void registerPlaceholders (GameModeAddon gm ) {
38- if (plugin .getPlaceholdersManager () == null )
39- return ;
40- PlaceholdersManager bpm = plugin .getPlaceholdersManager ();
41- // Island Level
42- bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_island_level" ,
43- user -> addon .getManager ().getIslandLevelString (gm .getOverWorld (), user .getUniqueId ()));
44- // Unformatted island level
45- bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_island_level_raw" ,
46- user -> String .valueOf (addon .getManager ().getIslandLevel (gm .getOverWorld (), user .getUniqueId ())));
47- // Total number of points counted before applying level formula
48- bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_island_total_points" , user -> {
49- IslandLevels data = addon .getManager ().getLevelsData (addon .getIslands ().getIsland (gm .getOverWorld (), user ));
50- return data .getTotalPoints () + "" ;
51- });
52- // Points to the next level for player
53- bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_points_to_next_level" ,
54- user -> addon .getManager ().getPointsToNextString (gm .getOverWorld (), user .getUniqueId ()));
55- // Maximum level this island has ever been. Current level maybe lower.
56- bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_island_level_max" ,
57- user -> String .valueOf (addon .getManager ().getIslandMaxLevel (gm .getOverWorld (), user .getUniqueId ())));
58-
59- // Visited Island Level
60- bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_visited_island_level" ,
61- user -> getVisitedIslandLevel (gm , user ));
62-
63- // Register Top Ten Placeholders
64- for (int i = 1 ; i < 11 ; i ++) {
65- final int rank = i ;
66- // Name
67- bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_top_name_" + i ,
68- u -> getRankName (gm .getOverWorld (), rank , false ));
69- // Island Name
70- bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_top_island_name_" + i ,
71- u -> getRankIslandName (gm .getOverWorld (), rank , false ));
72- // Members
73- bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_top_members_" + i ,
74- u -> getRankMembers (gm .getOverWorld (), rank , false ));
75- // Level
76- bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_top_value_" + i ,
77- u -> getRankLevel (gm .getOverWorld (), rank , false ));
78- // Weighted Level Name (Level / number of members)
79- bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_top_weighted_name_" + i ,
80- u -> getRankName (gm .getOverWorld (), rank , true ));
81- // Weighted Island Name
82- bpm .registerPlaceholder (addon ,
83- gm .getDescription ().getName ().toLowerCase () + "_top_weighted_island_name_" + i ,
84- u -> getRankIslandName (gm .getOverWorld (), rank , true ));
85- // Weighted Members
86- bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_top_weighted_members_" + i ,
87- u -> getRankMembers (gm .getOverWorld (), rank , true ));
88- // Weighted Level (Level / number of members)
89- bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_top_weighted_value_" + i ,
90- u -> getRankLevel (gm .getOverWorld (), rank , true ));
91- }
92-
93- // Personal rank
94- bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_rank_value" ,
95- u -> getRankValue (gm .getOverWorld (), u ));
38+ if (plugin .getPlaceholdersManager () == null )
39+ return ;
40+ PlaceholdersManager bpm = plugin .getPlaceholdersManager ();
41+ // Island Level
42+ bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_island_level" ,
43+ user -> addon .getManager ().getIslandLevelString (gm .getOverWorld (), user .getUniqueId ()));
44+ // Island Level owner only
45+ bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_island_level_owner" ,
46+ user -> String .valueOf (addon .getManager ().getIslandLevel (gm .getOverWorld (), user .getUniqueId (), true )));
47+ // Unformatted island level
48+ bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_island_level_raw" ,
49+ user -> String .valueOf (addon .getManager ().getIslandLevel (gm .getOverWorld (), user .getUniqueId ())));
50+ // Total number of points counted before applying level formula
51+ bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_island_total_points" , user -> {
52+ IslandLevels data = addon .getManager ().getLevelsData (addon .getIslands ().getIsland (gm .getOverWorld (), user ));
53+ return data .getTotalPoints () + "" ;
54+ });
55+ // Points to the next level for player
56+ bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_points_to_next_level" ,
57+ user -> addon .getManager ().getPointsToNextString (gm .getOverWorld (), user .getUniqueId ()));
58+ // Maximum level this island has ever been. Current level maybe lower.
59+ bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_island_level_max" ,
60+ user -> String .valueOf (addon .getManager ().getIslandMaxLevel (gm .getOverWorld (), user .getUniqueId ())));
61+
62+ // Visited Island Level
63+ bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_visited_island_level" ,
64+ user -> getVisitedIslandLevel (gm , user ));
65+
66+ // Register Top Ten Placeholders
67+ for (int i = 1 ; i < 11 ; i ++) {
68+ final int rank = i ;
69+ // Name
70+ bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_top_name_" + i ,
71+ u -> getRankName (gm .getOverWorld (), rank , false ));
72+ // Island Name
73+ bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_top_island_name_" + i ,
74+ u -> getRankIslandName (gm .getOverWorld (), rank , false ));
75+ // Members
76+ bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_top_members_" + i ,
77+ u -> getRankMembers (gm .getOverWorld (), rank , false ));
78+ // Level
79+ bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_top_value_" + i ,
80+ u -> getRankLevel (gm .getOverWorld (), rank , false ));
81+ // Weighted Level Name (Level / number of members)
82+ bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_top_weighted_name_" + i ,
83+ u -> getRankName (gm .getOverWorld (), rank , true ));
84+ // Weighted Island Name
85+ bpm .registerPlaceholder (addon ,
86+ gm .getDescription ().getName ().toLowerCase () + "_top_weighted_island_name_" + i ,
87+ u -> getRankIslandName (gm .getOverWorld (), rank , true ));
88+ // Weighted Members
89+ bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_top_weighted_members_" + i ,
90+ u -> getRankMembers (gm .getOverWorld (), rank , true ));
91+ // Weighted Level (Level / number of members)
92+ bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_top_weighted_value_" + i ,
93+ u -> getRankLevel (gm .getOverWorld (), rank , true ));
94+ }
95+
96+ // Personal rank
97+ bpm .registerPlaceholder (addon , gm .getDescription ().getName ().toLowerCase () + "_rank_value" ,
98+ u -> getRankValue (gm .getOverWorld (), u ));
9699 }
97100
98101 /**
@@ -104,17 +107,17 @@ protected void registerPlaceholders(GameModeAddon gm) {
104107 * @return rank name
105108 */
106109 String getRankName (World world , int rank , boolean weighted ) {
107- // Ensure rank is within bounds
108- rank = Math .max (1 , Math .min (rank , Level .TEN ));
109- if (weighted ) {
110- return addon .getManager ().getWeightedTopTen (world , Level .TEN ).keySet ().stream ().skip (rank - 1L ).limit (1L )
111- .findFirst ().map (Island ::getOwner ).map (addon .getPlayers ()::getName ).orElse ("" );
112- }
113- @ Nullable
114- UUID owner = addon .getManager ().getTopTen (world , Level .TEN ).keySet ().stream ().skip (rank - 1L ).limit (1L )
115- .findFirst ().flatMap (addon .getIslands ()::getIslandById ).map (Island ::getOwner ).orElse (null );
116-
117- return addon .getPlayers ().getName (owner );
110+ // Ensure rank is within bounds
111+ rank = Math .max (1 , Math .min (rank , Level .TEN ));
112+ if (weighted ) {
113+ return addon .getManager ().getWeightedTopTen (world , Level .TEN ).keySet ().stream ().skip (rank - 1L ).limit (1L )
114+ .findFirst ().map (Island ::getOwner ).map (addon .getPlayers ()::getName ).orElse ("" );
115+ }
116+ @ Nullable
117+ UUID owner = addon .getManager ().getTopTen (world , Level .TEN ).keySet ().stream ().skip (rank - 1L ).limit (1L )
118+ .findFirst ().flatMap (addon .getIslands ()::getIslandById ).map (Island ::getOwner ).orElse (null );
119+
120+ return addon .getPlayers ().getName (owner );
118121 }
119122
120123 /**
@@ -126,14 +129,14 @@ String getRankName(World world, int rank, boolean weighted) {
126129 * @return name of island or nothing if there isn't one
127130 */
128131 String getRankIslandName (World world , int rank , boolean weighted ) {
129- // Ensure rank is within bounds
130- rank = Math .max (1 , Math .min (rank , Level .TEN ));
131- if (weighted ) {
132- return addon .getManager ().getWeightedTopTen (world , Level .TEN ).keySet ().stream ().skip (rank - 1L ).limit (1L )
133- .findFirst ().map (Island ::getName ).orElse ("" );
134- }
135- return addon .getManager ().getTopTen (world , Level .TEN ).keySet ().stream ().skip (rank - 1L ).limit (1L ).findFirst ()
136- .flatMap (addon .getIslands ()::getIslandById ).map (Island ::getName ).orElse ("" );
132+ // Ensure rank is within bounds
133+ rank = Math .max (1 , Math .min (rank , Level .TEN ));
134+ if (weighted ) {
135+ return addon .getManager ().getWeightedTopTen (world , Level .TEN ).keySet ().stream ().skip (rank - 1L ).limit (1L )
136+ .findFirst ().map (Island ::getName ).orElse ("" );
137+ }
138+ return addon .getManager ().getTopTen (world , Level .TEN ).keySet ().stream ().skip (rank - 1L ).limit (1L ).findFirst ()
139+ .flatMap (addon .getIslands ()::getIslandById ).map (Island ::getName ).orElse ("" );
137140 }
138141
139142 /**
@@ -145,27 +148,27 @@ String getRankIslandName(World world, int rank, boolean weighted) {
145148 * @return comma separated string of island member names
146149 */
147150 String getRankMembers (World world , int rank , boolean weighted ) {
148- // Ensure rank is within bounds
149- rank = Math .max (1 , Math .min (rank , Level .TEN ));
150- if (weighted ) {
151- return addon .getManager ().getWeightedTopTen (world , Level .TEN ).keySet ().stream ().skip (rank - 1L ).limit (1L )
152- .findFirst ()
153- .map (is -> is .getMembers ().entrySet ().stream ().filter (e -> e .getValue () >= RanksManager .MEMBER_RANK )
154- .sorted (Collections .reverseOrder (Map .Entry .comparingByValue ())).map (Map .Entry ::getKey )
155- .map (addon .getPlayers ()::getName ).collect (Collectors .joining ("," )))
156- .orElse ("" );
157- }
158-
159- Optional <Island > island = addon .getManager ().getTopTen (world , Level .TEN ).keySet ().stream ().skip (rank - 1L )
160- .limit (1L ).findFirst ().flatMap (addon .getIslands ()::getIslandById );
161-
162- if (island .isPresent ()) {
163- // Sort members by rank
164- return island .get ().getMembers ().entrySet ().stream ().filter (e -> e .getValue () >= RanksManager .MEMBER_RANK )
165- .sorted (Collections .reverseOrder (Map .Entry .comparingByValue ())).map (Map .Entry ::getKey )
166- .map (addon .getPlayers ()::getName ).collect (Collectors .joining ("," ));
167- }
168- return "" ;
151+ // Ensure rank is within bounds
152+ rank = Math .max (1 , Math .min (rank , Level .TEN ));
153+ if (weighted ) {
154+ return addon .getManager ().getWeightedTopTen (world , Level .TEN ).keySet ().stream ().skip (rank - 1L ).limit (1L )
155+ .findFirst ()
156+ .map (is -> is .getMembers ().entrySet ().stream ().filter (e -> e .getValue () >= RanksManager .MEMBER_RANK )
157+ .sorted (Collections .reverseOrder (Map .Entry .comparingByValue ())).map (Map .Entry ::getKey )
158+ .map (addon .getPlayers ()::getName ).collect (Collectors .joining ("," )))
159+ .orElse ("" );
160+ }
161+
162+ Optional <Island > island = addon .getManager ().getTopTen (world , Level .TEN ).keySet ().stream ().skip (rank - 1L )
163+ .limit (1L ).findFirst ().flatMap (addon .getIslands ()::getIslandById );
164+
165+ if (island .isPresent ()) {
166+ // Sort members by rank
167+ return island .get ().getMembers ().entrySet ().stream ().filter (e -> e .getValue () >= RanksManager .MEMBER_RANK )
168+ .sorted (Collections .reverseOrder (Map .Entry .comparingByValue ())).map (Map .Entry ::getKey )
169+ .map (addon .getPlayers ()::getName ).collect (Collectors .joining ("," ));
170+ }
171+ return "" ;
169172 }
170173
171174 /**
@@ -177,14 +180,14 @@ String getRankMembers(World world, int rank, boolean weighted) {
177180 * @return level for the rank requested
178181 */
179182 String getRankLevel (World world , int rank , boolean weighted ) {
180- // Ensure rank is within bounds
181- rank = Math .max (1 , Math .min (rank , Level .TEN ));
182- if (weighted ) {
183- return addon .getManager ().formatLevel (addon .getManager ().getWeightedTopTen (world , Level .TEN ).values ()
184- .stream ().skip (rank - 1L ).limit (1L ).findFirst ().orElse (null ));
185- }
186- return addon .getManager ().formatLevel (addon .getManager ().getTopTen (world , Level .TEN ).values ().stream ()
187- .skip (rank - 1L ).limit (1L ).findFirst ().orElse (null ));
183+ // Ensure rank is within bounds
184+ rank = Math .max (1 , Math .min (rank , Level .TEN ));
185+ if (weighted ) {
186+ return addon .getManager ().formatLevel (addon .getManager ().getWeightedTopTen (world , Level .TEN ).values ()
187+ .stream ().skip (rank - 1L ).limit (1L ).findFirst ().orElse (null ));
188+ }
189+ return addon .getManager ().formatLevel (addon .getManager ().getTopTen (world , Level .TEN ).values ().stream ()
190+ .skip (rank - 1L ).limit (1L ).findFirst ().orElse (null ));
188191 }
189192
190193 /**
@@ -195,21 +198,21 @@ String getRankLevel(World world, int rank, boolean weighted) {
195198 * @return rank where 1 is the top rank.
196199 */
197200 private String getRankValue (World world , User user ) {
198- if (user == null ) {
199- return "" ;
200- }
201- // Get the island level for this user
202- long level = addon .getManager ().getIslandLevel (world , user .getUniqueId ());
203- return String .valueOf (addon .getManager ().getTopTenLists ().getOrDefault (world , new TopTenData (world )).getTopTen ()
204- .values ().stream ().filter (l -> l > level ).count () + 1 );
201+ if (user == null ) {
202+ return "" ;
203+ }
204+ // Get the island level for this user
205+ long level = addon .getManager ().getIslandLevel (world , user .getUniqueId ());
206+ return String .valueOf (addon .getManager ().getTopTenLists ().getOrDefault (world , new TopTenData (world )).getTopTen ()
207+ .values ().stream ().filter (l -> l > level ).count () + 1 );
205208 }
206209
207210 String getVisitedIslandLevel (GameModeAddon gm , User user ) {
208- if (user == null || !gm .inWorld (user .getWorld ()))
209- return "" ;
210- return addon .getIslands ().getIslandAt (user .getLocation ())
211- .map (island -> addon .getManager ().getIslandLevelString (gm .getOverWorld (), island .getOwner ()))
212- .orElse ("0" );
211+ if (user == null || !gm .inWorld (user .getWorld ()))
212+ return "" ;
213+ return addon .getIslands ().getIslandAt (user .getLocation ())
214+ .map (island -> addon .getManager ().getIslandLevelString (gm .getOverWorld (), island .getOwner ()))
215+ .orElse ("0" );
213216 }
214217
215218}
0 commit comments