2016-08-01 66 views
1

所以我正在研究我的Minecraft的Triggerbot。 爲了讓它繞過,我需要添加一個輕微的延遲... 我已經做了一些研究,並嘗試了一些不同的東西,但我似乎無法得到任何東西的功能,就像我使用:我該如何延遲這段特定的代碼?

try { 
    Thread.sleep(100); 
} catch (InterruptedException TriggerDelay) { 
    TriggerDelay.printStackTrace(); 
} 

這基本上凍結了整個遊戲,而不是代碼,我不想耽誤只是行...

這裏的特定部分,我需要延遲,我離開了剩下的讓孩子們可以不打滑我的Triggerbot ..

if(mc.objectMouseOver !=null) { 
    if(mc.objectMouseOver.typeOfHit == MovingObjectType.ENTITY) { 
     if(mc.objectMouseOver.entityHit instanceof EntityLivingBase) { 
      // This is where I need help, I want to delay the following by 100ms... 
      mc.thePlayer.swingItem(); 
      mc.thePlayer.sendQueue.addToSendQueue(new C02PacketUseEntity(mc.objectMouseOver.entityHit, C02PacketUseEntity.Action.ATTACK)); 
+2

我希望縮進不是從你的實際代碼。你有多少層次的嵌套循環和條件? –

+0

調查線程。如果你只是想安排這兩個操作的執行,以後你可以創建一個後臺線程並進行睡眠。 –

回答

0

這是perhap像了你所需要的東西,但我不是100%肯定我的世界會愛死你的

if (mc.objectMouseOver != null 
    && mc.objectMouseOver.typeOfHit == MovingObjectType.ENTITY 
    && mc.objectMouseOver.entityHit instanceof EntityLivingBase) { 
    (new Thread() { 
     public void run() { 
      try { 
       Thread.sleep(100); 
       mc.thePlayer.swingItem(); 
       mc.thePlayer.sendQueue.addToSendQueue(new C02PacketUseEntity(mc.objectMouseOver.entityHit, C02PacketUseEntity.Action.ATTACK)); 
      } catch (InterruptedException ex) { 
       return; 
      } 
     } 
    }).start(); 
} 
1

你需要兩樣東西:

對於第一點,請看Executors class,它可以創建它們;至於第二點,請確保您的Runnable具有執行手頭任務的所有必要數據。

就是這樣,真的。

一個重要的事情要考慮,並且不是很明顯的是,無論ScheduledExecutorServiceRunnable只定義行爲但沒有權威,它們也沒有意圖,定義狀態的。

Executors類爲您提供了創建其狀態爲您管理的ScheduledExecutorService的方法;但你提交給他們的Runnable是你自己定義的,包括狀態。

0

TimeUnit.seconds.sleep(int seconds);TimeUnit.minutes.sleep(int minutes);

瞭解更多關於爲什麼這是最容易使用的推薦的方法,而不是使用Thread.sleep(long miliseconds);這裏:http://javarevisited.blogspot.ro/2012/11/What-is-timeunit-sleep-over-threadsleep.html

+0

我並不完全相信,您所連接的文章在睡眠時間幾乎肯定會小於1秒並且極端情況下最多隻有幾秒鐘的情況下可以提供很多好處。 – Tibrogargan