Skip to content

Commit f3b6e3c

Browse files
committed
fixes
1 parent d97016c commit f3b6e3c

File tree

6 files changed

+145
-7
lines changed

6 files changed

+145
-7
lines changed

api/src/main/java/io/github/pronze/sba/MessageKeys.java

+2
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@ public class MessageKeys {
122122
public static final String[] UPGRADE_TEAM_PROTECTION = {"upgrade-team-protection"};
123123
public static final String[] UGPRADE_TEAM_SHARPNESS = {"upgrade-team-sharpness"};
124124
public static final String[] UPGRADE_TEAM_EFFICIENCY= {"upgrade-team-sharpness"};
125+
public static final String[] UPGRADE_TEAM_KNOCKBACK= {"upgrade-team-knockback"};
126+
public static final String[] UPGRADE_TEAM_ENCHANT= {"upgrade-team-enchant"};
125127
public static final String[] ANIMATED_BEDWARS_TITLE = {"scoreboard", "title"};
126128
public static final String[] CANNOT_BUY = {"shop", "buy_failed"};
127129
public static final String[] GAMES_INVENTORY_CANNOT_FIND_GAME = {"games-inventory", "could-not-find-game"};

gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
SBA_VERSION=1.5.7-dev22
1+
SBA_VERSION=1.5.7-dev23
22

33
PAPER_LEGACY_VERSION=1.16.5
44
BEDWARS_VERSION=0.2.23

plugin/src/main/java/io/github/pronze/sba/inventories/SBAUpgradeStoreInventory.java

+97-3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.util.List;
77
import java.util.Map;
88
import java.util.Objects;
9+
import java.util.Optional;
910
import java.util.concurrent.atomic.AtomicReference;
1011
import java.util.stream.Collectors;
1112

@@ -165,9 +166,32 @@ public Map.Entry<Boolean, Boolean> handlePurchase(Player player, AtomicReference
165166
// temporary fix
166167
propertyData.putIfAbsent("name", propertyName);
167168

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+
}
168176
// if (upgradeProperties.contains(propertyName)) {
169177
switch (propertyName) {
170178
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+
}
171195
var teamSharpnessLevel = gameStorage.getSharpnessLevel(team).orElseThrow();
172196
var maxSharpnessLevel = SBAConfig.getInstance().node("upgrades", "limit", "Sharpness")
173197
.getInt(1);
@@ -207,6 +231,22 @@ public Map.Entry<Boolean, Boolean> handlePurchase(Player player, AtomicReference
207231
}
208232
break;
209233
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+
}
210250
var teamKnockbackLevel = gameStorage.getSharpnessLevel(team).orElseThrow();
211251
var maxKnockbackLevel = SBAConfig.getInstance().node("upgrades", "limit", "Knockback")
212252
.getInt(1);
@@ -231,7 +271,7 @@ public Map.Entry<Boolean, Boolean> handlePurchase(Player player, AtomicReference
231271
team.getConnectedPlayers().forEach(teamPlayer -> {
232272
LanguageService
233273
.getInstance()
234-
.get(MessageKeys.UGPRADE_TEAM_SHARPNESS)
274+
.get(MessageKeys.UPGRADE_TEAM_KNOCKBACK)
235275
.replace("%player%", player.getDisplayName() + ChatColor.RESET)
236276
.send(PlayerMapper.wrapPlayer(teamPlayer));
237277

@@ -247,6 +287,22 @@ public Map.Entry<Boolean, Boolean> handlePurchase(Player player, AtomicReference
247287
break;
248288

249289
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+
}
250306
var efficiencyLevel = gameStorage.getEfficiencyLevel(team).orElseThrow();
251307
var maxEfficiencyLevel = SBAConfig.getInstance().node("upgrades", "limit", "Efficiency")
252308
.getInt(2);
@@ -414,6 +470,22 @@ public Map.Entry<Boolean, Boolean> handlePurchase(Player player, AtomicReference
414470
}
415471
break;
416472
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+
}
417489
var teamProtectionLevel = gameStorage.getProtectionLevel(team).orElseThrow();
418490
var maxProtectionLevel = SBAConfig.getInstance().node("upgrades", "limit", "Protection")
419491
.getInt(4);
@@ -451,8 +523,30 @@ public Map.Entry<Boolean, Boolean> handlePurchase(Player player, AtomicReference
451523
}
452524
break;
453525
default:
526+
454527
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+
}
456550
var teamOtherLevel = gameStorage.getEnchantLevel(team, propertyName).orElseThrow();
457551
var maxOtherLevel = SBAConfig.getInstance().node("upgrades", "limit", propertyName)
458552
.getInt(1);
@@ -476,7 +570,7 @@ public Map.Entry<Boolean, Boolean> handlePurchase(Player player, AtomicReference
476570
team.getConnectedPlayers().forEach(teamPlayer -> {
477571
LanguageService
478572
.getInstance()
479-
.get(MessageKeys.UGPRADE_TEAM_SHARPNESS)
573+
.get(MessageKeys.UPGRADE_TEAM_ENCHANT)
480574
.replace("%player%", player.getDisplayName() + ChatColor.RESET)
481575
.send(PlayerMapper.wrapPlayer(teamPlayer));
482576

plugin/src/main/java/io/github/pronze/sba/utils/ShopUtil.java

+41-3
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.bukkit.entity.Player;
2121
import org.bukkit.inventory.ItemStack;
2222
import org.bukkit.inventory.PlayerInventory;
23+
import org.checkerframework.checker.nullness.qual.Nullable;
2324
import org.jetbrains.annotations.NotNull;
2425
import org.screamingsandals.bedwars.Main;
2526
import org.screamingsandals.bedwars.api.BedwarsAPI;
@@ -38,6 +39,7 @@
3839

3940
import java.io.File;
4041
import java.util.*;
42+
import java.util.concurrent.atomic.AtomicReference;
4143
import java.util.function.Supplier;
4244
import java.util.stream.Collectors;
4345

@@ -148,6 +150,13 @@ public static boolean buyArmor(Player player, Material mat_boots, IGameStorage g
148150
return true;
149151
}
150152

153+
public static void increaseTeamEnchant(Player teamPlayer, @Nullable ItemStack item, Enchantment damageAll) {
154+
if (!canApply(damageAll, item))
155+
return;
156+
int level = item.getEnchantmentLevel(damageAll);
157+
item.addUnsafeEnchantment(damageAll, level + 1);
158+
}
159+
151160
public static ItemStack applyTeamEnchants(Player player, ItemStack newItem) {
152161
final var game = Main.getInstance().getGameOfPlayer(player);
153162
var gameStorage = SBA
@@ -165,10 +174,10 @@ public static ItemStack applyTeamEnchants(Player player, ItemStack newItem) {
165174
if (knockbackLebel > 0 && canApply("knockback", newItem))
166175
newItem.addUnsafeEnchantment(Enchantment.KNOCKBACK, knockbackLebel);
167176
int protectionLevel = gameStorage.getProtectionLevel(team).orElse(0);
168-
if (protectionLevel > 0 && canApply("protection", newItem))
177+
if (protectionLevel > 0 && canApply("efficiency", newItem))
169178
newItem.addUnsafeEnchantment(Enchantment.DIG_SPEED, protectionLevel);
170179
int efficiencyLevel = gameStorage.getEfficiencyLevel(team).orElse(0);
171-
if (efficiencyLevel > 0 && canApply("efficiency", newItem))
180+
if (efficiencyLevel > 0 && canApply("protection", newItem))
172181
newItem.addUnsafeEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, efficiencyLevel);
173182
List<String> ignoredKeys = List.of("sharpness", "knockback", "protection", "efficiency");
174183
SBAConfig.getInstance().upgrades().enchants().keys().forEach(ench -> {
@@ -177,8 +186,12 @@ public static ItemStack applyTeamEnchants(Player player, ItemStack newItem) {
177186
.findFirst();
178187
if (ignoredKeys.contains(ench))
179188
return;
189+
if (!canApply(ench, newItem))
190+
return;
180191
if (!ec.isPresent()) {
181-
Logger.error("SBA doesn't know how to apply enchant {}, it is not a valid enchant, check https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/enchantments/Enchantment.html for a list of enchant on your version of minecraft", ench);
192+
Logger.error(
193+
"SBA doesn't know how to apply enchant {}, it is not a valid enchant, check https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/enchantments/Enchantment.html for a list of enchant on your version of minecraft",
194+
ench);
182195
return;
183196
}
184197
Enchantment ech = ec.get();
@@ -199,6 +212,31 @@ private static boolean canApply(String string, ItemStack newItem) {
199212
.anyMatch(x -> newItem.getType().toString().contains(x.toUpperCase()));
200213
}
201214

215+
private static boolean canApply(Enchantment string, ItemStack newItem) {
216+
return canApply(getName(string), newItem);
217+
}
218+
219+
private static String getName(Enchantment ech) {
220+
if (ech == Enchantment.DAMAGE_ALL)
221+
return ("sharpness");
222+
if (ech == Enchantment.KNOCKBACK)
223+
return ("sharpness");
224+
if (ech == Enchantment.DIG_SPEED)
225+
return ("efficiency");
226+
if (ech == Enchantment.PROTECTION_ENVIRONMENTAL)
227+
return ("protection");
228+
AtomicReference<String> str = new AtomicReference<>();
229+
SBAConfig.getInstance().upgrades().enchants().keys().forEach(ench -> {
230+
Optional<Enchantment> ec = Arrays.stream(Enchantment.values())
231+
.filter(x -> x.getName().equalsIgnoreCase(ench) || x.getKey().asString().equalsIgnoreCase(ench))
232+
.findFirst();
233+
if(ec.isPresent() && ec.get().equals(ech))
234+
str.set(ench);
235+
});
236+
return str.get();
237+
238+
}
239+
202240
static <K, V> List<K> getAllKeysForValue(Map<K, V> mapOfWords, V value) {
203241
return mapOfWords.entrySet()
204242
.stream()

plugin/src/main/resources/languages/language_en.yml

+2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ wait-trap: "<red>You already purchased this upgrade!, wait for it to wear out"
2929
upgrade-team-protection: "<red>%player%<yellow> has upgraded team protection"
3030
upgrade-team-sharpness: "<red>%player%<yellow> has upgraded team sharpness"
3131
upgrade-team-efficiency: "<red>%player%<yellow> has upgraded team efficiency"
32+
upgrade-team-knockback: "<red>%player%<yellow> has upgraded team knockback"
33+
upgrade-team-enchant: "<red>%player%<yellow> has upgraded team enchant"
3234
error-occured: "<red><bold>AN ERROR HAS OCCURRED</bold>"
3335
greatest-enchantment: "<red><bold>You Already have the greatest enchantment</bold>"
3436
generator-upgrade: "%MatName%<yellow> generator has been upgraded to <red>%tier%"

plugin/src/main/resources/languages/language_ru.yml

+2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ wait-trap: "<red>Ты уже купил этот апгрейд!"
2929
upgrade-team-protection: "<red>%player%<yellow> прокачал защиту брони команды"
3030
upgrade-team-sharpness: "<red>%player%<yellow> прокачал остроту мечей команды"
3131
upgrade-team-efficiency: "<red>%player%<yellow> прокачал эффективность кирки команды"
32+
upgrade-team-knockback: "<red>%player%<yellow> has upgraded team knockback"
33+
upgrade-team-enchant: "<red>%player%<yellow> has upgraded team enchant"
3234
error-occured: "<red><bold>КРИТИЧЕСКАЯ ОШИБКА</bold>"
3335
greatest-enchantment: "<red><bold>У тебя уже лучшее зачарование</bold>"
3436
generator-upgrade: "%MatName%<yellow> генератор был обновлён до <red>%tier%"

0 commit comments

Comments
 (0)