我試圖用一個Bukkit談話,已經工作,但是,當我使用TimeUnit.SECONDS.sleep(integer-value)
,它的工作原理一次,然後失敗,出現此錯誤控制檯:java.lang.InterruptedException: sleep interrupted
Bukkit對話失敗睡覺
當提示已顯示,下一個將顯示方法acceptInput被調用。在第一個提示符中,它可以正常工作,在其他提示符下,這些提示符會被調出(提示符會調用它自己的一個新實例)。除了睡眠部分,所有的工作都很好。任何想法來解決這個問題?
這裏是我的代碼:
package dbx12.Test1.Tutorial.Prompts;
import java.util.concurrent.TimeUnit;
import org.bukkit.conversations.ConversationContext;
import org.bukkit.conversations.Prompt;
import org.bukkit.entity.Player;
public class Text implements Prompt {
@Override
public Prompt acceptInput(ConversationContext context, String input) {
int thisPrompt = (int) context.getSessionData("step");
context.setSessionData("step", thisPrompt+1);
Player p = (Player) context.getForWhom();
boolean type;
try {
TimeUnit.SECONDS.sleep(dbx12.Test1.Utils.Prompt_List.delay.get(thisPrompt));
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
e.printStackTrace(); //DEBUG
}
try {
type = dbx12.Test1.Utils.Prompt_List.promptType.get(thisPrompt+1);
} catch (Exception e) {
return new Finish();
}
if(dbx12.Test1.Utils.Prompt_List.hasLocation.get(thisPrompt+1) == true)
p.teleport(dbx12.Test1.Utils.Prompt_List.location.get(thisPrompt+1));
if(type==true)
{
System.out.println("return a text");
return new Text();
}
else
{
System.out.println("return a interaction");
return new Interaction();
}
}
@Override
public boolean blocksForInput(ConversationContext context) {
return false;
}
@Override
public String getPromptText(ConversationContext context) {
return dbx12.Test1.Utils.Prompt_List.promptText.get(context.getSessionData("step"));
}
}
你在這裏做什麼?設置延遲?這個插件將會做什麼?這可能有更好的方法。 – Jojodmo
我嘗試通過提示顯示信息。經過一定的延遲後,顯示下一個提示。延遲第一次運行,但在接下來的x次提示中失敗。我把下一個提示稱爲這個新的實例。 – DBX12