Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
	
сливаю вам снег на экспу пастите делал не я а wexsimus я лишь перенёс 
		
		
	
	
		
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
				
			
			
				Код:
			
		
		
		package omg.eterium.modules.impl.render;
import net.minecraft.util.Direction;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.vector.Vector3d;
import omg.eterium.modules.Function;
import omg.eterium.modules.FunctionAnnotation;
import omg.eterium.modules.settings.imp.SliderSetting;
import omg.eterium.util.IMinecraft;
import omg.eterium.util.math.MathUtil;
import omg.eterium.util.render.ProjectionUtils;
import omg.eterium.util.render.RenderUtil;
import omg.eterium.util.world.WorldUtil;
import org.joml.Vector2d;
import omg.eterium.events.Event;
import omg.eterium.events.impl.player.EventMotion;
import omg.eterium.events.impl.render.EventRender;
import omg.eterium.modules.Type;
import omg.eterium.util.render.ColorUtil;
import omg.eterium.util.render.animation.AnimationMath;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ThreadLocalRandom;
@FunctionAnnotation(name = "Snow", type = Type.Render)
public class Snow extends Function {
    private SliderSetting maxPoints = new SliderSetting("Количество снежинок", 200, 100, 400, 50);
    public Snow() {
        this.addSettings(maxPoints);
    }
    CopyOnWriteArrayList<Snow.Point> points = new CopyOnWriteArrayList<>();
    @Override
    public void onEvent(final Event event) {
        if (IMinecraft.mc.world == null || IMinecraft.mc.player == null) return;
        if (event instanceof EventMotion e) {
            if (IMinecraft.mc.player.ticksExisted % 3 == 0) {
                createPoints(IMinecraft.mc.player.getPositionVec().add(MathUtil.randomizeFloat(-20, 20), MathUtil.randomizeFloat(0, 10), MathUtil.randomizeFloat(-20, 20)));
            }
        }
        if (event instanceof EventRender e) {
            if (points.size() > maxPoints.getValue().floatValue()) {
                points.remove(0);
            }
            for (Snow.Point point : points) {
                long alive = (System.currentTimeMillis() - point.createdTime);
                if (alive > point.aliveTime || !IMinecraft.mc.player.canVectorBeSeenFixed(point.position)) {
                    points.remove(point);
                    continue;
                }
                Vector2d pos = ProjectionUtils.project(point.position.x, point.position.y, point.position.z);
                if (pos != null) {
                    point.update();
                    RenderUtil.Render2D.drawImage(new ResourceLocation("expensive/images/snow.png"), (float) pos.x, (float) pos.y, 6, 6, ColorUtil.getColorStyle(points.indexOf(point)));
                }
            }
        }
    }
    private void createPoints(Vector3d position) {
        for (int i = 0; i < MathUtil.randomizeFloat(1, 3); i++) {
            points.add(new Point(position));
        }
    }
    private final class Point {
        public Vector3d position;
        public Vector3d motion;
        public Vector3d animatedMotion;
        public long aliveTime;
        public float size;
        public long createdTime = System.currentTimeMillis();
        public Point(Vector3d position) {
            this.position = new Vector3d(position.x, position.y, position.z);
            this.motion = new Vector3d(MathUtil.randomizeFloat(-0.01f, 0.01f), 0, MathUtil.randomizeFloat(-0.01f, 0.01f));
            this.animatedMotion = new Vector3d(0, 0, 0);
            size = MathUtil.randomizeFloat(4, 7);
            aliveTime = ThreadLocalRandom.current().nextLong(10000, 30000);
        }
        public void update() {
            if (isGround()) {
                points.remove(points);
            } else {
                motion.y = MathUtil.randomizeFloat(-0.01f, 0.01f);
                motion.y *= 1;
                motion.x *= 1.001;
                motion.z *= 1.001;
            }
            animatedMotion.x = AnimationMath.fast((float) animatedMotion.x, (float) (motion.x), 1);
            animatedMotion.y = AnimationMath.fast((float) animatedMotion.y, (float) (motion.y), 1);
            animatedMotion.z = AnimationMath.fast((float) animatedMotion.z, (float) (motion.z), 1);
            position = position.add(animatedMotion);
        }
        boolean isGround() {
            Vector3d position = this.position.add(animatedMotion);
            AxisAlignedBB bb = new AxisAlignedBB(position.x - 0.1, position.y - 0.1, position.z - 0.1, position.x + 0.1, position.y + 0.1, position.z + 0.1);
            return WorldUtil.TotemUtil.getSphere(new BlockPos(position), 3, 6, false, true, 0)
                    .stream()
                    .anyMatch(blockPos -> !IMinecraft.mc.world.getBlockState(blockPos).isAir() &&
                            bb.intersects(new AxisAlignedBB(blockPos)) &&
                            AxisAlignedBB.calcSideHit(new AxisAlignedBB(blockPos.add(0, 1, 0)), position, new double[]{
                                    2D
                            }, null, 0.1f, 0.1f, 0.1f) == Direction.DOWN);
        }
    }
}
	
				