From 138b109ff5b2e6ef3195ef8909036e115f565cdc Mon Sep 17 00:00:00 2001 From: nossr50 Date: Sat, 13 Apr 2019 22:04:35 -0700 Subject: [PATCH] Correct display error when successfully salvaging enchantments --- Changelog.txt | 3 ++ pom.xml | 2 +- .../nossr50/listeners/BlockListener.java | 2 ++ .../skills/salvage/SalvageManager.java | 34 +++++++------------ 4 files changed, 19 insertions(+), 22 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index 9dc8c1b07..39315d370 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -7,6 +7,9 @@ Key: ! Change - Removal +Version 2.1.43 + Fixed a bug that would result in players being told they they failed to salvage enchantments when in reality they succeeded. + Version 2.1.42 Fixed McMMOPlayerNotFoundException being thrown instead of null (API) UserManager.getPlayer() returns null again (oopsie) diff --git a/pom.xml b/pom.xml index 38a666d14..0c066e297 100755 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 com.gmail.nossr50.mcMMO mcMMO - 2.1.42 + 2.1.43-SNAPSHOT mcMMO https://github.com/mcMMO-Dev/mcMMO diff --git a/src/main/java/com/gmail/nossr50/listeners/BlockListener.java b/src/main/java/com/gmail/nossr50/listeners/BlockListener.java index 70dfa97c5..10d75d569 100644 --- a/src/main/java/com/gmail/nossr50/listeners/BlockListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/BlockListener.java @@ -65,11 +65,13 @@ public class BlockListener implements Listener { if(is.getAmount() <= 0) continue; + //TODO: Ignore this abomination its rewritten in 2.2 if(!Config.getInstance().getDoubleDropsEnabled(PrimarySkillType.MINING, is.getType()) && !Config.getInstance().getDoubleDropsEnabled(PrimarySkillType.HERBALISM, is.getType()) && !Config.getInstance().getDoubleDropsEnabled(PrimarySkillType.WOODCUTTING, is.getType())) continue; + //TODO: Should just store the amount of drops in the metadata itself and use a loop if(event.getBlock().getState().getMetadata(mcMMO.doubleDrops).size() > 0) { event.getBlock().getState().getWorld().dropItemNaturally(event.getBlockState().getLocation(), is); diff --git a/src/main/java/com/gmail/nossr50/skills/salvage/SalvageManager.java b/src/main/java/com/gmail/nossr50/skills/salvage/SalvageManager.java index 5227f824c..d343e77c1 100644 --- a/src/main/java/com/gmail/nossr50/skills/salvage/SalvageManager.java +++ b/src/main/java/com/gmail/nossr50/skills/salvage/SalvageManager.java @@ -204,7 +204,7 @@ public class SalvageManager extends SkillManager { EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) book.getItemMeta(); boolean downgraded = false; - boolean arcaneFailure = false; + int arcaneFailureCount = 0; for (Entry enchant : enchants.entrySet()) { if (!Salvage.arcaneSalvageEnchantLoss @@ -217,36 +217,28 @@ public class SalvageManager extends SkillManager { && RandomChanceUtil.checkRandomChanceExecutionSuccess(new RandomChanceSkillStatic(getExtractPartialEnchantChance(), getPlayer(), SubSkillType.SALVAGE_ARCANE_SALVAGE))) { enchantMeta.addStoredEnchant(enchant.getKey(), enchant.getValue() - 1, true); downgraded = true; - } - else { - arcaneFailure = true; - downgraded = true; + } else { + arcaneFailureCount++; } } - if(!arcaneFailure) + if(failedAllEnchants(arcaneFailureCount, enchants.entrySet().size())) { - Map newEnchants = enchantMeta.getStoredEnchants(); - - if (downgraded || newEnchants.size() < enchants.size()) { - NotificationManager.sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE_FAILED, "Salvage.Skills.ArcanePartial"); - } - else { - NotificationManager.sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE_FAILED, "Salvage.Skills.ArcanePartial"); - } - - book.setItemMeta(enchantMeta); - } else { - if(enchantMeta.getStoredEnchants().size() > 0) - { - NotificationManager.sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE_FAILED, "Salvage.Skills.ArcaneFailed"); - } + NotificationManager.sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE_FAILED, "Salvage.Skills.ArcaneFailed"); return null; + } else if(downgraded) + { + NotificationManager.sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE_FAILED, "Salvage.Skills.ArcanePartial"); } + book.setItemMeta(enchantMeta); return book; } + private boolean failedAllEnchants(int arcaneFailureCount, int size) { + return arcaneFailureCount == size; + } + /** * Check if the player has tried to use an Anvil before. * @param actualize