Частицы

Частицы в больших объёмах вызывают сильную нагрузку из-за огромного количества полигонов и логики каждой отдельной частицы.
Частицы являются лишь дополнением, а не заменой графики.


ParticleBuilder

ParticleBuilder (конструктор частиц) - класс для простого вызова частиц в Fluffy Fur.

getParticleOptions() -> GenericParticleOptions - возвращает параметры частицы.

setRenderType(RenderType) - устанавливает тип рендера.

setParticleRenderType(ParticleRenderType) - устанавливает тип рендера частицы.
Используется для ванильных типов рендера.
Например: setParticleRenderType(ParticleRenderType.PARTICLE_SHEET_OPAQUE)

setBufferSource(MultiBufferSource) - устанавливает источник буфера рендера.

setFormat(VertexFormat) - устанавливает формат вершин.

setBehavior(ParticleBehavior) - устанавливает поведение.

setColorData(ColorParticleData) - устанавливает данные цвета.

setTransparencyData(GenericParticleData) - устанавливает данные прозрачности.

setScaleData(GenericParticleData) - устанавливает данные размера.

setSpinData(SpinParticleData) - устанавливает данные вращения.

setLightData(LightParticleData) - устанавливает данные света.

setSpriteData(SpriteParticleData) - устанавливает данные спрайта.

addTickActor(Consumer<GenericParticle>), addSpawnActor(Consumer<GenericParticle>), addRenderActor(Consumer<GenericParticle>), addRenderPostActor(Consumer<GenericParticle>) - устанавливает действия, которые вызываются каждый раз при тике, спавне, тике рендера и конце тика рендера.
Используется для более гибкой настройки логики частицы.
Например:

final Consumer<GenericParticle> target = p -> {
    //p <-- частица
    p.setSpeed(p.getSpeed().add(0, 0.1f, 0));
};
particleBuilder.addTickActor(target);


clearActors(), clearTickActor(), clearSpawnActors(), clearRenderActors(), clearRenderPostActors() - очищает все действия.

setDiscardFunction(GenericParticleOptions.DiscardFunctionType) - устанавливает функцию сброса [NONE, INVISIBLE, ENDING_CURVE_INVISIBLE]

setLifetime(int) - устанавливает значение времени жизни.

setLifetime(int, int) - устанавливает значение времени жизни в виде суммы первого значения и случайного числа от нуля до второго значения.

setGravity(int) - устанавливает значение гравитации.

setGravity(int, int) - устанавливает значение гравитации в виде суммы первого значения и случайного числа от нуля до второго значения.

setFriction(int) - устанавливает значение трения.
Работает по логике каждый тик умножает скорость на значение трения.
То есть, при значениях от 0 до 1, частица будет замедлятся, а при значениях больше 1 ускоряться.

setFriction(int, int) - устанавливает значение трения в виде суммы первого значения и случайного числа от нуля до второго значения.

enableCull(), disableCull(), setShouldCull(boolean) - устанавливает значение оптимизации рендера.
Частицы не будут отображаться, если камера не будет направлена в их сторону, но из-за этого частица может отображаться некорректно при поворотах камеры.
false по умолчанию.

enableRenderTraits(), disableRenderTraits(), setShouldRenderTraits(boolean) - устанавливает значение обновления параметров при рендер тике.
Используется для более плавного отображения.
true по умолчанию.

enablePhysics(), disablePhysics(), setHasPhysics(boolean) - устанавливает физику.
При отключенной физике игнорирует коллизию с блоками.
true по умолчанию.

randomVelocity(double), randomVelocity(double, double), randomVelocity(double, double, double) - устанавливает случайное значение скорости.
Значение вычисляется через синус и косинус, то есть область в виде сферы.

flatRandomVelocity(double, double, double) - устанавливает случайное значение скорости напрямую.
Значение вычисляется как есть, то есть область в виде куба.

addVelocity(double, double, double) - добавляет значение скорости.

setVelocity(double, double, double) - устанавливает значение скорости.

randomOffset(double), randomOffset(double, double), randomOffset(double, double, double) - устанавливает случайное значение смещения.
Значение вычисляется через синус и косинус, то есть область в виде сферы.

