Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package games.coob.skywars.event;
- import games.coob.skywars.model.ArenaJoinMode;
- import games.coob.skywars.model.ArenaPlayer;
- import org.bukkit.Material;
- import org.bukkit.SoundGroup;
- import org.bukkit.block.Block;
- import org.bukkit.block.BlockFace;
- import org.bukkit.block.data.BlockData;
- import org.bukkit.block.data.type.RespawnAnchor;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.player.PlayerMoveEvent;
- import org.bukkit.event.player.PlayerTeleportEvent;
- import org.bukkit.potion.PotionEffect;
- import org.bukkit.potion.PotionEffectType;
- import org.jetbrains.annotations.NotNull;
- import org.jetbrains.annotations.Nullable;
- import org.mineacademy.fo.Common;
- import org.mineacademy.fo.Messenger;
- import org.mineacademy.fo.remain.CompSound;
- import java.util.Scanner;
- public class PortalListener implements Listener {
- @EventHandler
- public void onPlayerMoveEvent(final PlayerMoveEvent event) {
- final Player player = event.getPlayer();
- final ArenaPlayer cache = ArenaPlayer.getCache(player);
- final ArenaJoinMode mode = cache.getMode();
- final Block portal = event.getPlayer().getLocation().getBlock().getRelative(BlockFace.DOWN);
- if (portal.getType() == Material.RESPAWN_ANCHOR) {
- // TODO Run onPlayerTeleport 5 seconds later
- Common.runLater(100, () -> {
- onPlayerTeleport();
- });
- // Play sound and add a potion effect to the player standing on a respawn anchor
- CompSound.PORTAL_TRAVEL.play(player);
- player.addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 100, 1, false, false, false));
- /**
- * Cancels the event if the player moves away or is in spectating mode
- **/
- if (portal.getType() != Material.RESPAWN_ANCHOR)
- Messenger.error(player, "Teleport cancelled, you have left the portal!");
- else if (mode == ArenaJoinMode.SPECTATING)
- Messenger.error(player, "You cannot enter portals while spectating!");
- event.setCancelled(true);
- }
- }
- }
- @EventHandler
- private void onPlayerTeleport(final PlayerTeleportEvent event) {
- final Player player = event.getPlayer();
- // TODO Find a random respawn anchor and teleport player to that respawn anchor
- Common.tell(player, "&dTeleport success!");
- }
- }
Add Comment
Please, Sign In to add comment