Skip to content

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>. layer takes the values surface / underground / sky / ocean-surface / seabed. y-band is the random depth / height for underground / sky.

Overworld (NORMAL, 11)

FileLayerBiome / notes
surface_overworld.ymlsurfaceSurface general, no biome restriction (the base for other surface profiles, denominator 700)
surface_grassland.ymlsurfaceGrassy belt: plains / various forests / jungle / swamp / taiga / meadow (17 biomes)
surface_desert.ymlsurfaceDesert: DESERT only, landing whitelist SAND / SANDSTONE / RED_SAND
surface_snowy.ymlsurfaceSnowy belt: snowy plains / snowy forest / ice spikes / frozen peaks / snowy slopes (8 biomes)
surface_barren.ymlsurfaceBarren land: badlands / savanna / mushroom island / stony peaks (8 biomes)
underground_overworld.ymlundergroundUnderground general · buried crypts / tombs, random burial depth y 10~35
underground_lush.ymlundergroundLush caves: LUSH_CAVES only, y 6~24
underground_dripstone.ymlundergroundDripstone caves: DRIPSTONE_CAVES only, y 8~30
sky_overworld.ymlskyFloating sky islands / sky ruins, hover height y 35~75
ocean_overworld.ymlocean-surfaceSea surface · shipwrecks / platforms, sitting at sea level (auto-relocates if no water, 9 ocean biome types)
seabed_overworld.ymlseabedSeabed · settled on the sea floor (the structure must include a sealed shell, or its interior floods)

Nether (NETHER, 3)

FileLayerNotes
surface_nether.ymlsurfaceNether surface: sits on the terrain top, already avoiding the bedrock ceiling (can be subdivided by NETHER_WASTES / CRIMSON_FOREST, etc.)
underground_nether.ymlundergroundNether underground: buried in the netherrack strata, y 8~24
sky_nether.ymlskyNether 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)

FileLayerNotes
surface_end.ymlsurfaceEnd surface: sits on the surface of End islands (can be subdivided by END_HIGHLANDS / END_MIDLANDS, etc.)
underground_end.ymlundergroundEnd underground: buried inside End-stone islands, y 6~18
sky_end.ymlskyEnd 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.

TableFileUse
defaultdefault.ymlThe default table for editor-marked chests (a fallback to avoid "missing reward table"). rolls: 2, vanilla iron / gold / diamond / xp bottle / bread
vaultvault.ymlGeneral-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
realmrealm.ymlRealm 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; the realm table 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-bonus delegating to MythicMobs to supply a level and scale its own stats — QR does not change numbers.

Affix idDisplay nameCategoryEffect (effect.type)Mutex group / threshold
elite-swarmElite SwarmMOBSpawn count ×1.5 (mob-count-mult)group mob-count, min-tier 2
hordeHordeMOBSpawn count ×2.0group mob-count, min-tier 5
veteranVeteranMOBMob level +2 (mob-level-bonus, MM scaling)group mob-level, min-tier 1
overlordOverlordMOBMob level +5 (MM scaling)group mob-level, min-tier 4
oppressionOppressionPLAYERArea Slowness I + Mining Fatigue I (player-status)min-tier 1
enfeebleCurse of WeaknessPLAYERArea Weakness I (player-status)min-tier 2
eternal-nightEternal NightENVArea darkness (player-status DARKNESS)min-tier 1
brittle-wardBrittle WardPLAYERDisable all healing (no-heal)min-tier 5, danger 45
sands-of-timeSands of TimeENVCleanse within a 5-minute limit (time-limit 300s)min-tier 3
greedGreedLOOTCleanse drop quantity ×2.5 (loot-quantity-mult)danger 0, min-tier 1
golden-touchGolden TouchLOOTCurrency drop ×3.0 (currency-mult, via the economy bridge)danger 0, min-tier 1
hidden-troveHidden TroveLOOTExclusive entries (unique:true) weight ×3 (unique-chance-mult)danger 0, min-tier 3
heraldRealm DescendsENVServer-wide broadcast on activation (broadcast, message supports {ruin}/{tier})danger 0, min-tier 1

affixes.yml also has two commented-out extension examples at the end (remove the # to enable): blood-ritual (command type type: command, runs a command on players present, placeholders {player}/{tier}) and scripted-trial (JS script type type: script, with logic in scripts/affix_example.js, reference syntax qinhruins: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).

FolderLanguageTranslation status
zh_cnSimplified ChineseComplete (default)
en_USEnglishComplete (fallback baseline)
zh_twTraditional ChineseProvided
ru_RURussianProvided
fr_FRFrenchProvided
vi_VNVietnameseProvided
es_ESSpanishProvided

To add a new language: copy the entire lang/en_US/ folder and rename it, translate each .yml inside, then change the config's language entry to the new folder name.


5. Example template (templates/_example/)

FileNotes
templates/_example/template.ymlA fully annotated reference for every ruin-template field (structure / mask / marker blocks / generation / loot, etc., commented field by field)
templates/_example/blueprint.ymlA 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/)

FileNotes
scripts/affix_example.jsA 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.

Next