Начинающий
- Статус
- Оффлайн
- Регистрация
- 11 Мар 2024
- Сообщения
- 33
- Реакции
- 0
- Выберите загрузчик игры
- Vanilla
- Forge
Не видел чтобы кто то сливал обломки на фт, если че сразу говорю что параша полная и половину не подсвечивает, но в целом сойдет, кому нужно доработает
esli 4to gpt code
esli 4to gpt code
Пожалуйста, авторизуйтесь для просмотра ссылки.
XrayBypass:
package im.expensive.functions.impl.render;
import com.google.common.eventbus.Subscribe;
import im.expensive.events.EventPacket;
import im.expensive.events.WorldEvent;
import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import im.expensive.utils.render.ColorUtils;
import net.minecraft.block.Blocks;
import net.minecraft.network.play.server.SMultiBlockChangePacket;
import net.minecraft.util.math.BlockPos;
import net.optifine.render.RenderUtils;
import java.util.concurrent.CopyOnWriteArrayList;
@FunctionRegister(name = "XrayBypass", type = Category.Render)
public class XrayBypass extends Function {
private final CopyOnWriteArrayList<BlockPos> ores = new CopyOnWriteArrayList<>();
@Override
public void onDisable() {
super.onDisable();
ores.clear();
}
@Subscribe
public void onPacket(EventPacket e) {
if (mc.player == null || mc.world == null) return;
if (e.isReceive()) {
if (e.getPacket() instanceof SMultiBlockChangePacket) {
SMultiBlockChangePacket packet = (SMultiBlockChangePacket) e.getPacket();
packet.func_244310_a((blockPos, blockState) -> {
BlockPos bp = blockPos.toImmutable();
if (blockState.getBlock().equals(Blocks.ANCIENT_DEBRIS)) {
if (!ores.contains(bp)) {
ores.add(bp);
}
}
});
}
}
}
@Subscribe
public void onWorld(WorldEvent e) {
if (mc.player == null || mc.world == null) return;
// Удаляем невалидные блоки
ores.removeIf(pos -> !mc.world.getBlockState(pos).getBlock().equals(Blocks.ANCIENT_DEBRIS));
for (BlockPos pos : ores) {
// --- ЛОГИКА ПРОВЕРКИ ВОЗДУХА ---
int airCount = 0;
// Проверяем область 3x3x3 (от -1 до +1 по всем осям относительно центра)
for (int x = -1; x <= 1; x++) {
for (int y = -1; y <= 1; y++) {
for (int z = -1; z <= 1; z++) {
// Получаем позицию соседнего блока
BlockPos checkPos = pos.add(x, y, z);
// Проверяем, является ли блок воздухом
// Используем isAirBlock, так как это надежнее (учитывает разные типы воздуха),
// но можно использовать и .equals(Blocks.AIR)
if (mc.world.getBlockState(checkPos).getBlock().equals(Blocks.AIR)) {
airCount++;
}
}
}
}
// Если воздуха больше 4 блоков, рисуем ESP
if (airCount > 3) {
RenderUtils.drawBlockBox(pos, ColorUtils.rgba(195, 162, 120, 255));
}
}
}
}