Delay after using ability

Discussion in 'Plugin Development' started by Fhbgsdhkfbl, Jun 24, 2017.

Thread Status:
Not open for further replies.
  1. Offline

    Fhbgsdhkfbl

    I coded a Snowman kit for my kitpvp server and i want it to be when they freeze the player, they can immediately attack the player but when i happen to freeze the said player, theres a little delay until they're unfrozen then you can attack them, anyway to fix that?

    Snowman code:
    Code:
    @EventHandler(ignoreCancelled = true)
        public void onSnowballThrow(EntityDamageByEntityEvent event) {
            if (event.getEntity() instanceof Player
                    && event.getDamager() instanceof Snowball) {
                Snowball snowball = (Snowball) event.getDamager();
                if (snowball.getShooter() != null
                        && snowball.getShooter() instanceof Player) {
                    final Player shooter = (Player) snowball.getShooter();
                    final String shooterName = shooter.getName();
                    final Player p = (Player) event.getEntity();
                    if (plugin.currentKit.containsKey(shooterName)) {
                        if (this.plugin.currentKit.get(shooterName).equals(
                                PlayerKits.Snowman)) {
                            final Player damaged = (Player) event.getEntity();
                            final String damagedName = damaged.getName();
                            if (!(plugin.currentKit.containsKey(damaged.getName()))) {
                                return;
                            }
                            if (!snowz.contains(damagedName)) {
                                snowz.add(damagedName);
                                damaged.playSound(p.getLocation(), Sound.LEVEL_UP,
                                        1, 0);
                                shooter.playSound(p.getLocation(), Sound.LEVEL_UP,
                                        1, 0);
                                damaged.sendMessage(ChatColor.GRAY
                                        + "You have been frozen for 3 seconds by "
                                        + ChatColor.AQUA + shooter.getName()
                                        + ChatColor.GRAY + "!");
                                shooter.sendMessage(ChatColor.GRAY
                                        + "You have froze " + ChatColor.AQUA
                                        + damaged.getName() + ChatColor.GRAY + "!");
                                plugin.getServer()
                                .getScheduler()
                                .scheduleSyncDelayedTask(plugin,
                                        new Runnable() {
                                    public void run() {
                                    snowz
                                        .remove(damagedName);
                                        if (shooter != null)
                                            shooter.sendMessage(ChatColor.AQUA
                                                    + damaged
                                                    .getName()
                                                    + ChatColor.GRAY
                                                    + " has been unfrozen!");
                                        if (damaged != null)
                                            damaged.sendMessage(ChatColor.GRAY
                                                    + "You have been unfrozen!");
                                    }
                                }, 40L);
                            }
                        }
                    }
                }
            }
        }
    
        @EventHandler
        public void onFreezeMove(PlayerMoveEvent e) {
            Player p = e.getPlayer();
            if (snowz.contains(p.getName())) {
                if (e.getFrom().getY() != e.getTo().getY()
                        || e.getFrom().getX() != e.getTo().getX()
                        || e.getFrom().getZ() != e.getTo().getZ()) {
                    p.teleport(e.getFrom());
                }
            }
        }
    
     
Thread Status:
Not open for further replies.

Share This Page