final Consumer<GenericParticle> target = p -> {
//p <-- частица
p.setSpeed(p.getSpeed().add(0, 0.1f, 0));
};
particleBuilder.addTickActor(target);
Частицы
Частицы в больших объёмах вызывают сильную нагрузку из-за огромного количества полигонов и логики каждой отдельной частицы.
Частицы являются лишь дополнением, а не заменой графики.
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>) - устанавливает действия, которые вызываются каждый раз при тике, спавне, тике рендера и конце тика рендера.
Используется для более гибкой настройки логики частицы.
Например:
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 -