Prechádzať zdrojové kódy

Fixing everything you guys broke while I was gone...

GJ 12 rokov pred
rodič
commit
501f5de55a

+ 14 - 7
src/main/java/com/gmail/nossr50/listeners/EntityListener.java

@@ -15,7 +15,6 @@ import org.bukkit.event.EventHandler;
 import org.bukkit.event.EventPriority;
 import org.bukkit.event.Listener;
 import org.bukkit.event.entity.CreatureSpawnEvent;
-import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
 import org.bukkit.event.entity.EntityChangeBlockEvent;
 import org.bukkit.event.entity.EntityDamageByEntityEvent;
 import org.bukkit.event.entity.EntityDamageEvent;
@@ -302,13 +301,21 @@ public class EntityListener implements Listener {
             return;
         }
 
-        SpawnReason reason = event.getSpawnReason();
+        switch (event.getSpawnReason()) {
+            case SPAWNER:
+            case SPAWNER_EGG:
+                LivingEntity entity = event.getEntity();
+                Entity passenger = entity.getPassenger();
 
-        if (reason == SpawnReason.SPAWNER || reason == SpawnReason.SPAWNER_EGG) {
-            event.getEntity().setMetadata(mcMMO.entityMetadataKey, mcMMO.metadataValue);
-            if(event.getEntity().getPassenger() != null) {
-                event.getEntity().getPassenger().setMetadata(mcMMO.entityMetadataKey, mcMMO.metadataValue);
-            }
+                entity.setMetadata(mcMMO.entityMetadataKey, mcMMO.metadataValue);
+
+                if (passenger != null) {
+                    passenger.setMetadata(mcMMO.entityMetadataKey, mcMMO.metadataValue);
+                }
+                return;
+
+            default:
+                return;
         }
     }
 

+ 5 - 2
src/main/java/com/gmail/nossr50/listeners/PlayerListener.java

