Advertisement
Guest User

Untitled

a guest
Aug 1st, 2014
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.81 KB | None | 0 0
  1. package Me.GarotoGamer;
  2.  
  3. import java.util.HashMap;
  4. import java.util.Map;
  5.  
  6. import org.bukkit.Material;
  7. import org.bukkit.craftbukkit.v1_7_R1.entity.CraftPlayer;
  8. import org.bukkit.entity.Player;
  9. import org.bukkit.event.EventHandler;
  10. import org.bukkit.event.Listener;
  11. import org.bukkit.event.block.Action;
  12. import org.bukkit.event.entity.PlayerLeashEntityEvent;
  13. import org.bukkit.event.player.PlayerInteractEvent;
  14. import org.bukkit.event.player.PlayerItemHeldEvent;
  15. import org.bukkit.event.player.PlayerMoveEvent;
  16. import org.bukkit.util.Vector;
  17.  
  18. public class Grappler
  19. implements Listener
  20. {
  21. Map<Player, CopyOfFishingHook> hooks = new HashMap<Player, CopyOfFishingHook>();
  22.  
  23. @EventHandler
  24. public void onSlot(PlayerItemHeldEvent e)
  25. {
  26. if (this.hooks.containsKey(e.getPlayer()))
  27. {
  28. ((CopyOfFishingHook)this.hooks.get(e.getPlayer())).remove();
  29. this.hooks.remove(e.getPlayer());
  30. }
  31. }
  32.  
  33. @EventHandler
  34. public void onMove(PlayerMoveEvent e)
  35. {
  36. if ((this.hooks.containsKey(e.getPlayer())) && ((!e.getPlayer().getItemInHand().getType().equals(Material.LEASH)) || (!e.getPlayer().getItemInHand().hasItemMeta()) || (!e.getPlayer().getItemInHand().getItemMeta().hasDisplayName()) || (!e.getPlayer().getItemInHand().getItemMeta().getDisplayName().equals("§cGrappler"))))
  37. {
  38. ((CopyOfFishingHook)this.hooks.get(e.getPlayer())).remove();
  39. this.hooks.remove(e.getPlayer());
  40. }
  41. }
  42.  
  43. @SuppressWarnings("deprecation")
  44. @EventHandler
  45. public void onLeash(PlayerLeashEntityEvent e)
  46. {
  47. Player p = e.getPlayer();
  48. if ((e.getPlayer().getItemInHand().getType().equals(Material.LEASH)) && (p.getItemInHand().hasItemMeta()) && (p.getItemInHand().getItemMeta().hasDisplayName()) && (p.getItemInHand().getItemMeta().getDisplayName().equals("§cGrappler")))
  49. {
  50. e.setCancelled(true);
  51. e.getPlayer().updateInventory();
  52. e.setCancelled(true);
  53. if (!this.hooks.containsKey(p)) {
  54. return;
  55. }
  56. if (!((CopyOfFishingHook)this.hooks.get(p)).isHooked()) {
  57. return;
  58. }
  59. double d = ((CopyOfFishingHook)this.hooks.get(p)).getBukkitEntity().getLocation().distance(p.getLocation());
  60. double t = d;
  61. double v_x = (1.0D + 0.07000000000000001D * t) * (((CopyOfFishingHook)this.hooks.get(p)).getBukkitEntity().getLocation().getX() - p.getLocation().getX()) / t;
  62. double v_y = (1.0D + 0.03D * t) * (((CopyOfFishingHook)this.hooks.get(p)).getBukkitEntity().getLocation().getY() - p.getLocation().getY()) / t;
  63. double v_z = (1.0D + 0.07000000000000001D * t) * (((CopyOfFishingHook)this.hooks.get(p)).getBukkitEntity().getLocation().getZ() - p.getLocation().getZ()) / t;
  64.  
  65. Vector v = p.getVelocity();
  66. v.setX(v_x);
  67. v.setY(v_y);
  68. v.setZ(v_z);
  69. p.setVelocity(v);
  70. }
  71. }
  72.  
  73. @EventHandler
  74. public void onClick(PlayerInteractEvent e)
  75. {
  76. Player p = e.getPlayer();
  77. if ((e.getPlayer().getItemInHand().getType().equals(Material.LEASH)) && (p.getItemInHand().hasItemMeta()) && (p.getItemInHand().getItemMeta().hasDisplayName()) && (p.getItemInHand().getItemMeta().getDisplayName().equals("§cGrappler")))
  78. {
  79. e.setCancelled(true);
  80. if ((e.getAction() == Action.LEFT_CLICK_AIR) || (e.getAction() == Action.LEFT_CLICK_BLOCK))
  81. {
  82. if (this.hooks.containsKey(p)) {
  83. ((CopyOfFishingHook)this.hooks.get(p)).remove();
  84. }
  85. CopyOfFishingHook nmsHook = new CopyOfFishingHook(p.getWorld(), ((CraftPlayer)p).getHandle());
  86. nmsHook.spawn(p.getEyeLocation().add(p.getLocation().getDirection().getX(), p.getLocation().getDirection().getY(), p.getLocation().getDirection().getZ()));
  87. nmsHook.move(p.getLocation().getDirection().getX() * 5.0D, p.getLocation().getDirection().getY() * 5.0D, p.getLocation().getDirection().getZ() * 5.0D);
  88. this.hooks.put(p, nmsHook);
  89. }
  90. else
  91. {
  92. if (!this.hooks.containsKey(p)) {
  93. return;
  94. }
  95. if (!((CopyOfFishingHook)this.hooks.get(p)).isHooked()) {
  96. return;
  97. }
  98. double d = ((CopyOfFishingHook)this.hooks.get(p)).getBukkitEntity().getLocation().distance(p.getLocation());
  99. double t = d;
  100. double v_x = (1.0D + 0.07000000000000001D * t) * (((CopyOfFishingHook)this.hooks.get(p)).getBukkitEntity().getLocation().getX() - p.getLocation().getX()) / t;
  101. double v_y = (1.0D + 0.03D * t) * (((CopyOfFishingHook)this.hooks.get(p)).getBukkitEntity().getLocation().getY() - p.getLocation().getY()) / t;
  102. double v_z = (1.0D + 0.07000000000000001D * t) * (((CopyOfFishingHook)this.hooks.get(p)).getBukkitEntity().getLocation().getZ() - p.getLocation().getZ()) / t;
  103.  
  104. Vector v = p.getVelocity();
  105. v.setX(v_x);
  106. v.setY(v_y);
  107. v.setZ(v_z);
  108. p.setVelocity(v);
  109. }
  110. }
  111. }
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement