gpt4 book ai didi

java - 如何在服务器范围内设置计时器

转载 作者:行者123 更新时间:2023-12-01 09:54:05 25 4
gpt4 key购买 nike

图 block 没有正确描述它,所以我将尝试在这里描述它:

我有一个 bukkit 插件,它是一个小游戏。

它必须运行一些代码 10 分钟,然后运行另一个代码,直到游戏结束

我目前有这个:计时器计时器 = new Timer(); 定时器.schedule(new TimerTask() {

            public void run() {

// code for 10 minutes

}

}, 600000);

//之后的代码

然而,这仅影响单个玩家,而不影响整个世界。因此,如果一名玩家加入,他将等待 10 分钟,然后运行代码的另一部分,依此类推,当目的是在 10 分钟内开始自己计算时,即使没有玩家。谢谢

最佳答案

你的问题可能是因为你的代码都是由事件触发引起的?这意味着它只会影响触发该事件的玩家。

相反,您需要一个不会触发事件(登录除外)的通用插件,而是使用计时器,然后获取所有玩家的列表并在每个/所有玩家上运行您的代码。然后 10 分钟后,它将退出到您的其他代码并在其余时间运行该代码。

编辑:粗略示例:

import org.bukkit.plugin.java.JavaPlugin;

public final class {$PluginName} extends JavaPlugin {
@Override
public void onEnable() { //This should proberbly be done onCommand rather than onEnable
Thread thread = new Thread(new Runnable() {

@Override
public void run() {
long time = System.currentTimeMillis();
while (some condition....){
//load list of players
//now iterate through player list and do your code
//check if 10min has passed:
if ((System.currentTimeMillis() - time) > 600000){
//now break the loop and run your other code for the rest of the minigame
break;
}
}
//code for the rest of the minigame
while (true){
//load list of players
//now iterate through player list and do your code for the rest of the time
}
}
});
thread.start();
}
}

关于java - 如何在服务器范围内设置计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37378963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com