【问题标题】:(Spigot) How to await in java(Spigot) 如何在 Java 中等待
【发布时间】:2022-02-16 04:35:50
【问题描述】:

我正在制作一个我的世界迷你游戏插件,我需要制作一个循环来执行迷你游戏,如果游戏结束,请停止它,否则继续,为此我创建了一个错误的布尔值,我把一个:

while(isEnded) {
    //my code
}

但是在我的代码中,有异步函数,所以它是重复的,但是异步函数没有时间在另一个循环开始之前完成,所以我的所有游戏都出现了故障。 等待异步功能的任何解决方案? (我正在使用Bukkit.getServer().getScheduler().runTaskTimer(Main.plugin, new Runnable() {

感谢您的帮助;)

【问题讨论】:

  • 我不明白,您能显示更多代码/更改您解释问题的方式吗?
  • 我正在制作异步方法在做事之前等待并且不要锁定游戏,所以代码的另一部分继续,所以,当我做一个循环来重复这部分游戏时(需要一直重复到最后),这只是结束前的垃圾邮件功能,所以我需要做一个等待功能,但我在java中找不到方法

标签: java async-await minecraft bukkit spigot


【解决方案1】:

我真的不明白你在哪里卡住了,但我会给你一些方法来做你正在寻找的东西。

  1. 小游戏结束后的运行方法

比如当游戏的时候,你正在运行一个方法:

public void endGame() {
   // do something
   callMethod();
}
  1. 用于其他变量

你可以只设置一个变量,然后像这样运行一个任务:

public static boolean isEnd = false;

public void runTask() {
   Bukkit.getScheduler().runTaskTimer(myPlugin, () -> {
       if(isEnd) {
           // do something
       }
   }, 20, 20);
}

最后,只要MyClass.isEnd = true;就可以设置变量

它将每 20 个滴答声运行一次(所以每秒,因为 20 个滴答声 = 1 秒)。

  1. 如果您知道等待的时间,您可以使用与您正在使用的相同的调度程序,正如我在 #2 选项中所解释的那样。

【讨论】:

    猜你喜欢
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 2012-10-03
    相关资源
    最近更新 更多