Pārlūkot izejas kodu

Merge pull request #327 from Glitchfinder/fixes

Additional fixes and patches.
Grant 12 gadi atpakaļ
vecāks
revīzija
8c5b22a8fb

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

@@ -43,7 +43,7 @@ public class AxesCommand extends SkillCommand {
         int skillCheck = Misc.skillCheck((int)skillValue, critMaxBonusLevel);
 
         impactDamage = String.valueOf(1 + ((double) skillValue / (double) greaterImpactIncreaseLevel));
-        skullSplitterLength = String.valueOf(2 + ((double) skillValue / (double) abilityLengthIncreaseLevel));
+        skullSplitterLength = String.valueOf(2 + (int) ((double) skillValue / (double) abilityLengthIncreaseLevel));
         greaterImpactDamage = "2";
 
         if (skillValue >= critMaxBonusLevel) critChance = df.format(critMaxChance);

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

@@ -22,7 +22,7 @@ public class ExcavationCommand extends SkillCommand {
 
     @Override
     protected void dataCalculations() {
-        gigaDrillBreakerLength = String.valueOf(2 + ((double) skillValue / (double) abilityLengthIncreaseLevel));
+        gigaDrillBreakerLength = String.valueOf(2 + (int) ((double) skillValue / (double) abilityLengthIncreaseLevel));
     }
 
     @Override

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

@@ -43,7 +43,7 @@ public class HerbalismCommand extends SkillCommand {
     @Override
     protected void dataCalculations() {
         DecimalFormat df = new DecimalFormat("#.0");
-        greenTerraLength = String.valueOf(2 + ((double) skillValue / (double) abilityLengthIncreaseLevel));
+        greenTerraLength = String.valueOf(2 + (int) ((double) skillValue / (double) abilityLengthIncreaseLevel));
         //FARMERS DIET
         if(skillValue >= farmersDietMaxLevel) farmersDietRank = "5";
         else farmersDietRank = String.valueOf((double) skillValue / (double) farmersDietRankChange);

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

@@ -46,7 +46,7 @@ public class MiningCommand extends SkillCommand {
     @Override
     protected void dataCalculations() {
         DecimalFormat df = new DecimalFormat("#.0");
-        superBreakerLength = String.valueOf(2 + ((double) skillValue / (double) abilityLengthIncreaseLevel));
+        superBreakerLength = String.valueOf(2 + (int) ((double) skillValue / (double) abilityLengthIncreaseLevel));
         if(skillValue >= doubleDropsMaxLevel) doubleDropChance = df.format(doubleDropsMaxBonus);
         else doubleDropChance = df.format(((double) doubleDropsMaxBonus / (double) doubleDropsMaxLevel) * (double) skillValue);
         

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

@@ -37,7 +37,7 @@ public class SwordsCommand extends SkillCommand {
     @Override
     protected void dataCalculations() {
         DecimalFormat df = new DecimalFormat("#.0");
-        serratedStrikesLength = String.valueOf(2 + ((double) skillValue / (double) abilityLengthIncreaseLevel));
+        serratedStrikesLength = String.valueOf(2 + (int) ((double) skillValue / (double) abilityLengthIncreaseLevel));
         
         if (skillValue >= bleedMaxLevel) bleedLength = String.valueOf(bleedMaxTicks);
         else bleedLength = String.valueOf(bleedBaseTicks);

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

@@ -36,7 +36,7 @@ public class UnarmedCommand extends SkillCommand {
     @Override
     protected void dataCalculations() {
         DecimalFormat df = new DecimalFormat("#.0");
-        berserkLength = String.valueOf(2 + ((double) skillValue / (double) abilityLengthIncreaseLevel));
+        berserkLength = String.valueOf(2 + (int) ((double) skillValue / (double) abilityLengthIncreaseLevel));
 
         if(skillValue >= disarmMaxLevel) disarmChance = df.format(disarmChanceMax);
         else disarmChance = df.format(((double) disarmChanceMax / (double) disarmMaxLevel) * (double) skillValue);

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

@@ -33,7 +33,7 @@ public class WoodcuttingCommand extends SkillCommand {
     protected void dataCalculations() {
         DecimalFormat df = new DecimalFormat("0.0");
 
-        treeFellerLength = String.valueOf(2 + ((double) skillValue / (double) abilityLengthIncreaseLevel));
+        treeFellerLength = String.valueOf(2 + (int) ((double) skillValue / (double) abilityLengthIncreaseLevel));
         if(skillValue >= doubleDropsMaxLevel) doubleDropChance = df.format(doubleDropsMaxBonus);
         else doubleDropChance = df.format(((double) doubleDropsMaxBonus / (double) doubleDropsMaxLevel) * (double) skillValue);
     }

+ 5 - 0
src/main/java/com/gmail/nossr50/datatypes/McMMOPlayer.java

@@ -119,6 +119,11 @@ public class McMMOPlayer {
      * @param newvalue The amount of XP to add
      */
     public void addXP(SkillType skillType, int newValue) {
+        if(player == null)
+            return;
+        else if(player.getGameMode() == null)
+            return;
+
         if (player.getGameMode().equals(GameMode.CREATIVE)) {
             return;
         }

+ 12 - 12
src/main/java/com/gmail/nossr50/listeners/BlockListener.java

@@ -63,17 +63,17 @@ public class BlockListener implements Listener {
         Block futureEmptyBlock = event.getBlock().getRelative(direction);
 
         for (Block b : blocks) {
-            if (mcMMO.placeStore.isTrue(b)) {
+            if (mcMMO.p.placeStore.isTrue(b)) {
                 b.getRelative(direction).setMetadata("pistonTrack", new FixedMetadataValue(plugin, true));
                 if (b.equals(futureEmptyBlock)) {
-                    mcMMO.placeStore.setFalse(b);
+                    mcMMO.p.placeStore.setFalse(b);
                 }
             }
         }
 
         for (Block b : blocks) {
             if (b.getRelative(direction).hasMetadata("pistonTrack")) {
-                mcMMO.placeStore.setTrue(b.getRelative(direction));
+                mcMMO.p.placeStore.setTrue(b.getRelative(direction));
                 b.getRelative(direction).removeMetadata("pistonTrack", plugin);
             }
         }
@@ -96,7 +96,7 @@ public class BlockListener implements Listener {
             Block fallenBlock = event.getBlock().getRelative(BlockFace.UP);
 
             if (fallenBlock.getType() == type) {
-                mcMMO.placeStore.setTrue(fallenBlock);
+                mcMMO.p.placeStore.setTrue(fallenBlock);
             }
         }
     }
@@ -139,7 +139,7 @@ public class BlockListener implements Listener {
                 }
                 else {
                     Block newLocation = block.getRelative(0, y + 1, 0);
-                    mcMMO.placeStore.setTrue(newLocation);
+                    mcMMO.p.placeStore.setTrue(newLocation);
                     break;
                 }
             }
@@ -148,7 +148,7 @@ public class BlockListener implements Listener {
         /* Check if the blocks placed should be monitored so they do not give out XP in the future */
         if (BlockChecks.shouldBeWatched(block)) {
             if (!((type == Material.SAND || type == Material.GRAVEL) && block.getRelative(BlockFace.DOWN).getType() == Material.AIR)) { //Don't wanna track sand that's gonna fall.
-                mcMMO.placeStore.setTrue(block);
+                mcMMO.p.placeStore.setTrue(block);
             }
         }
 
@@ -233,7 +233,7 @@ public class BlockListener implements Listener {
         }
 
         /* EXCAVATION */
-        else if (BlockChecks.canBeGigaDrillBroken(block) && permInstance.excavation(player) && !mcMMO.placeStore.isTrue(block)) {
+        else if (BlockChecks.canBeGigaDrillBroken(block) && permInstance.excavation(player) && !mcMMO.p.placeStore.isTrue(block)) {
             if (configInstance.getExcavationRequiresTool()) {
                 if (ItemChecks.isShovel(inHand)) {
                     Excavation.excavationProcCheck(block, player);
@@ -246,7 +246,7 @@ public class BlockListener implements Listener {
 
         //Remove metadata when broken
         if (BlockChecks.shouldBeWatched(block)) {
-            mcMMO.placeStore.setFalse(block);
+            mcMMO.p.placeStore.setFalse(block);
         }
 
         //Remove metadata from fallen sand/gravel
@@ -257,11 +257,11 @@ public class BlockListener implements Listener {
                 Block relative = block.getRelative(0, y, 0);
                 Material relativeType = relative.getType();
 
-                if ((relativeType == Material.SAND || relativeType == Material.GRAVEL) && mcMMO.placeStore.isTrue(relative)) {
-                    mcMMO.placeStore.setFalse(relative);
+                if ((relativeType == Material.SAND || relativeType == Material.GRAVEL) && mcMMO.p.placeStore.isTrue(relative)) {
+                    mcMMO.p.placeStore.setFalse(relative);
                 }
-                else if (!BlockChecks.shouldBeWatched(relative) && mcMMO.placeStore.isTrue(relative)){
-                    mcMMO.placeStore.setFalse(relative);
+                else if (!BlockChecks.shouldBeWatched(relative) && mcMMO.p.placeStore.isTrue(relative)){
+                    mcMMO.p.placeStore.setFalse(relative);
                 }
                 else {
                     break;

+ 3 - 3
src/main/java/com/gmail/nossr50/listeners/WorldListener.java

@@ -37,16 +37,16 @@ public class WorldListener implements Listener {
 
     @EventHandler
     public void onWorldUnload(WorldUnloadEvent event) {
-        mcMMO.placeStore.unloadWorld(event.getWorld());
+        mcMMO.p.placeStore.unloadWorld(event.getWorld());
     }
 
     @EventHandler
     public void onWorldSave(WorldSaveEvent event) {
-        mcMMO.placeStore.saveWorld(event.getWorld());
+        mcMMO.p.placeStore.saveWorld(event.getWorld());
     }
 
     @EventHandler
     public void onChunkUnload(ChunkUnloadEvent event) {
-        mcMMO.placeStore.chunkUnloaded(event.getChunk().getX(), event.getChunk().getZ(), event.getWorld());
+        mcMMO.p.placeStore.chunkUnloaded(event.getChunk().getX(), event.getChunk().getZ(), event.getWorld());
     }
 }

+ 3 - 3
src/main/java/com/gmail/nossr50/runnables/StickyPistonTracker.java

@@ -17,11 +17,11 @@ public class StickyPistonTracker implements Runnable {
     public void run() {
         Block originalBlock = event.getRetractLocation().getBlock();
 
-        if (originalBlock.getType() == Material.AIR && mcMMO.placeStore.isTrue(originalBlock)) {
+        if (originalBlock.getType() == Material.AIR && mcMMO.p.placeStore.isTrue(originalBlock)) {
             Block newBlock = originalBlock.getRelative(event.getDirection().getOppositeFace());
 
-            mcMMO.placeStore.setFalse(originalBlock);
-            mcMMO.placeStore.setTrue(newBlock);
+            mcMMO.p.placeStore.setFalse(originalBlock);
+            mcMMO.p.placeStore.setTrue(newBlock);
         }
     }
 }

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

@@ -62,7 +62,7 @@ public class BlastMining {
                 blocksDropped.add(temp);
                 Mining.miningDrops(temp);
 
-                if (!mcMMO.placeStore.isTrue(temp)) {
+                if (!mcMMO.p.placeStore.isTrue(temp)) {
                     for (int i = 1 ; i < extraDrops ; i++) {
                         blocksDropped.add(temp);
                         Mining.miningDrops(temp);
@@ -172,7 +172,7 @@ public class BlastMining {
         }
 
         for (Block block : xp) {
-            if (!mcMMO.placeStore.isTrue(block)) {
+            if (!mcMMO.p.placeStore.isTrue(block)) {
                 Mining.miningXP(player, block);
             }
         }

+ 1 - 1
src/main/java/com/gmail/nossr50/skills/gathering/Excavation.java

@@ -130,7 +130,7 @@ public class Excavation {
 
         Skills.abilityDurabilityLoss(player.getItemInHand(), Config.getInstance().getAbilityToolDamage());
 
-        if (!mcMMO.placeStore.isTrue(block) && !Misc.blockBreakSimulate(block, player, true)) {
+        if (!mcMMO.p.placeStore.isTrue(block) && !Misc.blockBreakSimulate(block, player, true)) {
             FakePlayerAnimationEvent armswing = new FakePlayerAnimationEvent(player);
             mcMMO.p.getServer().getPluginManager().callEvent(armswing);
 

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

@@ -63,7 +63,7 @@ public class Herbalism {
             else if (Config.getInstance().getHerbalismGreenThumbCobbleToMossy() && type == Material.COBBLESTONE) {
                 block.setType(Material.MOSSY_COBBLESTONE);
                 // Don't award double drops to mossified cobblestone
-                mcMMO.placeStore.setTrue(block);
+                mcMMO.p.placeStore.setTrue(block);
             }
             else if (Config.getInstance().getHerbalismGreenThumbCobbleWallToMossyWall() && type == Material.COBBLE_WALL) {
                 block.setData((byte) 1);
@@ -109,7 +109,7 @@ public class Herbalism {
         switch (type) {
         case BROWN_MUSHROOM:
         case RED_MUSHROOM:
-            if (!mcMMO.placeStore.isTrue(block)) {
+            if (!mcMMO.p.placeStore.isTrue(block)) {
                 mat = Material.getMaterial(id);
                 xp = Config.getInstance().getHerbalismXPMushrooms();
             }
@@ -120,7 +120,7 @@ public class Herbalism {
                 Block b = block.getRelative(0, y, 0);
                 if (b.getType().equals(Material.CACTUS)) {
                     mat = Material.CACTUS;
-                    if (!mcMMO.placeStore.isTrue(b)) {
+                    if (!mcMMO.p.placeStore.isTrue(b)) {
                         if (herbLevel > MAX_BONUS_LEVEL || random.nextInt(randomChance) <= herbLevel) {
                             catciDrops++;
                         }
@@ -142,7 +142,7 @@ public class Herbalism {
             break;
 
         case MELON_BLOCK:
-            if (!mcMMO.placeStore.isTrue(block)) {
+            if (!mcMMO.p.placeStore.isTrue(block)) {
                 mat = Material.MELON;
                 xp = Config.getInstance().getHerbalismXPMelon();
             }
@@ -161,7 +161,7 @@ public class Herbalism {
 
         case PUMPKIN:
         case JACK_O_LANTERN:
-            if (!mcMMO.placeStore.isTrue(block)) {
+            if (!mcMMO.p.placeStore.isTrue(block)) {
                 mat = Material.getMaterial(id);
                 xp = Config.getInstance().getHerbalismXPPumpkin();
             }
@@ -169,7 +169,7 @@ public class Herbalism {
 
         case RED_ROSE:
         case YELLOW_FLOWER:
-            if (!mcMMO.placeStore.isTrue(block)) {
+            if (!mcMMO.p.placeStore.isTrue(block)) {
                 mat = Material.getMaterial(id);
                 xp = Config.getInstance().getHerbalismXPFlowers();
             }
@@ -180,7 +180,7 @@ public class Herbalism {
                 Block b = block.getRelative(0, y, 0);
                 if (b.getType().equals(Material.SUGAR_CANE_BLOCK)) {
                     mat = Material.SUGAR_CANE;
-                    if (!mcMMO.placeStore.isTrue(b)) {
+                    if (!mcMMO.p.placeStore.isTrue(b)) {
                         if (herbLevel > MAX_BONUS_LEVEL || random.nextInt(randomChance) <= herbLevel) {
                             caneDrops++;
                         }
@@ -191,14 +191,14 @@ public class Herbalism {
             break;
 
         case VINE:
-            if (!mcMMO.placeStore.isTrue(block)) {
+            if (!mcMMO.p.placeStore.isTrue(block)) {
                 mat = type;
                 xp = Config.getInstance().getHerbalismXPVines();
             }
             break;
 
         case WATER_LILY:
-            if (!mcMMO.placeStore.isTrue(block)) {
+            if (!mcMMO.p.placeStore.isTrue(block)) {
                 mat = type;
                 xp = Config.getInstance().getHerbalismXPLilyPads();
             }

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

@@ -316,7 +316,7 @@ public class Mining {
      * @param block The block being broken
      */
     public static void miningBlockCheck(Player player, Block block) {
-        if (mcMMO.placeStore.isTrue(block)) {
+        if (mcMMO.p.placeStore.isTrue(block)) {
             return;
         }
 
@@ -362,7 +362,7 @@ public class Mining {
                 return;
             }
 
-            if (mcMMO.placeStore.isTrue(block) || Misc.blockBreakSimulate(block, player, true)) {
+            if (mcMMO.p.placeStore.isTrue(block) || Misc.blockBreakSimulate(block, player, true)) {
                 return;
             }
 
@@ -408,7 +408,7 @@ public class Mining {
             case NETHERRACK:
             case SANDSTONE:
             case STONE:
-                if (mcMMO.placeStore.isTrue(block) || Misc.blockBreakSimulate(block, player, true)) {
+                if (mcMMO.p.placeStore.isTrue(block) || Misc.blockBreakSimulate(block, player, true)) {
                     return;
                 }
 

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

@@ -109,7 +109,7 @@ public class WoodCutting {
                         CustomBlock block = ModChecks.getCustomBlock(x);
                         item = block.getItemDrop();
 
-                        if (!mcMMO.placeStore.isTrue(x)) {
+                        if (!mcMMO.p.placeStore.isTrue(x)) {
                             WoodCutting.woodCuttingProcCheck(player, x);
                             xp = block.getXpGain();
                         }
@@ -169,7 +169,7 @@ public class WoodCutting {
                         break;
                     }
 
-                    if (!mcMMO.placeStore.isTrue(x)) {
+                    if (!mcMMO.p.placeStore.isTrue(x)) {
                         WoodCutting.woodCuttingProcCheck(player, x);
 
                         switch (species) {
@@ -245,7 +245,7 @@ public class WoodCutting {
         Block zNegative = currentBlock.getRelative(0, 0, -1);
         Block yPositive = currentBlock.getRelative(0, 1, 0);
 
-        if (!mcMMO.placeStore.isTrue(currentBlock)) {
+        if (!mcMMO.p.placeStore.isTrue(currentBlock)) {
             if (!isTooAggressive(currentBlock, xPositive) && BlockChecks.treeFellerCompatible(xPositive) && !toBeFelled.contains(xPositive)) {
                 processTreeFelling(xPositive, toBeFelled);
             }
@@ -277,7 +277,7 @@ public class WoodCutting {
             Block corner3 = currentBlock.getRelative(-1, 0, 1);
             Block corner4 = currentBlock.getRelative(-1, 0, -1);
 
-            if (!mcMMO.placeStore.isTrue(currentBlock)) {
+            if (!mcMMO.p.placeStore.isTrue(currentBlock)) {
                 if (!isTooAggressive(currentBlock, corner1) && BlockChecks.treeFellerCompatible(corner1) && !toBeFelled.contains(corner1)) {
                     processTreeFelling(corner1, toBeFelled);
                 }
@@ -297,7 +297,7 @@ public class WoodCutting {
         }
 
         if (BlockChecks.treeFellerCompatible(yPositive)) {
-            if(!mcMMO.placeStore.isTrue(currentBlock) && !toBeFelled.contains(yPositive)) {
+            if(!mcMMO.p.placeStore.isTrue(currentBlock) && !toBeFelled.contains(yPositive)) {
                 processTreeFelling(yPositive, toBeFelled);
             }
         }
@@ -421,7 +421,7 @@ public class WoodCutting {
         PlayerProfile profile = Users.getProfile(player);
         int xp = 0;
 
-        if (mcMMO.placeStore.isTrue(block)) {
+        if (mcMMO.p.placeStore.isTrue(block)) {
             return;
         }
 

+ 9 - 7
src/main/java/com/gmail/nossr50/skills/repair/Repair.java

@@ -210,20 +210,22 @@ public class Repair {
      * @return The final amount of durability repaired to the item
      */
     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 = ((float) skillLevel / (float) repairMasteryMaxBonusLevel) * (float) repairMasteryChanceMax;
+        double  bonus;
+        if(skillLevel >= repairMasteryMaxBonusLevel) bonus = (double) repairMasteryChanceMax;
+        else bonus = ((double) skillLevel / (double) repairMasteryMaxBonusLevel) * (double) repairMasteryChanceMax;
 
         if (permInstance.repairMastery(player)) {
-            bonus = (repairAmount * bonus);
-            repairAmount += bonus;
+            bonus = ((double) repairAmount * bonus);
+            repairAmount += (int) bonus;
         }
 
         if (checkPlayerProcRepair(player)) {
-            repairAmount = (short) (repairAmount * 2);
+            repairAmount = (int) (repairAmount * 2D);
         }
 
+        if(repairAmount <= 0 || repairAmount > 32767)
+		repairAmount = 32767;
+
         durability -= repairAmount;
 
         if (durability < 0) {

+ 1 - 1
src/main/java/com/gmail/nossr50/spout/SpoutStuff.java

@@ -30,7 +30,7 @@ import com.gmail.nossr50.util.Users;
 
 public class SpoutStuff {
     private static mcMMO plugin = mcMMO.p;
-	static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
+    static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
 
     public final static String spoutDirectory = mcMMO.getMainDirectory() + "Resources" + File.separator;
     public final static String hudDirectory = spoutDirectory + "HUD" + File.separator;