Browse Source

Fixed bug with ChimaeraWings not taking Wings from a players inventory properly

Fixes #914
TfT_02 12 years ago
parent
commit
0ebc555136

+ 1 - 0
Changelog.txt

@@ -11,6 +11,7 @@ Version 1.4.05-dev
  + Added option to allow refreshing of chunks after block-breaking abilities. (Disabled by default)
  = Fixed bug where /addxp was setting instead of adding experience
  = Fixed bug which allowed players to share experience with nearby dead players
+ = Fixed bug with ChimaeraWings not taking Wings from a players inventory properly
 
 Version 1.4.04
  + Added functions to ExperienceAPI for use with offline players

+ 13 - 7
src/main/java/com/gmail/nossr50/runnables/items/ChimaeraWingWarmup.java

@@ -3,11 +3,14 @@ package com.gmail.nossr50.runnables.items;
 import org.bukkit.ChatColor;
 import org.bukkit.Location;
 import org.bukkit.entity.Player;
+import org.bukkit.inventory.ItemStack;
 import org.bukkit.scheduler.BukkitRunnable;
 
+import com.gmail.nossr50.config.Config;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.util.ChimaeraWing;
+import com.gmail.nossr50.util.ItemUtils;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.skills.SkillUtils;
 
@@ -28,22 +31,25 @@ public class ChimaeraWingWarmup extends BukkitRunnable {
         Location previousLocation = mcMMOPlayer.getChimaeraCommenceLocation();
         Location newLocation = mcMMOPlayer.getPlayer().getLocation();
         long recentlyHurt = mcMMOPlayer.getRecentlyHurt();
+        ItemStack inHand = player.getItemInHand();
 
-        if (newLocation.distanceSquared(previousLocation) > 1.0) {
-            player.sendMessage(ChatColor.RED + "Teleportation canceled!"); //TODO Locale!
+        mcMMOPlayer.setChimaeraCommenceLocation(null);
+
+        if (newLocation.distanceSquared(previousLocation) > 1.0 || !player.getInventory().containsAtLeast(ChimaeraWing.getChimaeraWing(0), 1)) {
+            player.sendMessage(ChatColor.DARK_RED + "Teleportation canceled!"); //TODO Locale!
+            return;
+        }
 
-            mcMMOPlayer.setChimaeraCommenceLocation(null);
+        if (!ItemUtils.isChimaeraWing(inHand) || inHand.getAmount() < Config.getInstance().getChimaeraUseCost()) {
+            player.sendMessage(ChatColor.DARK_RED + "Not holding enough " + ChatColor.GRAY + "ChimaeraWings"); //TODO Locale!
             return;
         }
 
         if (!SkillUtils.cooldownOver(recentlyHurt * Misc.TIME_CONVERSION_FACTOR, 60, player)) {
             player.sendMessage(LocaleLoader.getString("Item.Injured.Wait", SkillUtils.calculateTimeLeft(recentlyHurt * Misc.TIME_CONVERSION_FACTOR, 60, player)));
-
-            mcMMOPlayer.setChimaeraCommenceLocation(null);
             return;
         }
-        ChimaeraWing.chimaeraExecuteTeleport();
 
-        mcMMOPlayer.setChimaeraCommenceLocation(null);
+        ChimaeraWing.chimaeraExecuteTeleport();
     }
 }