CallOfTheWildEventHandler.java 2.9 KB

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