-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Короче в чем проблема то, я рендерю всё 2D рендером (noad) и оно мне не рисует глубину тип! Пытаюсь зарендерить 3D оно ващ не рисует (noad) помогите мне (noad) ебануть партиклс$$$$ на экспенис(noad) 2.0 добнуть классные портикулярс ибоу них нету глубины ща короче WWWW
Мой кодиго (noad) (dw)
Мой кодиго (noad) (dw)
Окуляры:
@FunctionAnnotation(name = "HitParticles", type = Type.Render)
public class Particles extends Function {
private final ModeSetting rotationMode = new ModeSetting("Mod", "snowflake", "snowflake", "dollar", "thor", "heart", "star");
private final SliderSetting size = new SliderSetting("Size particle", 4.5f, 0.1f, 20.0f, 0.1f);
CopyOnWriteArrayList<Point> points = new CopyOnWriteArrayList<>();
float deltaTime = Minecraft.getInstance().worldRenderer.getFrameCount();
public Particles() {
this.addSettings(this.rotationMode, this.size);
}
private boolean isInView(Vector3d pos) {
frustum.setCameraPosition(mc.getRenderManager().info.getProjectedView().x,
mc.getRenderManager().info.getProjectedView().y,
mc.getRenderManager().info.getProjectedView().z);
return frustum.isBoundingBoxInFrustum(new AxisAlignedBB(pos.add(-0.2, -0.2, -0.2), pos.add(0.2, 0.2, 0.2)));
}
@Override
public void onEvent(Event event) {
if (event instanceof EventMotion) {
for (Object object : Particles.mc.world.getAllEntities()) {
if (!(object instanceof LivingEntity)) continue;
LivingEntity livingEntity = (LivingEntity) object;
if (livingEntity.hurtTime != 9) continue;
this.createPoints(livingEntity.getPositionVec().add(0.0, 1.0, 0.0));
}
}
if (event instanceof EventRender e) {
if (this.points.size() > 100) {
this.points.remove(0);
}
for (Point point : this.points) {
long currentTime = System.currentTimeMillis();
if (currentTime - point.createdTime > point.aliveTime || (!mc.player.canVectorBeSeenFixed(point.position) && !PlayerPositionTracker.isInView(point.position))) {
// Удаляем частицу, если она не видна или время жизни истекло
this.points.remove(point);
continue;
}
Vector2d projectedPosition = ProjectionUtils.project(point.position.x, point.position.y, point.position.z);
if (projectedPosition != null) {
RenderSystem.blendFuncSeparate(770, 1, 0, 1);
point.update();
// Получаем цвет без учета alpha
int color = ColorUtil.getColorStyle(this.points.indexOf(point));
// Извлекаем цветовые компоненты
int red = (color >> 16) & 0xFF;
int green = (color >> 8) & 0xFF;
int blue = color & 0xFF;
// Создаем цвет с alpha
int alpha = (int) (point.alpha * 255); // Преобразуем alpha в байт
int alphaColor = (alpha << 24) | (red << 16) | (green << 8) | blue; // Объединяем компоненты цвета
// Рендерим частицу с полученным цветом
RenderSystem.pushMatrix();
GL11.glDepthMask(false);
RenderSystem.disableLighting();
RenderSystem.enableBlend();
RenderSystem.shadeModel(7425);
mc.getTextureManager().bindTexture(new ResourceLocation("expensive/images/" + this.rotationMode.get() + ".png"));
RenderSystem.depthMask(true); // Включение глубины
RenderUtil.Render3D.drawImage1((float) projectedPosition.x, (float) projectedPosition.y, this.size.getValue().floatValue(), this.size.getValue().floatValue(), 0, 0, 1, 1, alphaColor);
RenderSystem.shadeModel(7424);
RenderSystem.color4f(1, 1, 1, 1);
RenderSystem.disableCull();
GL11.glDepthMask(true);
RenderSystem.disableAlphaTest();
RenderSystem.popMatrix();
}
}
}
}
private void createPoints(Vector3d vector3d) {
for (int i = 0; i < ThreadLocalRandom.current().nextInt(20, 30); ++i) {
this.points.add(new Point(this, vector3d));
}
}
private static final class Point {
public Vector3d position;
public Vector3d motion;
public Vector3d animatedMotion;
public long aliveTime;
public float size;
public long createdTime;
final Particles parent;
public Vector3d velocity;
public long collisionTime = -1; // Track collision time
public float alpha = 1.0f; // For fading
private Vector3d end;
public Point(Particles paFunction, Vector3d vector3d) {
this.parent = paFunction;
this.createdTime = System.currentTimeMillis();
this.position = new Vector3d(vector3d.x, vector3d.y, vector3d.z);
this.end = position.add(-ThreadLocalRandom.current().nextFloat(-1, 1), -ThreadLocalRandom.current().nextFloat(-1, 1), -ThreadLocalRandom.current().nextFloat(-1, 1));
this.velocity = new Vector3d(
ThreadLocalRandom.current().nextDouble(-0.01, 0.015),
ThreadLocalRandom.current().nextDouble(-0.01, 0.015),
ThreadLocalRandom.current().nextDouble(-0.01, 0.015)
);
this.size = ThreadLocalRandom.current().nextFloat(4.0f, 6.0f);
this.aliveTime = ThreadLocalRandom.current().nextLong(5000, 6000);
}
public void update() {
this.velocity = this.velocity.add(0, -0.00003, 0); // Ускорение вниз
this.position = this.position.add(this.velocity); // Движение
BlockPos particlePos = new BlockPos(this.position);
BlockState blockState = Particles.mc.world.getBlockState(particlePos);
if (!blockState.isAir()) { // Столкновение с блоком
if (this.collisionTime == -1) {
this.collisionTime = System.currentTimeMillis(); // Запоминаем время столкновения
}
this.handleCollision(blockState); // Обработка столкновения
// Сглаживание движения после столкновения:
this.position = this.position.add(this.velocity.scale(0.5));
} else { // Нет столкновения
this.collisionTime = -1; // Сбрасываем время столкновения
}
// Плавное изменение alpha:
this.alpha -= 0.0007f;
this.alpha = Math.max(0, this.alpha);
}
private void handleCollision(BlockState blockState) {
if (!Particles.mc.world.getBlockState(new BlockPos(this.position.x + this.velocity.x, this.position.y, this.position.z)).isAir()) {
this.velocity = new Vector3d(-this.velocity.x * 0.7f, this.velocity.y, this.velocity.z); // Отражение скорости
this.position.x += this.velocity.x;
}
if (!Particles.mc.world.getBlockState(new BlockPos(this.position.x, this.position.y, this.position.z + this.velocity.z)).isAir()) {
this.velocity = new Vector3d(this.velocity.x, this.velocity.y, -this.velocity.z * 0.5f); // Отражение скорости
this.position.z += this.velocity.z;
}
if (!Particles.mc.world.getBlockState(new BlockPos(this.position.x, this.position.y + this.velocity.y, this.position.z)).isAir()) {
this.velocity = new Vector3d(this.velocity.x, -this.velocity.y * 0.7f, this.velocity.z); // Отражение скорости
this.position.y += this.velocity.y;
}
}
}
}