JackOUT

Untitled

Jan 29th, 2021 (edited)
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. package games.coob.skywars.event;
  2.  
  3. import games.coob.skywars.model.ArenaJoinMode;
  4. import games.coob.skywars.model.ArenaPlayer;
  5. import org.bukkit.Material;
  6. import org.bukkit.SoundGroup;
  7. import org.bukkit.block.Block;
  8. import org.bukkit.block.BlockFace;
  9. import org.bukkit.block.data.BlockData;
  10. import org.bukkit.block.data.type.RespawnAnchor;
  11. import org.bukkit.entity.Player;
  12. import org.bukkit.event.EventHandler;
  13. import org.bukkit.event.Listener;
  14. import org.bukkit.event.player.PlayerMoveEvent;
  15. import org.bukkit.event.player.PlayerTeleportEvent;
  16. import org.bukkit.potion.PotionEffect;
  17. import org.bukkit.potion.PotionEffectType;
  18. import org.jetbrains.annotations.NotNull;
  19. import org.jetbrains.annotations.Nullable;
  20. import org.mineacademy.fo.Common;
  21. import org.mineacademy.fo.Messenger;
  22. import org.mineacademy.fo.remain.CompSound;
  23.  
  24. import java.util.Scanner;
  25.  
  26. public class PortalListener implements Listener {
  27.  
  28. @EventHandler
  29. public void onPlayerMoveEvent(final PlayerMoveEvent event) {
  30.  
  31. final Player player = event.getPlayer();
  32. final ArenaPlayer cache = ArenaPlayer.getCache(player);
  33. final ArenaJoinMode mode = cache.getMode();
  34. final Block portal = event.getPlayer().getLocation().getBlock().getRelative(BlockFace.DOWN);
  35.  
  36. if (portal.getType() == Material.RESPAWN_ANCHOR) {
  37.  
  38. // TODO Run onPlayerTeleport 5 seconds later
  39. Common.runLater(100, () -> {
  40. onPlayerTeleport();
  41. });
  42.  
  43. // Play sound and add a potion effect to the player standing on a respawn anchor
  44. CompSound.PORTAL_TRAVEL.play(player);
  45. player.addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 100, 1, false, false, false));
  46.  
  47. /**
  48. * Cancels the event if the player moves away or is in spectating mode
  49. **/
  50. if (portal.getType() != Material.RESPAWN_ANCHOR)
  51. Messenger.error(player, "Teleport cancelled, you have left the portal!");
  52.  
  53. else if (mode == ArenaJoinMode.SPECTATING)
  54. Messenger.error(player, "You cannot enter portals while spectating!");
  55.  
  56. event.setCancelled(true);
  57. }
  58. }
  59. }
  60.  
  61. @EventHandler
  62. private void onPlayerTeleport(final PlayerTeleportEvent event) {
  63.  
  64. final Player player = event.getPlayer();
  65.  
  66. // TODO Find a random respawn anchor and teleport player to that respawn anchor
  67.  
  68. Common.tell(player, "&dTeleport success!");
  69. }
  70. }
Add Comment
Please, Sign In to add comment