Shtreimel in FTB Skies 2: Aero

FTB Skies 2: Aero 1.13.0 ships version 0.6.0 · First seen in 1.0.3

Checked Sep 30, 2026FTB Skies 2: Aero 1.13.0Sources: FTB Skies 2: Aero 1.13.0 modlist.json

Report a mistake on this page

Shtreimel is a mod in FTB Skies 2: Aero 1.13.0, where it is version 0.6.0. No verified summary yet. A full guide is planned.

Shtreimel guide for FTB Skies 2: Aero

Written for FTB Skies 2: Aero 1.10.0 · also fits 1.7.1 to 1.9.1 · updated Oct 15, 2026

Last verified for FTB Skies 2: Aero v1.10.0 on Oct 15, 2026 · text last changed Oct 15, 2026

This is the newest guide. It hasn't been checked against 1.13.0 yet.

Sections
4

Every recipe and number here was checked against FTB Skies 2: Aero 1.10.0, read from the running game on Sep 22, 2026.

What is Shtreimel?

Shtreimel is part of the mod list in FTB Skies 2: Aero 1.10.0, and the pack ships version 0.5.0 of it. The jar is the NeoForge build for Minecraft 1.21.1.[1]

It isn't a newcomer to the pack either: it was already included in version 1.0.3 or earlier, so it has been around for a long time.[1]

Unverified What Shtreimel adds to the game (its items, blocks or mechanics) could not be confirmed from the pack files, so this guide doesn't describe its features.

How do you get started with Shtreimel?

1 part

This section covers Shtreimel's settings, because those are what the sources here show for it in this pack. The config describes a tool driven by /shtreimel commands that watches sub-levels, which its settings describe in terms of ships and contraptions on Sable's physics. So your first steps are about checking a few settings, not crafting anything.[2]

What to check first, in order

  1. Make sure the heat detector is on with shtreimel.lag.enabled. It is enabled in this pack. Once a dimension's physics slice average passes shtreimel.lag.ewmaThresholdMs, the detector starts naming suspects. That is set to 5 ms here, the same as the mod default and well below a 50 ms tick budget.[2]
  2. Know the delete safety net. shtreimel.delete.requireConfirm is true, so the /shtreimel delete subcommands need an explicit --confirm flag. shtreimel.delete.requireNameConfirm is false, so deleting a named sub-level does not ask you to retype the name.[2]
  3. Leave occupancy tracking on. shtreimel.occupancy.enabled is true, which is what lets the who history subcommands work. With shtreimel.occupancy.persist on, the record of who was last on a ship survives a restart.[2]
  4. Know how often boardings are sampled. shtreimel.occupancy.sampleIntervalTicks is 10 ticks here, the same as the mod default. A boarding shorter than one interval may be missed entirely.[2]
  5. Know where the audit trail goes. shtreimel.audit.fileEnabled is true, so destructive audit lines are appended to an audit.log file in the world's shtreimel folder, as well as going to the server log.[2]
Watch out: shtreimel.crash.mixinEnabled is false in this pack. Its description says it is off by default and fragile against upstream Sable refactors, so leave it alone unless you have a reason.[2]

Unverified Whether Shtreimel has any craftable items or quests in this pack is not shown by the sources here, so none are listed. Recipes and quest chapters would be where that is told, and they are not part of the sources for this section.

How does Shtreimel work?

7 parts

Heads up: Shtreimel doesn't add machines, power or fluid systems that the sources describe. What the pack's server config shows is a diagnostic and admin toolkit for physics sub-levels (the config mentions ships and contraptions, Sable physics and Create). So this section walks through how its systems behave, based on the pack's config file.[2]

Every value below is what the pack sets. Where the config lists a mod default, the pack's value matches it. Where no default is listed, the number is simply the pack's setting.[2]

The heat detector

The lag detector is switched on with shtreimel.lag.enabled. It checks the physics time of each dimension, and once that rises above shtreimel.lag.ewmaThresholdMs (5 ms in the pack, well below a 50 ms tick budget) it starts naming suspects. Lower the value if you want earlier warnings.[2]

