Bundled Content List
In: Reference · Related: Resource Files Overview · Placement Profiles · Loot System · Affix System · Back: Home
On first launch, QR releases the following bundled content into plugins/QinhRuins/. This page lists every item (verified against the source files), so you can copy / rename / edit as needed.
1. Built-in placement profiles (generators/, 17)
A placement profile = a reusable rule pack for "where to generate" (dimension / biome filters, generation layer, flatness, spacing, probability). Templates reference one via generation.profile: <name> and can locally override any field. See Placement Profiles.
Naming pattern
<layer>_<biome/dimension>.layertakes the valuessurface/underground/sky/ocean-surface/seabed.y-bandis the random depth / height for underground / sky.
Overworld (NORMAL, 11)
| File | Layer | Biome / notes |
|---|---|---|
surface_overworld.yml | surface | Surface general, no biome restriction (the base for other surface profiles, denominator 700) |
surface_grassland.yml | surface | Grassy belt: plains / various forests / jungle / swamp / taiga / meadow (17 biomes) |
surface_desert.yml | surface | Desert: DESERT only, landing whitelist SAND / SANDSTONE / RED_SAND |
surface_snowy.yml | surface | Snowy belt: snowy plains / snowy forest / ice spikes / frozen peaks / snowy slopes (8 biomes) |
surface_barren.yml | surface | Barren land: badlands / savanna / mushroom island / stony peaks (8 biomes) |
underground_overworld.yml | underground | Underground general · buried crypts / tombs, random burial depth y 10~35 |
underground_lush.yml | underground | Lush caves: LUSH_CAVES only, y 6~24 |
underground_dripstone.yml | underground | Dripstone caves: DRIPSTONE_CAVES only, y 8~30 |
sky_overworld.yml | sky | Floating sky islands / sky ruins, hover height y 35~75 |
ocean_overworld.yml | ocean-surface | Sea surface · shipwrecks / platforms, sitting at sea level (auto-relocates if no water, 9 ocean biome types) |
seabed_overworld.yml | seabed | Seabed · settled on the sea floor (the structure must include a sealed shell, or its interior floods) |
Nether (NETHER, 3)
| File | Layer | Notes |
|---|---|---|
surface_nether.yml | surface | Nether surface: sits on the terrain top, already avoiding the bedrock ceiling (can be subdivided by NETHER_WASTES / CRIMSON_FOREST, etc.) |
underground_nether.yml | underground | Nether underground: buried in the netherrack strata, y 8~24 |
sky_nether.yml | sky | Nether sky: floats above the lava sea (y 18~38; the Nether top is bedrock, don't set it too high) |
The End (THE_END, 3)
| File | Layer | Notes |
|---|---|---|
surface_end.yml | surface | End surface: sits on the surface of End islands (can be subdivided by END_HIGHLANDS / END_MIDLANDS, etc.) |
underground_end.yml | underground | End underground: buried inside End-stone islands, y 6~18 |
sky_end.yml | sky | End void floating islands: hover above the End islands, y 25~60 |
2. Built-in loot tables (loottables/, 3)
A loot table = a reusable drop configuration (rolls roll count + weighted entries + optional conditional groups). item is resolved through QinhCoreLib's ItemManagerAPI, supporting vanilla: / QI / NeigeItems / ItemsAdder / CraftEngine / Nexo and any other source. See Loot System.
| Table | File | Use |
|---|---|---|
| default | default.yml | The default table for editor-marked chests (a fallback to avoid "missing reward table"). rolls: 2, vanilla iron / gold / diamond / xp bottle / bread |
| vault | vault.yml | General-purpose container loot + clear grand prize. containers: [CHEST, BARREL] limits the active container types; includes groups conditional groups (condition runs through PlaceholderAPI, always true without PAPI); the comments show how to stack on top of a vanilla loot table |
| realm | realm.yml | Realm cleanse exclusive reward table (handed out privately per participant). rolls: 3; entries may carry min-growth (a growth threshold) and unique: true (weighted up by the "hidden trove" affix). For example, a netherite scrap requires growth ≥30 and an enchanted golden apple requires ≥50 |
In a template's
template.yml:loot.container-table: vault= container loot;reward.clear-table: vault= the clear slot-machine pool; therealmtable is usually configured for realm cleanse output.
3. Built-in affixes (affixes.yml, 13)
An affix = a realm power modifier. Each affix has a category (MOB/PLAYER/ENV/LOOT), an optional group (same group is mutually exclusive), danger (consumes the danger budget), reward, min-tier, and effect. See Affix System.
🔑 Architectural red line: QR does not compute attributes / damage. "Mobs get stronger" works via
mob-level-bonusdelegating to MythicMobs to supply a level and scale its own stats — QR does not change numbers.
| Affix id | Display name | Category | Effect (effect.type) | Mutex group / threshold |
|---|---|---|---|---|
elite-swarm | Elite Swarm | MOB | Spawn count ×1.5 (mob-count-mult) | group mob-count, min-tier 2 |
horde | Horde | MOB | Spawn count ×2.0 | group mob-count, min-tier 5 |
veteran | Veteran | MOB | Mob level +2 (mob-level-bonus, MM scaling) | group mob-level, min-tier 1 |
overlord | Overlord | MOB | Mob level +5 (MM scaling) | group mob-level, min-tier 4 |
oppression | Oppression | PLAYER | Area Slowness I + Mining Fatigue I (player-status) | min-tier 1 |
enfeeble | Curse of Weakness | PLAYER | Area Weakness I (player-status) | min-tier 2 |
eternal-night | Eternal Night | ENV | Area darkness (player-status DARKNESS) | min-tier 1 |
brittle-ward | Brittle Ward | PLAYER | Disable all healing (no-heal) | min-tier 5, danger 45 |
sands-of-time | Sands of Time | ENV | Cleanse within a 5-minute limit (time-limit 300s) | min-tier 3 |
greed | Greed | LOOT | Cleanse drop quantity ×2.5 (loot-quantity-mult) | danger 0, min-tier 1 |
golden-touch | Golden Touch | LOOT | Currency drop ×3.0 (currency-mult, via the economy bridge) | danger 0, min-tier 1 |
hidden-trove | Hidden Trove | LOOT | Exclusive entries (unique:true) weight ×3 (unique-chance-mult) | danger 0, min-tier 3 |
herald | Realm Descends | ENV | Server-wide broadcast on activation (broadcast, message supports {ruin}/{tier}) | danger 0, min-tier 1 |
affixes.ymlalso has two commented-out extension examples at the end (remove the#to enable):blood-ritual(command typetype: command, runs a command on players present, placeholders{player}/{tier}) andscripted-trial(JS script typetype: script, with logic inscripts/affix_example.js, reference syntaxqinhruins:file.js:function).
4. Built-in languages (lang/, 7)
All player-facing text runs through lang/<language>/*.yml, selected by the language entry in config.yml; missing keys automatically fall back to en_US. Each language is a folder containing several .yml files (the loader merges them automatically).
| Folder | Language | Translation status |
|---|---|---|
zh_cn | Simplified Chinese | Complete (default) |
en_US | English | Complete (fallback baseline) |
zh_tw | Traditional Chinese | Provided |
ru_RU | Russian | Provided |
fr_FR | French | Provided |
vi_VN | Vietnamese | Provided |
es_ES | Spanish | Provided |
To add a new language: copy the entire
lang/en_US/folder and rename it, translate each.ymlinside, then change the config's language entry to the new folder name.
5. Example template (templates/_example/)
| File | Notes |
|---|---|
templates/_example/template.yml | A fully annotated reference for every ruin-template field (structure / mask / marker blocks / generation / loot, etc., commented field by field) |
templates/_example/blueprint.yml | A blueprint gameplay-layer example: spawn points / reward chests / kill objectives / cores / mechanisms / sub-structure variants |
Folders starting with
_are ignored by the loader and not registered as real ruins — it's a read-only reference sample. To build a real ruin, copy one without the underscore, or use/qr save <id>/ the Visual Editor. See Ruin Templates and Blueprints & Objectives.
6. Built-in scripts (scripts/)
| File | Notes |
|---|---|
scripts/affix_example.js | A sample JS affix script, referenced by type: script affixes (qinhruins:affix_example.js:onActivate). onActivate(ctx) runs once per player present at the moment a realm activates, providing interfaces such as ctx.player() / ctx.get("tier") / ctx.itemGive / ctx.addPotion / ctx.economyDeposit / qcl.logInfo. Runs on QinhCoreLib's GraalJS. See Affix Scripts |
7. First-release notes
- The above is released only on first launch; existing files are not overwritten (your changes are safe).
- To restore a deleted built-in file: pull it individually from the QR jar, or delete it and restart to re-release.
- Procedural assembly palettes (Tile Palettes) have no built-ins by default — you write them yourself. See Procedural Generation.