Resource Files Overview
In: Reference · Related: Full config.yml Reference · Bundled Content List · Data Storage · Back: Home
This page is a map of the plugins/QinhRuins/ directory: what each file / folder is, who generates it, whether you can edit it by hand, and which page covers the gameplay details. Verified item by item against the source QinhRuins.kt (which files are released on first launch, and which data stores are initialized).
QR's files fall into two big categories:
- Recipe / content files (edited by the server owner, applied via
/qr reload) —config.yml,templates/,generators/,loottables/,affixes.yml,palettes/,scripts/,lang/,schematics/. - Runtime data files (read/written automatically by QR, do not edit by hand) —
anchors.yml,discoveries.yml,loot_claims.yml,mech_fired.yml,vessels.yml,shared_vessels.yml,spins.yml,snapshots/.
Directory tree at a glance
plugins/QinhRuins/
├── config.yml # Main config (see 配置文件.md)
│
├── templates/ # ◆ Ruin templates (the recipe core)
│ ├── _example/ # Built-in sample (_ prefix ignored, not a real ruin)
│ │ ├── template.yml # Template definition (identity / generation / loot / thresholds)
│ │ └── blueprint.yml # Gameplay layer (spawn points / objectives / mechanisms / cores)
│ └── <your-template-id>/ # One folder per ruin
│ ├── template.yml # Template definition
│ ├── structure.nbt # Structure block body (Bukkit native, generated by save/import)
│ └── blueprint.yml # Gameplay layer (optional)
│
├── generators/ # ◆ Placement profiles (17 built-in "where to generate" rule packs)
│ ├── surface_overworld.yml # …… (all 17 in the table below)
│ └── ...
│
├── loottables/ # ◆ Loot tables
│ ├── default.yml # Default container / chest table
│ ├── vault.yml # Vault / unlock-chest table
│ └── realm.yml # Realm cleanse exclusive reward table
│
├── affixes.yml # ◆ Affix library (13 built-in enabled realm power modifiers)
│
├── palettes/ # ◆ Procedural assembly palettes (empty by default, server-authored)
│ └── <palette-id>.yml # Assemble many small structures into a large ruin by rules
│
├── scripts/ # ◆ Affix JS scripts
│ └── affix_example.js # Built-in sample (referenced by script-type affixes)
│
├── lang/ # ◆ Multilingual text (7 built-in languages)
│ ├── zh_cn/ # One folder per language, containing several *.yml
│ │ ├── commands.yml core.yml diag.yml editor.yml
│ │ └── gui.yml messages.yml realm.yml structure.yml
│ ├── en_US/ zh_tw/ ru_RU/ fr_FR/ vi_VN/ es_ES/
│
├── schematics/ # ◆ WorldEdit .schem awaiting import (source for /qr import)
│ └── <file>.schem
│
├── snapshots/ # ● Runtime: terrain snapshots (backed up before generation, restored on removal)
│
├── anchors.yml # ● Runtime: anchor instance data
├── discoveries.yml # ● Runtime: player codex discovery records (optionally in the database)
├── loot_claims.yml # ● Runtime: chest / unlock-chest claim records (per player)
├── mech_fired.yml # ● Runtime: one-shot mechanism fired records
├── vessels.yml # ● Runtime: container loot (rolled per player) records
├── shared_vessels.yml # ● Runtime: server-wide shared container loot records
└── spins.yml # ● Runtime: cleanse slot-machine draw records◆ = recipe / content (editable) · ● = runtime data (do not edit by hand)
1. Recipe / content files
config.yml — main config
The plugin's overall config, released from the built-in default on first launch. For a full field reference see Full config.yml Reference. Changes take effect with /qr reload. Do not edit the top config-version by hand (it's the auto-migration baseline).
templates/ — ruin templates
A ruin's ID card + block body + gameplay layer collection, the recipe core. Each ruin is a templates/<id>/ folder:
| File | Use | Who generates it | See |
|---|---|---|---|
template.yml | The template definition itself (which structure, what it looks like, where it generates, what loot it gives, entry thresholds) | /qr save, /qr import, the editor, hand-written | Ruin Templates |
structure.nbt | The ruin's block body (Bukkit native structure; the file name can be changed by template.yml) | /qr save (selection capture), /qr import (schem conversion), /qr markers (recapture) | Structure Files |
blueprint.yml | Gameplay layer: spawn points / kill objectives / reward chests / cores / mechanisms / sub-structure variants | /qr markers (marker-block scan), visual editor save, hand-written | Blueprints & Objectives |
Folders starting with
_are ignored and not loaded as real ruins. The built-intemplates/_example/containstemplate.yml+blueprint.yml(no structure file, serving only as a field sample).
Load order: TemplateRegistry scans templates/, then BlueprintRegistry pairs the blueprints.
generators/ — placement profiles
Reusable rule packs for "where to generate" (dimension / world / biome filters, generation layer, flatness, spacing, probability). Templates reference one via generation.profile: <name> and can locally override. First launch releases 17 built-ins:
| Dimension / category | Built-in profiles |
|---|---|
| Overworld surface | surface_overworld, surface_grassland, surface_desert, surface_snowy, surface_barren |
| Overworld underground | underground_overworld, underground_lush, underground_dripstone |
| Overworld other layers | sky_overworld, ocean_overworld, seabed_overworld |
| Nether | surface_nether, underground_nether, sky_nether |
| The End | surface_end, underground_end, sky_end |
See Placement Profiles · Bundled Content List.
loottables/ — loot tables
A library of loot entries, referenced by containers / chests / realm rewards. First launch releases 3 built-ins:
| File | Use | Referenced by |
|---|---|---|
default.yml | Default loot table | Container / chest fallback |
vault.yml | Vault / unlock-chest table | Blueprint loot-chests |
realm.yml | Realm cleanse exclusive reward table | realm.reward.loot-table (default realm) |
With
realm.reward.per-tier-tableon, you can addrealm_t<tier>.ymlto override per tier. See Loot System.
affixes.yml — affix library
Realm power-modifier definitions (five categories: quantity / level / environment / rules / loot). Released on first launch, with 13 built-in enabled affixes (plus the two commented sample affixes at the end of the file, blood-ritual command type and scripted-trial script type, enabled by removing #), including fields such as danger budget (danger), reward weight (reward), mutex group (group), and minimum tier (min-tier).
Architectural red line: an affix making "mobs stronger" delegates to MythicMobs to supply a level; QR does not compute stats. See Affix System.
palettes/ — procedural assembly palettes
Assemble many small structures (Tiles) into a large ruin by rules, for use with /qr genstruct <palette>. Empty by default, no built-in files — server owners author <palette-id>.yml themselves. See Procedural Generation.
scripts/ — affix JS scripts
The JavaScript referenced by script-type affixes (runs on QinhCoreLib's GraalJS). First launch releases the built-in affix_example.js. Reference format qinhruins:file.js:function. See Affix Scripts (JS).
lang/ — multilingual text
Player-visible command / combat / exploration messages. Each language is a folder containing several .yml files (the loader merges them automatically): commands.yml, core.yml, diag.yml, editor.yml, gui.yml, messages.yml, realm.yml, structure.yml.
7 built-in languages: zh_cn (Simplified Chinese), en_US (English), zh_tw (Traditional Chinese), ru_RU (Russian), fr_FR (French), vi_VN (Vietnamese), es_ES (Spanish). Missing keys fall back to en_US automatically. The active language is determined by language in config.yml. To add a language: copy lang/en_US/, rename it, and translate.
schematics/ — WorldEdit import source
The source directory for /qr import <file> <id> (created automatically on first launch). Drop WorldEdit .schem files in here, and on import they're converted to the template's native structure. The file parameter of import autocompletes the .schem files in this directory. See Structure Files.
2. Runtime data files (do not edit by hand)
These are read/written automatically by QR, bound to specific world coordinates / players; editing by hand easily corrupts the data.
| File / folder | Content | Note |
|---|---|---|
anchors.yml | Anchor instance data (which template, coordinates, orientation, size, status) | One entry per real ruin in the world |
snapshots/ | Pre-generation terrain snapshots | Governed by cleanup.snapshot-restore / max-snapshot-volume; restored on /qr remove / regen |
discoveries.yml | Player codex discovery records | Optionally in the database (storage.type: database + QCL configured to the same MySQL = shared cross-server) |
loot_claims.yml | Per-player claim records for unlock-style reward chests | Prevents double claims |
mech_fired.yml | One-shot mechanism fired records | Prevents repeated mechanism triggers |
vessels.yml | Container loot (rolled per player) records | The vessel system, one copy per person |
shared_vessels.yml | Server-wide shared container loot records | Auto-saved periodically (every 30s) |
spins.yml | Cleanse reward slot-machine draw records | The /qr reward slot machine |
Apart from
discoveries.yml, which can go to the database, all other runtime data always stays in local YAML — it's bound to specific server world coordinates and rightly belongs local. See Data Storage.
3. Which files are released at startup
On first launch (or when files are missing), QR releases only the following built-in resources, and does not overwrite existing files (saveResource(..., false)):
config.ymltemplates/_example/template.yml,templates/_example/blueprint.ymlscripts/affix_example.js- the 17 placement profiles under
generators/ loottables/realm.yml,loottables/vault.yml,loottables/default.ymlaffixes.yml- the
lang/language files (loaded from inside the plugin jar)
It also auto-creates the empty schematics/ directory and initializes the runtime data stores (creating empty files where missing). palettes/ releases no built-in files — server owners author them when procedural assembly is needed.
Next
- Full config.yml Reference
- Bundled Content List (item-by-item for the 17 placement profiles / 3 loot tables / 13 affixes)
- Data Storage