Parcourir la source

Merge pull request #326 from Glitchfinder/fixes

More fixes and patches.
Grant il y a 12 ans
Parent
commit
fd5de7b218
27 fichiers modifiés avec 408 ajouts et 402 suppressions
  1. 81 81
      src/main/java/com/gmail/nossr50/commands/skills/AcrobaticsCommand.java
  2. 77 77
      src/main/java/com/gmail/nossr50/commands/skills/ArcheryCommand.java
  3. 18 18
      src/main/java/com/gmail/nossr50/commands/skills/AxesCommand.java
  4. 2 2
      src/main/java/com/gmail/nossr50/commands/skills/ExcavationCommand.java
  5. 2 2
      src/main/java/com/gmail/nossr50/commands/skills/FishingCommand.java
  6. 18 18
      src/main/java/com/gmail/nossr50/commands/skills/HerbalismCommand.java
  7. 16 16
      src/main/java/com/gmail/nossr50/commands/skills/MiningCommand.java
  8. 12 10
      src/main/java/com/gmail/nossr50/commands/skills/RepairCommand.java
  9. 10 10
      src/main/java/com/gmail/nossr50/commands/skills/SwordsCommand.java
  10. 12 12
      src/main/java/com/gmail/nossr50/commands/skills/TamingCommand.java
  11. 7 7
      src/main/java/com/gmail/nossr50/commands/skills/UnarmedCommand.java
  12. 10 10
      src/main/java/com/gmail/nossr50/commands/skills/WoodcuttingCommand.java
  13. 81 81
      src/main/java/com/gmail/nossr50/config/AdvancedConfig.java
  14. 1 1
      src/main/java/com/gmail/nossr50/skills/acrobatics/Acrobatics.java
  15. 1 1
      src/main/java/com/gmail/nossr50/skills/archery/Archery.java
  16. 11 11
      src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java
  17. 5 5
      src/main/java/com/gmail/nossr50/skills/combat/Axes.java
  18. 9 9
      src/main/java/com/gmail/nossr50/skills/gathering/BlastMining.java
  19. 3 3
      src/main/java/com/gmail/nossr50/skills/gathering/Mining.java
  20. 3 3
      src/main/java/com/gmail/nossr50/skills/gathering/WoodCutting.java
  21. 17 13
      src/main/java/com/gmail/nossr50/skills/repair/Repair.java
  22. 2 2
      src/main/java/com/gmail/nossr50/skills/swords/Swords.java
  23. 2 2
      src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java
  24. 2 2
      src/main/java/com/gmail/nossr50/skills/taming/Taming.java
  25. 1 1
      src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java
  26. 2 2
      src/main/java/com/gmail/nossr50/skills/unarmed/Unarmed.java
  27. 3 3
      src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java

+ 81 - 81
src/main/java/com/gmail/nossr50/commands/skills/AcrobaticsCommand.java

