Advertisement
Whoneedspacee

Untitled

Feb 8th, 2018
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.20 KB | None | 0 0
  1. package niervaco;
  2.  
  3. import java.util.HashMap;
  4. import java.util.HashSet;
  5.  
  6. import org.bukkit.Location;
  7. import org.bukkit.Material;
  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.EntityDamageEvent;
  13. import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
  14. import org.bukkit.event.player.PlayerInteractEvent;
  15. import org.bukkit.event.player.PlayerJoinEvent;
  16. import org.bukkit.event.player.PlayerQuitEvent;
  17. import org.bukkit.event.player.PlayerToggleFlightEvent;
  18. import org.bukkit.plugin.java.JavaPlugin;
  19. import org.bukkit.scheduler.BukkitRunnable;
  20. import org.bukkit.util.Vector;
  21.  
  22. public class Meteorstrike extends JavaPlugin implements Listener{
  23.  
  24. // uuid, time.
  25. HashMap<String, Integer> cooldownDash = new HashMap<String, Integer>();
  26. // uuid, player task.
  27. HashMap<String, BukkitRunnable> dashingFlame = new HashMap<String, BukkitRunnable>();
  28. // uuid, time.
  29. HashMap<String, Integer> cooldownStrike = new HashMap<String, Integer>();
  30. // uuid, player task.
  31. HashMap<String, BukkitRunnable> dashingStrike = new HashMap<String, BukkitRunnable>();
  32. // list of players
  33. HashSet<Player> players = new HashSet<Player>();
  34.  
  35. @Override
  36. public void onEnable() {
  37.  
  38. getServer().getPluginManager().registerEvents(this, this);
  39.  
  40. // cooldowns
  41. new BukkitRunnable(){
  42.  
  43. @Override
  44. public void run() {
  45. for(String uuid : cooldownDash.keySet()) {
  46. if(cooldownDash.get(uuid) <= 0) {
  47. cooldownDash.remove(uuid);
  48. }
  49. else {
  50. cooldownDash.put(uuid, cooldownDash.get(uuid) - 1);
  51. }
  52. }
  53. for(String uuid : cooldownStrike.keySet()) {
  54. if(cooldownStrike.get(uuid) <= 0) {
  55. cooldownStrike.remove(uuid);
  56. }
  57. else {
  58. cooldownStrike.put(uuid, cooldownStrike.get(uuid) - 1);
  59. }
  60. }
  61. }
  62.  
  63. }.runTaskTimer(this, 0, 20);
  64.  
  65. new BukkitRunnable() {
  66.  
  67. @Override
  68. public void run() {
  69. for(Player p : players) {
  70. Location under = p.getLocation();
  71. under.setY(under.getY() - 1);
  72. if(under.getBlock().getType() != Material.AIR) {
  73. p.setAllowFlight(true);
  74. }
  75. }
  76. }
  77.  
  78. }.runTaskTimer(this, 0, 1);
  79.  
  80. }
  81.  
  82.  
  83. @EventHandler
  84. public void PlayerInteract(PlayerInteractEvent e) {
  85. Player p = e.getPlayer();
  86. String uuid = p.getUniqueId().toString();
  87.  
  88. // flame dash
  89. if(p.getItemInHand().getType().equals(Material.IRON_SPADE) && e.getAction().equals(Action.RIGHT_CLICK_AIR) || p.getItemInHand().getType().equals(Material.IRON_SPADE) && e.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
  90. if(!cooldownDash.containsKey(uuid) && !dashingStrike.containsKey(uuid)) {
  91. Vector v = p.getLocation().getDirection().setY(0);
  92. v.normalize();
  93. v.setY(0.05);
  94. dash(p, v, 20, 2, 10, 0);
  95. cooldownDash.put(uuid, 8);
  96. }
  97. else if(dashingFlame.containsKey(uuid)){
  98. dashingFlame.get(uuid).cancel(); // put magmaExplode(uuid) method that does this and applies damage / particles etc
  99. dashingFlame.remove(uuid);
  100. }
  101. else {
  102. p.sendMessage("cooldown" + Integer.toString(cooldownDash.get(uuid)));
  103. }
  104. }
  105.  
  106. // meteor strike
  107. if(p.getItemInHand().getType().equals(Material.IRON_SWORD) && e.getAction().equals(Action.RIGHT_CLICK_AIR) || p.getItemInHand().getType().equals(Material.IRON_SWORD) && e.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
  108. if(!cooldownStrike.containsKey(uuid)) {
  109. if(dashingFlame.containsKey(uuid)) {
  110. dashingFlame.get(uuid).cancel();
  111. dashingFlame.remove(uuid);
  112. }
  113. dash(p, new Vector(0, 0.3, 0), 15, 0, 0, 1);
  114. cooldownStrike.put(uuid, 10);
  115. }
  116. else {
  117. p.sendMessage("cooldown" + Integer.toString(cooldownStrike.get(uuid)));
  118. }
  119. }
  120. }
  121.  
  122. public void dash(Player p, Vector v, int time, int radius, int damage, int dashType) {
  123.  
  124. String uuid = p.getUniqueId().toString();
  125.  
  126. BukkitRunnable flameDash = new BukkitRunnable(){
  127.  
  128. int ticks = time;
  129.  
  130. // dash type 0 is flame dash, 1 is phase 1 of strike, 2 is phase 2 of strike.
  131.  
  132. @Override
  133. public void run(){
  134.  
  135. if(ticks <= 1 || !p.isOnline()){
  136. this.cancel();
  137. if(dashType == 0) {
  138. dashingFlame.remove(uuid);
  139. // explode boom
  140. return;
  141. }
  142. else if(dashType == 1){
  143. if(!p.isBlocking()) {
  144. dashingStrike.remove(uuid);
  145. p.setVelocity(new Vector(0, 1, 0));
  146. }
  147. else {
  148. dash(p, p.getLocation().getDirection().multiply(2), 8, 2, 10, 2); // begin phase 2
  149. }
  150. }
  151. else if(dashType == 2) {
  152. dashingStrike.remove(uuid);
  153. p.setVelocity(new Vector(0, 0, 0));
  154. // explode boom
  155. }
  156. return;
  157. }
  158.  
  159. if(dashType == 2) {
  160. if(p.getVelocity() != v) {
  161. //this.cancel();
  162. //dashingStrike.remove(uuid);
  163. }
  164. }
  165. p.setVelocity(v);
  166. ticks--; //decrement
  167.  
  168. }
  169. };
  170.  
  171. // normal flame dash
  172. if(dashType == 0) {
  173. dashingFlame.put(uuid, flameDash);
  174. }
  175. // meteor strike dash
  176. else if(dashType == 1) {
  177. dashingStrike.put(uuid, flameDash);
  178. }
  179.  
  180.  
  181. flameDash.runTaskTimer(this, 0, 1);
  182. }
  183.  
  184. @EventHandler
  185. public void PlayerJoin(PlayerJoinEvent e) {
  186. players.add(e.getPlayer());
  187. e.getPlayer().setAllowFlight(true);
  188. }
  189.  
  190. @EventHandler
  191. public void PlayerLeave(PlayerQuitEvent e) {
  192. players.remove(e.getPlayer());
  193. }
  194.  
  195. @EventHandler
  196. public void DoubleJump(PlayerToggleFlightEvent e) {
  197. e.setCancelled(true);
  198. e.getPlayer().setAllowFlight(false);
  199. Vector pVec = e.getPlayer().getLocation().getDirection().setY(0);
  200. pVec.normalize().multiply(0.5);
  201. pVec.setY(1.25);
  202. e.getPlayer().setVelocity(pVec);
  203. }
  204.  
  205. @EventHandler
  206. public void onEntityDamageEvent(EntityDamageEvent e) {
  207. if (!(e.getEntity() instanceof Player)) {
  208. return;
  209. }
  210. if (e.getCause() == DamageCause.FALL) {
  211. e.setCancelled(true);
  212. }
  213. }
  214.  
  215. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement