BetterStructures 2.4.0:
- [New] Barrel loot generation — barrels in schematics and modules now get treasure rolled into them on placement, gated by new `generateLootInBarrels` toggles on both the generator config (top-level kill-switch) and per-module config (defaults true on both).
- [New] Inherent barrel detection — barrels baked into schematics and modules are now picked up automatically with no special markup required; routed through the same fill pipeline as chests.
- [New] `barrelTreasureFilename` override — per-schematic and per-module field for pointing a placement at a specific treasure config; falls back to the generator-level default on typo or missing rather than skipping the schematic.
- [New] `treasure_barrel_food.yml` premade — ships a tiered food loot map (mean=1, stddev=0.7) as the default barrel treasure, matching the `treasure_*.yml` convention.
- [New] Tiered barrel food loot map — drop-in food tier definitions backing the new premade.
- [Fix] `treasure_barrel_food` lookup now resolves correctly — the premade key was missing `.yml`, breaking every generator and module default; `TreasureConfig.getConfigFields()` now also auto-appends `.yml` so existing user YAMLs keep working without manual edits.
- [Fix] Schematic chest override now resolves via `getTreasureFile()` instead of `getFilename()` — a typo in `treasureFile` or `barrelTreasureFilename` no longer excludes the schematic from generation.
- [Fix] `ChestFillEvent.getTreasureFilename()` now reports the per-schematic treasure file when one is set, instead of always reporting null.
- [Fix] Removed a spurious "Failed to get barrel treasure config file" warning logged per module on partial deploys.
- [Tweak] Setup menu rebuilt on MagmaCore's `SetupMenuBuilder` shared UI — same Structure Packs / Module Packs filters, cleaner filter wiring.
- [Tweak] MagmaCore shared assets now exported on enable via `MagmaCore.exportSharedAssets(this)`.
- [Tweak] Various MagmaCore library improvements (NMS v26 / Paper 26.1 support, type-based `EntityDimensions` reflection with cached lookup, `WorldFolderResolver` and Paper-migration debris quarantine, `TemporaryBlockManager`, `SetupMenuBuilder` + `InfoButtonFactory` + `NightbreakSetupIcons` shared UI, `ContainerAllowlist` / `WorldProtectionRules` instance protection, `MagmaCore.exportSharedAssets` / `enableWorldProtections` / `isShutdownRequested`, `AdvancedCommand` optional-argument support, `LocationAPI` with WorldGuard + GriefPrevention providers, Nightbreak token-change subscribers, `ClientboundEntityPositionSyncPacket` adoption on 1.21.2+ with Bedrock `ClientboundBundlePacket` skip, ArmorStand HeadPose force-send every tick for Bedrock attachable rebind, `DAMAGE_INDICATOR` outbound particle-count clamp, per-plugin Netty handler name in `PacketInteractionListener`, lazy Lua field support, `ZipFile` STORED-with-EXT-descriptor fix, dedup / rate-limited Nightbreak auth-failure logs, three-tier BedrockChecker detection — name pattern `^\..*\d{4}$` + UUID-MSB == 0 + case-insensitive plugin lookup — so Bedrock viewers are detected even when Floodgate hasn't registered them yet).
Optional dependencies
ResourcePackManager
Any compatible version
EliteMobs
Any compatible version
Free Minecraft Models
Any compatible version
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }