Начинающий
- Статус
- Оффлайн
- Регистрация
- 19 Ноя 2025
- Сообщения
- 9
- Реакции
- 0
- Выберите загрузчик игры
- Fabric
blockfly.java:
package thunder.hack.features.modules.movement;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Random;
import java.util.concurrent.atomic.AtomicBoolean;
import meteordevelopment.orbit.EventHandler;
import net.minecraft.network.packet.Packet;
import net.minecraft.network.packet.c2s.play.ClientStatusC2SPacket;
import net.minecraft.network.packet.c2s.common.KeepAliveC2SPacket;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import thunder.hack.events.impl.EventTick;
import thunder.hack.events.impl.PacketEvent;
import thunder.hack.features.modules.Module;
import thunder.hack.setting.Setting;
public class BlockFly extends Module {
private static final Logger LOGGER = LoggerFactory.getLogger("BlockFly");
private final Setting<Mode> mode = new Setting<>("Mode", Mode.Smart);
private final Setting<Integer> intervalMs = new Setting<>("Interval", 500, 50, 5000,
v -> this.mode.getValue() == Mode.Normal);
private final Setting<Integer> maxQueueSize = new Setting<>("MaxQueueSize", 1000, 100, 5000);
private final Setting<Boolean> debug = new Setting<>("Debug", false);
private final Queue<Packet<?>> storedPackets = new LinkedList<>();
private final AtomicBoolean sending = new AtomicBoolean(false);
private final Random random = new Random();
private long lastPulseTime = 0L;
private int currentPulseDelayMs = 0;
private int totalPacketsSent = 0;
private int totalPacketsQueued = 0;
public BlockFly() {
super("BlockFly", Module.Category.MOVEMENT);
}
[USER=1367676]@override[/USER]
public void onEnable() {
if (mc.player == null || mc.world == null || mc.isIntegratedServerRunning() || mc.getNetworkHandler() == null) {
disable();
return;
}
storedPackets.clear();
sending.set(false);
lastPulseTime = System.currentTimeMillis();
currentPulseDelayMs = mode.getValue() == Mode.Smart ? rand(150, 250) : intervalMs.getValue();
totalPacketsSent = 0;
totalPacketsQueued = 0;
if (debug.getValue()) {
LOGGER.info("BlockFly: Модуль включен, режим: {}", mode.getValue());
}
}
[USER=1367676]@override[/USER]
public void onDisable() {
if (mc.world == null || mc.player == null) return;
sending.set(true);
int flushedCount = flushPackets();
sending.set(false);
if (debug.getValue()) {
LOGGER.info("BlockFly: Модуль выключен");
LOGGER.info("BlockFly: Статистика - Всего пакетов в очереди: {}", totalPacketsQueued);
LOGGER.info("BlockFly: Статистика - Всего пакетов отправлено: {}", totalPacketsSent);
LOGGER.info("BlockFly: Статистика - Пакетов сброшено при выключении: {}", flushedCount);
}
}
[USER=1489798]@EventHandler[/USER]
public void onUpdate(EventTick event) {
if (mc.player == null || mc.world == null) return;
long now = System.currentTimeMillis();
if (now - lastPulseTime >= currentPulseDelayMs && !storedPackets.isEmpty()) {
flushPackets();
lastPulseTime = now;
currentPulseDelayMs = mode.getValue() == Mode.Smart ? rand(150, 250) : intervalMs.getValue();
}
}
private int flushPackets() {
if (mc.player == null) return 0;
sending.set(true);
int packetCount = storedPackets.size();
int flushedCount = 0;
while (!storedPackets.isEmpty()) {
Packet<?> packet = storedPackets.poll();
sendPacket(packet);
totalPacketsSent++;
flushedCount++;
}
sending.set(false);
if (debug.getValue() && packetCount > 0) {
LOGGER.info("BlockFly: Отправлена пачка пакетов - Количество: {}", packetCount);
}
return flushedCount;
}
private int rand(int min, int max) {
return min + random.nextInt(max - min + 1); // Исправлено
}
[USER=1489798]@EventHandler[/USER]
public void onPacketSend(PacketEvent.Send event) {
if (mc.player == null || mc.world == null || sending.get()) return;
Packet<?> packet = event.getPacket();
if (packet instanceof ClientStatusC2SPacket || packet instanceof KeepAliveC2SPacket) {
return; // Не блокируем важные пакеты
}
// Проверяем размер очереди
if (storedPackets.size() >= maxQueueSize.getValue()) {
if (debug.getValue()) {
LOGGER.warn("BlockFly: Очередь переполнена, отправляем пакет немедленно");
}
return; // Пропускаем пакет для немедленной отправки
}
event.cancel();
storedPackets.add(packet);
totalPacketsQueued++;
if (debug.getValue() && totalPacketsQueued % 50 == 0) {
LOGGER.info("BlockFly: Пакет добавлен в очередь - Всего в очереди: {}, Всего добавлено: {}",
storedPackets.size(), totalPacketsQueued);
}
}
[USER=1367676]@override[/USER]
public String getDisplayInfo() {
return Integer.toString(storedPackets.size());
}
private enum Mode {
Normal,
Smart
}
}
Раньше играл с этим на Jenro0 бедварсе,потом сменили античит
Настроки:Normal,1344