From 8dfa8c20f32e391c3d299abc51514a6601ed6e80 Mon Sep 17 00:00:00 2001 From: "U-YUE\\Sean" Date: Tue, 30 Oct 2012 10:26:46 -0700 Subject: [PATCH 01/14] Resolving first half of issue #283 . Recommend closing issue and reopening with a new ticket number for the issue regarding stats. Stat bug probably involves commit @42aa42699129448ef7fa0e4e5de96840004c13ee --- .../com/gmail/nossr50/util/blockmeta/HashChunkletManager.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/gmail/nossr50/util/blockmeta/HashChunkletManager.java b/src/main/java/com/gmail/nossr50/util/blockmeta/HashChunkletManager.java index c3c8ffe4e..bc0899730 100644 --- a/src/main/java/com/gmail/nossr50/util/blockmeta/HashChunkletManager.java +++ b/src/main/java/com/gmail/nossr50/util/blockmeta/HashChunkletManager.java @@ -107,6 +107,8 @@ public class HashChunkletManager implements ChunkletManager { public void saveWorld(World world) { String worldName = world.getName(); File dataDir = new File(world.getWorldFolder(), "mcmmo_data"); + if(!dataDir.exists()) + dataDir.mkdirs(); for(String key : store.keySet()) { String[] info = key.split(","); @@ -280,6 +282,8 @@ public class HashChunkletManager implements ChunkletManager { ObjectOutputStream objOut = null; try { + if(!location.exists()) + location.createNewFile(); fileOut = new FileOutputStream(location); objOut = new ObjectOutputStream(fileOut); objOut.writeObject(cStore); From ab7a83b37ea5539d5f4f49cf98c746541c151587 Mon Sep 17 00:00:00 2001 From: "U-YUE\\Sean" Date: Tue, 30 Oct 2012 11:46:52 -0700 Subject: [PATCH 02/14] Attempting to fix issues #272 , #266 , #261 , and #255 . --- .../acrobatics/AcrobaticsEventHandler.java | 3 +++ .../skills/acrobatics/AcrobaticsManager.java | 6 +++++ .../skills/acrobatics/DodgeEventHandler.java | 6 +++++ .../skills/acrobatics/RollEventHandler.java | 9 +++++++ .../skills/archery/ArcheryManager.java | 9 +++++++ .../com/gmail/nossr50/skills/combat/Axes.java | 14 +++++++++++ .../nossr50/skills/gathering/BlastMining.java | 12 ++++++++++ .../nossr50/skills/gathering/Excavation.java | 6 +++++ .../nossr50/skills/gathering/Fishing.java | 6 +++++ .../nossr50/skills/gathering/Herbalism.java | 15 ++++++++++++ .../swords/CounterAttackEventHandler.java | 6 +++++ .../swords/SerratedStrikesEventHandler.java | 3 +++ .../nossr50/skills/swords/SwordsManager.java | 3 +++ .../skills/taming/BeastLoreEventHandler.java | 3 +++ .../taming/CallOfTheWildEventHandler.java | 18 ++++++++++++++ .../EnvironmentallyAwareEventHandler.java | 6 +++++ .../nossr50/skills/taming/TamingManager.java | 24 +++++++++++++++++++ .../skills/unarmed/UnarmedManager.java | 12 ++++++++++ 18 files changed, 161 insertions(+) diff --git a/src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsEventHandler.java b/src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsEventHandler.java index e691b9a1c..383cd70a4 100644 --- a/src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsEventHandler.java +++ b/src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsEventHandler.java @@ -51,6 +51,9 @@ public abstract class AcrobaticsEventHandler { * @return true if the damage is fatal, false otherwise */ protected boolean isFatal(int damage) { + if(player == null) + return true; + if (player.getHealth() - damage < 1) { return true; } diff --git a/src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java b/src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java index d1d41cdd9..5361df9fa 100644 --- a/src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java +++ b/src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java @@ -26,6 +26,9 @@ public class AcrobaticsManager { * @param event The event to check */ public void rollCheck(EntityDamageEvent event) { + if(player == null) + return; + if (!permissionInstance.roll(player)) { return; } @@ -54,6 +57,9 @@ public class AcrobaticsManager { * @param event The event to check */ public void dodgeCheck(EntityDamageEvent event) { + if(player == null) + return; + if (!permissionInstance.dodge(player)) { return; } diff --git a/src/main/java/com/gmail/nossr50/skills/acrobatics/DodgeEventHandler.java b/src/main/java/com/gmail/nossr50/skills/acrobatics/DodgeEventHandler.java index 9dec99742..6fe6064e9 100644 --- a/src/main/java/com/gmail/nossr50/skills/acrobatics/DodgeEventHandler.java +++ b/src/main/java/com/gmail/nossr50/skills/acrobatics/DodgeEventHandler.java @@ -39,11 +39,17 @@ public class DodgeEventHandler extends AcrobaticsEventHandler { @Override protected void sendAbilityMessage() { + if(player == null) + return; + player.sendMessage(LocaleLoader.getString("Acrobatics.Combat.Proc")); } @Override protected void processXPGain(int xp) { + if(player == null) + return; + PlayerProfile profile = manager.getProfile(); if (System.currentTimeMillis() >= profile.getRespawnATS() + 5) { diff --git a/src/main/java/com/gmail/nossr50/skills/acrobatics/RollEventHandler.java b/src/main/java/com/gmail/nossr50/skills/acrobatics/RollEventHandler.java index 9700a000e..4ef6f39d4 100644 --- a/src/main/java/com/gmail/nossr50/skills/acrobatics/RollEventHandler.java +++ b/src/main/java/com/gmail/nossr50/skills/acrobatics/RollEventHandler.java @@ -56,6 +56,9 @@ public class RollEventHandler extends AcrobaticsEventHandler { @Override protected void sendAbilityMessage() { + if(player == null) + return; + if (isGraceful) { player.sendMessage(LocaleLoader.getString("Acrobatics.Ability.Proc")); } @@ -67,6 +70,9 @@ public class RollEventHandler extends AcrobaticsEventHandler { @Override protected void processXPGain(int xpGain) { + if(player == null) + return; + Skills.xpProcessing(player, manager.getProfile(), SkillType.ACROBATICS, xpGain); } @@ -74,6 +80,9 @@ public class RollEventHandler extends AcrobaticsEventHandler { * Check if this is a graceful roll. */ private void isGracefulRoll() { + if(player == null) + return; + if (Permissions.getInstance().gracefulRoll(player)) { this.isGraceful = player.isSneaking(); } diff --git a/src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java b/src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java index c9111cf10..d3f968abb 100644 --- a/src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java +++ b/src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java @@ -33,6 +33,9 @@ public class ArcheryManager { * @param livingEntity Entity damaged by the arrow */ public void trackArrows(LivingEntity livingEntity) { + if(player == null) + return; + if (!permissionsInstance.trackArrows(player)) { return; } @@ -57,6 +60,9 @@ public class ArcheryManager { * @param event The event to modify */ public void dazeCheck(Player defender, EntityDamageEvent event) { + if(player == null) + return; + if (!permissionsInstance.daze(player)) { return; } @@ -81,6 +87,9 @@ public class ArcheryManager { * @param event The event to modify. */ public void bonusDamage(EntityDamageEvent event) { + if(player == null) + return; + if (!permissionsInstance.archeryBonus(player)) { return; } diff --git a/src/main/java/com/gmail/nossr50/skills/combat/Axes.java b/src/main/java/com/gmail/nossr50/skills/combat/Axes.java index 39393d704..a7acc6c48 100644 --- a/src/main/java/com/gmail/nossr50/skills/combat/Axes.java +++ b/src/main/java/com/gmail/nossr50/skills/combat/Axes.java @@ -30,6 +30,9 @@ public class Axes { * @param event The event to modify */ public static void axesBonus(Player attacker, EntityDamageByEntityEvent event) { + if(attacker == null) + return; + final int MAX_BONUS = 4; /* Add 1 DMG for every 50 skill levels */ @@ -49,6 +52,9 @@ public class Axes { * @param event The event to modify */ public static void axeCriticalCheck(Player attacker, EntityDamageByEntityEvent event) { + if(attacker == null) + return; + Entity entity = event.getEntity(); if (entity instanceof Tameable) { @@ -104,6 +110,8 @@ public class Axes { */ @SuppressWarnings("deprecation") public static void impact(Player attacker, LivingEntity target, EntityDamageByEntityEvent event) { + if(attacker == null) + return; /* * TODO: Finish this skill. The idea is you will greatly damage an opponents armor. @@ -140,6 +148,9 @@ public class Axes { * @param event The event to modify */ private static void applyGreaterImpact(Player attacker, LivingEntity target, EntityDamageByEntityEvent event) { + if(attacker == null) + return; + final int GREATER_IMPACT_CHANCE = 25; final double GREATER_IMPACT_MULTIPLIER = 1.5; @@ -167,6 +178,9 @@ public class Axes { * @return true if the player has armor, false otherwise */ private static boolean hasArmor(Player player) { + if(player == null) + return false; + PlayerInventory inventory = player.getInventory(); if (inventory.getBoots() != null || inventory.getChestplate() != null || inventory.getHelmet() != null || inventory.getLeggings() != null) { diff --git a/src/main/java/com/gmail/nossr50/skills/gathering/BlastMining.java b/src/main/java/com/gmail/nossr50/skills/gathering/BlastMining.java index f0a49c13a..36fa41306 100644 --- a/src/main/java/com/gmail/nossr50/skills/gathering/BlastMining.java +++ b/src/main/java/com/gmail/nossr50/skills/gathering/BlastMining.java @@ -82,6 +82,9 @@ public class BlastMining { * @param event Event whose explosion is being processed */ public static void dropProcessing(Player player, EntityExplodeEvent event) { + if(player == null) + return; + final int RANK_1_LEVEL = 125; final int RANK_2_LEVEL = 250; final int RANK_3_LEVEL = 375; @@ -172,6 +175,9 @@ public class BlastMining { * @param event Event whose explosion radius is being changed */ public static void biggerBombs(Player player, ExplosionPrimeEvent event) { + if(player == null) + return; + final int RANK_1_LEVEL = 250; final int RANK_2_LEVEL = 500; final int RANK_3_LEVEL = 750; @@ -210,6 +216,9 @@ public class BlastMining { * @param event Event whose explosion damage is being reduced */ public static void demolitionsExpertise(Player player, EntityDamageEvent event) { + if(player == null) + return; + final int RANK_1_LEVEL = 500; final int RANK_2_LEVEL = 750; final int RANK_3_LEVEL = 1000; @@ -242,6 +251,9 @@ public class BlastMining { * @param plugin mcMMO plugin instance */ public static void detonate(PlayerInteractEvent event, Player player, mcMMO plugin) { + if(player == null) + return; + PlayerProfile profile = Users.getProfile(player); if (profile.getSkillLevel(SkillType.MINING) < 125) diff --git a/src/main/java/com/gmail/nossr50/skills/gathering/Excavation.java b/src/main/java/com/gmail/nossr50/skills/gathering/Excavation.java index 5d074bd4a..8f5c5823d 100644 --- a/src/main/java/com/gmail/nossr50/skills/gathering/Excavation.java +++ b/src/main/java/com/gmail/nossr50/skills/gathering/Excavation.java @@ -37,6 +37,9 @@ public class Excavation { * @param player The player who broke the block */ public static void excavationProcCheck(Block block, Player player) { + if(player == null) + return; + Material type = block.getType(); Location location = block.getLocation(); @@ -122,6 +125,9 @@ public class Excavation { * @param block The block to check */ public static void gigaDrillBreaker(Player player, Block block) { + if(player == null) + return; + Skills.abilityDurabilityLoss(player.getItemInHand(), Config.getInstance().getAbilityToolDamage()); if (!mcMMO.placeStore.isTrue(block) && !Misc.blockBreakSimulate(block, player, true)) { diff --git a/src/main/java/com/gmail/nossr50/skills/gathering/Fishing.java b/src/main/java/com/gmail/nossr50/skills/gathering/Fishing.java index b8e17fea4..24e837814 100755 --- a/src/main/java/com/gmail/nossr50/skills/gathering/Fishing.java +++ b/src/main/java/com/gmail/nossr50/skills/gathering/Fishing.java @@ -72,6 +72,9 @@ public class Fishing { * @param event The event to modify */ private static void getFishingResults(Player player, PlayerFishEvent event) { + if(player == null) + return; + PlayerProfile profile = Users.getProfile(player); List rewards = new ArrayList(); Item theCatch = (Item) event.getCaught(); @@ -135,6 +138,9 @@ public class Fishing { */ public static void processResults(PlayerFishEvent event) { Player player = event.getPlayer(); + if(player == null) + return; + PlayerProfile profile = Users.getProfile(player); getFishingResults(player, event); diff --git a/src/main/java/com/gmail/nossr50/skills/gathering/Herbalism.java b/src/main/java/com/gmail/nossr50/skills/gathering/Herbalism.java index ee5f9e014..9443325e4 100644 --- a/src/main/java/com/gmail/nossr50/skills/gathering/Herbalism.java +++ b/src/main/java/com/gmail/nossr50/skills/gathering/Herbalism.java @@ -37,6 +37,9 @@ public class Herbalism { * @param block The block to be changed by Green Terra */ public static void greenTerra(Player player, Block block) { + if(player == null) + return; + PlayerInventory inventory = player.getInventory(); boolean hasSeeds = inventory.contains(Material.SEEDS); @@ -51,6 +54,9 @@ public class Herbalism { } public static void greenTerraConvert(Player player, Block block) { + if(player == null) + return; + Material type = block.getType(); if (Misc.blockBreakSimulate(block, player, false)) { @@ -77,6 +83,9 @@ public class Herbalism { * @param plugin mcMMO plugin instance */ public static void herbalismProcCheck(final Block block, Player player, BlockBreakEvent event, mcMMO plugin) { + if(player == null) + return; + final PlayerProfile profile = Users.getProfile(player); final int MAX_BONUS_LEVEL = 1000; @@ -372,6 +381,9 @@ public class Herbalism { * @param plugin mcMMO plugin instance */ private static void greenThumbWheat(Block block, Player player, BlockBreakEvent event, mcMMO plugin) { + if(player == null) + return; + final int MAX_BONUS_LEVEL = 1500; PlayerProfile profile = Users.getProfile(player); @@ -407,6 +419,9 @@ public class Herbalism { * @param block The block being used in the ability */ public static void greenThumbBlocks(ItemStack is, Player player, Block block) { + if(player == null) + return; + final int MAX_BONUS_LEVEL = 1500; PlayerProfile profile = Users.getProfile(player); diff --git a/src/main/java/com/gmail/nossr50/skills/swords/CounterAttackEventHandler.java b/src/main/java/com/gmail/nossr50/skills/swords/CounterAttackEventHandler.java index b34456ec6..e36936c17 100644 --- a/src/main/java/com/gmail/nossr50/skills/swords/CounterAttackEventHandler.java +++ b/src/main/java/com/gmail/nossr50/skills/swords/CounterAttackEventHandler.java @@ -24,6 +24,9 @@ public class CounterAttackEventHandler { } protected boolean isHoldingSword() { + if(player == null) + return false; + return ItemChecks.isSword(player.getItemInHand()); } @@ -36,6 +39,9 @@ public class CounterAttackEventHandler { } protected void sendAbilityMessages() { + if(player == null) + return; + player.sendMessage(LocaleLoader.getString("Swords.Combat.Countered")); if (attacker instanceof Player) { diff --git a/src/main/java/com/gmail/nossr50/skills/swords/SerratedStrikesEventHandler.java b/src/main/java/com/gmail/nossr50/skills/swords/SerratedStrikesEventHandler.java index c2ba02ebd..c61c553fa 100644 --- a/src/main/java/com/gmail/nossr50/skills/swords/SerratedStrikesEventHandler.java +++ b/src/main/java/com/gmail/nossr50/skills/swords/SerratedStrikesEventHandler.java @@ -19,6 +19,9 @@ public class SerratedStrikesEventHandler { } protected void applyAbilityEffects() { + if(player == null) + return; + Combat.applyAbilityAoE(player, target, damage / Swords.SERRATED_STRIKES_MODIFIER, SkillType.SWORDS); BleedTimer.add(target, Swords.SERRATED_STRIKES_BLEED_TICKS); } diff --git a/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java b/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java index 84aff182d..f91712b83 100644 --- a/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java +++ b/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java @@ -28,6 +28,9 @@ public class SwordsManager { * @param defender The defending entity */ public void bleedCheck(LivingEntity defender) { + if(player == null) + return; + if (!permissionsInstance.swordsBleed(player)) { return; } diff --git a/src/main/java/com/gmail/nossr50/skills/taming/BeastLoreEventHandler.java b/src/main/java/com/gmail/nossr50/skills/taming/BeastLoreEventHandler.java index b2688039c..95816498c 100644 --- a/src/main/java/com/gmail/nossr50/skills/taming/BeastLoreEventHandler.java +++ b/src/main/java/com/gmail/nossr50/skills/taming/BeastLoreEventHandler.java @@ -19,6 +19,9 @@ public class BeastLoreEventHandler { } protected void sendInspectMessage() { + if(player == null) + return; + String message = LocaleLoader.getString("Combat.BeastLore") + " "; if (beast.isTamed()) { diff --git a/src/main/java/com/gmail/nossr50/skills/taming/CallOfTheWildEventHandler.java b/src/main/java/com/gmail/nossr50/skills/taming/CallOfTheWildEventHandler.java index a35b99e72..84ad5d2a1 100644 --- a/src/main/java/com/gmail/nossr50/skills/taming/CallOfTheWildEventHandler.java +++ b/src/main/java/com/gmail/nossr50/skills/taming/CallOfTheWildEventHandler.java @@ -29,10 +29,16 @@ public class CallOfTheWildEventHandler { } protected void sendInsufficientAmountMessage() { + if(player == null) + return; + player.sendMessage(LocaleLoader.getString("Skills.NeedMore") + " " + ChatColor.GRAY + Misc.prettyItemString(inHand.getTypeId())); } protected boolean nearbyEntityExists() { + if(player == null) + return false; + boolean entityExists = false; for (Entity entity : player.getNearbyEntities(40, 40, 40)) { @@ -46,6 +52,9 @@ public class CallOfTheWildEventHandler { } protected void sendFailureMessage() { + if(player == null) + return; + if (type == EntityType.OCELOT) { player.sendMessage(LocaleLoader.getString("Taming.Summon.Fail.Ocelot")); } @@ -55,6 +64,9 @@ public class CallOfTheWildEventHandler { } protected void spawnCreature() { + if(player == null) + return; + LivingEntity entity = (LivingEntity) player.getWorld().spawnEntity(player.getLocation(), type); entity.setMetadata("mcmmoSummoned", new FixedMetadataValue(mcMMO.p, true)); @@ -69,6 +81,9 @@ public class CallOfTheWildEventHandler { } protected void processResourceCost() { + if(player == null) + return; + int newAmount = inHand.getAmount() - summonAmount; if (newAmount == 0) { @@ -80,6 +95,9 @@ public class CallOfTheWildEventHandler { } protected void sendSuccessMessage() { + if(player == null) + return; + player.sendMessage(LocaleLoader.getString("Taming.Summon.Complete")); } } diff --git a/src/main/java/com/gmail/nossr50/skills/taming/EnvironmentallyAwareEventHandler.java b/src/main/java/com/gmail/nossr50/skills/taming/EnvironmentallyAwareEventHandler.java index 01a0eba27..07c8a3fa1 100644 --- a/src/main/java/com/gmail/nossr50/skills/taming/EnvironmentallyAwareEventHandler.java +++ b/src/main/java/com/gmail/nossr50/skills/taming/EnvironmentallyAwareEventHandler.java @@ -18,6 +18,9 @@ public class EnvironmentallyAwareEventHandler { } protected void teleportWolf() { + if(player == null) + return; + if (event.getDamage() > wolf.getHealth()) { return; } @@ -26,6 +29,9 @@ public class EnvironmentallyAwareEventHandler { } protected void sendAbilityMessage() { + if(player == null) + return; + player.sendMessage(LocaleLoader.getString("Taming.Listener.Wolf")); } diff --git a/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java b/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java index b75afb633..eb946fa6f 100644 --- a/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java +++ b/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java @@ -36,6 +36,9 @@ public class TamingManager { * @param damage The damage being absorbed by the wolf */ public void fastFoodService(Wolf wolf, int damage) { + if(player == null) + return; + if (!permissionsInstance.fastFoodService(player)) { return; } @@ -61,6 +64,9 @@ public class TamingManager { * @param event The event to modify */ public void sharpenedClaws(EntityDamageEvent event) { + if(player == null) + return; + if (!permissionsInstance.sharpenedClaws(player)) { return; } @@ -78,6 +84,9 @@ public class TamingManager { * @param event The event to modify */ public void gore(EntityDamageEvent event) { + if(player == null) + return; + if (!permissionsInstance.gore(player)) { return; } @@ -150,6 +159,9 @@ public class TamingManager { * @param livingEntity The entity to examine */ public void beastLore(LivingEntity livingEntity) { + if(player == null) + return; + if (!permissionsInstance.beastLore(player)) { return; } @@ -166,6 +178,9 @@ public class TamingManager { * @param summonAmount The amount of material needed to summon the entity */ private void callOfTheWild(EntityType type, int summonAmount) { + if(player == null) + return; + if (!permissionsInstance.callOfTheWild(player)) { return; } @@ -198,6 +213,9 @@ public class TamingManager { * @param cause The damage cause of the event */ private void environmentallyAware(EntityDamageEvent event, DamageCause cause) { + if(player == null) + return; + if (!permissionsInstance.environmentallyAware(player)) { return; } @@ -230,6 +248,9 @@ public class TamingManager { * @param cause The damage cause of the event */ private void thickFur(EntityDamageEvent event, DamageCause cause) { + if(player == null) + return; + if (!permissionsInstance.thickFur(player)) { return; } @@ -247,6 +268,9 @@ public class TamingManager { * @param event The event to modify */ private void shockProof(EntityDamageEvent event) { + if(player == null) + return; + if (!permissionsInstance.shockProof(player)) { return; } diff --git a/src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java b/src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java index dd04ecffb..4e49fde92 100644 --- a/src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java +++ b/src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java @@ -27,6 +27,9 @@ public class UnarmedManager { * @param defender The defending player */ public void disarmCheck(Player defender) { + if(player == null) + return; + if (!permissionsInstance.disarm(player)) { return; } @@ -58,6 +61,9 @@ public class UnarmedManager { * @param event The event to modify */ public void deflectCheck(EntityDamageEvent event) { + if(player == null) + return; + if (!permissionsInstance.deflect(player)) { return; } @@ -82,6 +88,9 @@ public class UnarmedManager { * @param event The event to modify. */ public void bonusDamage(EntityDamageEvent event) { + if(player == null) + return; + if (!permissionsInstance.unarmedBonus(player)) { return; } @@ -99,6 +108,9 @@ public class UnarmedManager { * @return true if the defender was not disarmed, false otherwise */ private boolean hasIronGrip(Player defender) { + if(defender == null) + return false; + if (!permissionsInstance.ironGrip(defender)) { return false; } From 93548317293e2c6c5195544b99d4ce7d900abea1 Mon Sep 17 00:00:00 2001 From: "U-YUE\\Sean" Date: Tue, 30 Oct 2012 13:14:22 -0700 Subject: [PATCH 03/14] Finished fixing issues #272, #266, #261, and #255. --- .../skills/archery/ArcheryManager.java | 9 +++++++ .../nossr50/skills/swords/SwordsManager.java | 15 ++++++++++++ .../nossr50/skills/taming/TamingManager.java | 24 +++++++++++++++++++ .../skills/unarmed/UnarmedManager.java | 12 ++++++++++ .../java/com/gmail/nossr50/util/Skills.java | 6 +++++ 5 files changed, 66 insertions(+) diff --git a/src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java b/src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java index d3f968abb..66e4f9ed9 100644 --- a/src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java +++ b/src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java @@ -36,6 +36,9 @@ public class ArcheryManager { if(player == null) return; + if(permissionsInstance == null) + return; + if (!permissionsInstance.trackArrows(player)) { return; } @@ -63,6 +66,9 @@ public class ArcheryManager { if(player == null) return; + if(permissionsInstance == null) + return; + if (!permissionsInstance.daze(player)) { return; } @@ -90,6 +96,9 @@ public class ArcheryManager { if(player == null) return; + if(permissionsInstance == null) + return; + if (!permissionsInstance.archeryBonus(player)) { return; } diff --git a/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java b/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java index f91712b83..dcfb335a2 100644 --- a/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java +++ b/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java @@ -31,6 +31,9 @@ public class SwordsManager { if(player == null) return; + if(permissionsInstance == null) + return; + if (!permissionsInstance.swordsBleed(player)) { return; } @@ -52,6 +55,12 @@ public class SwordsManager { } public void counterAttackChecks(LivingEntity attacker, int damage) { + if(player == null) + return; + + if(permissionsInstance == null) + return; + if (!permissionsInstance.counterAttack(player)) { return; } @@ -75,6 +84,12 @@ public class SwordsManager { } public void serratedStrikes(LivingEntity target, int damage) { + if(player == null) + return; + + if(permissionsInstance == null) + return; + if (!permissionsInstance.serratedStrikes(player)) { return; } diff --git a/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java b/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java index eb946fa6f..7df91b147 100644 --- a/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java +++ b/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java @@ -39,6 +39,9 @@ public class TamingManager { if(player == null) return; + if(permissionsInstance == null) + return; + if (!permissionsInstance.fastFoodService(player)) { return; } @@ -67,6 +70,9 @@ public class TamingManager { if(player == null) return; + if(permissionsInstance == null) + return; + if (!permissionsInstance.sharpenedClaws(player)) { return; } @@ -87,6 +93,9 @@ public class TamingManager { if(player == null) return; + if(permissionsInstance == null) + return; + if (!permissionsInstance.gore(player)) { return; } @@ -162,6 +171,9 @@ public class TamingManager { if(player == null) return; + if(permissionsInstance == null) + return; + if (!permissionsInstance.beastLore(player)) { return; } @@ -181,6 +193,9 @@ public class TamingManager { if(player == null) return; + if(permissionsInstance == null) + return; + if (!permissionsInstance.callOfTheWild(player)) { return; } @@ -216,6 +231,9 @@ public class TamingManager { if(player == null) return; + if(permissionsInstance == null) + return; + if (!permissionsInstance.environmentallyAware(player)) { return; } @@ -251,6 +269,9 @@ public class TamingManager { if(player == null) return; + if(permissionsInstance == null) + return; + if (!permissionsInstance.thickFur(player)) { return; } @@ -271,6 +292,9 @@ public class TamingManager { if(player == null) return; + if(permissionsInstance == null) + return; + if (!permissionsInstance.shockProof(player)) { return; } diff --git a/src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java b/src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java index 4e49fde92..0bad03949 100644 --- a/src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java +++ b/src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java @@ -30,6 +30,9 @@ public class UnarmedManager { if(player == null) return; + if(permissionsInstance == null) + return; + if (!permissionsInstance.disarm(player)) { return; } @@ -64,6 +67,9 @@ public class UnarmedManager { if(player == null) return; + if(permissionsInstance == null) + return; + if (!permissionsInstance.deflect(player)) { return; } @@ -91,6 +97,9 @@ public class UnarmedManager { if(player == null) return; + if(permissionsInstance == null) + return; + if (!permissionsInstance.unarmedBonus(player)) { return; } @@ -111,6 +120,9 @@ public class UnarmedManager { if(defender == null) return false; + if(permissionsInstance == null) + return false; + if (!permissionsInstance.ironGrip(defender)) { return false; } diff --git a/src/main/java/com/gmail/nossr50/util/Skills.java b/src/main/java/com/gmail/nossr50/util/Skills.java index d2d8a48c6..2084cbdb1 100644 --- a/src/main/java/com/gmail/nossr50/util/Skills.java +++ b/src/main/java/com/gmail/nossr50/util/Skills.java @@ -507,7 +507,13 @@ public class Skills { * @param xp the amount of XP to gain */ public static void xpProcessing(Player player, PlayerProfile profile, SkillType type, int xp) { + if(player == null) + return; + if (type.getPermissions(player)) { + if(Users.getPlayer(player) == null) + return; + Users.getPlayer(player).addXP(type, xp); xpCheckSkill(type, player, profile); } From 70231b6ae0c1807324ad9bd9ccdea88c1b2357ab Mon Sep 17 00:00:00 2001 From: Glitchfinder Date: Tue, 30 Oct 2012 17:59:58 -0700 Subject: [PATCH 04/14] Resolving issues #243, #241, and #234. --- .../gmail/nossr50/commands/CommandHelper.java | 16 ++++++++++++++++ .../com/gmail/nossr50/commands/SkillCommand.java | 5 +++++ .../commands/general/AddlevelsCommand.java | 5 +++++ .../nossr50/commands/general/AddxpCommand.java | 5 +++++ .../nossr50/commands/general/InspectCommand.java | 5 +++++ .../nossr50/commands/general/MmoeditCommand.java | 10 ++++++++++ .../commands/general/SkillResetCommand.java | 6 ++++++ .../nossr50/commands/mc/McabilityCommand.java | 5 +++++ .../gmail/nossr50/commands/mc/McgodCommand.java | 5 +++++ .../nossr50/commands/mc/McrefreshCommand.java | 5 +++++ 10 files changed, 67 insertions(+) diff --git a/src/main/java/com/gmail/nossr50/commands/CommandHelper.java b/src/main/java/com/gmail/nossr50/commands/CommandHelper.java index 46516d8b8..1e038f104 100644 --- a/src/main/java/com/gmail/nossr50/commands/CommandHelper.java +++ b/src/main/java/com/gmail/nossr50/commands/CommandHelper.java @@ -51,6 +51,11 @@ public class CommandHelper { if (Skills.hasGatheringSkills(inspect)) { PlayerProfile profile = Users.getProfile(inspect); + if (profile == null) { + display.sendMessage(LocaleLoader.getString("Commands.DoesNotExist")); + return; + } + display.sendMessage(LocaleLoader.getString("Stats.Header.Gathering")); if (Permissions.getInstance().excavation(inspect)) { @@ -89,6 +94,11 @@ public class CommandHelper { if (Skills.hasCombatSkills(inspect)) { PlayerProfile profile = Users.getProfile(inspect); + if (profile == null) { + display.sendMessage(LocaleLoader.getString("Commands.DoesNotExist")); + return; + } + display.sendMessage(LocaleLoader.getString("Stats.Header.Combat")); if (Permissions.getInstance().axes(inspect)) { @@ -126,6 +136,12 @@ public class CommandHelper { public static void printMiscSkills(Player inspect, CommandSender display) { if (Skills.hasMiscSkills(inspect)) { PlayerProfile profile = Users.getProfile(inspect); + + if (profile == null) { + display.sendMessage(LocaleLoader.getString("Commands.DoesNotExist")); + return; + } + display.sendMessage(LocaleLoader.getString("Stats.Header.Misc")); if (Permissions.getInstance().acrobatics(inspect)) { diff --git a/src/main/java/com/gmail/nossr50/commands/SkillCommand.java b/src/main/java/com/gmail/nossr50/commands/SkillCommand.java index b25edb77e..e56911820 100644 --- a/src/main/java/com/gmail/nossr50/commands/SkillCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/SkillCommand.java @@ -46,6 +46,11 @@ public abstract class SkillCommand implements CommandExecutor { player = (Player) sender; profile = Users.getProfile(player); + if (profile == null) { + sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist")); + return true; + } + skillValue = profile.getSkillLevel(skill); dataCalculations(); permissionsCheck(); diff --git a/src/main/java/com/gmail/nossr50/commands/general/AddlevelsCommand.java b/src/main/java/com/gmail/nossr50/commands/general/AddlevelsCommand.java index 6443b35a1..9b96d5c73 100644 --- a/src/main/java/com/gmail/nossr50/commands/general/AddlevelsCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/general/AddlevelsCommand.java @@ -72,6 +72,11 @@ public class AddlevelsCommand implements CommandExecutor{ String playerName = modifiedPlayer.getName(); profile = Users.getProfile(modifiedPlayer); + if (profile == null) { + sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist")); + return true; + } + if (!profile.isLoaded()) { sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist")); return true; diff --git a/src/main/java/com/gmail/nossr50/commands/general/AddxpCommand.java b/src/main/java/com/gmail/nossr50/commands/general/AddxpCommand.java index d476a3dee..e8ca5b33e 100644 --- a/src/main/java/com/gmail/nossr50/commands/general/AddxpCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/general/AddxpCommand.java @@ -84,6 +84,11 @@ public class AddxpCommand implements CommandExecutor { String playerName = modifiedPlayer.getName(); McMMOPlayer mcMMOPlayer = Users.getPlayer(modifiedPlayer); PlayerProfile profile = Users.getProfile(modifiedPlayer); + + if (profile == null) { + sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist")); + return true; + } if (!profile.isLoaded()) { sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist")); diff --git a/src/main/java/com/gmail/nossr50/commands/general/InspectCommand.java b/src/main/java/com/gmail/nossr50/commands/general/InspectCommand.java index 5404ae1ef..98518af14 100644 --- a/src/main/java/com/gmail/nossr50/commands/general/InspectCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/general/InspectCommand.java @@ -51,6 +51,11 @@ public class InspectCommand implements CommandExecutor { PlayerProfile profile = new PlayerProfile(args[0], false); //Temporary Profile + if (profile == null) { + sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist")); + return true; + } + if (!profile.isLoaded()) { sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist")); return true; diff --git a/src/main/java/com/gmail/nossr50/commands/general/MmoeditCommand.java b/src/main/java/com/gmail/nossr50/commands/general/MmoeditCommand.java index d4b347ad1..bb276e5af 100644 --- a/src/main/java/com/gmail/nossr50/commands/general/MmoeditCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/general/MmoeditCommand.java @@ -88,6 +88,11 @@ public class MmoeditCommand implements CommandExecutor { if (mcmmoPlayer != null) { profile = mcmmoPlayer.getProfile(); + if (profile == null) { + sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist")); + return true; + } + profile.modifySkill(skill, newValue); mcmmoPlayer.getPlayer().sendMessage(ChatColor.GREEN + "Your level in " + skillName + " was set to " + newValue + "!"); //TODO: Needs more locale. sender.sendMessage(ChatColor.RED + skillName + " has been modified for " + args[0] + "."); //TODO: Use locale @@ -95,6 +100,11 @@ public class MmoeditCommand implements CommandExecutor { else { profile = new PlayerProfile(args[0], false); //Temporary Profile + if (profile == null) { + sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist")); + return true; + } + if (!profile.isLoaded()) { sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist")); return true; diff --git a/src/main/java/com/gmail/nossr50/commands/general/SkillResetCommand.java b/src/main/java/com/gmail/nossr50/commands/general/SkillResetCommand.java index 63de48751..48404f88d 100644 --- a/src/main/java/com/gmail/nossr50/commands/general/SkillResetCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/general/SkillResetCommand.java @@ -45,6 +45,12 @@ public class SkillResetCommand implements CommandExecutor { //reset the values in the hash table and persist them PlayerProfile profile = Users.getProfile((Player)sender); + + if (profile == null) { + sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist")); + return true; + } + profile.resetSkill(skillType); profile.save(); diff --git a/src/main/java/com/gmail/nossr50/commands/mc/McabilityCommand.java b/src/main/java/com/gmail/nossr50/commands/mc/McabilityCommand.java index b91e32abe..98a698a87 100644 --- a/src/main/java/com/gmail/nossr50/commands/mc/McabilityCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/mc/McabilityCommand.java @@ -24,6 +24,11 @@ public class McabilityCommand implements CommandExecutor { PlayerProfile profile = Users.getProfile((Player) sender); + if (profile == null) { + sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist")); + return true; + } + if (profile.getAbilityUse()) { sender.sendMessage(LocaleLoader.getString("Commands.Ability.Off")); } diff --git a/src/main/java/com/gmail/nossr50/commands/mc/McgodCommand.java b/src/main/java/com/gmail/nossr50/commands/mc/McgodCommand.java index 572414499..ebbed2213 100644 --- a/src/main/java/com/gmail/nossr50/commands/mc/McgodCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/mc/McgodCommand.java @@ -24,6 +24,11 @@ public class McgodCommand implements CommandExecutor { PlayerProfile profile = Users.getProfile((Player) sender); + if (profile == null) { + sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist")); + return true; + } + if (profile.getGodMode()) { sender.sendMessage(LocaleLoader.getString("Commands.GodMode.Disabled")); } diff --git a/src/main/java/com/gmail/nossr50/commands/mc/McrefreshCommand.java b/src/main/java/com/gmail/nossr50/commands/mc/McrefreshCommand.java index efc9ce4f3..302007261 100644 --- a/src/main/java/com/gmail/nossr50/commands/mc/McrefreshCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/mc/McrefreshCommand.java @@ -47,6 +47,11 @@ public class McrefreshCommand implements CommandExecutor { profile = Users.getProfile(player); String playerName = player.getName(); + if (profile == null) { + sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist")); + return true; + } + if (!profile.isLoaded()) { sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist")); return true; From 6964f7adfcc76a91b4cbf091261c447df3fa6bc6 Mon Sep 17 00:00:00 2001 From: Glitchfinder Date: Tue, 30 Oct 2012 18:12:50 -0700 Subject: [PATCH 05/14] Resolving issue #238. --- .../java/com/gmail/nossr50/config/mods/CustomArmorConfig.java | 4 ++++ .../com/gmail/nossr50/config/mods/CustomBlocksConfig.java | 4 ++++ .../java/com/gmail/nossr50/config/mods/CustomToolsConfig.java | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/src/main/java/com/gmail/nossr50/config/mods/CustomArmorConfig.java b/src/main/java/com/gmail/nossr50/config/mods/CustomArmorConfig.java index d804147c0..a0d0fd530 100644 --- a/src/main/java/com/gmail/nossr50/config/mods/CustomArmorConfig.java +++ b/src/main/java/com/gmail/nossr50/config/mods/CustomArmorConfig.java @@ -49,6 +49,10 @@ public class CustomArmorConfig extends ConfigLoader{ private void loadArmor(String armorType, List idList) { ConfigurationSection armorSection = config.getConfigurationSection(armorType); + + if(armorSection == null) + return; + Set armorConfigSet = armorSection.getKeys(false); Iterator iterator = armorConfigSet.iterator(); diff --git a/src/main/java/com/gmail/nossr50/config/mods/CustomBlocksConfig.java b/src/main/java/com/gmail/nossr50/config/mods/CustomBlocksConfig.java index 9f3c7e958..d58db8684 100644 --- a/src/main/java/com/gmail/nossr50/config/mods/CustomBlocksConfig.java +++ b/src/main/java/com/gmail/nossr50/config/mods/CustomBlocksConfig.java @@ -48,6 +48,10 @@ public class CustomBlocksConfig extends ConfigLoader { private void loadBlocks(String skillType, List blockList) { ConfigurationSection skillSection = config.getConfigurationSection(skillType); + + if(skillSection == null) + return; + Set skillConfigSet = skillSection.getKeys(false); Iterator iterator = skillConfigSet.iterator(); diff --git a/src/main/java/com/gmail/nossr50/config/mods/CustomToolsConfig.java b/src/main/java/com/gmail/nossr50/config/mods/CustomToolsConfig.java index a32960f90..e0b3f5d7a 100644 --- a/src/main/java/com/gmail/nossr50/config/mods/CustomToolsConfig.java +++ b/src/main/java/com/gmail/nossr50/config/mods/CustomToolsConfig.java @@ -53,6 +53,10 @@ public class CustomToolsConfig extends ConfigLoader { private void loadTool(String toolType, List idList) { ConfigurationSection toolSection = config.getConfigurationSection(toolType); + + if(toolSection == null) + return; + Set toolConfigSet = toolSection.getKeys(false); Iterator iterator = toolConfigSet.iterator(); From a9ea2e01372eb2c12d16227f37474caddf048a65 Mon Sep 17 00:00:00 2001 From: Glitchfinder Date: Tue, 30 Oct 2012 19:24:20 -0700 Subject: [PATCH 06/14] Resolving issue #258. --- .../com/gmail/nossr50/skills/gathering/WoodCutting.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/com/gmail/nossr50/skills/gathering/WoodCutting.java b/src/main/java/com/gmail/nossr50/skills/gathering/WoodCutting.java index 4e6ec3899..d2529e951 100644 --- a/src/main/java/com/gmail/nossr50/skills/gathering/WoodCutting.java +++ b/src/main/java/com/gmail/nossr50/skills/gathering/WoodCutting.java @@ -298,6 +298,13 @@ public class WoodCutting { int skillLevel = Users.getProfile(player).getSkillLevel(SkillType.WOODCUTTING); byte type = block.getData(); + + if((type & 0x4) == 0x4) + type ^= 0x4; + + if((type & 0x8) == 0x8) + type ^= 0x8; + Material mat = Material.getMaterial(block.getTypeId()); int randomChance = 1000; From cd40507609c52dbb3f5e043a53a865c894d116e7 Mon Sep 17 00:00:00 2001 From: Glitchfinder Date: Tue, 30 Oct 2012 20:05:37 -0700 Subject: [PATCH 07/14] Resolving issue #211. --- .../nossr50/skills/gathering/WoodCutting.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/main/java/com/gmail/nossr50/skills/gathering/WoodCutting.java b/src/main/java/com/gmail/nossr50/skills/gathering/WoodCutting.java index d2529e951..60148c5b9 100644 --- a/src/main/java/com/gmail/nossr50/skills/gathering/WoodCutting.java +++ b/src/main/java/com/gmail/nossr50/skills/gathering/WoodCutting.java @@ -261,6 +261,39 @@ public class WoodCutting { } } + byte data = currentBlock.getData(); + + if((data & 0x4) == 0x4) + data ^= 0x4; + + if((data & 0x8) == 0x8) + data ^= 0x8; + + if(TreeSpecies.getByData(data) == TreeSpecies.JUNGLE) { + Block corner1 = currentBlock.getRelative(1, 0, 1); + Block corner2 = currentBlock.getRelative(1, 0, -1); + Block corner3 = currentBlock.getRelative(-1, 0, 1); + Block corner4 = currentBlock.getRelative(-1, 0, -1); + + if (!mcMMO.placeStore.isTrue(currentBlock)) { + if (!isTooAggressive(currentBlock, corner1) && BlockChecks.treeFellerCompatible(corner1) && !toBeFelled.contains(corner1)) { + processTreeFelling(corner1, toBeFelled); + } + + if (!isTooAggressive(currentBlock, corner2) && BlockChecks.treeFellerCompatible(corner2) && !toBeFelled.contains(corner2)) { + processTreeFelling(corner2, toBeFelled); + } + + if (!isTooAggressive(currentBlock, corner3) && BlockChecks.treeFellerCompatible(corner3) && !toBeFelled.contains(corner3)) { + processTreeFelling(corner3, toBeFelled); + } + + if (!isTooAggressive(currentBlock, corner4) && BlockChecks.treeFellerCompatible(corner4) && !toBeFelled.contains(corner4)) { + processTreeFelling(corner4, toBeFelled); + } + } + } + if (BlockChecks.treeFellerCompatible(yPositive)) { if(!mcMMO.placeStore.isTrue(currentBlock) && !toBeFelled.contains(yPositive)) { processTreeFelling(yPositive, toBeFelled); From 26a85846fc1fde0560a12f26fafde7a85d61c910 Mon Sep 17 00:00:00 2001 From: Glitchfinder Date: Tue, 30 Oct 2012 20:11:24 -0700 Subject: [PATCH 08/14] Resolving potential conflict with #285. --- .../nossr50/skills/gathering/Herbalism.java | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/src/main/java/com/gmail/nossr50/skills/gathering/Herbalism.java b/src/main/java/com/gmail/nossr50/skills/gathering/Herbalism.java index 9443325e4..027ab907d 100644 --- a/src/main/java/com/gmail/nossr50/skills/gathering/Herbalism.java +++ b/src/main/java/com/gmail/nossr50/skills/gathering/Herbalism.java @@ -37,9 +37,6 @@ public class Herbalism { * @param block The block to be changed by Green Terra */ public static void greenTerra(Player player, Block block) { - if(player == null) - return; - PlayerInventory inventory = player.getInventory(); boolean hasSeeds = inventory.contains(Material.SEEDS); @@ -54,9 +51,6 @@ public class Herbalism { } public static void greenTerraConvert(Player player, Block block) { - if(player == null) - return; - Material type = block.getType(); if (Misc.blockBreakSimulate(block, player, false)) { @@ -83,9 +77,6 @@ public class Herbalism { * @param plugin mcMMO plugin instance */ public static void herbalismProcCheck(final Block block, Player player, BlockBreakEvent event, mcMMO plugin) { - if(player == null) - return; - final PlayerProfile profile = Users.getProfile(player); final int MAX_BONUS_LEVEL = 1000; @@ -381,9 +372,6 @@ public class Herbalism { * @param plugin mcMMO plugin instance */ private static void greenThumbWheat(Block block, Player player, BlockBreakEvent event, mcMMO plugin) { - if(player == null) - return; - final int MAX_BONUS_LEVEL = 1500; PlayerProfile profile = Users.getProfile(player); @@ -419,9 +407,6 @@ public class Herbalism { * @param block The block being used in the ability */ public static void greenThumbBlocks(ItemStack is, Player player, Block block) { - if(player == null) - return; - final int MAX_BONUS_LEVEL = 1500; PlayerProfile profile = Users.getProfile(player); @@ -443,4 +428,4 @@ public class Herbalism { player.sendMessage(LocaleLoader.getString("Herbalism.Ability.GTh.Fail")); } } -} +} \ No newline at end of file From 30b87e8035828dffe7aa04957ece7bf546580d51 Mon Sep 17 00:00:00 2001 From: Glitchfinder Date: Tue, 30 Oct 2012 20:12:43 -0700 Subject: [PATCH 09/14] Resolving potential conflict with #285. (Missed the newline) --- src/main/java/com/gmail/nossr50/skills/gathering/Herbalism.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gmail/nossr50/skills/gathering/Herbalism.java b/src/main/java/com/gmail/nossr50/skills/gathering/Herbalism.java index 027ab907d..ee5f9e014 100644 --- a/src/main/java/com/gmail/nossr50/skills/gathering/Herbalism.java +++ b/src/main/java/com/gmail/nossr50/skills/gathering/Herbalism.java @@ -428,4 +428,4 @@ public class Herbalism { player.sendMessage(LocaleLoader.getString("Herbalism.Ability.GTh.Fail")); } } -} \ No newline at end of file +} From 87c4f318a41da126c06145cb484ac0b397641fd4 Mon Sep 17 00:00:00 2001 From: Glitchfinder Date: Wed, 31 Oct 2012 12:39:04 -0700 Subject: [PATCH 10/14] Fixing fishing a bit. --- .../com/gmail/nossr50/skills/gathering/Fishing.java | 6 +++--- src/main/java/com/gmail/nossr50/util/ItemChecks.java | 11 +++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gmail/nossr50/skills/gathering/Fishing.java b/src/main/java/com/gmail/nossr50/skills/gathering/Fishing.java index 24e837814..12aef4cd5 100755 --- a/src/main/java/com/gmail/nossr50/skills/gathering/Fishing.java +++ b/src/main/java/com/gmail/nossr50/skills/gathering/Fishing.java @@ -153,7 +153,7 @@ public class Fishing { player.sendMessage(LocaleLoader.getString("Fishing.ItemFound")); - if (ItemChecks.isArmor(fishingResults) || ItemChecks.isTool(fishingResults)) { + if (ItemChecks.isEnchantable(fishingResults)) { int randomChance = 100; if (player.hasPermission("mcmmo.perks.lucky.fishing")) { @@ -205,7 +205,7 @@ public class Fishing { randomChance = (int) (randomChance * 0.75); } - final int DROP_NUMBER = random.nextInt(randomChance); + final int DROP_NUMBER = random.nextInt(randomChance) + 1; LivingEntity le = (LivingEntity) event.getCaught(); EntityType type = le.getType(); @@ -385,7 +385,7 @@ public class Fishing { break; case WITCH: - final int DROP_NUMBER_2 = random.nextInt(randomChance); + final int DROP_NUMBER_2 = random.nextInt(randomChance) + 1; if (DROP_NUMBER > 97) { if(DROP_NUMBER_2 > 66) { Misc.dropItem(location, new ItemStack(Material.POTION, 1, (short) 8197)); diff --git a/src/main/java/com/gmail/nossr50/util/ItemChecks.java b/src/main/java/com/gmail/nossr50/util/ItemChecks.java index 429d5e8d5..3e195b922 100644 --- a/src/main/java/com/gmail/nossr50/util/ItemChecks.java +++ b/src/main/java/com/gmail/nossr50/util/ItemChecks.java @@ -1,6 +1,7 @@ package com.gmail.nossr50.util; import org.bukkit.inventory.ItemStack; +import org.bukkit.Material; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.api.SpoutToolsAPI; @@ -463,4 +464,14 @@ public class ItemChecks { return false; } } + + /** + * Checks to see if an item is enchantable. + * + * @param is Item to check + * @return true if the item is enchantable, false otherwise + */ + public static boolean isEnchantable(ItemStack is) { + return isArmor(is) || isSword(is) || isAxe(is) || isShovel(is) || isPickaxe(is) || (is.getType() == Material.BOW); + } } From d9346ab2603395113d2f0a18e55dd01c10c3005d Mon Sep 17 00:00:00 2001 From: Glitchfinder Date: Wed, 31 Oct 2012 15:44:45 -0700 Subject: [PATCH 11/14] Fixing default experience for the newer herbalism materials. --- src/main/java/com/gmail/nossr50/config/Config.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gmail/nossr50/config/Config.java b/src/main/java/com/gmail/nossr50/config/Config.java index 7117c996f..a4189dadd 100644 --- a/src/main/java/com/gmail/nossr50/config/Config.java +++ b/src/main/java/com/gmail/nossr50/config/Config.java @@ -164,9 +164,9 @@ public class Config extends ConfigLoader { public int getHerbalismXPNetherWart() { return config.getInt("Experience.Herbalism.Nether_Wart", 50); } public int getHerbalismXPLilyPads() { return config.getInt("Experience.Herbalism.Lily_Pads", 100); } public int getHerbalismXPVines() { return config.getInt("Experience.Herbalism.Vines", 10); } - public int getHerbalismXPCocoa() { return config.getInt("Experience.Herbalism.Cocoa",30); } - public int getHerbalismXPCarrot() { return config.getInt("Experience.Herbalism.Carrot",30); } - public int getHerbalismXPPotato() { return config.getInt("Experience.Herbalism.Potato",30); } + public int getHerbalismXPCocoa() { return config.getInt("Experience.Herbalism.Cocoa", 30); } + public int getHerbalismXPCarrot() { return config.getInt("Experience.Herbalism.Carrot", 50); } + public int getHerbalismXPPotato() { return config.getInt("Experience.Herbalism.Potato", 50); } public boolean getHerbalismGreenThumbCobbleToMossy() { return config.getBoolean("Skills.Herbalism.Green_Thumb.Cobble_To_Mossy", true); } public boolean getHerbalismGreenThumbSmoothbrickToMossy() { return config.getBoolean("Skills.Herbalism.Green_Thumb.SmoothBrick_To_MossyBrick", true); } From be4e62fe9dbb77ddb3ff0f5a658fd775dd496a11 Mon Sep 17 00:00:00 2001 From: Glitchfinder Date: Wed, 31 Oct 2012 22:47:04 -0700 Subject: [PATCH 12/14] Hopefully addresses part of the empty enchant issue. --- .../java/com/gmail/nossr50/skills/gathering/Fishing.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gmail/nossr50/skills/gathering/Fishing.java b/src/main/java/com/gmail/nossr50/skills/gathering/Fishing.java index 12aef4cd5..7af39c864 100755 --- a/src/main/java/com/gmail/nossr50/skills/gathering/Fishing.java +++ b/src/main/java/com/gmail/nossr50/skills/gathering/Fishing.java @@ -166,9 +166,8 @@ public class Fishing { Map resultEnchantments = fishingResults.getEnchantments(); for (Enchantment oldEnchant : resultEnchantments.keySet()) { - if (oldEnchant.conflictsWith(newEnchant)) { - return; - } + if (oldEnchant.conflictsWith(newEnchant)) + continue; } /* Actual chance to have an enchantment is related to your fishing skill */ @@ -180,6 +179,9 @@ public class Fishing { randomEnchantLevel = newEnchant.getStartLevel(); } + if(randomEnchantLevel >= 1000) + continue; + fishingResults.addEnchantment(newEnchant, randomEnchantLevel); } } From 61ae4826d17e1f6d19bd1b885fb3a7c548f5499f Mon Sep 17 00:00:00 2001 From: Glitchfinder Date: Thu, 1 Nov 2012 16:43:59 -0700 Subject: [PATCH 13/14] Addresses issue #286. --- .../java/com/gmail/nossr50/commands/party/PtpCommand.java | 1 + .../java/com/gmail/nossr50/datatypes/PlayerProfile.java | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gmail/nossr50/commands/party/PtpCommand.java b/src/main/java/com/gmail/nossr50/commands/party/PtpCommand.java index 9136fb4aa..86cadfb95 100644 --- a/src/main/java/com/gmail/nossr50/commands/party/PtpCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/party/PtpCommand.java @@ -72,6 +72,7 @@ public class PtpCommand implements CommandExecutor { player.teleport(target); player.sendMessage(LocaleLoader.getString("Party.Teleport.Player", new Object[] { target.getName() })); target.sendMessage(LocaleLoader.getString("Party.Teleport.Target", new Object[] { player.getName() })); + profile.setRecentlyHurt(System.currentTimeMillis()); } else { player.sendMessage(LocaleLoader.getString("Party.NotInYourParty", new Object[] { target.getName() })); diff --git a/src/main/java/com/gmail/nossr50/datatypes/PlayerProfile.java b/src/main/java/com/gmail/nossr50/datatypes/PlayerProfile.java index 794638369..b0b0c4f50 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/PlayerProfile.java +++ b/src/main/java/com/gmail/nossr50/datatypes/PlayerProfile.java @@ -41,7 +41,7 @@ public class PlayerProfile { private boolean abilityUse = true; /* Timestamps */ - private int recentlyHurt; + private long recentlyHurt; private int respawnATS; /* mySQL STUFF */ @@ -826,11 +826,11 @@ public class PlayerProfile { * Recently Hurt */ - public int getRecentlyHurt() { + public long getRecentlyHurt() { return recentlyHurt; } - public void setRecentlyHurt(int value) { + public void setRecentlyHurt(long value) { recentlyHurt = value; } From d532164cd6e479b8d588345880e6cdd35aacd3c8 Mon Sep 17 00:00:00 2001 From: Glitchfinder Date: Fri, 2 Nov 2012 08:45:50 -0700 Subject: [PATCH 14/14] Incorporating #287 due to incompatible edits. --- src/main/java/com/gmail/nossr50/skills/gathering/Fishing.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gmail/nossr50/skills/gathering/Fishing.java b/src/main/java/com/gmail/nossr50/skills/gathering/Fishing.java index 7af39c864..dcbba60d8 100755 --- a/src/main/java/com/gmail/nossr50/skills/gathering/Fishing.java +++ b/src/main/java/com/gmail/nossr50/skills/gathering/Fishing.java @@ -157,7 +157,7 @@ public class Fishing { int randomChance = 100; if (player.hasPermission("mcmmo.perks.lucky.fishing")) { - randomChance = (int) (randomChance * 0.75); + randomChance = (int) (randomChance * 1.25); } if (random.nextInt(randomChance) <= ENCHANTMENT_CHANCE && Permissions.getInstance().fishingMagic(player)) {