@@ -10,90 +10,90 @@ import com.gmail.nossr50.datatypes.SkillType;
 import com.gmail.nossr50.locale.LocaleLoader;
 
 public class AcrobaticsCommand extends SkillCommand {
-	AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
-
-	private String dodgeChance;
-	private String rollChance;
-	private String gracefulRollChance;
-
-	private float dodgeChanceMax = advancedConfig.getDodgeChanceMax();
-	private float dodgeMaxBonusLevel = advancedConfig.getDodgeMaxBonusLevel();
-	private float rollChanceMax = advancedConfig.getRollChanceMax();
-	private float rollMaxBonusLevel = advancedConfig.getRollMaxBonusLevel();
-	private float gracefulRollChanceMax = advancedConfig.getGracefulRollChanceMax();
-	private float gracefulRollMaxBonusLevel = advancedConfig.getGracefulRollMaxBonusLevel();
-
-	private boolean canDodge;
-	private boolean canRoll;
-	private boolean canGracefulRoll;
-
-	public AcrobaticsCommand() {
-		super(SkillType.ACROBATICS);
-	}
-
-	@Override
-	protected void dataCalculations() {
-		DecimalFormat df = new DecimalFormat("#.0");
-		// DODGE
-		if(skillValue >= dodgeMaxBonusLevel) dodgeChance = df.format(dodgeChanceMax);
-		else dodgeChance = df.format((dodgeChanceMax / dodgeMaxBonusLevel) * skillValue);
-		// ROLL
-		if(skillValue >= rollMaxBonusLevel) rollChance = df.format(rollChanceMax);
-		else rollChance = df.format((rollChanceMax / rollMaxBonusLevel) * skillValue);			
-		// GRACEFULROLL
-		if(skillValue >= gracefulRollMaxBonusLevel) gracefulRollChance = df.format(gracefulRollChanceMax);
-		else gracefulRollChance = df.format((gracefulRollChanceMax / gracefulRollMaxBonusLevel) * skillValue);
-	}
-
-	@Override
-	protected void permissionsCheck() {
-		canDodge = permInstance.dodge(player);
-		canRoll = permInstance.roll(player);
-		canGracefulRoll = permInstance.gracefulRoll(player);
-	}
-
-	@Override
-	protected boolean effectsHeaderPermissions() {
-		return canDodge || canGracefulRoll || canRoll;
-	}
-
-	@Override
-	protected void effectsDisplay() {
+    AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+
+    private String dodgeChance;
+    private String rollChance;
+    private String gracefulRollChance;
+
+    private float dodgeChanceMax = advancedConfig.getDodgeChanceMax();
+    private float dodgeMaxBonusLevel = advancedConfig.getDodgeMaxBonusLevel();
+    private float rollChanceMax = advancedConfig.getRollChanceMax();
+    private float rollMaxBonusLevel = advancedConfig.getRollMaxBonusLevel();
+    private float gracefulRollChanceMax = advancedConfig.getGracefulRollChanceMax();
+    private float gracefulRollMaxBonusLevel = advancedConfig.getGracefulRollMaxBonusLevel();
+
+    private boolean canDodge;
+    private boolean canRoll;
+    private boolean canGracefulRoll;
+
+    public AcrobaticsCommand() {
+        super(SkillType.ACROBATICS);
+    }
+
+    @Override
+    protected void dataCalculations() {
+        DecimalFormat df = new DecimalFormat("#.0");
+        // DODGE
+        if(skillValue >= dodgeMaxBonusLevel) dodgeChance = df.format(dodgeChanceMax);
+        else dodgeChance = df.format(((double) dodgeChanceMax / (double) dodgeMaxBonusLevel) * (double) skillValue);
+        // ROLL
+        if(skillValue >= rollMaxBonusLevel) rollChance = df.format(rollChanceMax);
+        else rollChance = df.format(((double) rollChanceMax / (double) rollMaxBonusLevel) * (double) skillValue);            
+        // GRACEFULROLL
+        if(skillValue >= gracefulRollMaxBonusLevel) gracefulRollChance = df.format(gracefulRollChanceMax);
+        else gracefulRollChance = df.format(((double) gracefulRollChanceMax / (double) gracefulRollMaxBonusLevel) * (double) skillValue);
+    }
+
+    @Override
+    protected void permissionsCheck() {
+        canDodge = permInstance.dodge(player);
+        canRoll = permInstance.roll(player);
+        canGracefulRoll = permInstance.gracefulRoll(player);
+    }
+
+    @Override
+    protected boolean effectsHeaderPermissions() {
+        return canDodge || canGracefulRoll || canRoll;
+    }
+
+    @Override
+    protected void effectsDisplay() {
                 if (player.hasPermission("mcmmo.perks.lucky.acrobatics")) {
                     String perkPrefix = ChatColor.RED + "[mcMMO Perks] ";
                     player.sendMessage(perkPrefix + LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Perks.lucky.name"), LocaleLoader.getString("Perks.lucky.desc", new Object[] { "Acrobatics" }) }));
                 }
 
-		if (canRoll) {
-			player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Acrobatics.Effect.0"), LocaleLoader.getString("Acrobatics.Effect.1") }));
-		}
-
-		if (canGracefulRoll) {
-			player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Acrobatics.Effect.2"), LocaleLoader.getString("Acrobatics.Effect.3") }));
-		}
-
-		if (canDodge) {
-			player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Acrobatics.Effect.4"), LocaleLoader.getString("Acrobatics.Effect.5") }));
-		}
-	}
-
-	@Override
-	protected boolean statsHeaderPermissions() {
-		return canDodge || canGracefulRoll || canRoll;
-	}
-
-	@Override
-	protected void statsDisplay() {
-		if (canRoll) {
-			player.sendMessage(LocaleLoader.getString("Acrobatics.Roll.Chance", new Object[] { rollChance }));
-		}
-
-		if (canGracefulRoll) {
-			player.sendMessage(LocaleLoader.getString("Acrobatics.Roll.GraceChance", new Object[] { gracefulRollChance }));
-		}
-
-		if (canDodge) {
-			player.sendMessage(LocaleLoader.getString("Acrobatics.DodgeChance", new Object[] { dodgeChance }));
-		}
-	}
+        if (canRoll) {
+            player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Acrobatics.Effect.0"), LocaleLoader.getString("Acrobatics.Effect.1") }));
+        }
+
+        if (canGracefulRoll) {
+            player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Acrobatics.Effect.2"), LocaleLoader.getString("Acrobatics.Effect.3") }));
+        }
+
+        if (canDodge) {
+            player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Acrobatics.Effect.4"), LocaleLoader.getString("Acrobatics.Effect.5") }));
+        }
+    }
+
+    @Override
+    protected boolean statsHeaderPermissions() {
+        return canDodge || canGracefulRoll || canRoll;
+    }
+
+    @Override
+    protected void statsDisplay() {
+        if (canRoll) {
+            player.sendMessage(LocaleLoader.getString("Acrobatics.Roll.Chance", new Object[] { rollChance }));
+        }
+
+        if (canGracefulRoll) {
+            player.sendMessage(LocaleLoader.getString("Acrobatics.Roll.GraceChance", new Object[] { gracefulRollChance }));
+        }
+
+        if (canDodge) {
+            player.sendMessage(LocaleLoader.getString("Acrobatics.DodgeChance", new Object[] { dodgeChance }));
+        }
+    }
 }

+ 77 - 77
src/main/java/com/gmail/nossr50/commands/skills/ArcheryCommand.java

@@ -10,97 +10,97 @@ import com.gmail.nossr50.datatypes.SkillType;
 import com.gmail.nossr50.locale.LocaleLoader;
 
 public class ArcheryCommand extends SkillCommand {
-	AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+    AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
 
-	private String skillShotBonus;
-	private String dazeChance;
-	private String retrieveChance;
+    private String skillShotBonus;
+    private String dazeChance;
+    private String retrieveChance;
 
-	private int skillShotIncreaseLevel = advancedConfig.getSkillShotIncreaseLevel();
-	private double skillShotIncreasePercentage = advancedConfig.getSkillShotIncreasePercentage();
-	private double skillShotBonusMax = advancedConfig.getSkillShotBonusMax();
+    private int skillShotIncreaseLevel = advancedConfig.getSkillShotIncreaseLevel();
+    private double skillShotIncreasePercentage = advancedConfig.getSkillShotIncreasePercentage();
+    private double skillShotBonusMax = advancedConfig.getSkillShotBonusMax();
 
-	private float dazeBonusMax = advancedConfig.getDazeBonusMax();
-	private float dazeMaxBonusLevel = advancedConfig.getDazeMaxBonusLevel();
+    private float dazeBonusMax = advancedConfig.getDazeBonusMax();
+    private float dazeMaxBonusLevel = advancedConfig.getDazeMaxBonusLevel();
 
-	private float retrieveBonusMax = advancedConfig.getRetrieveBonusMax();
-	private float retrieveMaxBonusLevel = advancedConfig.getRetrieveMaxBonusLevel();
+    private float retrieveBonusMax = advancedConfig.getRetrieveBonusMax();
+    private float retrieveMaxBonusLevel = advancedConfig.getRetrieveMaxBonusLevel();
 
 
-	private boolean canSkillShot;
-	private boolean canDaze;
-	private boolean canRetrieve;
+    private boolean canSkillShot;
+    private boolean canDaze;
+    private boolean canRetrieve;
 
-	public ArcheryCommand() {
-		super(SkillType.ARCHERY);
-	}
+    public ArcheryCommand() {
+        super(SkillType.ARCHERY);
+    }
 
-	@Override
-	protected void dataCalculations() {
-		DecimalFormat df = new DecimalFormat("#.0");
-		// SkillShot
-        double bonus = (int)(skillValue / skillShotIncreaseLevel) * skillShotIncreasePercentage;
+    @Override
+    protected void dataCalculations() {
+        DecimalFormat df = new DecimalFormat("#.0");
+        // SkillShot
+        double bonus = (int)((double) skillValue / (double) skillShotIncreaseLevel) * (double) skillShotIncreasePercentage;
         if (bonus > skillShotBonusMax) skillShotBonus = percent.format(skillShotBonusMax);
         else skillShotBonus = percent.format(bonus);
         
-		// Daze
-		if(skillValue >= dazeMaxBonusLevel) dazeChance = df.format(dazeBonusMax);
-		else dazeChance = df.format((dazeBonusMax / dazeMaxBonusLevel) * skillValue);
-
-		// Retrieve
-		if(skillValue >= retrieveMaxBonusLevel)	retrieveChance = df.format(retrieveBonusMax);
-		else retrieveChance = df.format((retrieveBonusMax / retrieveMaxBonusLevel) * skillValue);
-	}
-
-	@Override
-	protected void permissionsCheck() {
-		canSkillShot = permInstance.archeryBonus(player);
-		canDaze = permInstance.daze(player);
-		canRetrieve = permInstance.trackArrows(player);
-	}
-
-	@Override
-	protected boolean effectsHeaderPermissions() {
-		return canSkillShot || canDaze || canRetrieve;
-	}
-
-	@Override
-	protected void effectsDisplay() {
+        // Daze
+        if(skillValue >= dazeMaxBonusLevel) dazeChance = df.format(dazeBonusMax);
+        else dazeChance = df.format(((double) dazeBonusMax / (double) dazeMaxBonusLevel) * (double) skillValue);
+
+        // Retrieve
+        if(skillValue >= retrieveMaxBonusLevel)    retrieveChance = df.format(retrieveBonusMax);
+        else retrieveChance = df.format(((double) retrieveBonusMax / (double) retrieveMaxBonusLevel) * (double) skillValue);
+    }
+
+    @Override
+    protected void permissionsCheck() {
+        canSkillShot = permInstance.archeryBonus(player);
+        canDaze = permInstance.daze(player);
+        canRetrieve = permInstance.trackArrows(player);
+    }
+
+    @Override
+    protected boolean effectsHeaderPermissions() {
+        return canSkillShot || canDaze || canRetrieve;
+    }
+
+    @Override
+    protected void effectsDisplay() {
                 if (player.hasPermission("mcmmo.perks.lucky.archery")) {
                     String perkPrefix = ChatColor.RED + "[mcMMO Perks] ";
                     player.sendMessage(perkPrefix + LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Perks.lucky.name"), LocaleLoader.getString("Perks.lucky.desc", new Object[] { "Archery" }) }));
                 }
 
-		if (canSkillShot) {
-			player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Archery.Effect.0"), LocaleLoader.getString("Archery.Effect.1") }));
-		}
-
-		if (canDaze) {
-			player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Archery.Effect.2"), LocaleLoader.getString("Archery.Effect.3") }));
-		}
-
-		if (canRetrieve) {
-			player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Archery.Effect.4"), LocaleLoader.getString("Archery.Effect.5") }));
-		}
-	}
-
-	@Override
-	protected boolean statsHeaderPermissions() {
-		return canSkillShot || canDaze || canRetrieve;
-	}
-
-	@Override
-	protected void statsDisplay() {
-		if (canSkillShot) {
-			player.sendMessage(LocaleLoader.getString("Archery.Combat.SkillshotBonus", new Object[] { skillShotBonus }));
-		}
-
-		if (canDaze) {
-			player.sendMessage(LocaleLoader.getString("Archery.Combat.DazeChance", new Object[] { dazeChance }));
-		}
-
-		if (canRetrieve) {
-			player.sendMessage(LocaleLoader.getString("Archery.Combat.RetrieveChance", new Object[] { retrieveChance }));
-		}
-	}
+        if (canSkillShot) {
+            player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Archery.Effect.0"), LocaleLoader.getString("Archery.Effect.1") }));
+        }
+
+        if (canDaze) {
+            player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Archery.Effect.2"), LocaleLoader.getString("Archery.Effect.3") }));
+        }
+
+        if (canRetrieve) {
+            player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Archery.Effect.4"), LocaleLoader.getString("Archery.Effect.5") }));
+        }
+    }
+
+    @Override
+    protected boolean statsHeaderPermissions() {
+        return canSkillShot || canDaze || canRetrieve;
+    }
+
+    @Override
+    protected void statsDisplay() {
+        if (canSkillShot) {
+            player.sendMessage(LocaleLoader.getString("Archery.Combat.SkillshotBonus", new Object[] { skillShotBonus }));
+        }
+
+        if (canDaze) {
+            player.sendMessage(LocaleLoader.getString("Archery.Combat.DazeChance", new Object[] { dazeChance }));
+        }
+
+        if (canRetrieve) {
+            player.sendMessage(LocaleLoader.getString("Archery.Combat.RetrieveChance", new Object[] { retrieveChance }));
+        }
+    }
 }

+ 18 - 18
src/main/java/com/gmail/nossr50/commands/skills/AxesCommand.java

@@ -11,21 +11,21 @@ import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.util.Misc;
 
 public class AxesCommand extends SkillCommand {
-	AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
-	
+    AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+    
     private String critChance;
     private String bonusDamage;
     private String impactDamage;
     private String greaterImpactDamage;
     private String skullSplitterLength;
 
-	private int bonusDamageAxesBonusMax = advancedConfig.getBonusDamageAxesBonusMax();
-	private int bonusDamageAxesMaxBonusLevel = advancedConfig.getBonusDamageAxesMaxBonusLevel();
-	private double critMaxChance = advancedConfig.getAxesCriticalChance();
-	private int critMaxBonusLevel = advancedConfig.getAxesCriticalMaxBonusLevel();
-	private int greaterImpactIncreaseLevel = advancedConfig.getGreaterImpactIncreaseLevel();
-//	private double greaterImpactModifier = advancedConfig.getGreaterImpactModifier();
-	private int abilityLengthIncreaseLevel = advancedConfig.getAbilityLength();
+    private int bonusDamageAxesBonusMax = advancedConfig.getBonusDamageAxesBonusMax();
+    private int bonusDamageAxesMaxBonusLevel = advancedConfig.getBonusDamageAxesMaxBonusLevel();
+    private double critMaxChance = advancedConfig.getAxesCriticalChance();
+    private int critMaxBonusLevel = advancedConfig.getAxesCriticalMaxBonusLevel();
+    private int greaterImpactIncreaseLevel = advancedConfig.getGreaterImpactIncreaseLevel();
+//    private double greaterImpactModifier = advancedConfig.getGreaterImpactModifier();
+    private int abilityLengthIncreaseLevel = advancedConfig.getAbilityLength();
 
     private boolean canSkullSplitter;
     private boolean canCritical;
@@ -39,17 +39,17 @@ public class AxesCommand extends SkillCommand {
 
     @Override
     protected void dataCalculations() {
-    	DecimalFormat df = new DecimalFormat("#.0");
-    	int skillCheck = Misc.skillCheck((int)skillValue, critMaxBonusLevel);
+        DecimalFormat df = new DecimalFormat("#.0");
+        int skillCheck = Misc.skillCheck((int)skillValue, critMaxBonusLevel);
 
-    	impactDamage = String.valueOf(1 + ((int) skillValue / greaterImpactIncreaseLevel));
-    	skullSplitterLength = String.valueOf(2 + ((int) skillValue / abilityLengthIncreaseLevel));
-    	greaterImpactDamage = "2";
+        impactDamage = String.valueOf(1 + ((double) skillValue / (double) greaterImpactIncreaseLevel));
+        skullSplitterLength = String.valueOf(2 + ((double) skillValue / (double) abilityLengthIncreaseLevel));
+        greaterImpactDamage = "2";
 
-    	if (skillValue >= critMaxBonusLevel) critChance = df.format(critMaxChance);
-    	else critChance = String.valueOf((critMaxChance / critMaxBonusLevel) * (float)skillCheck);
-    	if (skillValue >= bonusDamageAxesMaxBonusLevel) bonusDamage = String.valueOf(bonusDamageAxesBonusMax);
-    	else bonusDamage = String.valueOf((int) skillValue / (bonusDamageAxesMaxBonusLevel / bonusDamageAxesBonusMax));
+        if (skillValue >= critMaxBonusLevel) critChance = df.format(critMaxChance);
+        else critChance = String.valueOf(((double) critMaxChance / (double) critMaxBonusLevel) * (double) skillCheck);
+        if (skillValue >= bonusDamageAxesMaxBonusLevel) bonusDamage = String.valueOf(bonusDamageAxesBonusMax);
+        else bonusDamage = String.valueOf((double) skillValue / ((double) bonusDamageAxesMaxBonusLevel / (double) bonusDamageAxesBonusMax));
     }
 
     @Override

+ 2 - 2
src/main/java/com/gmail/nossr50/commands/skills/ExcavationCommand.java

@@ -8,7 +8,7 @@ import com.gmail.nossr50.datatypes.SkillType;
 import com.gmail.nossr50.locale.LocaleLoader;
 
 public class ExcavationCommand extends SkillCommand {
-	AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+    AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
     private String gigaDrillBreakerLength;
 
     private int abilityLengthIncreaseLevel = advancedConfig.getAbilityLength();
@@ -22,7 +22,7 @@ public class ExcavationCommand extends SkillCommand {
 
     @Override
     protected void dataCalculations() {
-        gigaDrillBreakerLength = String.valueOf(2 + ((int) skillValue / abilityLengthIncreaseLevel));
+        gigaDrillBreakerLength = String.valueOf(2 + ((double) skillValue / (double) abilityLengthIncreaseLevel));
     }
 
     @Override

+ 2 - 2
src/main/java/com/gmail/nossr50/commands/skills/FishingCommand.java

@@ -30,10 +30,10 @@ public class FishingCommand extends SkillCommand {
     @Override
     protected void dataCalculations() {
         lootTier = Fishing.getFishingLootTier(profile);
-        magicChance = percent.format((float) lootTier / 15);
+        magicChance = percent.format((double) lootTier / 15D);
         int dropChance = Fishing.getShakeChance(lootTier);
         if (player.hasPermission("mcmmo.perks.lucky.fishing")) {
-            dropChance = (int) (dropChance * 1.25);
+            dropChance = (int) ((double) dropChance * 1.25D);
         }
         shakeChance = String.valueOf(dropChance);
 

+ 18 - 18
src/main/java/com/gmail/nossr50/commands/skills/HerbalismCommand.java

@@ -11,8 +11,8 @@ import com.gmail.nossr50.datatypes.SkillType;
 import com.gmail.nossr50.locale.LocaleLoader;
 
 public class HerbalismCommand extends SkillCommand {
-	AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
-	
+    AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+    
     private String greenTerraLength;
     private String greenThumbChance;
     private String greenThumbStage;
@@ -28,7 +28,7 @@ public class HerbalismCommand extends SkillCommand {
     private int greenThumbMaxLevel = advancedConfig.getGreenThumbMaxLevel();
     private double doubleDropsMaxBonus = advancedConfig.getHerbalismDoubleDropsChanceMax();
     private int doubleDropsMaxLevel = advancedConfig.getHerbalismDoubleDropsMaxLevel();
-	
+    
     private boolean canGreenTerra;
     private boolean canGreenThumbWheat;
     private boolean canGreenThumbBlocks;
@@ -42,21 +42,21 @@ public class HerbalismCommand extends SkillCommand {
 
     @Override
     protected void dataCalculations() {
-    	DecimalFormat df = new DecimalFormat("#.0");
-    	greenTerraLength = String.valueOf(2 + ((int) skillValue / abilityLengthIncreaseLevel));
-    	//FARMERS DIET
-    	if(skillValue >= farmersDietMaxLevel) farmersDietRank = "5";
-    	else farmersDietRank = String.valueOf((int)skillValue / farmersDietRankChange);
-    	//GREEN THUMB
-    	if(skillValue >= greenThumbStageMaxLevel) greenThumbStage = "4";
-    	else greenThumbStage = String.valueOf((int)skillValue / greenThumbStageChange);
-    	
-    	
-    	if(skillValue >= greenThumbMaxLevel) greenThumbChance = String.valueOf(greenThumbMaxBonus);
-    	else greenThumbChance = String.valueOf((greenThumbMaxBonus / greenThumbMaxLevel) * skillValue);
-    	//DOUBLE DROPS
-    	if(skillValue >= doubleDropsMaxLevel) doubleDropChance = df.format(doubleDropsMaxBonus);
-    	else doubleDropChance = df.format((doubleDropsMaxBonus / doubleDropsMaxLevel) * skillValue);
+        DecimalFormat df = new DecimalFormat("#.0");
+        greenTerraLength = String.valueOf(2 + ((double) skillValue / (double) abilityLengthIncreaseLevel));
+        //FARMERS DIET
+        if(skillValue >= farmersDietMaxLevel) farmersDietRank = "5";
+        else farmersDietRank = String.valueOf((double) skillValue / (double) farmersDietRankChange);
+        //GREEN THUMB
+        if(skillValue >= greenThumbStageMaxLevel) greenThumbStage = "4";
+        else greenThumbStage = String.valueOf((double) skillValue / (double) greenThumbStageChange);
+        
+        
+        if(skillValue >= greenThumbMaxLevel) greenThumbChance = String.valueOf(greenThumbMaxBonus);
+        else greenThumbChance = String.valueOf(((double) greenThumbMaxBonus / (double) greenThumbMaxLevel) * (double) skillValue);
+        //DOUBLE DROPS
+        if(skillValue >= doubleDropsMaxLevel) doubleDropChance = df.format(doubleDropsMaxBonus);
+        else doubleDropChance = df.format(((double) doubleDropsMaxBonus / (double) doubleDropsMaxLevel) * (double) skillValue);
     }
 
     @Override

+ 16 - 16
src/main/java/com/gmail/nossr50/commands/skills/MiningCommand.java

@@ -12,25 +12,25 @@ import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.util.Misc;
 
 public class MiningCommand extends SkillCommand {
-	AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+    AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
     private String doubleDropChance;
     private String superBreakerLength;
     private String blastMiningRank;
     private String blastRadiusIncrease;
     private String blastDamageDecrease;
 
-	private int blastMiningRank1 = advancedConfig.getBlastMiningRank1();
-	private int blastMiningRank2 = advancedConfig.getBlastMiningRank2();
-	private int blastMiningRank3 = advancedConfig.getBlastMiningRank3();
-	private int blastMiningRank4 = advancedConfig.getBlastMiningRank4();
-	private int blastMiningRank5 = advancedConfig.getBlastMiningRank5();
-	private int blastMiningRank6 = advancedConfig.getBlastMiningRank6();
-	private int blastMiningRank7 = advancedConfig.getBlastMiningRank7();
-	private int blastMiningRank8 = advancedConfig.getBlastMiningRank8();
+    private int blastMiningRank1 = advancedConfig.getBlastMiningRank1();
+    private int blastMiningRank2 = advancedConfig.getBlastMiningRank2();
+    private int blastMiningRank3 = advancedConfig.getBlastMiningRank3();
+    private int blastMiningRank4 = advancedConfig.getBlastMiningRank4();
+    private int blastMiningRank5 = advancedConfig.getBlastMiningRank5();
+    private int blastMiningRank6 = advancedConfig.getBlastMiningRank6();
+    private int blastMiningRank7 = advancedConfig.getBlastMiningRank7();
+    private int blastMiningRank8 = advancedConfig.getBlastMiningRank8();
 
-	private double doubleDropsMaxBonus = advancedConfig.getMiningDoubleDropChance();
-	private int doubleDropsMaxLevel = advancedConfig.getMiningDoubleDropMaxLevel();
-	public int abilityLengthIncreaseLevel = advancedConfig.getAbilityLength();
+    private double doubleDropsMaxBonus = advancedConfig.getMiningDoubleDropChance();
+    private int doubleDropsMaxLevel = advancedConfig.getMiningDoubleDropMaxLevel();
+    public int abilityLengthIncreaseLevel = advancedConfig.getAbilityLength();
 
     private boolean canSuperBreaker;
     private boolean canDoubleDrop;
@@ -45,10 +45,10 @@ public class MiningCommand extends SkillCommand {
 
     @Override
     protected void dataCalculations() {
-    	DecimalFormat df = new DecimalFormat("#.0");
-        superBreakerLength = String.valueOf(2 + ((int) skillValue / abilityLengthIncreaseLevel));
-    	if(skillValue >= doubleDropsMaxLevel) doubleDropChance = df.format(doubleDropsMaxBonus);
-    	else doubleDropChance = df.format((doubleDropsMaxBonus / doubleDropsMaxLevel) * skillValue);
+        DecimalFormat df = new DecimalFormat("#.0");
+        superBreakerLength = String.valueOf(2 + ((double) skillValue / (double) abilityLengthIncreaseLevel));
+        if(skillValue >= doubleDropsMaxLevel) doubleDropChance = df.format(doubleDropsMaxBonus);
+        else doubleDropChance = df.format(((double) doubleDropsMaxBonus / (double) doubleDropsMaxLevel) * (double) skillValue);
         
         if (skillValue >= blastMiningRank8) {
             blastMiningRank = "8";

+ 12 - 10
src/main/java/com/gmail/nossr50/commands/skills/RepairCommand.java

@@ -14,15 +14,15 @@ import com.gmail.nossr50.skills.repair.Repair;
 import com.gmail.nossr50.skills.repair.Repairable;
 
 public class RepairCommand extends SkillCommand {
-	AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+    AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
     private int arcaneForgingRank;
     private String repairMasteryBonus;
     private String superRepairChance;
 
-	private float repairMasteryChanceMax = advancedConfig.getRepairMasteryChanceMax();
-	private float repairMasteryMaxBonusLevel = advancedConfig.getRepairMasteryMaxLevel();
-	private float superRepairChanceMax = advancedConfig.getSuperRepairChanceMax();
-	private float superRepairMaxBonusLevel = advancedConfig.getSuperRepairMaxLevel();
+    private float repairMasteryChanceMax = advancedConfig.getRepairMasteryChanceMax();
+    private float repairMasteryMaxBonusLevel = advancedConfig.getRepairMasteryMaxLevel();
+    private float superRepairChanceMax = advancedConfig.getSuperRepairChanceMax();
+    private float superRepairMaxBonusLevel = advancedConfig.getSuperRepairMaxLevel();
 
     private boolean canSuperRepair;
     private boolean canMasterRepair;
@@ -35,6 +35,7 @@ public class RepairCommand extends SkillCommand {
     private boolean canRepairString;
     private boolean canRepairLeather;
     private boolean canRepairWood;
+    private boolean arcaneBypass;
 
     private int salvageLevel;
     private int diamondLevel;
@@ -48,7 +49,7 @@ public class RepairCommand extends SkillCommand {
 
     @Override
     protected void dataCalculations() {
-		DecimalFormat df = new DecimalFormat("#.0");
+        DecimalFormat df = new DecimalFormat("#.0");
         // We're using pickaxes here, not the best but it works
         Repairable diamondRepairable = mcMMO.repairManager.getRepairable(278);
         Repairable goldRepairable = mcMMO.repairManager.getRepairable(285);
@@ -63,10 +64,10 @@ public class RepairCommand extends SkillCommand {
         salvageLevel = Config.getInstance().getSalvageUnlockLevel();
 
         if(skillValue >= repairMasteryMaxBonusLevel) repairMasteryBonus = df.format(repairMasteryChanceMax);
-		else repairMasteryBonus = df.format((repairMasteryChanceMax / repairMasteryMaxBonusLevel) * skillValue);
+            else repairMasteryBonus = df.format(((double) repairMasteryChanceMax / (double) repairMasteryMaxBonusLevel) * (double) skillValue);
 
         if(skillValue >= superRepairMaxBonusLevel) superRepairChance = df.format(superRepairChanceMax);
-		else superRepairChance = df.format((superRepairChanceMax / superRepairMaxBonusLevel) * skillValue);
+            else superRepairChance = df.format(((double) superRepairChanceMax / (double) superRepairMaxBonusLevel) * (double) skillValue);
 
         arcaneForgingRank = Repair.getArcaneForgingRank(profile);
     }
@@ -84,6 +85,7 @@ public class RepairCommand extends SkillCommand {
         canRepairString = permInstance.stringRepair(player);
         canRepairLeather = permInstance.leatherRepair(player);
         canRepairWood = permInstance.woodRepair(player);
+	arcaneBypass = permInstance.arcaneBypass(player);
     }
 
     @Override
@@ -154,11 +156,11 @@ public class RepairCommand extends SkillCommand {
             player.sendMessage(LocaleLoader.getString("Repair.Arcane.Rank", new Object[] { arcaneForgingRank }));
 
             if (Config.getInstance().getArcaneForgingEnchantLossEnabled()) {
-                player.sendMessage(LocaleLoader.getString("Repair.Arcane.Chance.Success", new Object[] { Repair.getEnchantChance(arcaneForgingRank) }));
+                player.sendMessage(LocaleLoader.getString("Repair.Arcane.Chance.Success", new Object[] { (arcaneBypass ? 100 : Repair.getEnchantChance(arcaneForgingRank)) }));
             }
 
             if (Config.getInstance().getArcaneForgingDowngradeEnabled()) {
-                player.sendMessage(LocaleLoader.getString("Repair.Arcane.Chance.Downgrade", new Object[] { Repair.getDowngradeChance(arcaneForgingRank) }));
+                player.sendMessage(LocaleLoader.getString("Repair.Arcane.Chance.Downgrade", new Object[] { (arcaneBypass ? 0 : Repair.getDowngradeChance(arcaneForgingRank)) }));
             }
         }
     }

+ 10 - 10
src/main/java/com/gmail/nossr50/commands/skills/SwordsCommand.java

@@ -10,8 +10,8 @@ import com.gmail.nossr50.datatypes.SkillType;
 import com.gmail.nossr50.locale.LocaleLoader;
 
 public class SwordsCommand extends SkillCommand {
-	AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
-	
+    AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+    
     private String counterAttackChance;
     private String bleedLength;
     private String bleedChance;
@@ -36,19 +36,19 @@ public class SwordsCommand extends SkillCommand {
 
     @Override
     protected void dataCalculations() {
-		DecimalFormat df = new DecimalFormat("#.0");
-        serratedStrikesLength = String.valueOf(2 + ((int) skillValue / abilityLengthIncreaseLevel));
+        DecimalFormat df = new DecimalFormat("#.0");
+        serratedStrikesLength = String.valueOf(2 + ((double) skillValue / (double) abilityLengthIncreaseLevel));
         
         if (skillValue >= bleedMaxLevel) bleedLength = String.valueOf(bleedMaxTicks);
         else bleedLength = String.valueOf(bleedBaseTicks);
 
-		if(skillValue >= bleedMaxLevel) bleedChance = df.format(bleedChanceMax);
-		else bleedChance = df.format((bleedChanceMax / bleedMaxLevel) * skillValue);
+        if(skillValue >= bleedMaxLevel) bleedChance = df.format(bleedChanceMax);
+        else bleedChance = df.format(((double) bleedChanceMax / (double) bleedMaxLevel) * (double) skillValue);
         
-		if(skillValue >= counterMaxLevel) counterAttackChance = df.format(counterChanceMax);
-		else counterAttackChance = df.format((counterChanceMax / counterMaxLevel) * skillValue);
-		
-		serratedStrikesLength = String.valueOf(serratedBleedTicks);
+        if(skillValue >= counterMaxLevel) counterAttackChance = df.format(counterChanceMax);
+        else counterAttackChance = df.format(((double) counterChanceMax / (double) counterMaxLevel) * (double) skillValue);
+        
+        serratedStrikesLength = String.valueOf(serratedBleedTicks);
     }
 
     @Override

+ 12 - 12
src/main/java/com/gmail/nossr50/commands/skills/TamingCommand.java

@@ -11,17 +11,17 @@ import com.gmail.nossr50.datatypes.SkillType;
 import com.gmail.nossr50.locale.LocaleLoader;
 
 public class TamingCommand extends SkillCommand {
-	AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+    AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
     private String goreChance;
 
-	private float goreChanceMax = advancedConfig.getGoreChanceMax();
-	private float goreMaxLevel = advancedConfig.getGoreMaxBonusLevel();
-	private int fastFoodUnlock = advancedConfig.getFastFoodUnlock();
-	private float fastFoodChance = advancedConfig.getFastFoodChance();
-	private int enviromentallyAwareUnlock = advancedConfig.getEnviromentallyAwareUnlock();
-	private int thickFurUnlock = advancedConfig.getThickFurUnlock();
-	private int shockProofUnlock = advancedConfig.getShockProofUnlock();
-	private int sharpenedClawUnlock = advancedConfig.getSharpenedClawsUnlock();
+    private float goreChanceMax = advancedConfig.getGoreChanceMax();
+    private float goreMaxLevel = advancedConfig.getGoreMaxBonusLevel();
+    private int fastFoodUnlock = advancedConfig.getFastFoodUnlock();
+    private float fastFoodChance = advancedConfig.getFastFoodChance();
+    private int enviromentallyAwareUnlock = advancedConfig.getEnviromentallyAwareUnlock();
+    private int thickFurUnlock = advancedConfig.getThickFurUnlock();
+    private int shockProofUnlock = advancedConfig.getShockProofUnlock();
+    private int sharpenedClawUnlock = advancedConfig.getSharpenedClawsUnlock();
    
     private boolean canBeastLore;
     private boolean canGore;
@@ -38,9 +38,9 @@ public class TamingCommand extends SkillCommand {
 
     @Override
     protected void dataCalculations() {
-    	DecimalFormat df = new DecimalFormat("#.0");
-    	if(skillValue >= goreMaxLevel) goreChance = df.format(goreChanceMax);
-    	else goreChance = df.format((goreChanceMax / goreMaxLevel) * skillValue);
+        DecimalFormat df = new DecimalFormat("#.0");
+        if(skillValue >= goreMaxLevel) goreChance = df.format(goreChanceMax);
+        else goreChance = df.format(((double) goreChanceMax / (double) goreMaxLevel) * (double) skillValue);
     }    
 
     @Override

+ 7 - 7
src/main/java/com/gmail/nossr50/commands/skills/UnarmedCommand.java

@@ -10,7 +10,7 @@ import com.gmail.nossr50.datatypes.SkillType;
 import com.gmail.nossr50.locale.LocaleLoader;
 
 public class UnarmedCommand extends SkillCommand {
-	AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+    AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
     private String berserkLength;
     private String deflectChance;
     private String disarmChance;
@@ -22,7 +22,7 @@ public class UnarmedCommand extends SkillCommand {
     private float deflectMaxLevel = advancedConfig.getDeflectMaxBonusLevel();
     private float ironArmMaxBonus = advancedConfig.getIronArmBonus();
     private int ironArmIncreaseLevel = advancedConfig.getIronArmIncreaseLevel();
-	private int abilityLengthIncreaseLevel = advancedConfig.getAbilityLength();
+    private int abilityLengthIncreaseLevel = advancedConfig.getAbilityLength();
 
     private boolean canBerserk;
     private boolean canDisarm;
@@ -35,17 +35,17 @@ public class UnarmedCommand extends SkillCommand {
 
     @Override
     protected void dataCalculations() {
-		DecimalFormat df = new DecimalFormat("#.0");
-        berserkLength = String.valueOf(2 + ((int) skillValue / abilityLengthIncreaseLevel));
+        DecimalFormat df = new DecimalFormat("#.0");
+        berserkLength = String.valueOf(2 + ((double) skillValue / (double) abilityLengthIncreaseLevel));
 
         if(skillValue >= disarmMaxLevel) disarmChance = df.format(disarmChanceMax);
-		else disarmChance = df.format((disarmChanceMax / disarmMaxLevel) * skillValue);
+        else disarmChance = df.format(((double) disarmChanceMax / (double) disarmMaxLevel) * (double) skillValue);
         
         if(skillValue >= deflectMaxLevel) deflectChance = df.format(deflectChanceMax);
-        else deflectChance = df.format((deflectChanceMax / deflectMaxLevel) * skillValue);
+        else deflectChance = df.format(((double) deflectChanceMax / (double) deflectMaxLevel) * (double) skillValue);
 
         if (skillValue >= 250) ironArmBonus = String.valueOf(ironArmMaxBonus);
-        else ironArmBonus = String.valueOf(3 + ((int) skillValue / ironArmIncreaseLevel));
+        else ironArmBonus = String.valueOf(3 + ((double) skillValue / (double) ironArmIncreaseLevel));
     }
 
     @Override

+ 10 - 10
src/main/java/com/gmail/nossr50/commands/skills/WoodcuttingCommand.java

@@ -11,15 +11,15 @@ import com.gmail.nossr50.datatypes.SkillType;
 import com.gmail.nossr50.locale.LocaleLoader;
 
 public class WoodcuttingCommand extends SkillCommand {
-	AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+    AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
     private String treeFellerLength;
     private String doubleDropChance;
 
-	private int abilityLengthIncreaseLevel = advancedConfig.getAbilityLength();
-	private double doubleDropsMaxBonus = advancedConfig.getWoodcuttingDoubleDropChance();
-	private int doubleDropsMaxLevel = advancedConfig.getWoodcuttingDoubleDropMaxLevel();
-	private int leafBlowUnlock = advancedConfig.getLeafBlowUnlockLevel();
-	
+    private int abilityLengthIncreaseLevel = advancedConfig.getAbilityLength();
+    private double doubleDropsMaxBonus = advancedConfig.getWoodcuttingDoubleDropChance();
+    private int doubleDropsMaxLevel = advancedConfig.getWoodcuttingDoubleDropMaxLevel();
+    private int leafBlowUnlock = advancedConfig.getLeafBlowUnlockLevel();
+    
     private boolean canTreeFell;
     private boolean canLeafBlow;
     private boolean canDoubleDrop;
@@ -31,11 +31,11 @@ public class WoodcuttingCommand extends SkillCommand {
 
     @Override
     protected void dataCalculations() {
-    	DecimalFormat df = new DecimalFormat("0.0");
+        DecimalFormat df = new DecimalFormat("0.0");
 
-        treeFellerLength = String.valueOf(2 + ((int) skillValue / abilityLengthIncreaseLevel));
-    	if(skillValue >= doubleDropsMaxLevel) doubleDropChance = df.format(doubleDropsMaxBonus);
-    	else doubleDropChance = df.format((doubleDropsMaxBonus / doubleDropsMaxLevel) * skillValue);
+        treeFellerLength = String.valueOf(2 + ((double) skillValue / (double) abilityLengthIncreaseLevel));
+        if(skillValue >= doubleDropsMaxLevel) doubleDropChance = df.format(doubleDropsMaxBonus);
+        else doubleDropChance = df.format(((double) doubleDropsMaxBonus / (double) doubleDropsMaxLevel) * (double) skillValue);
     }
 
     @Override

+ 81 - 81
src/main/java/com/gmail/nossr50/config/AdvancedConfig.java

@@ -14,56 +14,56 @@ public class AdvancedConfig extends ConfigLoader {
         return instance;
     }
     
-	@Override
-	protected void loadKeys() {
-		// TODO Do I need to use this?
-	}
-	/* GENERAL */
-	public int getAbilityLength() { return config.getInt("Skills.General.Ability_IncreaseLevel", 50); }
-	
+    @Override
+    protected void loadKeys() {
+        // TODO Do I need to use this?
+    }
+    /* GENERAL */
+    public int getAbilityLength() { return config.getInt("Skills.General.Ability_IncreaseLevel", 50); }
+    
     /* ACROBATICS */
-	public int getDodgeChanceMax() { return config.getInt("Skills.Acrobatics.Dodge_ChanceMax", 20); }
-	public int getDodgeMaxBonusLevel() { return config.getInt("Skills.Acrobatics.Dodge_MaxBonusLevel", 800); }
-	
-	public int getRollChanceMax() { return config.getInt("Skills.Acrobatics.Roll_ChanceMax", 100); }
-	public int getRollMaxBonusLevel() { return config.getInt("Skills.Acrobatics.Roll_MaxBonusLevel", 1000); }
-	
-	public int getGracefulRollChanceMax() { return config.getInt("Skills.Acrobatics.GracefulRoll_ChanceMax", 100); }
-	public int getGracefulRollMaxBonusLevel() { return config.getInt("Skills.Acrobatics.GracefulRoll_MaxBonusLevel", 500); }
+    public int getDodgeChanceMax() { return config.getInt("Skills.Acrobatics.Dodge_ChanceMax", 20); }
+    public int getDodgeMaxBonusLevel() { return config.getInt("Skills.Acrobatics.Dodge_MaxBonusLevel", 800); }
+    
+    public int getRollChanceMax() { return config.getInt("Skills.Acrobatics.Roll_ChanceMax", 100); }
+    public int getRollMaxBonusLevel() { return config.getInt("Skills.Acrobatics.Roll_MaxBonusLevel", 1000); }
+    
+    public int getGracefulRollChanceMax() { return config.getInt("Skills.Acrobatics.GracefulRoll_ChanceMax", 100); }
+    public int getGracefulRollMaxBonusLevel() { return config.getInt("Skills.Acrobatics.GracefulRoll_MaxBonusLevel", 500); }
 
-	public int getDodgeXPModifier() { return config.getInt("Skills.Acrobatics.Dodge_XP_Modifier", 120); }
-	public int getRollXPModifier() { return config.getInt("Skills.Acrobatics.Roll_XP_Modifier", 80); }
-	public int getFallXPModifier() { return config.getInt("Skills.Acrobatics.Fall_XP_Modifier", 120); }
-	
+    public int getDodgeXPModifier() { return config.getInt("Skills.Acrobatics.Dodge_XP_Modifier", 120); }
+    public int getRollXPModifier() { return config.getInt("Skills.Acrobatics.Roll_XP_Modifier", 80); }
+    public int getFallXPModifier() { return config.getInt("Skills.Acrobatics.Fall_XP_Modifier", 120); }
+    
     /* ARCHERY */
-	public int getSkillShotIncreaseLevel() { return config.getInt("Skills.Archery.SkillShot_IncreaseLevel", 50); }
-	public double getSkillShotIncreasePercentage() { return config.getDouble("Skills.Archery.SkillShot_IncreasePercentage", 0.1D); }
-	public double getSkillShotBonusMax() { return config.getDouble("Skills.Archery.SkillShot_MaxBonus", 2.0D); }
+    public int getSkillShotIncreaseLevel() { return config.getInt("Skills.Archery.SkillShot_IncreaseLevel", 50); }
+    public double getSkillShotIncreasePercentage() { return config.getDouble("Skills.Archery.SkillShot_IncreasePercentage", 0.1D); }
+    public double getSkillShotBonusMax() { return config.getDouble("Skills.Archery.SkillShot_MaxBonus", 2.0D); }
 
-	public int getDazeBonusMax() { return config.getInt("Skills.Archery.Daze_MaxChance", 50); }
-	public int getDazeMaxBonusLevel() { return config.getInt("Skills.Archery.Daze_MaxBonusLevel", 1000); }
-	public int getDazeModifier() { return config.getInt("Skills.Archery.Daze_BonusDamage", 4); }
+    public int getDazeBonusMax() { return config.getInt("Skills.Archery.Daze_MaxChance", 50); }
+    public int getDazeMaxBonusLevel() { return config.getInt("Skills.Archery.Daze_MaxBonusLevel", 1000); }
+    public int getDazeModifier() { return config.getInt("Skills.Archery.Daze_BonusDamage", 4); }
 
-	public int getRetrieveBonusMax() { return config.getInt("Skills.Archery.Retrieve_MaxBonus", 100); }
-	public int getRetrieveMaxBonusLevel() { return config.getInt("Skills.Archery.Retrieve_MaxBonusLevel", 1000); }
-	
+    public int getRetrieveBonusMax() { return config.getInt("Skills.Archery.Retrieve_MaxBonus", 100); }
+    public int getRetrieveMaxBonusLevel() { return config.getInt("Skills.Archery.Retrieve_MaxBonusLevel", 1000); }
+    
     /* AXES */
-	public int getBonusDamageAxesBonusMax() { return config.getInt("Skills.Axes.DamageIncrease_MaxBonus", 4); }
-	public int getBonusDamageAxesMaxBonusLevel() { return config.getInt("Skills.Axes.DamageIncrease_MaxBonusLevel", 200); }
+    public int getBonusDamageAxesBonusMax() { return config.getInt("Skills.Axes.DamageIncrease_MaxBonus", 4); }
+    public int getBonusDamageAxesMaxBonusLevel() { return config.getInt("Skills.Axes.DamageIncrease_MaxBonusLevel", 200); }
 
-	public double getAxesCriticalChance() { return config.getDouble("Skills.Axes.AxesCritical_MaxChance", 37.50); }
-	public int getAxesCriticalMaxBonusLevel() { return config.getInt("Skills.Axes.AxesCritical_MaxBonusLevel", 750); }
-	public double getAxesCriticalPVPModifier() { return config.getDouble("Skills.Axes.AxesCritical_PVP_Modifier", 1.5); }
-	public int getAxesCriticalPVEModifier() { return config.getInt("Skills.Axes.AxesCritical_PVE_Modifier", 2); }
-	
-	public int getGreaterImpactChance() { return config.getInt("Skills.Axes.GreaterImpact_Chance", 25); }
-	public int getGreaterImpactIncreaseLevel() { return config.getInt("Skills.Axes.GreaterImpact_IncreaseLevel", 50); }
-	public double getGreaterImpactModifier() { return config.getDouble("Skills.Axes.GreaterImpact_KnockbackModifier", 1.5); }
-	public int getGreaterImpactBonusDamage() { return config.getInt("Skills.Axes.GreaterImpact_BonusDamage", 2); }
-	
+    public double getAxesCriticalChance() { return config.getDouble("Skills.Axes.AxesCritical_MaxChance", 37.50); }
+    public int getAxesCriticalMaxBonusLevel() { return config.getInt("Skills.Axes.AxesCritical_MaxBonusLevel", 750); }
+    public double getAxesCriticalPVPModifier() { return config.getDouble("Skills.Axes.AxesCritical_PVP_Modifier", 1.5); }
+    public int getAxesCriticalPVEModifier() { return config.getInt("Skills.Axes.AxesCritical_PVE_Modifier", 2); }
+    
+    public int getGreaterImpactChance() { return config.getInt("Skills.Axes.GreaterImpact_Chance", 25); }
+    public int getGreaterImpactIncreaseLevel() { return config.getInt("Skills.Axes.GreaterImpact_IncreaseLevel", 50); }
+    public double getGreaterImpactModifier() { return config.getDouble("Skills.Axes.GreaterImpact_KnockbackModifier", 1.5); }
+    public int getGreaterImpactBonusDamage() { return config.getInt("Skills.Axes.GreaterImpact_BonusDamage", 2); }
+    
     /* EXCAVATION */
-	//Nothing to configure, everything is already configurable in config.yml
-	
+    //Nothing to configure, everything is already configurable in config.yml
+    
     /* FISHING */
     public int getShakeUnlockLevel() { return config.getInt("Skills.Fishing.Shake_UnlockLevel", 150); }
     public int getFishingEnchantmentChance() { return config.getInt("Skills.Fishing.Enchantment_Chance", 10); }
@@ -97,56 +97,56 @@ public class AdvancedConfig extends ConfigLoader {
     public int getSuperRepairMaxLevel() { return config.getInt("Skills.Repair.SuperRepair_MaxBonusLevel", 1000); }
     
     /* SWORDS */
-	public int getBleedChanceMax() { return config.getInt("Skills.Sword.Bleed_ChanceMax", 75); }
-	public int getBleedMaxBonusLevel() { return config.getInt("Skills.Sword.Bleed_MaxBonusLevel", 750); }
-	public int getBleedMaxTicks() { return config.getInt("Skills.Sword.Bleed_MaxTicks", 3); }
-	public int getBleedBaseTicks() { return config.getInt("Skills.Sword.Bleed_BaseTicks", 2); }
+    public int getBleedChanceMax() { return config.getInt("Skills.Sword.Bleed_ChanceMax", 75); }
+    public int getBleedMaxBonusLevel() { return config.getInt("Skills.Sword.Bleed_MaxBonusLevel", 750); }
+    public int getBleedMaxTicks() { return config.getInt("Skills.Sword.Bleed_MaxTicks", 3); }
+    public int getBleedBaseTicks() { return config.getInt("Skills.Sword.Bleed_BaseTicks", 2); }
 
     public int getCounterChanceMax() { return config.getInt("Skills.Sword.Counter_ChanceMax", 30); }
-	public int getCounterMaxBonusLevel() { return config.getInt("Skills.Sword.Counter_MaxBonusLevel", 600); }
-	public int getCounterModifier() { return config.getInt("Skills.Sword.Counter_DamageModifier", 2); }
-	
-	public int getSerratedStrikesModifier() { return config.getInt("Skills.Sword.SerratedStrikes_DamageModifier", 4); }
-	public int getSerratedStrikesTicks() { return config.getInt("Skills.Sword.SerratedStrikes_BleedTicks", 5); }
+    public int getCounterMaxBonusLevel() { return config.getInt("Skills.Sword.Counter_MaxBonusLevel", 600); }
+    public int getCounterModifier() { return config.getInt("Skills.Sword.Counter_DamageModifier", 2); }
+    
+    public int getSerratedStrikesModifier() { return config.getInt("Skills.Sword.SerratedStrikes_DamageModifier", 4); }
+    public int getSerratedStrikesTicks() { return config.getInt("Skills.Sword.SerratedStrikes_BleedTicks", 5); }
     /* TAMING */
-	public int getGoreChanceMax() { return config.getInt("Skills.Taming.Gore_ChanceMax", 100); }
-	public int getGoreMaxBonusLevel() { return config.getInt("Skills.Taming.Gore_MaxBonusLevel", 1000); }
-	public int getGoreBleedTicks() { return config.getInt("Skills.Taming.Gore_BleedTicks", 2); }
-	public int getGoreModifier() { return config.getInt("Skills.Taming.Gore_Modifier", 2); }
+    public int getGoreChanceMax() { return config.getInt("Skills.Taming.Gore_ChanceMax", 100); }
+    public int getGoreMaxBonusLevel() { return config.getInt("Skills.Taming.Gore_MaxBonusLevel", 1000); }
+    public int getGoreBleedTicks() { return config.getInt("Skills.Taming.Gore_BleedTicks", 2); }
+    public int getGoreModifier() { return config.getInt("Skills.Taming.Gore_Modifier", 2); }
 
-	public int getFastFoodUnlock() { return config.getInt("Skills.Taming.FastFood_UnlockLevel", 50); }
-	public int getFastFoodChance() { return config.getInt("Skills.Taming.FastFood_Chance", 50); }
-	
-	public int getEnviromentallyAwareUnlock() { return config.getInt("Skills.Taming.EnvironmentallyAware_UnlockLevel", 100); }
+    public int getFastFoodUnlock() { return config.getInt("Skills.Taming.FastFood_UnlockLevel", 50); }
+    public int getFastFoodChance() { return config.getInt("Skills.Taming.FastFood_Chance", 50); }
+    
+    public int getEnviromentallyAwareUnlock() { return config.getInt("Skills.Taming.EnvironmentallyAware_UnlockLevel", 100); }
 
-	public int getThickFurUnlock() { return config.getInt("Skills.Taming.ThickFur_UnlockLevel", 250); }
-	public int getThickFurModifier() { return config.getInt("Skills.Taming.ThickFur_Modifier", 2); }
-	
-	public int getShockProofUnlock() { return config.getInt("Skills.Taming.ShockProof_UnlockLevel", 500); }
-	public int getShockProofModifier() { return config.getInt("Skills.Taming.ShockProof_Modifier", 6); }
+    public int getThickFurUnlock() { return config.getInt("Skills.Taming.ThickFur_UnlockLevel", 250); }
+    public int getThickFurModifier() { return config.getInt("Skills.Taming.ThickFur_Modifier", 2); }
+    
+    public int getShockProofUnlock() { return config.getInt("Skills.Taming.ShockProof_UnlockLevel", 500); }
+    public int getShockProofModifier() { return config.getInt("Skills.Taming.ShockProof_Modifier", 6); }
 
-	public int getSharpenedClawsUnlock() { return config.getInt("Skills.Taming.SharpenedClaws_UnlockLevel", 750); }
-	public int getSharpenedClawsBonus() { return config.getInt("Skills.Taming.SharpenedClaws_Bonus", 2); }
+    public int getSharpenedClawsUnlock() { return config.getInt("Skills.Taming.SharpenedClaws_UnlockLevel", 750); }
+    public int getSharpenedClawsBonus() { return config.getInt("Skills.Taming.SharpenedClaws_Bonus", 2); }
     /* UNARMED */
-	public int getDisarmChanceMax() { return config.getInt("Skills.Unarmed.Disarm_ChanceMax", 33); }
-	public int getDisarmMaxBonusLevel() { return config.getInt("Skills.Unarmed.Disarm_MaxBonusLevel", 1000); }
-	public int getDeflectChanceMax() { return config.getInt("Skills.Unarmed.Deflect_ChanceMax", 50); }
-	public int getDeflectMaxBonusLevel() { return config.getInt("Skills.Unarmed.Deflect_MaxBonusLevel", 1000); }
-	public int getIronGripChanceMax() { return config.getInt("Skills.Unarmed.IronGrip_ChanceMax", 100); }
-	public int getIronGripMaxBonusLevel() { return config.getInt("Skills.Unarmed.IronGrip_MaxBonusLevel", 1000); }
-	public int getIronArmBonus() { return config.getInt("Skills.Unarmed.IronArm_Bonus", 8); }
-	public int getIronArmIncreaseLevel() { return config.getInt("Skills.Unarmed.IronArm_IncreaseLevel", 50); }
+    public int getDisarmChanceMax() { return config.getInt("Skills.Unarmed.Disarm_ChanceMax", 33); }
+    public int getDisarmMaxBonusLevel() { return config.getInt("Skills.Unarmed.Disarm_MaxBonusLevel", 1000); }
+    public int getDeflectChanceMax() { return config.getInt("Skills.Unarmed.Deflect_ChanceMax", 50); }
+    public int getDeflectMaxBonusLevel() { return config.getInt("Skills.Unarmed.Deflect_MaxBonusLevel", 1000); }
+    public int getIronGripChanceMax() { return config.getInt("Skills.Unarmed.IronGrip_ChanceMax", 100); }
+    public int getIronGripMaxBonusLevel() { return config.getInt("Skills.Unarmed.IronGrip_MaxBonusLevel", 1000); }
+    public int getIronArmBonus() { return config.getInt("Skills.Unarmed.IronArm_Bonus", 8); }
+    public int getIronArmIncreaseLevel() { return config.getInt("Skills.Unarmed.IronArm_IncreaseLevel", 50); }
     /* WOODCUTTING */
     public int getLeafBlowUnlockLevel() { return config.getInt("Skills.Woodcutting.LeafBlower_UnlockLevel", 100); }
     public int getWoodcuttingDoubleDropChance() { return config.getInt("Skills.Woodcutting.DoubleDrops_ChanceMax", 100); }
     public int getWoodcuttingDoubleDropMaxLevel() { return config.getInt("Skills.Woodcutting.DoubleDrops_MaxBonusLevel", 1000); }
     
     /* SPOUT STUFF*/
-	public int getSpoutNotificationTier1() { return config.getInt("Spout.Notifications.Tier1", 200); }
-	public int getSpoutNotificationTier2() { return config.getInt("Spout.Notifications.Tier2", 400); }
-	public int getSpoutNotificationTier3() { return config.getInt("Spout.Notifications.Tier3", 600); }
-	public int getSpoutNotificationTier4() { return config.getInt("Spout.Notifications.Tier4", 800); }
-	//TODO Make the sounds configurable! :D
-//	public String getSpoutSoundRepair() { return config.getString("Spout.Sounds.RepairSound", "url here"); }
-//	public String getSpoutSoundLevelUp() { return config.getString("Spout.Sounds.LevelUp", "url here"); }
+    public int getSpoutNotificationTier1() { return config.getInt("Spout.Notifications.Tier1", 200); }
+    public int getSpoutNotificationTier2() { return config.getInt("Spout.Notifications.Tier2", 400); }
+    public int getSpoutNotificationTier3() { return config.getInt("Spout.Notifications.Tier3", 600); }
+    public int getSpoutNotificationTier4() { return config.getInt("Spout.Notifications.Tier4", 800); }
+    //TODO Make the sounds configurable! :D
+//    public String getSpoutSoundRepair() { return config.getString("Spout.Sounds.RepairSound", "url here"); }
+//    public String getSpoutSoundLevelUp() { return config.getString("Spout.Sounds.LevelUp", "url here"); }
 }

+ 1 - 1
src/main/java/com/gmail/nossr50/skills/acrobatics/Acrobatics.java

@@ -5,7 +5,7 @@ import java.util.Random;
 import com.gmail.nossr50.config.AdvancedConfig;
 
 public class Acrobatics {
-	static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+    static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
     public static final int DODGE_MAX_BONUS_LEVEL = advancedConfig.getDodgeMaxBonusLevel();
     public static final int DODGE_XP_MODIFIER = advancedConfig.getDodgeXPModifier();
 

+ 1 - 1
src/main/java/com/gmail/nossr50/skills/archery/Archery.java

@@ -13,7 +13,7 @@ import com.gmail.nossr50.config.AdvancedConfig;
 import com.gmail.nossr50.util.Misc;
 
 public class Archery {
-	static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+    static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
     private static Random random = new Random();
     private static List<TrackedEntity> trackedEntities = new ArrayList<TrackedEntity>();
 

+ 11 - 11
src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java

@@ -11,18 +11,18 @@ import com.gmail.nossr50.util.Permissions;
 import com.gmail.nossr50.util.Users;
 
 public class ArcheryManager {
-	AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
-	
+    AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+    
     private Player player;
     private PlayerProfile profile;
     private int skillLevel;
     private Permissions permissionsInstance;
 
-	private float dazeBonusMax = advancedConfig.getDazeBonusMax();
-	private float dazeMaxBonusLevel = advancedConfig.getDazeMaxBonusLevel();
-	private float retrieveBonusMax = advancedConfig.getRetrieveBonusMax();
-	private float retrieveMaxBonusLevel = advancedConfig.getRetrieveMaxBonusLevel();
-	
+    private float dazeBonusMax = advancedConfig.getDazeBonusMax();
+    private float dazeMaxBonusLevel = advancedConfig.getDazeMaxBonusLevel();
+    private float retrieveBonusMax = advancedConfig.getRetrieveBonusMax();
+    private float retrieveMaxBonusLevel = advancedConfig.getRetrieveMaxBonusLevel();
+    
     public ArcheryManager (Player player) {
         this.player = player;
         this.profile = Users.getProfile(player);
@@ -57,7 +57,7 @@ public class ArcheryManager {
         if (player.hasPermission("mcmmo.perks.lucky.archery")) {
             randomChance = (int) (randomChance * 0.75);
         }
-        final float chance = (retrieveBonusMax / retrieveMaxBonusLevel) * skillLevel;
+        final float chance = (float) (((double) retrieveBonusMax / (double) retrieveMaxBonusLevel) * (double) skillLevel);
         if (chance > Archery.getRandom().nextInt(randomChance)) {
             eventHandler.addToTracker();
         }
@@ -88,10 +88,10 @@ public class ArcheryManager {
             randomChance = (int) (randomChance * 0.75);
         }
         
-        final float chance = (dazeBonusMax / dazeMaxBonusLevel) * skillLevel;
+        final float chance = (float) (((double) dazeBonusMax / (double) dazeMaxBonusLevel) * (double) skillLevel);
         if (chance > Archery.getRandom().nextInt(randomChance)) {
-        	eventHandler.handleDazeEffect();
-        	eventHandler.sendAbilityMessages();
+            eventHandler.handleDazeEffect();
+            eventHandler.sendAbilityMessages();
         }
     }
 

+ 5 - 5
src/main/java/com/gmail/nossr50/skills/combat/Axes.java

@@ -21,7 +21,7 @@ import com.gmail.nossr50.util.Permissions;
 import com.gmail.nossr50.util.Users;
 
 public class Axes {
-	static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+    static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
 
     private static Random random = new Random();
 
@@ -40,7 +40,7 @@ public class Axes {
         final int INCREASE_LEVEL = MAX_LEVEL / MAX_BONUS;
 
         /* Add 1 DMG for every 50 skill levels */
-        int bonus = Users.getProfile(attacker).getSkillLevel(SkillType.AXES) / INCREASE_LEVEL;
+        int bonus = (int) ((double) Users.getProfile(attacker).getSkillLevel(SkillType.AXES) / (double) INCREASE_LEVEL);
 
         if (bonus > MAX_BONUS) {
             bonus = MAX_BONUS;
@@ -87,7 +87,7 @@ public class Axes {
         int skillCheck = Misc.skillCheck(skillLevel, MAX_BONUS_LEVEL);
 
         int randomChance = 100;
-        double chance = (MAX_CHANCE / MAX_BONUS_LEVEL) * skillCheck;
+        double chance = ((double) MAX_CHANCE / (double) MAX_BONUS_LEVEL) * (double) skillCheck;
 
         if (attacker.hasPermission("mcmmo.perks.lucky.axes")) {
             randomChance = (int) (randomChance * 0.75);
@@ -130,7 +130,7 @@ public class Axes {
 
             /* Every 30 Skill Levels you gain 1 durability damage */
             int impactIncreaseLevel = advancedConfig.getGreaterImpactIncreaseLevel();
-            durabilityDamage += Users.getProfile(attacker).getSkillLevel(SkillType.AXES)/impactIncreaseLevel;
+            durabilityDamage += (int) ((double) Users.getProfile(attacker).getSkillLevel(SkillType.AXES) / (double) impactIncreaseLevel);
 
             if (!hasArmor(targetPlayer)) {
                 applyGreaterImpact(attacker, target, event);
@@ -158,7 +158,7 @@ public class Axes {
     private static void applyGreaterImpact(Player attacker, LivingEntity target, EntityDamageByEntityEvent event) {
         if(attacker == null)
             return;
-    	
+        
         final int GREATER_IMPACT_CHANCE = advancedConfig.getGreaterImpactChance();
         final double GREATER_IMPACT_MULTIPLIER = advancedConfig.getGreaterImpactModifier();
         final int GREATER_IMPACT_DAMAGE = advancedConfig.getGreaterImpactBonusDamage();

+ 9 - 9
src/main/java/com/gmail/nossr50/skills/gathering/BlastMining.java

@@ -28,18 +28,18 @@ import com.gmail.nossr50.util.Skills;
 import com.gmail.nossr50.util.Users;
 
 public class BlastMining {
-	static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+    static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
 
     private static Random random = new Random();
     
-	private static int blastMiningRank1 = advancedConfig.getBlastMiningRank1();
-	private static int blastMiningRank2 = advancedConfig.getBlastMiningRank2();
-	private static int blastMiningRank3 = advancedConfig.getBlastMiningRank3();
-	private static int blastMiningRank4 = advancedConfig.getBlastMiningRank4();
-	private static int blastMiningRank5 = advancedConfig.getBlastMiningRank5();
-	private static int blastMiningRank6 = advancedConfig.getBlastMiningRank6();
-	private static int blastMiningRank7 = advancedConfig.getBlastMiningRank7();
-	private static int blastMiningRank8 = advancedConfig.getBlastMiningRank8();
+    private static int blastMiningRank1 = advancedConfig.getBlastMiningRank1();
+    private static int blastMiningRank2 = advancedConfig.getBlastMiningRank2();
+    private static int blastMiningRank3 = advancedConfig.getBlastMiningRank3();
+    private static int blastMiningRank4 = advancedConfig.getBlastMiningRank4();
+    private static int blastMiningRank5 = advancedConfig.getBlastMiningRank5();
+    private static int blastMiningRank6 = advancedConfig.getBlastMiningRank6();
+    private static int blastMiningRank7 = advancedConfig.getBlastMiningRank7();
+    private static int blastMiningRank8 = advancedConfig.getBlastMiningRank8();
     /**
      * Handler for what blocks drop from the explosion.
      *

+ 3 - 3
src/main/java/com/gmail/nossr50/skills/gathering/Mining.java

@@ -27,7 +27,7 @@ import com.gmail.nossr50.util.Users;
 
 public class Mining {
     private static Random random = new Random();
-	static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+    static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
 
     /**
      * Handle double drops when using Silk Touch.
@@ -323,13 +323,13 @@ public class Mining {
         miningXP(player, block);
 
         final int MAX_BONUS_LEVEL = advancedConfig.getMiningDoubleDropMaxLevel();
-        int	MAX_CHANCE = advancedConfig.getMiningDoubleDropChance();
+        int    MAX_CHANCE = advancedConfig.getMiningDoubleDropChance();
         
         int skillLevel = Users.getProfile(player).getSkillLevel(SkillType.MINING);
         int skillCheck = Misc.skillCheck(skillLevel, MAX_BONUS_LEVEL);
 
         int randomChance = 100;
-        int chance = (MAX_CHANCE / MAX_BONUS_LEVEL) * skillLevel;
+        int chance = (int) (((double) MAX_CHANCE / (double) MAX_BONUS_LEVEL) * (double) skillLevel);
 
         if (player.hasPermission("mcmmo.perks.lucky.mining")) {
             randomChance = (int) (randomChance * 0.75);

+ 3 - 3
src/main/java/com/gmail/nossr50/skills/gathering/WoodCutting.java

@@ -32,7 +32,7 @@ import com.gmail.nossr50.util.Users;
 
 public class WoodCutting {
 
-	static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+    static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
     private static Random random = new Random();
 
     /**
@@ -330,7 +330,7 @@ public class WoodCutting {
      */
     private static void woodCuttingProcCheck(Player player, Block block) {
 
-    	final int MAX_CHANCE = advancedConfig.getMiningDoubleDropChance();
+        final int MAX_CHANCE = advancedConfig.getMiningDoubleDropChance();
         final int MAX_BONUS_LEVEL = advancedConfig.getMiningDoubleDropMaxLevel();
 
         int skillLevel = Users.getProfile(player).getSkillLevel(SkillType.WOODCUTTING);
@@ -345,7 +345,7 @@ public class WoodCutting {
         Material mat = Material.getMaterial(block.getTypeId());
 
         int randomChance = 100;
-        int chance = (MAX_CHANCE / MAX_BONUS_LEVEL) * skillLevel;
+        int chance = (int) (((double) MAX_CHANCE / (double) MAX_BONUS_LEVEL) * (double) skillLevel);
 
         if (player.hasPermission("mcmmo.perks.lucky.woodcutting")) {
             randomChance = (int) (randomChance * 0.75);

+ 17 - 13
src/main/java/com/gmail/nossr50/skills/repair/Repair.java

@@ -28,12 +28,12 @@ public class Repair {
     private static Config configInstance = Config.getInstance();
     private static Permissions permInstance = Permissions.getInstance();
 
-	static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+    static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
 
-	private static int repairMasteryChanceMax = advancedConfig.getRepairMasteryChanceMax();
-	private static int repairMasteryMaxBonusLevel = advancedConfig.getRepairMasteryMaxLevel();
-	private static int superRepairChanceMax = advancedConfig.getSuperRepairChanceMax();
-	private static int superRepairMaxBonusLevel = advancedConfig.getSuperRepairMaxLevel();
+    private static int repairMasteryChanceMax = advancedConfig.getRepairMasteryChanceMax();
+    private static int repairMasteryMaxBonusLevel = advancedConfig.getRepairMasteryMaxLevel();
+    private static int superRepairChanceMax = advancedConfig.getSuperRepairChanceMax();
+    private static int superRepairMaxBonusLevel = advancedConfig.getSuperRepairMaxLevel();
 
     /**
      * Handle the XP gain for repair events.
@@ -91,6 +91,10 @@ public class Repair {
      * @param is Item being repaired
      */
     protected static void addEnchants(Player player, ItemStack is) {
+        if(permInstance.arcaneBypass(player)) {
+            player.sendMessage(LocaleLoader.getString("Repair.Arcane.Perfect"));
+            return;
+        }
         Map<Enchantment, Integer> enchants = is.getEnchantments();
 
         if (enchants.size() == 0) {
@@ -122,7 +126,7 @@ public class Repair {
                 int enchantLevel = enchant.getValue();
 
                 if (configInstance.getArcaneForgingDowngradeEnabled() && enchantLevel > 1) {
-                    if (random.nextInt(100) < getDowngradeChance(rank)) {
+                    if (random.nextInt(randomChance) < getDowngradeChance(rank)) {
                         is.addEnchantment(enchantment, --enchantLevel);
                         downgraded = true;
                     }
@@ -207,9 +211,9 @@ public class Repair {
      */
     protected static short repairCalculate(Player player, int skillLevel, short durability, int repairAmount) {
 //        float bonus = (float) skillLevel / 500;
-    	float bonus;
-		if(skillLevel >= repairMasteryMaxBonusLevel) bonus = repairMasteryChanceMax;
-		else bonus = (repairMasteryChanceMax / repairMasteryMaxBonusLevel) * skillLevel;
+        float bonus;
+        if(skillLevel >= repairMasteryMaxBonusLevel) bonus = repairMasteryChanceMax;
+        else bonus = ((float) skillLevel / (float) repairMasteryMaxBonusLevel) * (float) repairMasteryChanceMax;
 
         if (permInstance.repairMastery(player)) {
             bonus = (repairAmount * bonus);
@@ -236,20 +240,20 @@ public class Repair {
      * @return true if bonus granted, false otherwise
      */
     public static boolean checkPlayerProcRepair(Player player) {
-    	final int MAX_CHANCE = superRepairChanceMax;
+        final int MAX_CHANCE = superRepairChanceMax;
         final int MAX_BONUS_LEVEL = superRepairMaxBonusLevel;
 
         int skillLevel = Users.getProfile(player).getSkillLevel(SkillType.REPAIR);
 
         int randomChance = 100;
-        int chance = (MAX_CHANCE / MAX_BONUS_LEVEL) * skillLevel;
+        int chance = (int) (((double) MAX_CHANCE / (double) MAX_BONUS_LEVEL) * (double) skillLevel);
         if (skillLevel >= MAX_BONUS_LEVEL) chance = MAX_CHANCE;
 
         if (player.hasPermission("mcmmo.perks.lucky.repair")) randomChance = (int) (randomChance * 0.75);
         
         if (chance > random.nextInt(randomChance) && permInstance.repairBonus(player)){
-        	player.sendMessage(LocaleLoader.getString("Repair.Skills.FeltEasy"));
-        	return true;
+            player.sendMessage(LocaleLoader.getString("Repair.Skills.FeltEasy"));
+            return true;
         }
         return false;
     }

+ 2 - 2
src/main/java/com/gmail/nossr50/skills/swords/Swords.java

@@ -5,8 +5,8 @@ import java.util.Random;
 import com.gmail.nossr50.config.AdvancedConfig;
 
 public class Swords {
-	static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
-	
+    static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+    
     public static final int BLEED_MAX_BONUS_LEVEL = advancedConfig.getBleedMaxBonusLevel();
     public static final int MAX_BLEED_TICKS = advancedConfig.getBleedMaxTicks();
     public static final int BASE_BLEED_TICKS = advancedConfig.getBleedBaseTicks();

+ 2 - 2
src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java

@@ -50,7 +50,7 @@ public class SwordsManager {
                 randomChance = (int) (randomChance * 0.75);
             }
 
-            final float chance = (bleedChanceMax / bleedMaxLevel) * skillLevel;
+            final float chance = (float) (((double) bleedChanceMax / (double) bleedMaxLevel) * (double) skillLevel);
             if (chance > Swords.getRandom().nextInt(randomChance)) {
                 eventHandler.addBleedTicks();
                 eventHandler.sendAbilityMessages();
@@ -81,7 +81,7 @@ public class SwordsManager {
                 randomChance = (int) (randomChance * 0.75);
             }
 
-            final float chance = (counterChanceMax / counterMaxLevel) * skillLevel;
+            final float chance = (float) (((double) counterChanceMax / (double) counterMaxLevel) * (double) skillLevel);
             if (chance > Swords.getRandom().nextInt(randomChance)) {
                 eventHandler.dealDamage();
                 eventHandler.sendAbilityMessages();

+ 2 - 2
src/main/java/com/gmail/nossr50/skills/taming/Taming.java

@@ -5,8 +5,8 @@ import java.util.Random;
 import com.gmail.nossr50.config.AdvancedConfig;
 
 public class Taming {
-	static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
-	
+    static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+    
     public static final int ENVIRONMENTALLY_AWARE_ACTIVATION_LEVEL = advancedConfig.getEnviromentallyAwareUnlock();
 
     public static final int FAST_FOOD_SERVICE_ACTIVATION_CHANCE = advancedConfig.getFastFoodChance();

+ 1 - 1
src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java

@@ -111,7 +111,7 @@ public class TamingManager {
             randomChance = (int) (randomChance * 0.75);
         }
 
-        final float chance = (goreChanceMax / goreMaxLevel) * skillLevel;
+        final float chance = (float) (((double) goreChanceMax / (double) goreMaxLevel) * (double) skillLevel);
         if (chance > Taming.getRandom().nextInt(randomChance)) {
             eventHandler.modifyEventDamage();
             eventHandler.applyBleed();

+ 2 - 2
src/main/java/com/gmail/nossr50/skills/unarmed/Unarmed.java

@@ -5,8 +5,8 @@ import java.util.Random;
 import com.gmail.nossr50.config.AdvancedConfig;
 
 public class Unarmed {
-	static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
-	
+    static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+    
     public static final int BONUS_DAMAGE_MAX_BONUS_MODIFIER = advancedConfig.getIronArmBonus();
     public static final int BONUS_DAMAGE_INCREASE_LEVEL = advancedConfig.getIronArmIncreaseLevel();
     public static final int DEFLECT_MAX_CHANCE = advancedConfig.getDisarmChanceMax() ;

+ 3 - 3
src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java

@@ -51,7 +51,7 @@ public class UnarmedManager {
                 randomChance = (int) (randomChance * 0.75);
             }
 
-            final float chance = (disarmChanceMax / disarmMaxLevel) * skillLevel;
+            final float chance = (float) (((double) disarmChanceMax / (double) disarmMaxLevel) * (double) skillLevel);
             if (chance > Unarmed.getRandom().nextInt(randomChance)) {
                 if (!hasIronGrip(defender)) {
                     eventHandler.sendAbilityMessage();
@@ -88,7 +88,7 @@ public class UnarmedManager {
             randomChance = (int) (randomChance * 0.75);
         }
         
-        final float chance = (deflectChanceMax / deflectMaxLevel) * skillLevel;
+        final float chance = (float) (((double) deflectChanceMax / (double) deflectMaxLevel) * (double) skillLevel);
         if (chance > Unarmed.getRandom().nextInt(randomChance)) {
             eventHandler.cancelEvent();
             eventHandler.sendAbilityMessage();
@@ -144,7 +144,7 @@ public class UnarmedManager {
             randomChance = (int) (randomChance * 0.75);
         }
         
-        final float chance = (ironGripChanceMax / ironGripMaxLevel) * skillLevel;
+        final float chance = (float) (((double) ironGripChanceMax / (double) ironGripMaxLevel) * (double) skillLevel);
         if (chance > Unarmed.getRandom().nextInt(randomChance)) {
             eventHandler.sendAbilityMessages();
             return true;