Browse Source

Cleaned up the fishing enchantment checks.

GJ 13 years ago
parent
commit
9ef1c3b5bf
1 changed files with 16 additions and 31 deletions
  1. 16 31
      src/main/java/com/gmail/nossr50/skills/Fishing.java

+ 16 - 31
src/main/java/com/gmail/nossr50/skills/Fishing.java

@@ -2,6 +2,7 @@ package com.gmail.nossr50.skills;
 
 
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 import org.bukkit.DyeColor;
 import org.bukkit.DyeColor;
 import org.bukkit.Location;
 import org.bukkit.Location;
@@ -131,43 +132,27 @@ public class Fishing {
             
             
             player.sendMessage(mcLocale.getString("Fishing.ItemFound"));
             player.sendMessage(mcLocale.getString("Fishing.ItemFound"));
             if (Repair.isArmor(fishingResults) || Repair.isTools(fishingResults)) {
             if (Repair.isArmor(fishingResults) || Repair.isTools(fishingResults)) {
-
                 if (Math.random() * 100 <= ENCHANTMENT_CHANCE) {
                 if (Math.random() * 100 <= ENCHANTMENT_CHANCE) {
-                    for (Enchantment enchantment : Enchantment.values()) {
-                        if (enchantment.canEnchantItem(fishingResults)) {
-
-                            //TODO: Clean this up. It's ugly & unreadable.
-                            //Prevent impossible enchantment combinations
-                            if ((fishingResults.containsEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL) || fishingResults.containsEnchantment(Enchantment.PROTECTION_EXPLOSIONS) || 
-                                    fishingResults.containsEnchantment(Enchantment.PROTECTION_FIRE) || fishingResults.containsEnchantment(Enchantment.PROTECTION_PROJECTILE)) && 
-                                    (enchantment.equals(Enchantment.PROTECTION_EXPLOSIONS) || enchantment.equals(Enchantment.PROTECTION_PROJECTILE) || enchantment.equals(Enchantment.PROTECTION_FIRE) || enchantment.equals(Enchantment.PROTECTION_ENVIRONMENTAL))){
-                                return;
-                            }
-
-                            //More impossible enchantment combinations
-                            else if ((fishingResults.containsEnchantment(Enchantment.DAMAGE_ALL) || fishingResults.containsEnchantment(Enchantment.DAMAGE_ARTHROPODS) || fishingResults.containsEnchantment(Enchantment.DAMAGE_UNDEAD)) && 
-                                    (enchantment.equals(Enchantment.DAMAGE_ALL) || enchantment.equals(Enchantment.DAMAGE_ARTHROPODS) || enchantment.equals(Enchantment.DAMAGE_UNDEAD))){
-                                return;
-                            }
+                    for (Enchantment newEnchant : Enchantment.values()) {
+                        if (newEnchant.canEnchantItem(fishingResults)) {
+                            Map<Enchantment, Integer> resultEnchantments = fishingResults.getEnchantments();
 
 
-                            //Even more impossible enchantment combinations
-                            else if ((fishingResults.containsEnchantment(Enchantment.SILK_TOUCH) || fishingResults.containsEnchantment(Enchantment.LOOT_BONUS_BLOCKS)) &&
-                                    (enchantment.equals(Enchantment.SILK_TOUCH) || enchantment.equals(Enchantment.LOOT_BONUS_BLOCKS))){
-                                return;
+                            for (Enchantment oldEnchant : resultEnchantments.keySet()) {
+                                if (oldEnchant.conflictsWith(newEnchant)) {
+                                    return;
+                                }
                             }
                             }
 
 
-                            else {
-                                //Actual chance to have an enchantment is related to your fishing skill
-                                if (Math.random() * 15 < Fishing.getFishingLootTier(PP)) {
-                                    enchanted = true;
-                                    int randomEnchantLevel = (int)(Math.random() * enchantment.getMaxLevel()) + 1;
-
-                                    if (randomEnchantLevel == 0) {
-                                        randomEnchantLevel = 1;
-                                    }
+                            /* Actual chance to have an enchantment is related to your fishing skill */
+                            if (Math.random() * 15 < Fishing.getFishingLootTier(PP)) {
+                                enchanted = true;
+                                int randomEnchantLevel = (int) (Math.random() * newEnchant.getMaxLevel()) + 1;
 
 
-                                    fishingResults.addEnchantment(enchantment, randomEnchantLevel);
+                                if (randomEnchantLevel == 0) {
+                                    randomEnchantLevel = 1;
                                 }
                                 }
+
+                                fishingResults.addEnchantment(newEnchant, randomEnchantLevel);
                             }
                             }
                         }
                         }
                     }
                     }