Scans are rate limited. shtreimel.lag.scanCooldownSeconds is 30 seconds, so a healthy server pays almost nothing per tick. Each incident names the top shtreimel.lag.suspectCount suspects (1 here), and it needs shtreimel.lag.consecutiveHotScans hot scans in a row (also 1). The same sub-level can't be named again for 300 seconds, set by shtreimel.lag.repeatCooldownSeconds, which keeps your log from filling with repeats.[2]

Full diagnostic snapshots on incidents are off in the pack (shtreimel.lag.captureIncidentSnapshot is false). If you turn them on, shtreimel.lag.incidentSnapshotCooldownSeconds spaces them 300 seconds apart.[2]

There is also a sample recorder for autotuning. It is on, records one sample every 60 seconds and keeps 1,440 minutes of history. Those are shtreimel.lag.autotune.recordSamples, shtreimel.lag.autotune.sampleIntervalSeconds and shtreimel.lag.autotune.bufferMinutes. A shorter interval gives denser history but costs more memory.[2]

How suspects are ranked

Suspects are ordered with weighted scores. The heaviest weight is shtreimel.ranking.weights.blockEntities at 1.5. Then come shtreimel.ranking.weights.loadedChunks, shtreimel.ranking.weights.volume and shtreimel.ranking.weights.entitiesInBoundingBox at 1 each, and shtreimel.ranking.weights.trackingPlayers at 0.75.[2]

Angular speed, linear speed, footprint, force groups, network drift and reaction wheels all sit at 0.5. Force-load tickets, connected sub-levels and loading dependencies are at 0. The config says the last two are disabled because traversing connected actors or dependencies is more expensive.[2]

Each factor also has a soft cap. A few examples: shtreimel.ranking.softCaps.blockEntities is 64, shtreimel.ranking.softCaps.loadedChunks is 64, shtreimel.ranking.softCaps.entitiesInBoundingBox is 32 and shtreimel.ranking.softCaps.trackingPlayers is 8. The pack leaves all of these at the mod defaults.[2]

Freezing sub-levels

Freezing is capped at shtreimel.freeze.maxConcurrent sub-levels per dimension (16). The config says the cap exists so a runaway freeze script can't cause per-tick work spikes. With shtreimel.freeze.persist on, the frozen set is saved to the world's shtreimel/state/frozen.json and survives restarts. With shtreimel.freeze.inheritOnSplit on, a child that splits off a frozen parent is frozen at its own pose.[2]

Who was on the ship

Occupancy tracking (shtreimel.occupancy.enabled) answers questions like who was last on a ship. It samples every 10 ticks (shtreimel.occupancy.sampleIntervalTicks), so a boarding shorter than one interval may be missed entirely.[2]

Archives, deletion and the audit log

Archives are pruned oldest first once a sub-level UUID has more than shtreimel.archive.maxPerUuid (16). There is also a hard cap of shtreimel.archive.maxTotal (1,024) across everything. A compressed plot.nbt larger than shtreimel.archive.maxCompressedBytes (268,435,456 bytes) is not accepted for verify or restore.[2]

Deleting is guarded. shtreimel.delete.requireConfirm is true, so /shtreimel delete subcommands need an explicit --confirm flag. shtreimel.delete.requireNameConfirm is false in the pack, so you don't have to re-type a named sub-level's name.[2]

Destructive actions are also written to audit.log in the world's shtreimel folder, as well as the server log (shtreimel.audit.fileEnabled). The file rotates around 10,485,760 bytes (shtreimel.audit.fileMaxBytes). Queries return 50 rows by default and at most 1,000 (shtreimel.auditQuery.defaultLimit, shtreimel.auditQuery.maxLimit). A filtered query scans at most 33,554,432 bytes per audit file (shtreimel.auditQuery.maxScanBytes).[2]

Snapshots, force profiling and watching

Snapshots are written as JSON in the pack (shtreimel.snapshots.format also allows CSV or BOTH). Up to 4,096 bodies per dimension are captured (shtreimel.snapshots.subLevelLimit), and shtreimel.snapshots.keepCount is 48.[2]

