All versions
1.1.0
Release
TNM Aeronautics Quests 1.1.0 (NeoForge 1.21.1)3 days ago 72
Uploaded by
Compatibility
Minecraft: Java Edition
1.21.1
Platform
NeoForge
Supported environments
Client-side
Server-side
Required content
Any compatible version
Any compatible version
Changes
TNM Aeronautics Quests - v1.1.0 Changelog
✈️ TNM Rebranding
- New Name: Aeronautics Delivery Quests (ADQ) is now TNM Aeronautics Quests! The mod name, description, and in-game chat prefix (
[ADQ]→[TNM Quests]) have all been updated. - Your Worlds Are Safe: This is purely a rename — the internal mod ID stays
aeronautics_delivery_quests, so existing worlds, placed Delivery Quests Tables, configs (aeronautics_delivery_quests.toml,custom_quests.json), saved quests, and cooldowns all carry over untouched. The/adqcommand works exactly as before. Just drop in the new jar.
🔒 Cargo Protection Overhaul
- Cargo Invulnerability Fixed: The
enableCargoInvulnerabilityoption previously had no effect — cargo could always be broken. It now genuinely protects cargo everywhere it exists: on the physics contraption and at the pickup site, against player mining, block placement, explosions, and mob griefing. Protection coverage also now matches the full size of the cargo instead of a small fixed area. - No More Free Loot: Cargo blocks never drop items when destroyed — with invulnerability on or off. You can no longer mine iron blocks (or anything else) out of a delivery crate. In breakable mode, destroyed blocks still reduce the delivery payout as damage; they just yield nothing.
- Split Cargo Fully Recalled: If a cargo contraption gets fractured into multiple physics pieces, all detached pieces are now tracked as part of the quest. They get the same block protection, and every piece is recalled together when the contract is completed, cancelled, or failed — no more orphaned debris floating around your world. The compass and delivery check keep targeting the main body, and blocks lost to broken-off pieces count as missing mass toward the damage penalty.
📦 Smarter Cargo Spawning
- No More Pop-In: Cargo now spawns while the approaching pilot is still far outside render distance (new
cargoSpawnDistanceconfig, default 250 blocks), so it's already sitting on the ground by the time you can see the pickup site. Securing the cargo, the compass switch, and server announcements still happen when you reach the pickup point, same as before. - Nearby Contracts for the Requester: Using
/adq generateor the board's Generate/Fill buttons now searches for pickup locations around you, instead of around a random online player — no more contracts spawning tens of thousands of blocks away on servers with spread-out players. Automatic background generation still spreads quests across the whole community. - No More Underwater Cargo: Cargo destined for ocean areas previously could spawn on the seabed, dozens of blocks underwater. It now lands on top of the water surface instead.
- No More Void Drops: On floating-island and void world types, quest generation now detects when there's no ground at all and cleanly retries elsewhere, instead of dropping cargo into the abyss.
🛠️ Under the Hood
- Updated the build to the latest NeoForge for 1.21.1 (21.1.236); servers on NeoForge 21.1.65 or newer remain fully supported.
- Modernized mod metadata to NeoForge's current dependency format and cleaned up deprecated API usage for a warning-free build.
- Updated the release/publishing toolchain (mod-publish-plugin 2.1.1) and made the project build cleanly on any machine.
Aeronautics Delivery Quests (ADQ) - v1.0.3 Changelog
GUI Polish & Interface Polish
- Ledger Cooldown Rename: Changed the clipboard label "Cooldown" to "Next Quest In" to make cooldown status clearer.
- Route & Mass Line Splitting: Formatted the quest card text so that Mass and Route are on separate lines per quest card, removing the vertical pipe (
|) character. - Flight Manual Simplification: Simplified the Flight Manual screen to show a unified description help section instead of the multi-step gameplay rules.
Predefined Coordinate Support (custom_quests.json)
- pickupPos and dropoffPos Parameter: Added optional
pickupPosanddropoffPosstring parameters (blank by default on all default quests). - Coordinate Formats: Supports
x,y,zorx,zformats (queries the surface heightmap when Y is omitted or 0). If valid coordinates are specified, quest generation skips the async structure search and generates the quest at the exact location.
Aeronautics Recipe Integration & Bug Fixes
- Table Crafting Recipe: Updated the crafting recipe for the delivery quests table to require a Contraption Diagram (
simulated:contraption_diagram) at the top, a Compass (minecraft:compass) in the middle, and any wood slab (#minecraft:wooden_slabstag) at the bottom. - Occlusion Fix: Added
.noOcclusion()properties to the delivery quests table block, fixing the see-through ground bug beneath it.
Aeronautics Delivery Quests (ADQ) - v1.0.2 Changelog
Quest & Location Generation Configuration Toggles
- Generation Mode Toggle: Replaced the sliding scale
customQuestsChancewith an enum-basedquestGenerationModeconfig toggle (CUSTOMorPROCEDURAL).- CUSTOM: Spawns structured quests exactly as defined in
custom_quests.json. - PROCEDURAL: Dynamically mixes names, descriptions, mass classes, schematics, and rewards from across the pool of valid templates in
custom_quests.json.
- CUSTOM: Spawns structured quests exactly as defined in
- Location Mode Selector: Replaced
randomQuestGenwith an enum-basedquestLocationModeconfig toggle (VILLAGE,ANY_STRUCTURE, orRANDOM).- ANY_STRUCTURE: Performs an Overworld-wide search using the registries to locate any valid registered structure (top level only) for cargo pickup and delivery.
Expanded Default Assets & Balanced Economy
- 6 Default Cargo Schematics: Expanded the programmatically generated cargo NBT schematics list to 6, adding
light_food_crate,medium_ore_crate, andheavy_industrial_boiler. - 6 Default Packaged Quests: Expanded example templates to 6 default quests in
custom_quests.json. - Balanced Emerald Economy: Reduced default emerald payouts for all 6 example quests to a balanced range of 10–50 emeralds. Scaled default config payouts for procedural generation to 15 (Light), 30 (Medium), and 50 (Heavy).
Command Cooldowns & Concurrency Safety
- 5-Second Command Cooldown: Enforces a 5-second cooldown on all player
/adqcommand executions. - Quest Generation Lock: Implemented an execution lock (
AtomicBoolean) to prevent starting quest generation twice concurrently, with dynamic play button greying out on the client UI.
Config Auto-Healing
- Auto-Healing Configuration: If an outdated version of
custom_quests.jsonis detected (with old legacy emerald payouts of300or640), it is automatically upgraded and rewritten with the balanced 1.0.2 rewards on server startup.
Quest Board Clipboard UI Polish
- Multi-Reward Display: Enhanced the Quest Board clipboard to display all reward items. Details are parsed into a clean comma-separated list and wrapped dynamically to fit within ledger slots and the active quest details view.
- Ledger Spacing Refactor: Reduced quest items displayed per page from 3 to 2, scaling card heights to 68px (originally 48px) to cleanly prevent reward text from spilling over.
- Dynamic State Updates: Accept buttons refresh active states dynamically when a player's quest cooldown ticks down to zero.
C2ME Concurrency & Thread Safety
- Asynchronous Random Safety: Replaced thread-bound
level.getRandom()with isolatedRandomSource.create()inside the background quest generation thread. This completely resolves threading crashes andConcurrentModificationExceptionconflicts when running alongside the C2ME (Concurrent Chunk Management Engine) mod.
Aeronautics Delivery Quests (ADQ) - v1.0.1 Changelog
Core Mechanics & Standalone Architecture
- Standalone Mod: Stripped all FTB Chunks, Teams, and Library requirements from compilation, config, and runtime scripts, making ADQ 100% independent.
- Safe Air Spawning: Re-engineered physical spawning to check solid surface footprints and ensure 100% empty air columns. Cargo spawns 3 blocks in the air and drops cleanly under gravity.
- Vertical Spawning Safety Fallback: Added a sky fallback (spawns cargo 4 blocks above solid ground) if flat ground is unavailable, preventing clipping into village structures/ground. Removed legacy floating grass block placements.
Custom Quest JSON Configurations
- Admins JSON Pool (
custom_quests.json): Added a dedicated GSON database atconfig/aeronautics_delivery_quests/custom_quests.json(auto-generates example templates on startup) allowing custom names, descriptions, mass classes, NBT templates, and rewards. - Mix Ratio Tuning: Added
customQuestsChance(default 0.5) double config parameter underADQConfigto set the percentage ratio of custom JSON quests versus procedural generation. - Instant Hot-Reloads: Integrated JSON reloader directly into the
/adq reloadcommand and chest-GUI reload button for real-time refreshes without a server restart.
Exploit Protection & Chest-GUI Command Panel
- Anti-Loot Balance: Swapped
minecraft:netherite_blockin the Heavy schematic withminecraft:polished_deepslateand programmed the manager to overwrite legacy/OP config files on startup. Guaranteed all default schematics use exactlysimulated:rope_connector. - Chest-GUI Redesign: Restructured the board to limit quest maps to slots 0–17 (respecting
maxActiveQuestsPerBoard). Converted the bottom row (slots 18–25) into a command dashboard for Reissuing Compass, Cancelling Contract, and OP-level 2 Admin Commands (Generate, Delete All, Reload).
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:tEL1KmWB:Gy38odkJ"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:tEL1KmWB:Gy38odkJ"
}

