#Client-side FPS relief for large Create bases
#Every Create block entity also ticks on the CLIENT each game tick
#(animation lerps, belt item simulation, effects). In a big base the
#client 'tick' section of the F3 profiler can starve the renderer.
#Distance-based reduction ticks far-away Create block entities less
#often: full rate up close (rotation visuals are render-time based
#and stay perfectly smooth), reduced rate at distance where the
#difference is invisible. Purely visual and local to this client -
#server logic and item transport are never affected.
[clientTicks]
	#Enable distance-based client tick reduction for Create block entities
	distanceTickReduction = true
	#Up to this distance (blocks from camera), block entities tick at
	#full rate - everything you can see up close stays flawless.
	#Keep >= 32 so Create's ambient machine sounds are unaffected.
	# Default: 32
	# Range: 4 ~ 128
	fullRateDistance = 4
	#Between fullRateDistance and this, block entities tick every 2nd
	#tick; beyond it, every farDivisor-th tick.
	# Default: 64
	# Range: 16 ~ 256
	reducedRateDistance = 16
	#Tick divisor beyond reducedRateDistance (4 = 5 ticks/second)
	# Default: 4
	# Range: 2 ~ 64
	farDivisor = 16
	#Maximum distance (blocks) at which Create block entities are
	#RENDERED. 64 = vanilla radius (no culling). Lower values skip the
	#dynamic renderer of distant machines - a major FPS win in bases
	#where block entity rendering dominates the frame. With Flywheel's
	#backend enabled the machine bodies stay visible (instanced) and
	#only far dynamic details (belt items, dials) disappear; with
	#/flywheel backend off, whole machines vanish beyond this radius.
	# Default: 64
	# Range: 8 ~ 64
	beRenderDistance = 8
	#Same render-distance culling for ALL OTHER block entities
	#(vanilla chests, signs, other mods' containers...). 64 = vanilla
	#(no culling). WARNING: unlike Create machines (whose bodies stay
	#visible through Flywheel), these are entirely renderer-drawn -
	#beyond this radius chests, signs and banners visibly disappear.
	#24-32 is a reasonable aggressive value.
	# Default: 64
	# Range: 16 ~ 64
	otherBeRenderDistance = 16
	#Skip rendering Create block entities whose entire render
	#bounding box is behind the camera. Sodium already culls whole
	#16x16x16 sections, but standing inside a machine hall the
	#neighboring sections stay 'visible' while half their machines are
	#behind you. Correct for long machines (belts) because the full
	#render box is tested, and automatically disabled during Iris
	#shadow passes so shader shadows stay intact.
	behindCameraCulling = true
	#Drop positional sound packets that are too far to hear. Vanilla
	#creates an audio channel (BLOCKING the render thread on a
	#CompletableFuture) for EVERY sound received, even ones far
	#beyond audible range - and servers broadcast sounds to 64 blocks
	#while most are audible at 16. Lossless at the default distance.
	soundDistanceCulling = true
	#Culling radius in blocks per volume unit: a sound is dropped
	#beyond soundCullDistance x max(1, volume). Default 48 = 3x the
	#standard 16-block audible radius, so even extended-range sounds
	#survive. Lower toward 24 for more FPS in loud factories.
	# Default: 48
	# Range: 16 ~ 256
	soundCullDistance = 48
	#Maximum starts of the SAME sound event per client tick (0 = off).
	#20 identical clanks started in one tick are indistinguishable
	#from 6, but each one blocks the render thread for its channel.
	# Default: 6
	# Range: 0 ~ 64
	soundSpamCap = 6
	#Hard cap on TOTAL server-sent sound starts per client tick
	#(0 = off). Each start blocks the render thread for its audio
	#channel; in a factory din, sounds beyond ~16/tick are
	#indistinguishable. Bounds the worst case whatever the source.
	# Default: 16
	# Range: 0 ~ 128
	soundMaxPerTick = 16
	#Block entity classes NEVER affected by the client tick reduction
	#or render culling. Match by full class name prefix (a package
	#excludes a whole mod) or exact simple class name. Use for
	#dynamic visuals that must stay exact at any distance/angle -
	#e.g. suspension wheels and caterpillar tracks on vehicles.
	#Default excludes Tracks+ (dev.qwxon.tracks).
	cullingExclusions = ["dev.qwxon.tracks"]
	#Tick divisor in the middle band (fullRateDistance to
	#reducedRateDistance). 2 = every 2nd tick (historical behavior).
	#1 disables reduction in this band; raise to 4 on weak machines -
	#this band is the machines you actually look at, so higher values
	#are visible up close.
	# Default: 2
	# Range: 1 ~ 16
	midDivisor = 4
	#Also apply the distance and spam filters to CLIENT-started
	#positional sounds (SoundManager.play), not just server packets.
	#Mods like Create Diesel Generators start engine/pumpjack sounds
	#from tickClient every few ticks; each start blocks the render
	#thread on its audio channel (~9% of the frame on the reference
	#profile). Looping sounds and UI/music are never touched.
	soundLocalCulling = true
	#Maximum starts of the SAME sound event per SECOND (0 = off).
	#The per-tick cap does not bound the rate of a sound restarted
	#every few ticks - a dozen nearby diesel engines each restarting
	#their loop stays under 6/tick yet reaches 12+/second, and every
	#start blocks the render thread on the audio channel. 10
	#overlapping copies of the same sound per second are already
	#indistinguishable from more.
	# Default: 10
	# Range: 0 ~ 256
	soundSpamCapPerSecond = 10
	#Hard TIME budget (milliseconds per tick) for starting sounds
	#(0 = off). Every sound start blocks the render thread while the
	#audio thread creates its channel - with audio-heavy mods like
	#Sound Physics Remastered a single start can cost multiple ms.
	#Once the budget is spent, further positional non-looping sound
	#starts this tick are dropped. UI, music and looping sounds are
	#never dropped. Bounds the worst case whatever the source;
	#2.0 ms/tick = at most ~4% of a 60 FPS frame budget.
	# Default: 2.0
	# Range: 0.0 ~ 50.0
	soundBudgetMs = 2.0
