瓷砖没有正确描述,所以我试着在这里描述一下:
我有一个bukkit插件,它是一个小游戏。
它必须有一些代码运行10分钟,然后运行另一个代码,直到游戏结束
我目前有这个: 定时器计时器=新的计时器(); timer.schedule(new TimerTask(){
Destroy(gameObject.name);
dict.Remove(gameObject.name);
//代码
之后然而,这只会影响单个玩家,而不会影响那个世界。 因此,如果一个玩家加入,他将等待10分钟,然后运行代码的另一部分,依此类推,当目的是10分钟开始自己兜售,即使没有玩家。 感谢
答案 0 :(得分:1)
您的问题可能是因为您的代码全部由事件触发而引起的? 这意味着它只会影响触发该事件的玩家。
相反,您需要一个不会触发事件的通用插件(登录除外),而是使用计时器,然后抓取所有玩家的列表并在每个/所有玩家上运行您的代码。然后在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();
}
}