Force profiling tracks individual point forces on at most 4 sub-levels at once (shtreimel.forceProfile.maxConcurrent). A run lasts 10 seconds by default and up to 60 seconds (shtreimel.forceProfile.defaultDurationSeconds, shtreimel.forceProfile.maxDurationSeconds). Finished summaries stay available to /shtreimel forces show for 300 seconds (shtreimel.forceProfile.resultRetentionSeconds).[2]

Watchers last 30 seconds by default and up to 600 (shtreimel.watch.defaultDurationSeconds, shtreimel.watch.maxDurationSeconds). Events reach a watcher at least 2 ticks apart (shtreimel.watch.minTicksBetweenEvents), which stops a velocity-spinning sub-level from spamming you.[2]

Crash reports and history

shtreimel.crash.headerEnabled adds a crash report header listing loaded sub-levels and the physics EWMA, up to 64 sub-levels per dimension (shtreimel.crash.subLevelLimit). The optional fallback mixin into Sable's physics tick crash path (shtreimel.crash.mixinEnabled) is off, and the config calls it fragile against upstream Sable refactors.[2]

The forensic mixins are all on in the pack. shtreimel.mixins.createContraptionContextEnabled prints the contraption's coordinates and entity id when a crash happens inside Create's contraption collision code. shtreimel.mixins.nanRecoveryAuditEnabled audits Sable's NaN-recovery attempts, which helps when contraptions silently vanish. shtreimel.mixins.removalReasonContextEnabled captures one caller stack frame when a sub-level is removed.[2]

The last 512 add and remove events are kept in memory for /shtreimel history and crash reports (shtreimel.observability.historySize). Lifecycle log lines go out at INFO (shtreimel.observability.logLifecycleAtInfo), limited to 60 per dimension per minute (shtreimel.observability.logRatePerMinute).[2]

Tip: If your server is lagging and you want warnings sooner, lower the heat detector threshold. The pack uses 5 ms, and the config allows values down to 0.1.[2]

Which Shtreimel config options matter?

5 parts

Everything here lives in config/shtreimel-server.toml, so it is a server-side file. Every value in it that lists a mod default matches that default in this pack, so the pack has not changed any of those. A few options (mostly on/off switches) list no mod default, so I can only tell you what the pack sets them to, not whether that differs from the mod.[2]

Heat detector (lag)

The heat detector is on in this pack via shtreimel.lag.enabled. It starts naming suspect sub-levels once a dimension's physics-slice EWMA goes above shtreimel.lag.ewmaThresholdMs, which is 5 ms. The file notes that this is well below a 50 ms tick budget, and that you can tune it lower for earlier warnings.[2]

Freezing and delete safety

Who was on the ship (occupancy)

Occupancy tracking is on (shtreimel.occupancy.enabled) and saved to disk (shtreimel.occupancy.persist), so "who was last on this ship" survives a restart. When tracking is off, nothing is sampled and the who history subcommands say tracking is disabled.[2]

Crash reports, archives and snapshots

Suspect ranking

The ranking weights and soft caps are all at the mod defaults. Both shtreimel.ranking.weights.connectedSubLevels and shtreimel.ranking.weights.loadingDependencies are set to 0, which is also their mod default. The file says the first is disabled because traversing connected actors is more expensive, and the second because dependency traversal can query intersections.[2]

Sources

  1. FTB Skies 2: Aero 1.10.0 mod list · pack file
  2. FTB Skies 2: Aero 1.10.0 config: config/shtreimel-server.toml · pack file
Where this guide comes from

Written from what FTB Skies 2: Aero itself ships: its files and recipes, the in-game guidebooks and the mods' own pages. Every statement links to the source it came from, and the numbers are checked against the pack before publishing.

Guide last verified Oct 15, 2026.

Was this helpful?

Report wrong info

A few words are enough, up to 500 characters. Please do not include personal details.

Version in each release

