Java 类org.bukkit.scheduler.BukkitTask 实例源码

项目:EscapeLag    文件:MonitorUtils.java   
public static MonitorRecord getTaskTimingsByPlugin(Plugin plg) {
    MonitorRecord monitorRecord = getMonitorRecord("Scheduler", 0L, 0L, 0L);
    if (plg == null) {
        return monitorRecord;
    }
    for (BukkitTask pendingTask : Bukkit.getScheduler().getPendingTasks()) {
        if (pendingTask.isSync() && pendingTask.getOwner().equals(plg)) {
            try {
                FieldAccessor<Runnable> field = Reflection.getField(pendingTask.getClass(), "task", Runnable.class);
                Runnable runnable = field.get(pendingTask);
                if (runnable instanceof SchedulerTaskInjector) {
                    SchedulerTaskInjector schedulerTaskInjector = (SchedulerTaskInjector) runnable;
                    monitorRecord = monitorRecord.merge(getMonitorRecord("Scheduler",
                            schedulerTaskInjector.getTotalTime(), schedulerTaskInjector.getTotalCount(),
                            schedulerTaskInjector.getMaxExecuteTime()));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    return monitorRecord;
}
项目:EscapeLag    文件:SchedulerTaskInjector.java   
/**
 * 
 * @author jiongjionger,Vlvxingze
 */

// 替换原本的Runnable为带性能统计的版本
public static void inject(Plugin plg) {
    if (plg != null) {
        for (BukkitTask pendingTask : Bukkit.getScheduler().getPendingTasks()) {
            if (pendingTask.isSync() && pendingTask.getOwner().equals(plg)) {
                try {
                    FieldAccessor<Runnable> field = Reflection.getField(pendingTask.getClass(), "task", Runnable.class);
                    field.set(pendingTask, new SchedulerTaskInjector(plg, field.get(pendingTask)));
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
项目:EscapeLag    文件:SchedulerTaskInjector.java   
public static void uninject(Plugin plg) {
    if (plg != null) {
        for (BukkitTask pendingTask : Bukkit.getScheduler().getPendingTasks()) {
            if (pendingTask.isSync() && pendingTask.getOwner().equals(plg)) {
                try {
                    FieldAccessor<Runnable> field = Reflection.getField(pendingTask.getClass(), "task", Runnable.class);
                    Runnable runnable = field.get(pendingTask);
                    if (runnable instanceof SchedulerTaskInjector) {
                        field.set(pendingTask, ((SchedulerTaskInjector) runnable).getRunnable());
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
项目:Hub    文件:BalloonCosmetic.java   
public void remove(Player player)
{
    BukkitTask bukkitTask = this.destroyTasks.get(player.getUniqueId());

    if (bukkitTask != null)
        bukkitTask.cancel();

    LivingEntity[] livingEntities = this.balloons.get(player.getUniqueId());

    if (livingEntities == null)
        return;

    this.balloons.remove(player.getUniqueId());

    for (LivingEntity livingEntity : livingEntities)
        livingEntity.remove();
}
项目:MockBukkit    文件:BukkitSchedulerMockTest.java   
@Test
public void runTaskTimer()
{
    AtomicInteger count = new AtomicInteger(0);
    Runnable callback = () -> {
        count.incrementAndGet();
    };
    BukkitTask task = scheduler.runTaskTimer(null, callback, 10L, 2L);
    assertNotNull(task);
    scheduler.performTicks(9L);
    assertEquals(0, count.get());
    scheduler.performOneTick();
    assertEquals(1, count.get());
    scheduler.performOneTick();
    assertEquals(1, count.get());
    scheduler.performOneTick();
    assertEquals(2, count.get());
    task.cancel();
    scheduler.performOneTick();
    assertEquals(2, count.get());
}
项目:NeverLag    文件:MonitorUtils.java   
public static MonitorRecord getTaskTimingsByPlugin(Plugin plg) {
    MonitorRecord monitorRecord = getMonitorRecord("Scheduler", 0L, 0L, 0L);
    if (plg == null) {
        return monitorRecord;
    }
    for (BukkitTask pendingTask : Bukkit.getScheduler().getPendingTasks()) {
        if (pendingTask.isSync() && pendingTask.getOwner().equals(plg)) {
            try {
                FieldAccessor<Runnable> field = Reflection.getField(pendingTask.getClass(), "task", Runnable.class);
                Runnable runnable = field.get(pendingTask);
                if (runnable instanceof SchedulerTaskInjector) {
                    SchedulerTaskInjector schedulerTaskInjector = (SchedulerTaskInjector) runnable;
                    monitorRecord = monitorRecord
                        .merge(getMonitorRecord("Scheduler", schedulerTaskInjector.getTotalTime(), schedulerTaskInjector.getTotalCount(), schedulerTaskInjector.getMaxExecuteTime()));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    return monitorRecord;
}
项目:NeverLag    文件:SchedulerTaskInjector.java   
public static void uninject(Plugin plg) {
    if (plg != null) {
        for (BukkitTask pendingTask : Bukkit.getScheduler().getPendingTasks()) {
            if (pendingTask.isSync() && pendingTask.getOwner().equals(plg)) {
                try {
                    FieldAccessor<Runnable> field = Reflection.getField(pendingTask.getClass(), "task", Runnable.class);
                    Runnable runnable = field.get(pendingTask);
                    if (runnable instanceof SchedulerTaskInjector) {
                        field.set(pendingTask, ((SchedulerTaskInjector) runnable).getRunnable());
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
项目:SuperVanish    文件:UpdateNotifier.java   
private BukkitTask start() {
    if (checkTask != null) throw new IllegalStateException("Task is already running");
    return new BukkitRunnable() {
        @Override
        public void run() {
            String latestVersion = fetchLatestVersion();
            UpdateNotifier.this.latestVersion = latestVersion.equals("Error")
                    ? UpdateNotifier.this.latestVersion == null
                    ? currentVersion
                    : UpdateNotifier.this.latestVersion
                    : latestVersion;
            if (!isUpToDate())
                new BukkitRunnable() {
                    @Override
                    public void run() {
                        notifyConsole();
                        if (plugin.getSettings().getBoolean(
                                "MiscellaneousOptions.UpdateChecker.NotifyAdmins")) notifyAdmins();
                    }
                }.runTask(plugin);
        }
    }.runTaskTimerAsynchronously(plugin, 0, CHECK_INTERVAL);
}
项目:BedwarsRel    文件:Tracker.java   
public void createTask() {
  final Game game = this.game;

  BukkitTask task = new BukkitRunnable() {

    @Override
    public void run() {
      for (Player player : game.getTeamPlayers()) {
        if (player.getInventory().contains(getItemMaterial())) {
          Player target = findTargetPlayer(player);
          if (target != null) {
            player.setCompassTarget(target.getLocation());
            continue;
          }
        }
        player.setCompassTarget(game.getPlayerTeam(player).getSpawnLocation());
      }
    }
  }.runTaskTimer(BedwarsRel.getInstance(), 20L, 20L);
  this.game.addRunningTask(task);
}
项目:Ultra-Hardcore-1.8    文件:GameManager.java   
public void gmOfflineNewTimer(String a) {
    BukkitTask b = gA.getServer().getScheduler().runTaskLater(gA, new Runnable() {
        @Override
        public void run() {
            if (gA.mC.cGa) {
                Team c = gA.getServer().getScoreboardManager().getMainScoreboard().getEntryTeam(a);
                gmBroadcastMsg(gA.mC.cPb.replace("{0}", c.getPrefix() + a + "\u00A7r"));
                c.removeEntry(a);
                if (c.getSize() == 0) {
                    gHa.remove(c.getName());
                    c.unregister();
                }
            } else {
                gmBroadcastMsg(gA.mC.cPb.replace("{0}", a));
            }
            gHb.remove(a);
            gHc.remove(a);
            gmStatusCheck();
        }
    }, ((60 * gA.mC.cPa) * 20) + (gA.mA.i() == 7 ? 0 : gJ[0]));
    gHc.put(a, b);
}
项目:Uranium    文件:CraftScheduler.java   
public BukkitTask runTaskTimer(Plugin plugin, Runnable runnable, long delay, long period) {
    validate(plugin, runnable);
    if (delay < 0l) {
        delay = 0;
    }
    if (period == 0l) {
        period = 1l;
    } else if (period < -1l) {
        period = -1l;
    }
    return handle(new CraftTask(plugin, runnable, nextId(), period), delay);
}
项目:Uranium    文件:CraftScheduler.java   
public BukkitTask runTaskTimerAsynchronously(Plugin plugin, Runnable runnable, long delay, long period) {
    validate(plugin, runnable);
    if (delay < 0l) {
        delay = 0;
    }
    if (period == 0l) {
        period = 1l;
    } else if (period < -1l) {
        period = -1l;
    }
    return handle(new CraftAsyncTask(runners, plugin, runnable, nextId(), period), delay);
}
项目:SamaGamesAPI    文件:ProximityUtils.java   
public static <ENTITY extends Entity> BukkitTask onNearbyOf(JavaPlugin plugin, Entity entity, double offsetX, double offsetY, double offsetZ, Class<ENTITY> filter, Consumer<ENTITY> callback)
{
    return plugin.getServer().getScheduler().runTaskTimerAsynchronously(plugin, () ->
    {
        entity.getNearbyEntities(offsetX, offsetY, offsetZ).forEach(found ->
        {
            if (filter == null || filter.isAssignableFrom(found.getClass()))
                plugin.getServer().getScheduler().runTask(plugin, () -> callback.accept((ENTITY) found));
        });
    }, 2L, 2L);
}
项目:ProjectAres    文件:BukkitSchedulerBackend.java   
@Override
public BukkitTask startTask(Task.Parameters schedule, Runnable runnable) {
    final Duration delay = schedule.delay();
    final Duration interval = schedule.interval();
    return bukkit.runTaskTimer(plugin,
                               runnable,
                               delay == null ? 0 : TimeUtils.toTicks(delay),
                               interval == null ? -1 : TimeUtils.toTicks(interval));
}
项目:MockBukkit    文件:BukkitSchedulerMock.java   
@Override
public BukkitTask runTaskLater(Plugin plugin, Runnable task, long delay) throws IllegalArgumentException
{
    ScheduledTask scheduledTask = new ScheduledTask(id++, plugin, true, currentTick + delay, task);
    tasks.add(scheduledTask);
    return scheduledTask;
}
项目:MockBukkit    文件:BukkitSchedulerMock.java   
@Override
public BukkitTask runTaskTimer(Plugin plugin, Runnable task, long delay, long period)
        throws IllegalArgumentException
{
    RepeatingTask repeatingTask = new RepeatingTask(id++, plugin, true, currentTick + delay, period, task);
    tasks.add(repeatingTask);
    return repeatingTask;
}
项目:MockBukkit    文件:BukkitSchedulerMock.java   
@Override
public BukkitTask runTaskLaterAsynchronously(Plugin plugin, Runnable task, long delay)
        throws IllegalArgumentException
{
    // TODO Auto-generated method stub
    throw new UnimplementedOperationException();
}
项目:MockBukkit    文件:BukkitSchedulerMock.java   
@Override
public BukkitTask runTaskLaterAsynchronously(Plugin plugin, BukkitRunnable task, long delay)
        throws IllegalArgumentException
{
    // TODO Auto-generated method stub
    throw new UnimplementedOperationException();
}
项目:MockBukkit    文件:BukkitSchedulerMock.java   
@Override
public BukkitTask runTaskTimerAsynchronously(Plugin plugin, Runnable task, long delay, long period)
        throws IllegalArgumentException
{
    // TODO Auto-generated method stub
    throw new UnimplementedOperationException();
}
项目:MockBukkit    文件:BukkitSchedulerMock.java   
@Override
public BukkitTask runTaskTimerAsynchronously(Plugin plugin, BukkitRunnable task, long delay, long period)
        throws IllegalArgumentException
{
    // TODO Auto-generated method stub
    throw new UnimplementedOperationException();
}
项目:MockBukkit    文件:BukkitSchedulerMockTest.java   
@Test
public void runTaskLater()
{
    AtomicBoolean executed = new AtomicBoolean(false);
    Runnable callback = () -> {
        executed.set(true);
    };
    BukkitTask task = scheduler.runTaskLater(null, callback, 20L);
    assertNotNull(task);
    assertFalse(executed.get());
    scheduler.performTicks(10L);
    assertFalse(executed.get());
    scheduler.performTicks(20L);
    assertTrue(executed.get());
}
项目:Kineticraft    文件:SchedulerTask.java   
/**
 * Start the task at hand.
 */
public void start() {
    while (!values.isEmpty()) {
        List<T> threadList = new ArrayList<>();
        for (int i = 0; i < Math.min(perThread, values.size()); i++)
            threadList.add(values.remove(0));

        BukkitTask[] task = new BukkitTask[1];
        task[0] = Bukkit.getScheduler().runTaskTimerAsynchronously(Core.getInstance(), () -> {
            for (int i = 0; i < Math.min(perTick, threadList.size()); i++)
                getHandler().accept(threadList.remove(0));

            // Only continue if this thread's task is done.
            if (!threadList.isEmpty())
                return;


            // Cancel this task
            tasks.remove(task[0]);
            task[0].cancel();
        }, 0L, 1L);

        tasks.add(task[0]);
    }

    checkComplete = Bukkit.getScheduler().runTaskTimer(Core.getInstance(), () -> {
        if (!tasks.isEmpty())
            return;

        checkComplete.cancel(); // Don't call again.
        getOnFinish().run();
    }, 0L, 1L);
}
项目:Kineticraft    文件:ServerUtils.java   
/**
 * Cancel the current reboot, if any.
 */
public static void cancelReboot() {
    if (!isRebootScheduled())
        return;

    rebootTasks.forEach(BukkitTask::cancel); // Cancel all tasks.
    Core.announce(ChatColor.AQUA + "Reboot cancelled.");
}
项目:Kineticraft    文件:ActionEntity.java   
/**
 * Toggle the entities AI until it should expire.
 * Does not conflict with other AI toggles.
 * @param done
 */
public void toggleAI(Function<LivingEntity, Boolean> done) {
    LivingEntity le = getLivingEntity();
    BukkitTask[] task = new BukkitTask[1];
    le.setAI(true);
    task[0] = Bukkit.getScheduler().runTaskTimer(Core.getInstance(), () -> {
        boolean isDone = done.apply(le);
        le.setAI(!isDone);
        if (isDone)
            task[0].cancel();
    }, 10L, 20L);
}
项目:Kineticraft    文件:ActionEntityPathfind.java   
@Override
public void execute() {
    if (this.target == null)
        return;

    Entity e = getEntity();
    Location goal = this.target.clone();
    goal.setWorld(e.getWorld());
    BukkitTask[] task = new BukkitTask[1];
    final double walkSpeed = e.getLocation().distance(goal) / (double) getEvent().getTickDelay();

    task[0] = Bukkit.getScheduler().runTaskTimer(Core.getInstance(), () -> stepLocation(e, goal, walkSpeed), 0L, 1L); // Move the entity closer every tick.
    Bukkit.getScheduler().runTaskLater(Core.getInstance(), task[0]::cancel, getEvent().getTickDelay() - 1);
}
项目:Kineticraft    文件:AFK.java   
public void onEnable() {
    Bukkit.getScheduler().runTaskTimer(Core.getInstance(), () ->
        Bukkit.getOnlinePlayers().stream().filter(p -> !Utils.getRank(p).isAtLeast(EnumRank.MEDIA)).filter(AFK::isAFK).forEach(p -> {
            BukkitTask kickTask = Bukkit.getScheduler().runTaskLater(Core.getInstance(), () ->
                Callbacks.cancel(p, Callbacks.ListenerType.CHAT), 35 * 20L);

            int numA = Utils.nextInt(20);
            int numB = Utils.nextInt(20);
            String op  = Utils.randChance(2) ? "+" : "-";
            int answer = op.equals("+") ? numA + numB : numA - numB;
            String problem = ChatColor.YELLOW.toString() + numA + " " + op + " " + numB + " = ?";

            p.sendTitle(new Title(ChatColor.RED + "AFK CHECK", problem, 20, 100, 20));
            p.sendMessage(ChatColor.RED.toString() + ChatColor.BOLD + "AFK CHECK: " + problem);

            Runnable fail = () -> {
                if (!p.isOnline())
                    return;

                p.kickPlayer(ChatColor.RED + "You were kicked for idling more than "
                        + Configs.getMainConfig().getAfkLimit() + " minutes.");
                Core.alertStaff(p.getName() + " was kicked for AFKing.");
                kickTask.cancel();
            };

            Callbacks.listenForNumber(p, n -> {
                kickTask.cancel();
                if (n == answer) {
                    p.sendMessage(ChatColor.GREEN + "Correct.");
                    markActive(p);
                } else {
                    p.kickPlayer(ChatColor.RED + "Incorrect answer.");
                }
            }, fail);
        }), 0L, 30 * 20L);
}
项目:NeverLag    文件:SchedulerTaskInjector.java   
public static void inject(Plugin plg) {
    if (plg != null) {
        for (BukkitTask pendingTask : Bukkit.getScheduler().getPendingTasks()) {
            if (pendingTask.isSync() && pendingTask.getOwner().equals(plg)) {
                try {
                    FieldAccessor<Runnable> field = Reflection.getField(pendingTask.getClass(), "task", Runnable.class);
                    field.set(pendingTask, new SchedulerTaskInjector(plg, field.get(pendingTask)));
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
项目:HCFCore    文件:WallBorderListener.java   
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
public void onPlayerQuit(PlayerQuitEvent event) {
    if (!this.useTaskInstead)
        return;
    BukkitTask task = wallBorderTask.remove(event.getPlayer().getUniqueId());
    if (task != null) {
        task.cancel();
    }
}
项目:HCFCore    文件:WallBorderListener.java   
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
public void onPlayerQuit(PlayerQuitEvent event) {
    if (!this.useTaskInstead)
        return;
    BukkitTask task = wallBorderTask.remove(event.getPlayer().getUniqueId());
    if (task != null) {
        task.cancel();
    }
}
项目:VoxelGamesLibv2    文件:LoggedScheduler.java   
@Override
public BukkitTask runTask(Plugin plugin, Runnable runnable) throws IllegalArgumentException {
    TaskedRunnable wrapped = new TaskedRunnable(runnable);

    BukkitTask bukkitTask = delegate.runTask(plugin, wrapped);
    wrapped.setTaskID(bukkitTask.getTaskId());
    return bukkitTask;
}
项目:VoxelGamesLibv2    文件:LoggedScheduler.java   
@Override
public BukkitTask runTask(Plugin plugin, BukkitRunnable bukkitRunnable)
        throws IllegalArgumentException {
    TaskedRunnable wrapped = new TaskedRunnable(bukkitRunnable);

    BukkitTask bukkitTask = delegate.runTask(plugin, wrapped);
    wrapped.setTaskID(bukkitTask.getTaskId());
    return bukkitTask;
}
项目:VoxelGamesLibv2    文件:LoggedScheduler.java   
@Override
public BukkitTask runTaskAsynchronously(Plugin plugin, Runnable runnable)
        throws IllegalArgumentException {
    TaskedRunnable wrapped = new TaskedRunnable(runnable);

    BukkitTask bukkitTask = delegate.runTaskAsynchronously(plugin, wrapped);
    wrapped.setTaskID(bukkitTask.getTaskId());
    return bukkitTask;
}
项目:VoxelGamesLibv2    文件:LoggedScheduler.java   
@Override
public BukkitTask runTaskAsynchronously(Plugin plugin, BukkitRunnable bukkitRunnable)
        throws IllegalArgumentException {
    TaskedRunnable wrapped = new TaskedRunnable(bukkitRunnable);

    BukkitTask bukkitTask = delegate.runTaskAsynchronously(plugin, wrapped);
    wrapped.setTaskID(bukkitTask.getTaskId());
    return bukkitTask;
}
项目:VoxelGamesLibv2    文件:LoggedScheduler.java   
@Override
public BukkitTask runTaskLater(Plugin plugin, Runnable runnable, long l)
        throws IllegalArgumentException {
    TaskedRunnable wrapped = new TaskedRunnable(runnable);

    BukkitTask bukkitTask = delegate.runTaskLater(plugin, wrapped, l);
    wrapped.setTaskID(bukkitTask.getTaskId());
    return bukkitTask;
}
项目:VoxelGamesLibv2    文件:LoggedScheduler.java   
@Override
public BukkitTask runTaskLater(Plugin plugin, BukkitRunnable bukkitRunnable, long l)
        throws IllegalArgumentException {
    TaskedRunnable wrapped = new TaskedRunnable(bukkitRunnable);

    BukkitTask bukkitTask = delegate.runTaskLater(plugin, wrapped, l);
    wrapped.setTaskID(bukkitTask.getTaskId());
    return bukkitTask;
}
项目:VoxelGamesLibv2    文件:LoggedScheduler.java   
@Override
public BukkitTask runTaskLaterAsynchronously(Plugin plugin, Runnable runnable, long l)
        throws IllegalArgumentException {
    TaskedRunnable wrapped = new TaskedRunnable(runnable);

    BukkitTask bukkitTask = delegate.runTaskLaterAsynchronously(plugin, wrapped, l);
    wrapped.setTaskID(bukkitTask.getTaskId());
    return bukkitTask;
}
项目:VoxelGamesLibv2    文件:LoggedScheduler.java   
@Override
public BukkitTask runTaskLaterAsynchronously(Plugin plugin, BukkitRunnable bukkitRunnable, long l)
        throws IllegalArgumentException {
    TaskedRunnable wrapped = new TaskedRunnable(bukkitRunnable);

    BukkitTask bukkitTask = delegate.runTaskLaterAsynchronously(plugin, wrapped, l);
    wrapped.setTaskID(bukkitTask.getTaskId());
    return bukkitTask;
}
项目:VoxelGamesLibv2    文件:LoggedScheduler.java   
@Override
public BukkitTask runTaskTimer(Plugin plugin, Runnable runnable, long l, long l1)
        throws IllegalArgumentException {
    TaskedRunnable wrapped = new TaskedRunnable(runnable);

    BukkitTask bukkitTask = delegate.runTaskTimer(plugin, wrapped, l, l1);
    wrapped.setTaskID(bukkitTask.getTaskId());
    return bukkitTask;
}
项目:VoxelGamesLibv2    文件:LoggedScheduler.java   
@Override
public BukkitTask runTaskTimer(Plugin plugin, BukkitRunnable bukkitRunnable, long l, long l1)
        throws IllegalArgumentException {
    TaskedRunnable wrapped = new TaskedRunnable(bukkitRunnable);

    BukkitTask bukkitTask = delegate.runTaskTimer(plugin, wrapped, l, l1);
    wrapped.setTaskID(bukkitTask.getTaskId());
    return bukkitTask;
}
项目:VoxelGamesLibv2    文件:LoggedScheduler.java   
@Override
public BukkitTask runTaskTimerAsynchronously(Plugin plugin, Runnable runnable, long l, long l1)
        throws IllegalArgumentException {
    TaskedRunnable wrapped = new TaskedRunnable(runnable);

    BukkitTask bukkitTask = delegate.runTaskTimerAsynchronously(plugin, wrapped, l, l1);
    wrapped.setTaskID(bukkitTask.getTaskId());
    return bukkitTask;
}