如何延迟此特定代码行?

时间:2016-08-01 18:56:31

标签: java minecraft

所以我正在开发我的Triggerbot for Minecraft。 为了绕过它,我需要稍加延迟...... 我做了一些研究并尝试了一些不同的东西,但我似乎无法获得任何功能,就好像我使用:

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));

3 个答案:

答案 0 :(得分:1)

你需要两件事:

关于第一点,请查看Executors class,它可以创建它们;至于第二点,确保你的Runnable拥有执行手头任务所需的所有数据。

这就是它,真的。

需要考虑的一个重要事项是,ScheduledExecutorServiceRunnable只定义行为,但没有权限,也没有权限意图,定义状态

Executors课程为您提供了创建状态为您管理的ScheduledExecutorService的方法;但是你提交给他们的Runnable是由你来定义的,包括在内。

答案 1 :(得分:0)

这可能更接近你所需要的,但我并不是百分之百确定我的世界将会爱你呢

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();
}

答案 2 :(得分: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