21 releases, first in 1.0.3
FTB Skies 2: AeroVersionJarWhere it came from
1.13.0
Sep 28, 2026
0.6.0shtreimel-neoforge-1.21.1-0.6.0.jarFrom the published release
1.12.1
Sep 22, 2026
0.5.0shtreimel-neoforge-1.21.1-0.5.0.jarFrom the published release
1.12.0
Sep 21, 2026
0.5.0shtreimel-neoforge-1.21.1-0.5.0.jarFrom the published release
1.10.0
Sep 8, 2026
0.5.0shtreimel-neoforge-1.21.1-0.5.0.jarFrom the published release
1.9.1
Sep 2, 2026
0.5.0shtreimel-neoforge-1.21.1-0.5.0.jarFrom the published release
1.9.0
Sep 1, 2026
0.5.0shtreimel-neoforge-1.21.1-0.5.0.jarFrom the published release
1.8.0
Aug 25, 2026
0.5.0shtreimel-neoforge-1.21.1-0.5.0.jarFrom the published release
1.7.3
Aug 19, 2026
0.4.0shtreimel-neoforge-1.21.1-0.4.0.jarFrom the published release
1.7.2
Aug 18, 2026
0.4.0shtreimel-neoforge-1.21.1-0.4.0.jarFrom the published release
1.7.1
Aug 18, 2026
0.4.0shtreimel-neoforge-1.21.1-0.4.0.jarFrom the published release
1.6.1
Aug 13, 2026
0.3.1shtreimel-neoforge-1.21.1-0.3.1-obf.jarFrom the published release
1.6.0
Aug 11, 2026
0.3.1shtreimel-neoforge-1.21.1-0.3.1-obf.jarFrom the published release
1.5.1
Aug 8, 2026
0.3.1shtreimel-neoforge-1.21.1-0.3.1-obf.jarFrom the published release
1.4.1
Aug 4, 2026
0.3.1shtreimel-neoforge-1.21.1-0.3.1-obf.jarFrom the published release
1.4.0
Aug 3, 2026
0.3.1shtreimel-neoforge-1.21.1-0.3.1-obf.jarFrom the published release
1.3.0
Jul 30, 2026
0.3.1shtreimel-neoforge-1.21.1-0.3.1-obf.jarFrom the published release
1.2.1
Jul 28, 2026
0.3.1shtreimel-neoforge-1.21.1-0.3.1-obf.jarFrom the published release
1.2.0
Jul 28, 2026
0.3.1shtreimel-neoforge-1.21.1-0.3.1-obf.jarFrom the published release
1.1.1
Jul 25, 2026
0.3.1shtreimel-neoforge-1.21.1-0.3.1-obf.jarFrom the published release
1.1.0
Jul 24, 2026
0.3.1shtreimel-neoforge-1.21.1-0.3.1-obf.jarFrom the published release
1.0.3
Jul 17, 2026
0.3.1shtreimel-neoforge-1.21.1-0.3.1-obf.jarFrom the published release

"From pack files" means the list came from the pack's own files; "from the published release" means ForgeBase read the jars of the release itself.

Items and blocks

We can't match this mod to the pack's item list: it registers as shtreimel, and the pack's recipe dump has nothing under that name. That means we found nothing, not that the mod adds nothing. Search the item browser

Config options (how FTB Skies 2: Aero sets them)

81 settings shipped in the pack's config files; 0 differ from the mod's documented default.

See all 81 settings →

Show settings
SettingFTB Skies 2: Aero valueMod default
shtreimel.audit.fileEnabled
Append destructive audit lines to <world>/shtreimel/audit.log in addition to the server log.
config/shtreimel-server.toml
truenot documented
shtreimel.crash.headerEnabled
Register a CrashReportCallables header that lists loaded sub-levels and physics EWMA.
config/shtreimel-server.toml
truenot documented
shtreimel.crash.mixinEnabled
Apply the optional fallback mixin into Sable's SubLevelPhysicsSystem.tick crash path. Off by default; fragile against upstream Sable refactors.
config/shtreimel-server.toml
falsenot documented
shtreimel.delete.requireConfirm
If true, /shtreimel delete subcommands require an explicit --confirm flag.
config/shtreimel-server.toml
truenot documented
shtreimel.delete.requireNameConfirm
If true, deleting a named sub-level requires re-typing the name as a confirm token.
config/shtreimel-server.toml
falsenot documented
shtreimel.freeze.inheritOnSplit
Freeze a newly split child at its own pose when its parent is frozen.
config/shtreimel-server.toml
truenot documented

Comments and tips

Loading comments...