Skip to content

Commit

Permalink
Fixed incorrect upgrade level provided to the IslandUpgradeLevel when…
Browse files Browse the repository at this point in the history
… ranking up (#1490)
  • Loading branch information
OmerBenGera committed Dec 3, 2022
1 parent b7fc60d commit a4f7ce6
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 15 deletions.
Expand Up @@ -516,23 +516,23 @@ public boolean callIslandUnlockWorldEvent(Island island, World.Environment envir
}

public EventResult<UpgradeResult> callIslandUpgradeEvent(CommandSender commandSender, Island island,
Upgrade upgrade, UpgradeLevel upgradeLevel,
Upgrade upgrade, UpgradeLevel nextUpdate,
IslandUpgradeEvent.Cause cause) {
return callIslandUpgradeEvent(getSuperiorPlayer(commandSender), island, upgrade, upgradeLevel,
return callIslandUpgradeEvent(getSuperiorPlayer(commandSender), island, upgrade, nextUpdate,
Collections.emptyList(), cause, null);
}

public EventResult<UpgradeResult> callIslandUpgradeEvent(@Nullable SuperiorPlayer superiorPlayer, Island island,
Upgrade upgrade, UpgradeLevel upgradeLevel,
IslandUpgradeEvent.Cause cause) {
return callIslandUpgradeEvent(superiorPlayer, island, upgrade, upgradeLevel, upgradeLevel.getCommands(), cause, upgradeLevel.getCost());
Upgrade upgrade, UpgradeLevel currentLevel,
UpgradeLevel nextLevel, IslandUpgradeEvent.Cause cause) {
return callIslandUpgradeEvent(superiorPlayer, island, upgrade, nextLevel, currentLevel.getCommands(), cause, currentLevel.getCost());
}

public EventResult<UpgradeResult> callIslandUpgradeEvent(@Nullable SuperiorPlayer superiorPlayer, Island island,
Upgrade upgrade, UpgradeLevel upgradeLevel,
Upgrade upgrade, UpgradeLevel nextLevel,
List<String> commands, IslandUpgradeEvent.Cause cause,
@Nullable UpgradeCost upgradeCost) {
return callEvent(() -> new IslandUpgradeEvent(superiorPlayer, island, upgrade, upgradeLevel, commands, cause, upgradeCost),
return callEvent(() -> new IslandUpgradeEvent(superiorPlayer, island, upgrade, nextLevel, commands, cause, upgradeCost),
"islandupgradeevent", new UpgradeResult(commands, upgradeCost), UpgradeResult::new);
}

Expand Down
Expand Up @@ -76,10 +76,11 @@ public void execute(SuperiorSkyblockPlugin plugin, CommandSender sender, Superio
SuperiorPlayer playerSender = sender instanceof Player ? plugin.getPlayers().getSuperiorPlayer(sender) : null;

islands.forEach(island -> {
UpgradeLevel upgradeLevel = island.getUpgradeLevel(upgrade);
UpgradeLevel currentLevel = island.getUpgradeLevel(upgrade);
UpgradeLevel nextLevel = upgrade.getUpgradeLevel(currentLevel.getLevel() + 1);

EventResult<EventsBus.UpgradeResult> event = plugin.getEventsBus().callIslandUpgradeEvent(
playerSender, island, upgrade, upgradeLevel, IslandUpgradeEvent.Cause.PLAYER_RANKUP);
playerSender, island, upgrade, currentLevel, nextLevel, IslandUpgradeEvent.Cause.PLAYER_RANKUP);

if (!event.isCancelled()) {
PlaceholdersService placeholdersService = plugin.getServices().getPlaceholdersService();
Expand Down
Expand Up @@ -80,10 +80,10 @@ public void execute(SuperiorSkyblockPlugin plugin, SuperiorPlayer superiorPlayer
if (upgrade == null)
return;

UpgradeLevel upgradeLevel = island.getUpgradeLevel(upgrade);
UpgradeLevel nextUpgradeLevel = upgrade.getUpgradeLevel(upgradeLevel.getLevel() + 1);
UpgradeLevel currentLevel = island.getUpgradeLevel(upgrade);
UpgradeLevel nextLevel = upgrade.getUpgradeLevel(currentLevel.getLevel() + 1);

String permission = nextUpgradeLevel == null ? "" : nextUpgradeLevel.getPermission();
String permission = nextLevel == null ? "" : nextLevel.getPermission();

if (!permission.isEmpty() && !superiorPlayer.hasPermission(permission)) {
Message.NO_UPGRADE_PERMISSION.send(superiorPlayer);
Expand All @@ -100,14 +100,14 @@ public void execute(SuperiorSkyblockPlugin plugin, SuperiorPlayer superiorPlayer
Duration.ofMillis(duration), superiorPlayer.getUserLocale()));
hasNextLevel = false;
} else {
String requiredCheckFailure = nextUpgradeLevel == null ? "" : nextUpgradeLevel.checkRequirements(superiorPlayer);
String requiredCheckFailure = nextLevel == null ? "" : nextLevel.checkRequirements(superiorPlayer);

if (!requiredCheckFailure.isEmpty()) {
Message.CUSTOM.send(superiorPlayer, requiredCheckFailure, false);
hasNextLevel = false;
} else {
EventResult<EventsBus.UpgradeResult> event = plugin.getEventsBus().callIslandUpgradeEvent(
superiorPlayer, island, upgrade, upgradeLevel, IslandUpgradeEvent.Cause.PLAYER_RANKUP);
superiorPlayer, island, upgrade, currentLevel, nextLevel, IslandUpgradeEvent.Cause.PLAYER_RANKUP);

UpgradeCost upgradeCost = event.getResult().getUpgradeCost();

Expand Down Expand Up @@ -136,7 +136,7 @@ public void execute(SuperiorSkyblockPlugin plugin, SuperiorPlayer superiorPlayer
}
}

SUpgradeLevel.ItemData itemData = ((SUpgradeLevel) upgradeLevel).getItemData();
SUpgradeLevel.ItemData itemData = ((SUpgradeLevel) currentLevel).getItemData();
GameSound sound = hasNextLevel ? itemData.hasNextLevelSound : itemData.noNextLevelSound;

if (sound != null)
Expand Down

0 comments on commit a4f7ce6

Please sign in to comment.