602723113
就比如说像这样

for(int i=1;i<=10;i++){
     do something;
}

@EventHandler
public void move(PlayerMoveEvent e)
{
         something code;
}

这时候监视器触发了,怎么才能跳出这个循环?

TimmyOVO
本帖最后由 星燚 于 2016-6-11 18:40 编辑

你想用监听器监听后跳出外部的for循环?
这不很简单,加个全局变量另外,孩子你的想法很危险
我不知道你到底想干嘛
for循环基本处于一瞬间就完成,你需要结束它干嘛
而且如果是死循环类似这样
for(int c=-1;c<0;c--)
{
}
你服务器立马卡死或者非常卡...
也没必要吧

  1. private volatile int a=0;
  2. for(int i=1;i<=10;i++){
  3.      if(a==20)
  4. {
  5. break;
  6. }
  7. }

  8. @EventHandler
  9. public void move(PlayerMoveEvent e)
  10. {
  11.     setMyInt(20);
  12. }
  13. public int getMyInt()


  14. {
  15. return a;
  16. }
  17. public void setMyInt(Int number)
  18. {
  19. this.a=number;
  20. }
复制代码


602723113
星燚 发表于 2016-6-11 18:26
你想用监听器监听后跳出外部的for循环?
这不很简单,加个全局变量另外,孩子你的想法很危险
我不知道你到 ...

我其实是想弄一个插件,这个插件只是一个不断给予经验值的插件,然后玩家移动后就不再给予,这么的一个东西,不是想去弄个什么别的东西,顺便说声谢谢~

TimmyOVO
602723113 发表于 2016-6-14 18:53
我其实是想弄一个插件,这个插件只是一个不断给予经验值的插件,然后玩家移动后就不再给予,这么的一个东 ...

。。你这不可行
PlayerMoveEvent连玩家视角改变都会监听
不仅仅是移动

602723113
星燚 发表于 2016-6-14 18:54
。。你这不可行
PlayerMoveEvent连玩家视角改变都会监听
不仅仅是移动

诶呀这个不要紧的,告诉玩家就好了嘛 2333

andylizi
{:10_492:}建议先搞懂BukkitRunnable
用for等循环是不可能做到的。

Bryan33
梨子说的是正确的
因为MC单线程执行 所以在for中没办法被其他的代码影响
只能通过BukkitRunnable等方式实现

HotFlow
判断一下视角就好了

userzhangchao
ZHE GE HEN QIANG ZHI CHI LOU ZHU LOU ZHU JIA YOU A

耗子
如果不用线程和休眠的话这个给予经验的速度很快,而且服务器会卡

下一页 最后一页