@@ -320,14 +320,15 @@ public class PlayerListener implements Listener {
     public void onPlayerInteractLowest(PlayerInteractEvent event) {
         Player player = event.getPlayer();
         Block block = event.getClickedBlock();
-        ItemStack heldItem = player.getItemInHand();
 
         if (Misc.isNPCEntity(player) || player.getGameMode() == GameMode.CREATIVE) {
             return;
         }
 
+        ItemStack heldItem = player.getItemInHand();
         McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
 
+        // This shouldn't be possible - this is probably a band-aid for a larger issue somewhere else.
         if (mcMMOPlayer == null) {
             return;
         }
@@ -427,6 +428,7 @@ public class PlayerListener implements Listener {
         ItemStack heldItem = player.getItemInHand();
         McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
 
+        // This shouldn't be possible - this is probably a band-aid for a larger issue somewhere else.
         if (mcMMOPlayer == null) {
             return;
         }
@@ -532,7 +534,8 @@ public class PlayerListener implements Listener {
         if (mcMMOPlayer == null) {
             return;
         }
-        else if (mcMMOPlayer.getPartyChatMode()) {
+
+        if (mcMMOPlayer.getPartyChatMode()) {
             Party party = mcMMOPlayer.getParty();
 
             if (party == null) {

+ 29 - 32
src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java

@@ -49,7 +49,7 @@ import com.gmail.nossr50.util.skills.CombatUtils;
 import com.gmail.nossr50.util.skills.SkillUtils;
 
 public class FishingManager extends SkillManager {
-    private static HashMap<Material, List<Enchantment>> enchantableCache = new HashMap<Material, List<Enchantment>>();
+    private final HashMap<Material, List<Enchantment>> enchantableCache = new HashMap<Material, List<Enchantment>>();
     private final long FISHING_COOLDOWN_SECONDS = 1000L;
 
     private int fishingTries = 0;
@@ -112,12 +112,7 @@ public class FishingManager extends SkillManager {
 
         player.setItemInHand(null);
 
-        Creature kraken;
-        if (Misc.getRandom().nextInt(100) == 0) {
-            kraken = (Creature) world.spawnEntity(player.getEyeLocation(), EntityType.CHICKEN);
-        } else {
-            kraken = (Creature) world.spawnEntity(player.getEyeLocation(), EntityType.SQUID);
-        }
+        Creature kraken = (Creature) world.spawnEntity(player.getEyeLocation(), (Misc.getRandom().nextInt(100) == 0 ? EntityType.CHICKEN : EntityType.SQUID));
         kraken.setCustomName(AdvancedConfig.getInstance().getKrakenName());
 
         if (!kraken.isValid()) {
@@ -418,23 +413,7 @@ public class FishingManager extends SkillManager {
             return false;
         }
 
-        // When calculating the possible enchantments, we should cache the possible enchantments to minimize
-        // looping every time someone fishes.
-        List<Enchantment> possibleEnchantments;
-
-        if (enchantableCache.containsKey(treasureDrop.getType())) { // Check if possible enchantments is already cached for this item.
-            possibleEnchantments = enchantableCache.get(treasureDrop.getType());
-        } else { // If not, check which enchantments are possible
-            possibleEnchantments = new ArrayList<Enchantment>();
-
-            for (Enchantment enchantment : Enchantment.values()) {
-                if (enchantment.canEnchantItem(treasureDrop)) {
-                    possibleEnchantments.add(enchantment);
-                }
-            }
-        	
-            enchantableCache.put(treasureDrop.getType(), possibleEnchantments); // Cache these enchantments.
-        }
+        List<Enchantment> possibleEnchantments = getPossibleEnchantments(treasureDrop);
 
         // This make sure that the order isn't always the same, for example previously Unbreaking had a lot more chance to be used than any other enchant
         Collections.shuffle(possibleEnchantments, Misc.getRandom());
@@ -443,20 +422,38 @@ public class FishingManager extends SkillManager {
         int specificChance = 1;
 
         for (Enchantment possibleEnchantment : possibleEnchantments) {
-            if (!treasureDrop.getItemMeta().hasConflictingEnchant(possibleEnchantment) && Misc.getRandom().nextInt(specificChance) == 0) {
-                // We need our random enchantment level to fall in the range between getStartLevel() and getMaxLevel()
-                // so we take a random number in the range of their difference, then add the start level.
-                final int levelDiff = possibleEnchantment.getMaxLevel() - possibleEnchantment.getStartLevel();
-                treasureDrop.addEnchantment(possibleEnchantment, Misc.getRandom().nextInt(levelDiff + 1) + possibleEnchantment.getStartLevel());
-
-                specificChance++;
-                enchanted = true;
+            if (treasureDrop.getItemMeta().hasConflictingEnchant(possibleEnchantment) || Misc.getRandom().nextInt(specificChance) != 0) {
+                continue;
             }
+
+            treasureDrop.addEnchantment(possibleEnchantment, Math.max(Misc.getRandom().nextInt(possibleEnchantment.getMaxLevel()) + 1, possibleEnchantment.getStartLevel()));
+
+            specificChance++;
+            enchanted = true;
         }
 
         return enchanted;
     }
 
+    private List<Enchantment> getPossibleEnchantments(ItemStack treasureDrop) {
+        Material dropType = treasureDrop.getType();
+
+        if (enchantableCache.containsKey(dropType)) {
+            return enchantableCache.get(dropType);
+        }
+
+        List<Enchantment> possibleEnchantments = new ArrayList<Enchantment>();
+
+        for (Enchantment enchantment : Enchantment.values()) {
+            if (enchantment.canEnchantItem(treasureDrop)) {
+                possibleEnchantments.add(enchantment);
+            }
+        }
+
+        enchantableCache.put(dropType, possibleEnchantments);
+        return possibleEnchantments;
+    }
+
     /**
      * Gets the vanilla XP multiplier
      *

+ 4 - 3
src/main/java/com/gmail/nossr50/util/MobHealthbarUtils.java

@@ -46,10 +46,11 @@ public final class MobHealthbarUtils {
 
         PlayerProfile profile = UserManager.getPlayer(player).getProfile();
 
-        if (profile == null) {
-            return;
+        if (profile.getMobHealthbarType() == null) {
+            profile.setMobHealthbarType(Config.getInstance().getMobHealthbarDefault());
         }
-        else if (profile.getMobHealthbarType() == MobHealthbarType.DISABLED) {
+
+        if (profile.getMobHealthbarType() == MobHealthbarType.DISABLED) {
             return;
         }
 

+ 2 - 2
src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java

@@ -332,11 +332,11 @@ public class SkillUtils {
         if (!mcMMOPlayer.getAbilityMode(ability) && cooldownOver(playerProfile.getSkillDATS(ability), ability.getCooldown(), player)) {
             McMMOPlayerAbilityActivateEvent event = new McMMOPlayerAbilityActivateEvent(player, type);
             mcMMO.p.getServer().getPluginManager().callEvent(event);
-            
+
             if (event.isCancelled()) {
                 return;
             }
-            
+
             int ticks = PerksUtils.handleActivationPerks(player, 2 + (playerProfile.getSkillLevel(type) / AdvancedConfig.getInstance().getAbilityLength()), ability.getMaxTicks());
 
             ParticleEffectUtils.playAbilityEnabledEffect(player);