flatRandomOffset(double, double, double) - устанавливает случайное значение смещения напрямую.
Значение вычисляется как есть, то есть область в виде куба.

enableForce(), enableForce(), enableForce(boolean) - устанавливает значение принудительного появления.
Ванильный параметр, частица с расстоянием до камеры больше 32 блока появляться не будет.
true по умолчанию.

setDistance(double) - устанавливает значение дистанции появления.
Если включено значение появление на дистанции, то частица с расстоянием до камеры больше указанной появляться не будет.
100 по умолчанию.

enableDistanceSpawn(), disableDistanceSpawn(), setDistanceSpawn(boolean) - устанавливает значение появления на дистанции.
Если включено, то частица с расстоянием до камеры больше указанной появляться не будет.
true по умолчанию.

addAdditionalBuilder(ParticleBuilder) - добавляет дополнительные конструкторы частиц.
При создании частицы все дополнительные конструкторы частиц так же создают частицу с теми же параметрами.
То есть позиция и направление будут такие же.

clearAdditionalBuilders() - очищает все дополнительные конструкторы частиц.

spawn(Level, Vec3), spawn(Level, double, double, double) - создаёт частицу на указанных координатах.

repeat(Level, Vec3, int), repeat(Level, double, double, double, int) - создаёт частицу на указанных координатах несколько раз.

repeat(Level, Vec3, int, float), repeat(Level, double, double, double, int, float) - создаёт частицу на указанных координатах несколько раз с определённым шансом.

spawnLine(Level, Vec3, Vec3) - создаёт частицу на линии между координатами.

repeatLine(Level, Vec3, Vec3, int) - создаёт частицу на линии между координатами несколько раз.

repeatLine(Level, Vec3, Vec3, int, float) - создаёт частицу на линии между координатами несколько раз с определённым шансом.

spawnVoxelShape(Level, Vec3, VoxelShape), spawnVoxelShape(Level, double, double, double, VoxelShape) - создаёт частицу на каждой грани указанной воксельной формы.

pawnVoxelShape(Level, Vec3, VoxelShape, int), spawnVoxelShape(Level, double, double, double, VoxelShape, int) - создаёт частицу на каждой грани указанной воксельной формы несколько раз.

spawnVoxelShape(Level, Vec3, VoxelShape, int, float), spawnVoxelShape(Level, double, double, double, VoxelShape, int, float) - создаёт частицу на каждой грани указанной воксельной формы с определённым шансом.

spawnBoykisser(Level, Vec3, int, int, float, float, float, float, float, float) - создаёт кучу частиц в форме Бойкиссера.

spawnBoykisser(Level, Vec3, int, int, float, ParticleBuilder, float, float, float, float, float) - создаёт кучу частиц в форме Бойкиссера с конструктором частиц для румянца.

create(ParticleType<?>) - создаёт конструктор частиц из указанного типа частиц.

create(RegistryObject<?>) - создаёт конструктор частиц из указанного объекта регистрации частицы.

create(GenericParticleOptions) - создаёт конструктор частиц с указанными параметрами частиц.

Пример использования:

ParticleBuilder.create(FluffyFurParticles.WISP)
        .setColorData(ColorParticleData.create(0, 0, 1, 1, 0, 0).build())
        .setTransparencyData(GenericParticleData.create(0.5f, 0).setEasing(Easing.QUARTIC_OUT).build())
        .setScaleData(GenericParticleData.create(0.3f, 2, 0).setEasing(Easing.ELASTIC_OUT).build())
        .setLifetime(200, 100)
        .randomVelocity(0.35f)
        .repeat(level, x, y, z, 50);

ParticleBehavior

ParticleBehavior -


CubeParticleBehavior

CubeParticleBehavior -


SphereParticleBehavior

SphereParticleBehavior -


SparkParticleBehavior

SparkParticleBehavior -


TrailParticleBehavior

TrailParticleBehavior -


GenericParticleData

GenericParticleData -


ColorParticleData

ColorParticleData -


SpinParticleData

SpinParticleData -


LightParticleData

LightParticleData -


SpriteParticleData

SpriteParticleData -


Fluffy Fur Вики:

- Главная

- Частицы


- GitHub Вики