IMENDERDRAGON
本帖最后由 IMENDERDRAGON 于 2017-7-9 13:07 编辑

比如说我要在X:50至X:100之间从X:50开始每1秒放置一个方块,然后就是如下代码:worldIn, y, z变量是在上面的事件里定义的
int i = 50;
while(i <= 100){
i++;
    try{
    Thread.sleep(1000);
    worldIn.setBlockStste(new BlockPos(i, y, z), 那一个方块.getDefaultState(), 3);
    }
    catch(Exception e){
    System.out.println(e);
}

}
可是为什么必须得循环结束后放置?
求解答。。




弱鸡绿毛怪
Thread.sleep()是卡服
请使用BukkitRunnable

Dante_7
强行sleep最为致命。
建议楼主使用简单易用的BukkitRunnable,另外除非是整个服务器的定时任务(比如开一个监视线程)这类的最好别自己对主线程操作,反正你这么写服务器肯定是要卡1秒的。

sjx
还好只卡了50秒(卡60秒服务器就崩溃了)

IMENDERDRAGON
凋灵兔子 发表于 2017-7-10 23:36
强行sleep最为致命。
建议楼主使用简单易用的BukkitRunnable,另外除非是整个服务器的定时任务(比如开一个 ...

有没有是使用forge的?

csj3120
IMENDERDRAGON 发表于 2017-7-14 08:15
有没有是使用forge的?

是不是原理都一样,卡线程了,单独schedule就好了,这样异步操作主线程我记得forge有方法提供的,不然无法操作

下一页 最后一页