-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
С нн софта сделал трeйлсы надеюсь вам понравился
Они пропадают после 5-10 секунд
Пастерам пойдет
Они пропадают после 5-10 секунд
Пастерам пойдет
Пожалуйста, авторизуйтесь для просмотра ссылки.
Trails.java:
package im.expensive.functions.impl.render;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import com.google.common.eventbus.Subscribe;
import com.mojang.blaze3d.systems.RenderSystem;
import im.expensive.events.WorldEvent;
import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import lombok.Getter;
import net.minecraft.client.entity.player.ClientPlayerEntity;
import net.minecraft.client.settings.PointOfView;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.math.vector.Vector3d;
import org.lwjgl.opengl.GL11;
@FunctionRegister(name = "Trails", type = Category.Render)
public class Trails extends Function {
public Trails() {
// Конструктор для инициализации функции
}
// Карта для хранения точек пути каждого игрока
private final Map<PlayerEntity, List<Point>> playerTrails = new ConcurrentHashMap<>();
private final int maxPoints = 1000; // Максимальное количество точек
@Subscribe
public void onRender(WorldEvent event) {
// Перебираем всех игроков в мире
for (PlayerEntity entity : mc.world.getPlayers()) {
// Инициализируем список точек для нового игрока
playerTrails.putIfAbsent(entity, new CopyOnWriteArrayList<>());
// Если количество точек превышает максимальное значение, удаляем старые точки
if (playerTrails.get(entity).size() > maxPoints) {
playerTrails.get(entity).remove(0);
}
// Пропускаем отрисовку для первого лица текущего игрока
if (entity == mc.player && mc.gameSettings.getPointOfView() == PointOfView.FIRST_PERSON) {
continue;
}
// Интерполируем текущую позицию игрока
Vector3d playerPos = new Vector3d(
interpolate(entity.getPosX(), entity.lastTickPosX, event.getPartialTicks()),
interpolate(entity.getPosY(), entity.lastTickPosY, event.getPartialTicks()),
interpolate(entity.getPosZ(), entity.lastTickPosZ, event.getPartialTicks())
);
// Добавляем новую точку в список
playerTrails.get(entity).add(new Point(playerPos));
}
// Настройки OpenGL для отрисовки линии
RenderSystem.pushMatrix();
Vector3d projection = mc.getRenderManager().info.getProjectedView();
RenderSystem.translated(-projection.x, -projection.y, -projection.z);
RenderSystem.enableBlend();
RenderSystem.disableCull();
RenderSystem.disableTexture();
RenderSystem.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
RenderSystem.shadeModel(GL11.GL_SMOOTH);
RenderSystem.lineWidth(2);
GL11.glEnable(GL11.GL_LINE_SMOOTH);
GL11.glHint(GL11.GL_LINE_SMOOTH_HINT, GL11.GL_NICEST);
// Отрисовка линий для всех игроков
for (PlayerEntity entity : mc.world.getPlayers()) {
List<Point> points = playerTrails.get(entity);
if (!points.isEmpty()) {
// Получаем время жизни последней точки
long lastPointTime = points.get(points.size() - 1).time.elapsedTime();
// Рассчитываем прозрачность линии
float alpha = 1.0f - Math.min(1.0f, lastPointTime / 5000.0f); // Прозрачность уменьшается со временем
// Начинаем рисование линии
GL11.glBegin(GL11.GL_LINE_STRIP);
GL11.glColor4f(1.0F, 1.0F, 1.0F, alpha); // Белый цвет линии с учетом прозрачности
// Прокладываем точки линии
for (Point point : points) {
GL11.glVertex3d(point.getPosition().x, point.getPosition().y, point.getPosition().z);
}
GL11.glEnd();
}
}
// Завершаем настройки OpenGL
GL11.glHint(GL11.GL_LINE_SMOOTH_HINT, GL11.GL_DONT_CARE);
GL11.glDisable(GL11.GL_LINE_SMOOTH);
RenderSystem.enableTexture();
RenderSystem.disableBlend();
RenderSystem.enableCull();
RenderSystem.shadeModel(GL11.GL_FLAT);
RenderSystem.popMatrix();
}
// Метод для интерполяции позиций
private double interpolate(double now, double then, float partialTicks) {
return then + (now - then) * partialTicks;
}
// Класс для хранения точек пути игрока
[USER=270918]@Getter[/USER]
public static class Point {
private final Vector3d position;
private final StopWatch time = new StopWatch();
public Point(Vector3d position) {
this.position = position;
}
}
}