-
Автор темы
- #1
Я поделюсь с вами обновленной версией модуля FlightModule, который позволяет вашему персонажу летать в режиме FunTime. Этот режим включает в себя имитацию нажатия клавиши пробела с задержкой пакетов, создавая интересные и веселые эффекты. Давайте рассмотрим, как это работает.
Что нового?
Имитация нажатия клавиши пробел:
Используется класс Robot для имитации нажатия и отпускания клавиши space (пробел), что позволяет вашему персонажу подпрыгивать в воздухе.
Задержка пакетов:
Реализована задержка пакетов на 1 секунду после каждого прыжка. Это создает эффект временного замедления, делая полет еще более захватывающим.
Цикличное выполнение:
Цикл while (funTimeMode) обеспечивает непрерывное выполнение прыжков и задержек, пока режим FunTime включен.
Управление режимом FunTime:
Добавлен метод setFunTimeMode(boolean funTimeMode), который позволяет легко включать и выключать режим FunTime
Что нового?
Имитация нажатия клавиши пробел:
Используется класс Robot для имитации нажатия и отпускания клавиши space (пробел), что позволяет вашему персонажу подпрыгивать в воздухе.
Задержка пакетов:
Реализована задержка пакетов на 1 секунду после каждого прыжка. Это создает эффект временного замедления, делая полет еще более захватывающим.
Цикличное выполнение:
Цикл while (funTimeMode) обеспечивает непрерывное выполнение прыжков и задержек, пока режим FunTime включен.
Управление режимом FunTime:
Добавлен метод setFunTimeMode(boolean funTimeMode), который позволяет легко включать и выключать режим FunTime
Java:
package ru.expensive.implement.features.modules.movement;
import ru.expensive.api.event.EventHandler;
import ru.expensive.api.feature.module.Module;
import ru.expensive.api.feature.module.ModuleCategory;
import ru.expensive.common.util.coroutine.CoroutineContext;
import ru.expensive.implement.events.player.TickEvent;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class FlightModule extends Module {
private final CoroutineContext context = new CoroutineContext();
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
private boolean funTimeMode = false;
public FlightModule() {
super("Flight", ModuleCategory.MOVEMENT);
}
@EventHandler
public void onTick(TickEvent tickEvent) {
if (funTimeMode) {
context.launch(() -> {
try {
Robot robot = new Robot();
while (funTimeMode) {
// Имитация нажатия пробела
robot.keyPress(KeyEvent.VK_SPACE);
robot.keyRelease(KeyEvent.VK_SPACE);
System.out.println("имитировал жиес");
// Замедление пакетов на 1 секунду
suspend(1000);
// Имитация нажатия пробела после задержки
robot.keyPress(KeyEvent.VK_SPACE);
robot.keyRelease(KeyEvent.VK_SPACE);
System.out.println("пробел нажат снова");
// Повторная задержка на 1 секунду
suspend(1000);
}
} catch (Exception e) {
e.printStackTrace();
}
});
}
}
private static void suspend(long millis) {
try {
Thread.sleep(millis);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Override
public void deactivate() {
funTimeMode = false;
context.shutdown();
super.deactivate();
}
public void setFunTimeMode(boolean funTimeMode) {
this.funTimeMode = funTimeMode;
}
}