6
6
import java .util .List ;
7
7
import java .util .Map ;
8
8
import java .util .Objects ;
9
+ import java .util .Optional ;
9
10
import java .util .concurrent .atomic .AtomicReference ;
10
11
import java .util .stream .Collectors ;
11
12
@@ -165,9 +166,32 @@ public Map.Entry<Boolean, Boolean> handlePurchase(Player player, AtomicReference
165
166
// temporary fix
166
167
propertyData .putIfAbsent ("name" , propertyName );
167
168
169
+ var isAdd = false ;
170
+ double levelToAdd = 0 ;
171
+ if (property .getPropertyData () != null && property .getPropertyData ().childrenMap () != null )
172
+ isAdd = property .getPropertyData ().childrenMap ().containsKey ("add-levels" );
173
+ if (isAdd ) {
174
+ levelToAdd = property .getPropertyData ().childrenMap ().get ("add-levels" ).getDouble (1 );
175
+ }
168
176
// if (upgradeProperties.contains(propertyName)) {
169
177
switch (propertyName ) {
170
178
case "sharpness" :
179
+ if (isAdd ) {
180
+ team .getConnectedPlayers ().forEach (teamPlayer -> {
181
+ LanguageService
182
+ .getInstance ()
183
+ .get (MessageKeys .UGPRADE_TEAM_SHARPNESS )
184
+ .replace ("%player%" , player .getDisplayName () + ChatColor .RESET )
185
+ .send (PlayerMapper .wrapPlayer (teamPlayer ));
186
+
187
+ Arrays .stream (teamPlayer .getInventory ().getContents ())
188
+ .filter (Objects ::nonNull )
189
+ .forEach (item -> {
190
+ ShopUtil .increaseTeamEnchant (teamPlayer , item , Enchantment .DAMAGE_ALL );
191
+ });
192
+ });
193
+ break ;
194
+ }
171
195
var teamSharpnessLevel = gameStorage .getSharpnessLevel (team ).orElseThrow ();
172
196
var maxSharpnessLevel = SBAConfig .getInstance ().node ("upgrades" , "limit" , "Sharpness" )
173
197
.getInt (1 );
@@ -207,6 +231,22 @@ public Map.Entry<Boolean, Boolean> handlePurchase(Player player, AtomicReference
207
231
}
208
232
break ;
209
233
case "knockback" :
234
+ if (isAdd ) {
235
+ team .getConnectedPlayers ().forEach (teamPlayer -> {
236
+ LanguageService
237
+ .getInstance ()
238
+ .get (MessageKeys .UPGRADE_TEAM_KNOCKBACK )
239
+ .replace ("%player%" , player .getDisplayName () + ChatColor .RESET )
240
+ .send (PlayerMapper .wrapPlayer (teamPlayer ));
241
+
242
+ Arrays .stream (teamPlayer .getInventory ().getContents ())
243
+ .filter (Objects ::nonNull )
244
+ .forEach (item -> {
245
+ ShopUtil .increaseTeamEnchant (teamPlayer , item , Enchantment .KNOCKBACK );
246
+ });
247
+ });
248
+ break ;
249
+ }
210
250
var teamKnockbackLevel = gameStorage .getSharpnessLevel (team ).orElseThrow ();
211
251
var maxKnockbackLevel = SBAConfig .getInstance ().node ("upgrades" , "limit" , "Knockback" )
212
252
.getInt (1 );
@@ -231,7 +271,7 @@ public Map.Entry<Boolean, Boolean> handlePurchase(Player player, AtomicReference
231
271
team .getConnectedPlayers ().forEach (teamPlayer -> {
232
272
LanguageService
233
273
.getInstance ()
234
- .get (MessageKeys .UGPRADE_TEAM_SHARPNESS )
274
+ .get (MessageKeys .UPGRADE_TEAM_KNOCKBACK )
235
275
.replace ("%player%" , player .getDisplayName () + ChatColor .RESET )
236
276
.send (PlayerMapper .wrapPlayer (teamPlayer ));
237
277
@@ -247,6 +287,22 @@ public Map.Entry<Boolean, Boolean> handlePurchase(Player player, AtomicReference
247
287
break ;
248
288
249
289
case "efficiency" :
290
+ if (isAdd ) {
291
+ team .getConnectedPlayers ().forEach (teamPlayer -> {
292
+ LanguageService
293
+ .getInstance ()
294
+ .get (MessageKeys .UPGRADE_TEAM_EFFICIENCY )
295
+ .replace ("%player%" , player .getDisplayName () + ChatColor .RESET )
296
+ .send (PlayerMapper .wrapPlayer (teamPlayer ));
297
+
298
+ Arrays .stream (teamPlayer .getInventory ().getContents ())
299
+ .filter (Objects ::nonNull )
300
+ .forEach (item -> {
301
+ ShopUtil .increaseTeamEnchant (teamPlayer , item , Enchantment .DIG_SPEED );
302
+ });
303
+ });
304
+ break ;
305
+ }
250
306
var efficiencyLevel = gameStorage .getEfficiencyLevel (team ).orElseThrow ();
251
307
var maxEfficiencyLevel = SBAConfig .getInstance ().node ("upgrades" , "limit" , "Efficiency" )
252
308
.getInt (2 );
@@ -414,6 +470,22 @@ public Map.Entry<Boolean, Boolean> handlePurchase(Player player, AtomicReference
414
470
}
415
471
break ;
416
472
case "protection" :
473
+ if (isAdd ) {
474
+ team .getConnectedPlayers ().forEach (teamPlayer -> {
475
+ LanguageService
476
+ .getInstance ()
477
+ .get (MessageKeys .UPGRADE_TEAM_PROTECTION )
478
+ .replace ("%player%" , player .getDisplayName () + ChatColor .RESET )
479
+ .send (PlayerMapper .wrapPlayer (teamPlayer ));
480
+
481
+ Arrays .stream (teamPlayer .getInventory ().getContents ())
482
+ .filter (Objects ::nonNull )
483
+ .forEach (item -> {
484
+ ShopUtil .increaseTeamEnchant (teamPlayer , item , Enchantment .PROTECTION_ENVIRONMENTAL );
485
+ });
486
+ });
487
+ break ;
488
+ }
417
489
var teamProtectionLevel = gameStorage .getProtectionLevel (team ).orElseThrow ();
418
490
var maxProtectionLevel = SBAConfig .getInstance ().node ("upgrades" , "limit" , "Protection" )
419
491
.getInt (4 );
@@ -451,8 +523,30 @@ public Map.Entry<Boolean, Boolean> handlePurchase(Player player, AtomicReference
451
523
}
452
524
break ;
453
525
default :
526
+
454
527
if (Arrays .stream (Enchantment .values ())
455
- .anyMatch (x -> x .getName ().equalsIgnoreCase (propertyName )||x .getKey ().asString ().equalsIgnoreCase (propertyName ))) {
528
+ .anyMatch (x -> x .getName ().equalsIgnoreCase (propertyName )
529
+ || x .getKey ().asString ().equalsIgnoreCase (propertyName ))) {
530
+
531
+ if (isAdd ) {
532
+ team .getConnectedPlayers ().forEach (teamPlayer -> {
533
+ LanguageService
534
+ .getInstance ()
535
+ .get (MessageKeys .UPGRADE_TEAM_ENCHANT )
536
+ .replace ("%player%" , player .getDisplayName () + ChatColor .RESET )
537
+ .send (PlayerMapper .wrapPlayer (teamPlayer ));
538
+ Optional <Enchantment > ech = Arrays .stream (Enchantment .values ())
539
+ .filter (x -> x .getName ().equalsIgnoreCase (propertyName )
540
+ || x .getKey ().asString ().equalsIgnoreCase (propertyName )).findAny ();
541
+
542
+ Arrays .stream (teamPlayer .getInventory ().getContents ())
543
+ .filter (Objects ::nonNull )
544
+ .forEach (item -> {
545
+ ShopUtil .increaseTeamEnchant (teamPlayer , item , ech .get ());
546
+ });
547
+ });
548
+ break ;
549
+ }
456
550
var teamOtherLevel = gameStorage .getEnchantLevel (team , propertyName ).orElseThrow ();
457
551
var maxOtherLevel = SBAConfig .getInstance ().node ("upgrades" , "limit" , propertyName )
458
552
.getInt (1 );
@@ -476,7 +570,7 @@ public Map.Entry<Boolean, Boolean> handlePurchase(Player player, AtomicReference
476
570
team .getConnectedPlayers ().forEach (teamPlayer -> {
477
571
LanguageService
478
572
.getInstance ()
479
- .get (MessageKeys .UGPRADE_TEAM_SHARPNESS )
573
+ .get (MessageKeys .UPGRADE_TEAM_ENCHANT )
480
574
.replace ("%player%" , player .getDisplayName () + ChatColor .RESET )
481
575
.send (PlayerMapper .wrapPlayer (teamPlayer ));
482
576
0 commit comments