CallOfTheWildEventHandler.java 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package com.gmail.nossr50.skills.taming;
  2. import org.bukkit.ChatColor;
  3. import org.bukkit.Material;
  4. import org.bukkit.entity.Entity;
  5. import org.bukkit.entity.EntityType;
  6. import org.bukkit.entity.LivingEntity;
  7. import org.bukkit.entity.Ocelot;
  8. import org.bukkit.entity.Player;
  9. import org.bukkit.entity.Tameable;
  10. import org.bukkit.inventory.ItemStack;
  11. import org.bukkit.metadata.FixedMetadataValue;
  12. import com.gmail.nossr50.mcMMO;
  13. import com.gmail.nossr50.locale.LocaleLoader;
  14. import com.gmail.nossr50.util.Misc;
  15. public class CallOfTheWildEventHandler {
  16. protected Player player;
  17. protected ItemStack inHand;
  18. protected EntityType type;
  19. protected int summonAmount;
  20. protected CallOfTheWildEventHandler(Player player, EntityType type, int summonAmount) {
  21. this.player = player;
  22. this.inHand = player.getItemInHand();
  23. this.type = type;
  24. this.summonAmount = summonAmount;
  25. }
  26. protected void sendInsufficientAmountMessage() {
  27. if(player == null)
  28. return;
  29. player.sendMessage(LocaleLoader.getString("Skills.NeedMore") + " " + ChatColor.GRAY + Misc.prettyItemString(inHand.getTypeId()));
  30. }
  31. protected boolean nearbyEntityExists() {
  32. if(player == null)
  33. return false;
  34. boolean entityExists = false;
  35. for (Entity entity : player.getNearbyEntities(40, 40, 40)) {
  36. if (entity.getType() == type) {
  37. entityExists = true;
  38. break;
  39. }
  40. }
  41. return entityExists;
  42. }
  43. protected void sendFailureMessage() {
  44. if(player == null)
  45. return;
  46. if (type == EntityType.OCELOT) {
  47. player.sendMessage(LocaleLoader.getString("Taming.Summon.Fail.Ocelot"));
  48. }
  49. else {
  50. player.sendMessage(LocaleLoader.getString("Taming.Summon.Fail.Wolf"));
  51. }
  52. }
  53. protected void spawnCreature() {
  54. if(player == null)
  55. return;
  56. LivingEntity entity = (LivingEntity) player.getWorld().spawnEntity(player.getLocation(), type);
  57. mcMMO.p.placeStore.addSpawnedPet((Entity) entity);
  58. ((Tameable) entity).setOwner(player);
  59. if (type == EntityType.OCELOT) {
  60. ((Ocelot) entity).setCatType(Ocelot.Type.getType(1 + Taming.getRandom().nextInt(3)));
  61. }
  62. else {
  63. entity.setHealth(entity.getMaxHealth());
  64. }
  65. }
  66. protected void processResourceCost() {
  67. if(player == null)
  68. return;
  69. int newAmount = inHand.getAmount() - summonAmount;
  70. if (newAmount == 0) {
  71. player.setItemInHand(new ItemStack(Material.AIR));
  72. }
  73. else {
  74. player.getItemInHand().setAmount(inHand.getAmount() - summonAmount);
  75. }
  76. }
  77. protected void sendSuccessMessage() {
  78. if(player == null)
  79. return;
  80. player.sendMessage(LocaleLoader.getString("Taming.Summon.Complete"));
  81. }
  82. }