/** * Schedules this in the Bukkit scheduler to run on next tick. * * @param plugin the reference to the plugin scheduling task * @return a BukkitTask that contains the id number * @throws IllegalArgumentException if plugin is null * @throws IllegalStateException if this was already scheduled * @see BukkitScheduler#runTask(Plugin, Runnable) */ public synchronized BukkitTask runTask(Plugin plugin) throws IllegalArgumentException, IllegalStateException { checkState(); return setupId(Bukkit.getScheduler().runTask(plugin, (Runnable) this)); }
/** * <b>Asynchronous tasks should never access any API in Bukkit. Great care * should be taken to assure the thread-safety of asynchronous tasks.</b> * <p> * Schedules this in the Bukkit scheduler to run asynchronously. * * @param plugin the reference to the plugin scheduling task * @return a BukkitTask that contains the id number * @throws IllegalArgumentException if plugin is null * @throws IllegalStateException if this was already scheduled * @see BukkitScheduler#runTaskAsynchronously(Plugin, Runnable) */ public synchronized BukkitTask runTaskAsynchronously(Plugin plugin) throws IllegalArgumentException, IllegalStateException { checkState(); return setupId(Bukkit.getScheduler().runTaskAsynchronously(plugin, (Runnable) this)); }
public PermissionAttachment addAttachment(Plugin plugin, int ticks) { if (plugin == null) { throw new IllegalArgumentException("Plugin cannot be null"); } else if (!plugin.isEnabled()) { throw new IllegalArgumentException("Plugin " + plugin.getDescription().getFullName() + " is disabled"); } PermissionAttachment result = addAttachment(plugin); if (Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new RemoveAttachmentRunnable(result), ticks) == -1) { Bukkit.getServer().getLogger().log(Level.WARNING, "Could not add PermissionAttachment to " + parent + " for plugin " + plugin.getDescription().getFullName() + ": Scheduler returned -1"); result.remove(); return null; } else { return result; } }
@EventHandler public void onJoin(PlayerJoinEvent e) { if (UpdateTask.isHaveUpdate() && e.getPlayer().hasPermission("taboolib.update.notify")) { TLocale.Logger.sendTo(e.getPlayer(), "UPDATETASK.VERSION-OUTDATED", String.valueOf(TabooLib.getPluginVersion()), String.valueOf(UpdateTask.getNewVersion())); } if (TranslateUUID.isEnabled()) { Bukkit.getScheduler().runTaskAsynchronously(Main.getInst(), () -> TranslateUUID.updateUsername(e.getPlayer().getUniqueId(), e.getPlayer().getName())); } }
/** * Clear the spam list periodically */ private void debounceRequests() { Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask( GlobalWarming.getInstance(), () -> { synchronized (this) { playerRequestList.clear(); } }, 0L, SPAM_INTERVAL_TICKS); }
static void refreshPlayer(final Player player, final Player forWhom) { Preconditions.checkState(Main.getInst().isEnabled(), "Not Enabled!"); Preconditions.checkNotNull(player, "player"); Preconditions.checkNotNull(forWhom, "forWhom"); if (player != forWhom && player.getWorld() == forWhom.getWorld() && forWhom.canSee(player)) { forWhom.hidePlayer(player); Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Main.getInst(), () -> forWhom.showPlayer(player), 2); } }
@EventHandler public void on(final PlayerChangedWorldEvent event) { for (AnimatedFrame frame : plugin.frameManager.getFramesInWorld(event.getFrom().getName())) { frame.removeViewer(event.getPlayer()); } final String newWorld = event.getPlayer().getWorld().getName(); Bukkit.getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() { @Override public void run() { for (AnimatedFrame frame : plugin.frameManager.getFramesInWorld(newWorld)) { frame.addViewer(event.getPlayer()); } } }, 20); }
/** * @param player * @param field */ public void shootPlayer(final Player player, Field field) { if (plugin.getPermissionsManager().has(player, "preciousstones.benefit.bounce")) { if (!(field.hasFlag(FieldFlag.SNEAKING_BYPASS) && player.isSneaking())) { if (FieldFlag.CANNON.applies(field, player)) { final float bounceHeight = field.getVelocity() > 0 ? field.getVelocity() : field.getSettings().getCannonHeight(); final float height = bounceHeight > 0 ? bounceHeight : (((player.getLocation().getPitch() * -1) + 90) / 35); Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { plugin.getPermissionsManager().allowFly(player); player.setVelocity(new Vector(0, height, 0)); plugin.getCommunicationManager().showCannon(player); startFallImmunity(player); player.getWorld().createExplosion(player.getLocation(), -1); }, 0L); } } } }
@Override public void run() { if (Bukkit.getPlayer(uuid) == null) Bukkit.getScheduler().cancelTask(id); else if (Bukkit.getPlayer(uuid).isDead()) Bukkit.getScheduler().cancelTask(id); else if (!Bukkit.getPlayer(uuid).isSneaking()) Bukkit.getScheduler().cancelTask(id); else { for (Entity item: Bukkit.getPlayer(uuid).getNearbyEntities(6D, 6D, 6D)) { if (item instanceof Item) { if (!item.hasMetadata("no_pickup") && ((Item) item).getPickupDelay() <= 0) { item.teleport(Bukkit.getPlayer(uuid).getEyeLocation()); Bukkit.getPlayer(uuid).getWorld().playSound(Bukkit.getPlayer(uuid).getEyeLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 5L, 2L); } } } } }
void handleInteract(final Player player, Cancellable cancellable, final int action/* 0 = interact (right-click), 1 = attack (left-click) */) { Block targetBlock = player.getTargetBlock((Set<Material>) null, 16); if (targetBlock != null && targetBlock.getType() != Material.AIR) { Set<AnimatedFrame> frames = plugin.frameManager.getFramesInWorld(player.getWorld().getName()); frames.removeIf(f -> !f.isClickable()); final CursorPosition.CursorMapQueryResult queryResult = CursorPosition.findMenuByCursor(player, frames); if (queryResult != null && queryResult.isFound()) { Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { @Override public void run() { queryResult.getClickable().handleClick(player, queryResult.getPosition(), action); } }); // cancellable.setCancelled(true); } } }
@EventHandler public void onRespawn(PlayerRespawnEvent event) { if (DisguiseConfig.isBedPacketsEnabled()) { final Player player = event.getPlayer(); chunkMove(event.getPlayer(), null, player.getLocation()); Bukkit.getScheduler().runTask(plugin, new Runnable() { @Override public void run() { chunkMove(player, player.getLocation(), null); } }); } }
@EventHandler(priority=EventPriority.MONITOR, ignoreCancelled=true) public void onPlayerJoin(PlayerJoinEvent evt) { final DynmapPlayer dp = new BukkitPlayer(evt.getPlayer()); // Give other handlers a change to prep player (nicknames and such from Essentials) getServer().getScheduler().scheduleSyncDelayedTask(DynmapPlugin.this, new Runnable() { @Override public void run() { core.listenerManager.processPlayerEvent(EventType.PLAYER_JOIN, dp); } }, 2); } @EventHandler(priority=EventPriority.MONITOR, ignoreCancelled=true)
@EventHandler(priority = EventPriority.LOW, ignoreCancelled=true) public void onLingeringPotionSplash(final LingeringPotionSplashEvent e) { // Try to get the shooter if (e.getEntity().getShooter() instanceof Player && getPlugin().getIWM().inWorld(e.getEntity().getLocation())) { // Store it and remove it when the effect is gone (Entity ID, UUID of throwing player) thrownPotions.put(e.getAreaEffectCloud().getEntityId(), ((Player)e.getEntity().getShooter()).getUniqueId()); Bukkit.getScheduler().runTaskLater(getPlugin(), () -> thrownPotions.remove(e.getAreaEffectCloud().getEntityId()), e.getAreaEffectCloud().getDuration()); } }
@EventHandler public void handleJoin(PlayerJoinEvent e) { Bukkit.getScheduler().runTaskLaterAsynchronously(Bukkit.getPluginManager().getPlugin("SimpleNameTags"), new Runnable() { @Override public void run() { de.dytanic.cloudnet.bridge.CloudServer.getInstance().updateNameTags(e.getPlayer()); } }, 3L); }
/** * <b>Asynchronous tasks should never access any API in Bukkit. Great care * should be taken to assure the thread-safety of asynchronous tasks.</b> * <p> * Schedules this to repeatedly run asynchronously until cancelled, * starting after the specified number of server ticks. * * @param plugin the reference to the plugin scheduling task * @param delay the ticks to wait before running the task for the first * time * @param period the ticks to wait between runs * @return a BukkitTask that contains the id number * @throws IllegalArgumentException if plugin is null * @throws IllegalStateException if this was already scheduled * @see BukkitScheduler#runTaskTimerAsynchronously(Plugin, Runnable, long, * long) */ public synchronized BukkitTask runTaskTimerAsynchronously(Plugin plugin, long delay, long period) throws IllegalArgumentException, IllegalStateException { checkState(); return setupId(Bukkit.getScheduler().runTaskTimerAsynchronously(plugin, (Runnable) this, delay, period)); }
public void disablePlugin(final Plugin plugin) { if (plugin.isEnabled()) { try { plugin.getPluginLoader().disablePlugin(plugin); } catch (Throwable ex) { server.getLogger().log(Level.SEVERE, "Error occurred (in the plugin loader) while disabling " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex); } try { server.getScheduler().cancelTasks(plugin); } catch (Throwable ex) { server.getLogger().log(Level.SEVERE, "Error occurred (in the plugin loader) while cancelling tasks for " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex); } try { server.getServicesManager().unregisterAll(plugin); } catch (Throwable ex) { server.getLogger().log(Level.SEVERE, "Error occurred (in the plugin loader) while unregistering services for " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex); } try { HandlerList.unregisterAll(plugin); } catch (Throwable ex) { server.getLogger().log(Level.SEVERE, "Error occurred (in the plugin loader) while unregistering events for " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex); } try { server.getMessenger().unregisterIncomingPluginChannel(plugin); server.getMessenger().unregisterOutgoingPluginChannel(plugin); } catch(Throwable ex) { server.getLogger().log(Level.SEVERE, "Error occurred (in the plugin loader) while unregistering plugin channels for " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex); } } }
public void startCarrierParticleEffect(final Player player){ cParticleID = Bukkit.getScheduler().scheduleSyncRepeatingTask(Minigames.getPlugin(), () -> player.getWorld().playEffect(player.getLocation(), Effect.MOBSPAWNER_FLAMES, 0), 15L, 15L); }
/** * Stops this Task from executing * * @return This Task */ public Task stop() { if (this.id != -1) { Bukkit.getServer().getScheduler().cancelTask(this.id); this.id = -1; } return this; }
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) public void onPlayerMove(PlayerMoveEvent e) { // Ignore only vertical movement if (e.getFrom().getBlockX() - e.getTo().getBlockX() == 0 && e.getFrom().getBlockZ() - e.getTo().getBlockZ() == 0) { return; } if (!checkAndNotify(e.getPlayer(), e.getTo()).equals(CheckResult.OPEN)) { e.setCancelled(true); e.getFrom().getWorld().playSound(e.getFrom(), Sound.BLOCK_ANVIL_HIT, 1F, 1F); e.getPlayer().setVelocity(new Vector(0,0,0)); e.getPlayer().setGliding(false); } // Check from - just in case the player is inside the island if (!check(e.getPlayer(), e.getFrom()).equals(CheckResult.OPEN)) { // Has to be done 1 tick later otherwise it doesn't happen for some reason... Bukkit.getScheduler().runTask(BentoBox.getInstance(), () -> eject(e.getPlayer())); } }
private void startTimeListener() { this.timeTask = this.getServer().getScheduler().runTaskTimer(this, new Runnable() { @Override public void run() { for (Game g : BedwarsRel.getInstance().getGameManager().getGames()) { if (g.getState() == GameState.RUNNING) { g.getRegion().getWorld().setTime(g.getTime()); } } } }, (long) 5 * 20, (long) 5 * 20); }