所以我正在开发我的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));
答案 0 :(得分:1)
你需要两件事:
ScheduledExecutorService
,能够在任意时间点安排任务; Runnable
的实现,可以按照您想要的方式运行。关于第一点,请查看Executors
class,它可以创建它们;至于第二点,确保你的Runnable
拥有执行手头任务所需的所有数据。
这就是它,真的。
需要考虑的一个重要事项是,ScheduledExecutorService
和Runnable
只定义行为,但没有权限,也没有权限意图,定义状态。
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