就比如说像这样
for(int i=1;i<=10;i++){
do something;
}
@EventHandler
public void move(PlayerMoveEvent e)
{
something code;
}
这时候监视器触发了,怎么才能跳出这个循环?
for(int i=1;i<=10;i++){
do something;
}
@EventHandler
public void move(PlayerMoveEvent e)
{
something code;
}
这时候监视器触发了,怎么才能跳出这个循环?
 本帖最后由 星燚 于 2016-6-11 18:40 编辑 
你想用监听器监听后跳出外部的for循环?
这不很简单,加个全局变量另外,孩子你的想法很危险
我不知道你到底想干嘛
for循环基本处于一瞬间就完成,你需要结束它干嘛
而且如果是死循环类似这样
for(int c=-1;c<0;c--)
{
}
你服务器立马卡死或者非常卡...
也没必要吧
复制代码
你想用监听器监听后跳出外部的for循环?
这不很简单,加个全局变量另外,孩子你的想法很危险
我不知道你到底想干嘛
for循环基本处于一瞬间就完成,你需要结束它干嘛
而且如果是死循环类似这样
for(int c=-1;c<0;c--)
{
}
你服务器立马卡死或者非常卡...
也没必要吧
 
- private volatile int a=0;
 
- for(int i=1;i<=10;i++){
 
-      if(a==20)
 
- {
 
- break;
 
- }
 
- }
 
 
- @EventHandler
 
- public void move(PlayerMoveEvent e)
 
- {
 
-     setMyInt(20);
 
- }
 
- public int getMyInt()
 
 
 
- {
 
- return a;
 
- }
 
- public void setMyInt(Int number)
 
- {
 
- this.a=number;
 
- }
 
星燚 发表于 2016-6-11 18:26
你想用监听器监听后跳出外部的for循环?
这不很简单,加个全局变量另外,孩子你的想法很危险
我不知道你到 ...
我其实是想弄一个插件,这个插件只是一个不断给予经验值的插件,然后玩家移动后就不再给予,这么的一个东西,不是想去弄个什么别的东西,顺便说声谢谢~
602723113 发表于 2016-6-14 18:53
我其实是想弄一个插件,这个插件只是一个不断给予经验值的插件,然后玩家移动后就不再给予,这么的一个东 ...
。。你这不可行
PlayerMoveEvent连玩家视角改变都会监听
不仅仅是移动
星燚 发表于 2016-6-14 18:54
。。你这不可行
PlayerMoveEvent连玩家视角改变都会监听
不仅仅是移动
诶呀这个不要紧的,告诉玩家就好了嘛 2333
{:10_492:}建议先搞懂BukkitRunnable
用for等循环是不可能做到的。
用for等循环是不可能做到的。
梨子说的是正确的
因为MC单线程执行 所以在for中没办法被其他的代码影响
只能通过BukkitRunnable等方式实现
因为MC单线程执行 所以在for中没办法被其他的代码影响
只能通过BukkitRunnable等方式实现
判断一下视角就好了
ZHE GE HEN QIANG ZHI CHI LOU ZHU LOU ZHU JIA YOU A 
如果不用线程和休眠的话这个给予经验的速度很快,而且服务器会卡
耗子 发表于 2016-6-27 22:52
如果不用线程和休眠的话这个给予经验的速度很快,而且服务器会卡
那可不可以用 Thread.sleep() ?
602723113 发表于 2016-6-28 08:48
那可不可以用 Thread.sleep() ?
前面已经有人提到MC是单线程的,除非你休眠的不是主线程,用Thread.sleep()相等于将整个服务器「休眠」掉(其实就是卡服)
602723113 发表于 2016-6-28 08:48
那可不可以用 Thread.sleep() ?
可以自己创建一个Timer
 本帖最后由 他们服务器 于 2016-6-30 11:35 编辑 
可以单独创建一个类继承Thread类,然后start(),这样Thread.sleep()就不会影响到服务器了,但是不提倡这种做法,因为线程同步问题很难解决。最好的方案还是用BukkitRunnable类。
602723113 发表于 2016-6-28 08:48
那可不可以用 Thread.sleep() ?
可以单独创建一个类继承Thread类,然后start(),这样Thread.sleep()就不会影响到服务器了,但是不提倡这种做法,因为线程同步问题很难解决。最好的方案还是用BukkitRunnable类。