@@ -30,69 +30,72 @@ public class PlaceholderManager {
30
30
private final BentoBox plugin ;
31
31
32
32
public PlaceholderManager (Level addon ) {
33
- this .addon = addon ;
34
- this .plugin = addon .getPlugin ();
33
+ this .addon = addon ;
34
+ this .plugin = addon .getPlugin ();
35
35
}
36
36
37
37
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 ));
96
99
}
97
100
98
101
/**
@@ -104,17 +107,17 @@ protected void registerPlaceholders(GameModeAddon gm) {
104
107
* @return rank name
105
108
*/
106
109
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 );
118
121
}
119
122
120
123
/**
@@ -126,14 +129,14 @@ String getRankName(World world, int rank, boolean weighted) {
126
129
* @return name of island or nothing if there isn't one
127
130
*/
128
131
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 ("" );
137
140
}
138
141
139
142
/**
@@ -145,27 +148,27 @@ String getRankIslandName(World world, int rank, boolean weighted) {
145
148
* @return comma separated string of island member names
146
149
*/
147
150
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 "" ;
169
172
}
170
173
171
174
/**
@@ -177,14 +180,14 @@ String getRankMembers(World world, int rank, boolean weighted) {
177
180
* @return level for the rank requested
178
181
*/
179
182
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 ));
188
191
}
189
192
190
193
/**
@@ -195,21 +198,21 @@ String getRankLevel(World world, int rank, boolean weighted) {
195
198
* @return rank where 1 is the top rank.
196
199
*/
197
200
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 );
205
208
}
206
209
207
210
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" );
213
216
}
214
217
215
218
}
0 commit comments