Skip to content

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

text
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:

FileUseWho generates itSee
template.ymlThe 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-writtenRuin Templates
structure.nbtThe 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.ymlGameplay layer: spawn points / kill objectives / reward chests / cores / mechanisms / sub-structure variants/qr markers (marker-block scan), visual editor save, hand-writtenBlueprints & Objectives

Folders starting with _ are ignored and not loaded as real ruins. The built-in templates/_example/ contains template.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 / categoryBuilt-in profiles
Overworld surfacesurface_overworld, surface_grassland, surface_desert, surface_snowy, surface_barren
Overworld undergroundunderground_overworld, underground_lush, underground_dripstone
Overworld other layerssky_overworld, ocean_overworld, seabed_overworld
Nethersurface_nether, underground_nether, sky_nether
The Endsurface_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:

FileUseReferenced by
default.ymlDefault loot tableContainer / chest fallback
vault.ymlVault / unlock-chest tableBlueprint loot-chests
realm.ymlRealm cleanse exclusive reward tablerealm.reward.loot-table (default realm)

With realm.reward.per-tier-table on, you can add realm_t<tier>.yml to 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 / folderContentNote
anchors.ymlAnchor instance data (which template, coordinates, orientation, size, status)One entry per real ruin in the world
snapshots/Pre-generation terrain snapshotsGoverned by cleanup.snapshot-restore / max-snapshot-volume; restored on /qr remove / regen
discoveries.ymlPlayer codex discovery recordsOptionally in the database (storage.type: database + QCL configured to the same MySQL = shared cross-server)
loot_claims.ymlPer-player claim records for unlock-style reward chestsPrevents double claims
mech_fired.ymlOne-shot mechanism fired recordsPrevents repeated mechanism triggers
vessels.ymlContainer loot (rolled per player) recordsThe vessel system, one copy per person
shared_vessels.ymlServer-wide shared container loot recordsAuto-saved periodically (every 30s)
spins.ymlCleanse reward slot-machine draw recordsThe /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.yml
  • templates/_example/template.yml, templates/_example/blueprint.yml
  • scripts/affix_example.js
  • the 17 placement profiles under generators/
  • loottables/realm.yml, loottables/vault.yml, loottables/default.yml
  • affixes.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