Skip to content

Commit

Permalink
Fix deprecation of anvil methods in 1.21
Browse files Browse the repository at this point in the history
  • Loading branch information
Archy-X committed Sep 20, 2024
1 parent 47eafda commit 884c7d2
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import dev.aurelium.auraskills.bukkit.AuraSkills;
import dev.aurelium.auraskills.bukkit.ability.AbilityImpl;
import dev.aurelium.auraskills.bukkit.user.BukkitUser;
import dev.aurelium.auraskills.bukkit.util.VersionUtils;
import dev.aurelium.auraskills.common.scheduler.TaskRunnable;
import dev.aurelium.auraskills.common.user.User;
import org.bukkit.Bukkit;
Expand All @@ -22,6 +23,7 @@
import org.bukkit.inventory.AnvilInventory;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.view.AnvilView;

import java.util.Map;
import java.util.concurrent.TimeUnit;
Expand Down Expand Up @@ -145,6 +147,7 @@ public void luckyTable(EnchantItemEvent event) {
}

@EventHandler(priority = EventPriority.MONITOR)
@SuppressWarnings("removal")
public void anvilMaster(InventoryOpenEvent event) {
var ability = Abilities.ANVIL_MASTER;

Expand All @@ -166,7 +169,14 @@ public void anvilMaster(InventoryOpenEvent event) {
User user = plugin.getUser(player);

int maxCost = (int) Math.round(getValue(ability, user));
anvil.setMaximumRepairCost(maxCost);

if (VersionUtils.isAtLeastVersion(21)) {
if (event.getView() instanceof AnvilView view) {
view.setMaximumRepairCost(maxCost);
}
} else {
anvil.setMaximumRepairCost(maxCost);
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import dev.aurelium.auraskills.api.source.SkillSource;
import dev.aurelium.auraskills.api.source.type.AnvilXpSource;
import dev.aurelium.auraskills.bukkit.AuraSkills;
import dev.aurelium.auraskills.bukkit.util.VersionUtils;
import dev.aurelium.auraskills.common.source.SourceTypes;
import dev.aurelium.auraskills.common.user.User;
import dev.aurelium.auraskills.common.util.text.TextUtil;
Expand All @@ -19,6 +20,7 @@
import org.bukkit.inventory.AnvilInventory;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.view.AnvilView;
import org.jetbrains.annotations.Nullable;

public class AnvilLeveler extends SourceLeveler {
Expand Down Expand Up @@ -61,17 +63,26 @@ public void onAnvilCombine(InventoryClickEvent event) {
if (failsChecks(event, player, location, skill)) return;

AnvilInventory anvil = (AnvilInventory) inventory;
double multiplier = getRepairCostMultiplier(source, anvil, skill);
double multiplier = getRepairCostMultiplier(source, anvil, skill, event);

plugin.getLevelManager().addXp(user, skill, source, multiplier * source.getXp());
}

private double getRepairCostMultiplier(AnvilXpSource source, AnvilInventory anvil, Skill skill) {
@SuppressWarnings("removal")
private double getRepairCostMultiplier(AnvilXpSource source, AnvilInventory anvil, Skill skill, InventoryClickEvent event) {
int repairCost = 1;
if (VersionUtils.isAtLeastVersion(21)) {
if (event.getView() instanceof AnvilView view) {
repairCost = view.getRepairCost();
}
} else {
repairCost = anvil.getRepairCost();
}
// Get the repair cost multiplier from placeholder
double multiplier = 1;
String multiplierString = source.getMultiplier();
if (multiplierString != null) {
multiplierString = TextUtil.replace(multiplierString, "{repair_cost}", String.valueOf(anvil.getRepairCost()));
multiplierString = TextUtil.replace(multiplierString, "{repair_cost}", String.valueOf(repairCost));
Expression expression = new Expression(multiplierString);
try {
multiplier = expression.evaluate().getNumberValue().doubleValue();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@
import dev.aurelium.auraskills.api.trait.Traits;
import dev.aurelium.auraskills.api.util.NumberUtil;
import dev.aurelium.auraskills.bukkit.AuraSkills;
import dev.aurelium.auraskills.bukkit.util.VersionUtils;
import dev.aurelium.auraskills.common.user.User;
import org.bukkit.entity.HumanEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.inventory.PrepareAnvilEvent;
import org.bukkit.inventory.AnvilInventory;
import org.bukkit.inventory.view.AnvilView;

import java.util.Locale;

Expand All @@ -31,6 +33,7 @@ public String getMenuDisplay(double value, Trait trait, Locale locale) {
}

@EventHandler
@SuppressWarnings("removal")
public void onAnvilPrepare(PrepareAnvilEvent event) {
User user = null;
// Finds the viewer with the highest wisdom level
Expand All @@ -49,13 +52,24 @@ public void onAnvilPrepare(PrepareAnvilEvent event) {
}
}
if (user != null) {
AnvilInventory anvil = event.getInventory();
double wisdom = user.getEffectiveTraitLevel(Traits.ANVIL_DISCOUNT);
int cost = (int) Math.round(anvil.getRepairCost() * (1 - getDiscount(wisdom)));
if (cost > 0) {
anvil.setRepairCost(cost);
if (VersionUtils.isAtLeastVersion(21)) {
AnvilView view = event.getView();
int repairCost = view.getRepairCost();
int cost = (int) Math.round(repairCost * (1 - getDiscount(wisdom)));
if (cost > 0) {
view.setRepairCost(cost);
} else {
view.setRepairCost(1);
}
} else {
anvil.setRepairCost(1);
AnvilInventory anvil = event.getInventory();
int cost = (int) Math.round(anvil.getRepairCost() * (1 - getDiscount(wisdom)));
if (cost > 0) {
anvil.setRepairCost(cost);
} else {
anvil.setRepairCost(1);
}
}
}
}
Expand Down

0 comments on commit 884c7d2

Please sign in to comment.