QtCraft API C++ classes QML types Handbook

qc_common

Shared by client and server: coordinates, chunks, content registry, physics, protocol. More...

Namespaces

QcAdminSamples

Status samples of the admin channel over time (decisions E-848, E-863)

QcAdvancementParser

Parses an advancement (advancements/<name>.json, decision E-923)

QcAdvancementSerializer

Advancements in the content sync (QcContentSerializer, decision E-923): everything the client shows (tree, icon, texts, frame, handbook link) and the names and requirement groups of the criteria; the triggers and conditions stay on the server (the client gets Impossible)

QcAnvil

Anvil's rules (decision E-866), pure so that tests and the server share them, as in the reference game: the left stack is repaired with its material (each item a quarter of the durability, one level each), combined with a second item of its kind (durability of both plus 12 %, two levels; the right item's enchantments merge in: equal levels rise by one up to the highest, otherwise the higher stays; conflicting or unfitting ones cost a level and stay off) and renamed (one level)

QcAnvilSwaps

Resolves the anvil swaps of all blocks once all packs are loaded (decision E-870): a block's anvilSwap gives its item the swap into into and the item into the swap back, both paid with one with

QcArmour

Armour rules (decision E-234), pure so that the server's damage handling is testable on its own: every armour point takes 4 % off a hit up to 20 points (80 %); each hit wears every worn piece with durability by a quarter of the damage (at least 1), and a piece breaks at its durability

QcArmourParser

Parses the "armour" object of an item (decision E-235): slot, points, set, layer boxes and parts

QcArmourSerializer

Armour of an item in the content sync (QcContentSerializer): written by the server, read and checked by the client like the rest of the content

QcBaseContent

Loads the base game content pack (embedded as :/content/qtcraft) into a new registry

QcBlastParser

Parses the explosion fields of a block (decision E-600): "blastResistance" and "explosive"

QcBlockParser

Parses block definitions of content packs

QcBlockRules

Rules that derive block states from the surroundings, shared by the server and the client's block prediction (decision E-853): the state a placed block takes from the player's view and the clicked face, connections of fences, walls and panes, and whether a block still has the support it needs

QcBlockSerializer

Wire format of one block definition in the content sync, with its resolved shape

QcBlockTextureParser

Parses the "textures" object of visible blocks ("all", "side", "top", "bottom", face names and named "slots") and checks that every shape part names a known slot (decision E-765)

QcBoatBody

Body of a boat (decision E-920), the same for the server (collisions, riders, placing) and the client (targeting, drawing, the driver's prediction)

QcBoatMotion

Rules of the boat's movement, in the units of the role model where they come from it (blocks per tick) converted to m/s

QcBodyFit

Where a body fits into the world: clear of the collision boxes of the blocks around it

QcBodyPush

Soft collision between players and creatures (decision E-882), shared by the server (authoritative) and the client's prediction of its player, so both push the player alike

QcBuildInfo

What build and machine a log, crash report or login comes from (decision E-834): the project version and the git commit at configure time (CMake writes both into QcBuildInfo.cpp), the compiler, Qt, the operating system and the processor

QcChatText

Translatable chat lines and disconnect reasons of the server (decision E-094)

QcCoastalTowerParser

Parses the coastal towers of the terrain ("coastalTowers" in worldgen/terrain.json, decision E-605); the structures and the foundation block are checked by the generator

QcCommandCategories

Groups of commands as a list, by their words and by their byte in the protocol

QcCommandMacroParser

Parses command macros (commands/*.json, decision E-248)

QcCommandSyntax

Parameters of a command as its usage text names them (decision E-848), for a command picker with parameter help and completion

QcConsole

QcContentFields

Field conventions shared by the content-pack parsers

QcContentNames

Content names have the form "namespace:path" with lowercase letters, digits, '_', '-', '.' and '/'

QcContentParser

Turns content-pack JSON documents into definitions

QcCookingParser

Parses the cooking fields of a block: "machine" (furnaces, smokers, blast furnaces; decision E-770), "campfire" (decision E-772) and "bites" (cake, decision E-773)

QcCrafting

Recipe matching shared by server (authoritative) and client (preview)

QcCrashHandler

Crash reports (decision E-834)

QcDataRoot

Folder of the player's data (worlds, mods, the player key, server settings): QTCRAFT_DATA_DIR when set, else the application data location of the platform

QcDayCycle

Day and night as a pure function of world time (seconds)

QcDiagnosticsBundle

A folder to hand in after a playtest (decision E-834): the logs of the newest sessions and all crash reports and dumps of <data>/logs, settings.ini and server.json without secrets, and info.txt with the build, the system, the mods and the worlds of the data folder (and the files that could not be copied)

QcEffectParser

Parses a kind of status effect (effects/<name>.json, decision E-450)

QcEnchanting

What enchantments do (decision E-864), pure so that server and client (mining speed it predicts) share the rules: which items an enchantment applies to, the level of an effect on a stack and the effects' numbers as in the reference game

QcEnchantingTable

Enchanting table's rules as in the reference game (decision E-864): bookshelves around the table raise the three offers' levels, and a player's enchantment seed fixes the offers until he enchants (then the server draws a new seed)

QcEnchantmentParser

Parses an enchantment (enchantments/<name>.json, decision E-864)

QcEnchantmentSerializer

Enchantments in the content sync (QcContentSerializer, decision E-864): every field, so the client knows effects and names

QcEntityKinds

Number of the entity kinds, their protocol values and names

QcFarmingParser

Parses the farming fields of blocks (decisions E-289 and E-290): "crop" (stages, pace, light, fruit of stems) and "soil" (moisture, water reach, what it reverts to)

QcGameModes

Rules of each game mode, and its names; the mode itself is QcGameMode (registered for QML as GameMode, with GameMode.Mode.Creative and so on)

QcGeneratorVersion

Versions of the world generator (decision E-922)

QcHandbookBlockPages

Handbook pages of the visible blocks (categories "blocks", "parts" and "liquids"), in content order: how they are mined, their physical behaviour, uses, recipes and where they occur

QcHandbookBlockTables

Handbook tables built from the block data (category "tables", after the tables of QcHandbookOverviewPages, in this order): the Signal Dust components with what they take and give, the blocks that are no opaque full cubes with their light and spawning behaviour, the light sources and the blast resistance of every block (decision E-685)

QcHandbookBuilder

Builds the handbook from a complete content registry (base game and mods, including the server-side world-generation data and chapters): every block, item, recipe, creature, biome, liquid, world generation feature and tag gets an entry with facts and links

QcHandbookChapterPages

Handbook chapters about playing (category "playing"), in content order: their sections with rule and key placeholders filled, and links to related content

QcHandbookCreaturePages

Handbook pages of the creatures (category "creatures"), in content order: behaviour, spawning and drops

QcHandbookItemPages

Handbook pages of the items without a block page (categories "items", "tools" and "food"), in content order

QcHandbookJson

JSON form of handbook pages, shared by the control interface and the in-game screen (which turns it into QVariantMaps), so both show exactly the same content

QcHandbookMarkdown

Markdown export of a handbook: index.md and one file per non-empty category, with relative links between entries

QcHandbookOverviewPages

Handbook pages that gather content from all over: the item tags (category "tags", by tag name) followed by the tables of fuels, tools, armour and machine recipes (category "tables", in that order; the block tables of QcHandbookBlockTables follow them)

QcHandbookWeb

Data of the web handbook (web/handbook/data, shown by web/handbook/handbook.js like the handbook screen of the game): one JSON file per language with the packs, the categories with their entries in list order and every page in the form of QcHandbookJson::entry, each with the English title the search compares (QcHandbook::search)

QcHandbookWorldPages

Handbook pages of the world generation, in this order: the biomes (category "biomes"), then the terrain overview, the ore veins and the features (category "worldgen"), each in content order

QcHangingParser

Parses the "hangs" object of an item (decision E-790): "type" ("item_frame" or "painting"), for a painting its "motifs" ({"name", "texture", "width", "height"}, sizes 1 to 4) and its "back" texture

QcHoldNames

JSON names of hold categories and grips ("tool", "partialBlock", "handle", ...)

QcHoldParser

Parses how items are held (decision E-831): the hold object of an item or block and the category defaults in held.json

QcHoldSerializer

How items are held (decision E-831) in the content sync (QcContentSerializer): the hold of items and blocks and the category defaults, read back within the parser's limits (QcHoldParser)

QcItemParser

Parses item definitions of content packs

QcItemSerializer

Definition of an item in the content sync (QcContentSerializer): its stack, tool, food and fuel values, tags, what it places or fills, its armour (QcArmourSerializer) and how it is used (launcher, projectile, throwable, drink, fishing rod)

QcLightCells

Coordinates of the cells of the light engine (QcLightEngine): the chunk and the place in it of a block coordinate, the index of a cell column in a chunk, the faces that lead to the neighbour columns

QcLightPassage

How light passes block states whose shape is not a full cube (decision E-104): such a state of a light-dimming block lets light into its cell (opacity 0) but not across the faces its shape covers completely

QcLiquidParser

Parses the "flow" object of a liquid block: how far and how fast it spreads, whether it makes new sources, its bucket, bottle and sound, and its reactions with other liquids

QcLogFiles

Files of the diagnostics folder (decision E-834): one session per start of a program, named "<program>-<yyyyMMdd-HHmmss>" in UTC (so the order survives a change of daylight saving time; the lines inside carry local time), with "-2", "-3" … when that name is taken

QcLoginCrypto

Few cryptographic steps of the minimal login (decision E-252), all HMAC-SHA256 from QtCore: a password key stretched with PBKDF2, a player identity per server derived from the player's installation key, proofs bound to the nonce of one connection and a short fingerprint of an identity

QcLootTableParser

Parses a loot table (loot/<name>.json, decision E-521)

QcMapCrafting

Maps in the crafting grid (decision E-804), besides their recipes: a filled map with empty maps of its kind and nothing else copies it (one copy per empty map, all with its map id); a filled map in the middle of the 3 x 3 grid with its zoomsWith item in the eight cells around it zooms it out (a new map one scale larger, which the server makes when the result is taken)

QcMapPixel

One pixel of a map (decision E-799): the top block of its column as the index of its block definition (QcBlockState::type, the same for all states of a block, an index into QcContentRegistry::blocks()) and a shade, in 16 bits as (block + 1) << 2 | shade; 0 is a pixel nobody has looked at yet

QcMaterialParser

Parses materials and the part families that turn them into building parts

QcMessageLog

Log file of a program (decision E-834): a Qt message handler that writes every message that passes the logging rules to a QcLogWriter and then hands it on to the handler installed before (the console)

QcMinecartBody

Body of a minecart (decision E-382), the same for the server (collisions, pistons, riders) and the client (targeting, drawing, the rider's view)

QcMining

Mining rules shared by server (validation) and client (progress display)

QcMobParser

Parses mobs and the skeleton models and appearances that characters are drawn with

QcMobSerializer

Wire format of one creature definition in the content sync: what the client shows and uses of it (size, model parts, sounds, glow, breeding food, tameable, milking, the thread of a family)

QcMobTraitsContent

Checks the traits of creatures (decision E-460) when the content is finished

QcMsg

Protocol messages: plain data structs in thematic headers, together the alternatives of the QcMessage variant (QcMessages.h)

QcMsg::AdminLimits

Bounds of the admin messages, checked by the decoders

QcNameText

Names people type and others read (player names, preset names; decision E-232): limits count Unicode code points, not UTF-16 units, and cuts fall between graphemes, so an emoji or a letter with its accents is kept whole or dropped whole and no lone surrogate is left behind

QcOwnerOnlyAccess

Access lists of secret files on Windows (decision E-901), where Qt's permission bits only set the read-only attribute: a file inherits the access list of its folder unless it gets its own

QcPackComparison

Compares the content packs of server and client at the login (decision E-252): same ids, same versions and, where both sides computed one, the same hash over the files

QcPartGenerator

Registry function behind building parts: for every material of the registry and every part family of the material's kind, it registers the part's block (item follows from createBlockItems), its crafting recipe and its display names

QcPhysics

Deterministic movement and collision shared by server (authoritative) and client (prediction)

QcPlayerKey

Random key of one installation (decision E-252): 32 bytes, made on first use and kept as hex in <data>/player.key, readable only by the user

QcPortableContainers

Rules of portable containers (a backpack, decision E-832): a block whose container travels with it as the data of its item (QcItemData::contents)

QcPoses

Box and the eyes of a body in each pose

QcProcessMemory

Memory of the running process in MiB (debug display, statistics log, health line, benchmark); 0 where the platform does not report it

QcProfileValidation

Server's check of a player's profile before it takes it over (Hello, SetAppearance; decisions E-036, E-231, E-232): the client stores and sends the profile, but nothing it sends is trusted

QcProjectileParser

Parses a kind of projectile (projectiles/<name>.json, decision E-425)

QcProtocol

Binary wire format: every frame is [quint16 type tag][payload] in QDataStream big-endian encoding

QcProtocolCodec

Payload encoders and decoders of the protocol messages, one overload pair per message

QcQuickMove

Where a shift-clicked stack goes, by its slot (numbers as in QcMsg::MoveInventoryItem)

QcRailParser

Parses the rail fields of blocks (decisions E-382, E-384): what a rail does to carts ("railAction") and the states its track is made of

QcRails

Rails (decision E-382): the track a rail state lays out and the state a rail takes from the rails around it

QcRaycast

Voxel traversal (Amanatides & Woo) along a ray, tested against the boxes of each block state: the drawn boxes of every block that is neither air nor liquid nor invisible, or the collision boxes only (including the part of a fence above its own cell)

QcRecipeParser

Parses crafting and smelting recipes of content packs

QcRepair

Repair in the crafting grid (decision E-236): two items of the same kind with durability, at least one of them worn, and nothing else make one item with both remaining durabilities plus a bonus of 5 % of the full durability

QcSecretFile

Files that hold secrets (the player key, the server's TLS key, the known servers, a server's settings and identities; decisions E-252, E-872, E-901): written atomically (QSaveFile) and readable only by the user

QcShapeParser

Parses block shapes: shape files and the inline shapes of blocks

QcShowcaseParser

Parses the showcase settings (worldgen/showcase.json, decision E-220)

QcSignText

Text on a sign (decision E-766): up to four lines that a player writes and everyone reads

QcSignalLinks

Checks the links between Signal Dust blocks once all packs are loaded (decision E-333): a piston's head must be a piston_head block with the piston's facing values and sticky; a torch's or lamp's counterpart must exist, be of the same kind, have the opposite active and the same properties

QcSignalParser

Parses the "signal" object of blocks (decision E-333): the kind of component and its numbers, and checks that the block has the state properties the kind needs (a lever needs powered, the wire power and its four sides, a repeater facing, delay, powered and locked ...)

QcSkyLight

Light of the open sky in a chunk (for QcLightEngine): the top of each cell column (the highest block that stops sky light), the cells above the tops that the open sky lights, and the cells beside a higher neighbouring column from which the light spreads sideways

QcSlabRules

Two slabs in one cell make a full block

QcSoundKeys

Names of the sounds the game plays for blocks, creatures and the player

QcSoundParser

Parses synthesized sound definitions of content packs

QcSpawnGround

Where creatures that walk may appear by themselves (decision E-836), the same for every kind instead of a block list per creature: the ground is a solid block whose top face is full and that is drawn opaque (no glass, leaves or ice, no lower slab, path or farmland; an upper slab and a double slab carry), and neither ground nor the cells of feet and head hurt or hold a body (QcBlockDefinition::keepsSpawnsAway)

QcSpawnerContent

Checks what spawners, dungeons and loot tables name (decisions E-520..E-522) when the content is finished, and which creature kinds a spawner may bring forth at all

QcStairShapes

Corners of stairs as in the reference (decision E-754)

QcStonecutting

Stonecutter's recipes (decision E-784)

QcStreamLimits

Bounds for counts read from untrusted streams (network, save files), so corrupt input cannot trigger huge allocations

QcStructureParser

Parses structures (structures/*.json, decision E-219)

QcStructureSiteParser

Parses where the world generator places a structure by itself and what guards it (decisions E-590, E-591): groundLayer, surface (biomes, region spacing, chance, attempts, slope, margin to villages, foundation), guardians (zones whose creatures come back) and spawnArea (the monsters of its footprint, decision E-871)

QcStructureVariationParser

Parses the variation of a structure (decision E-404): choices (named lists of name swaps, one option taken per placed copy) and parts (optional cells with a chance, in the structure's palette)

QcTickPhases

Number of the tick phases and their ids

QcTradeParser

Parses the offers of a profession (trades/<name>.json) and the trading settings of a villager species, villagers/<name>.json (decision E-414)

QcVegetationParser

Parses the fields of the vegetation object of a biome (decision E-814): grass and flowers, each with density, patchSize, plants (block names or objects with block and weight) and patches (chance, tries, radius)

QcVillageContent

Joins the village files of all packs when the content is finished (QcContentRegistry::finish, decision E-421), in two steps around linking the creatures to their villager settings

QcVillageLayoutParser

Street plans of a village style (decision E-408): layouts in villages/*.json, a list of weighted kinds with their parameters, and the defaults of each kind and of a style without the field

QcVillageParser

Parses village styles (villages/*.json) and the village settings (worldgen/villages.json), decision E-403

QcVillagerOutfits

Outfits villagers wear (decision E-411): for every look (the default one of each villager species and each style's) and every profession with layers, the look's outfit with the profession's layers laid over it (an apron over the style's shirt), registered as a creature outfit under outfitName()

QcVillagerParser

Parses the settings of a villager species (villagers/<name>.json), the professions (professions/<name>.json) and the look of a village style's villagers (decision E-411, E-421)

QcWeather

Names of the weather kinds and the climate of a column

QcWeatherParser

Parses what the weather does to the world (weather.json of a pack, decision E-396)

QcWorld

Dimensions of the world

QcWorldOptionParser

Parses worldgen/options.json of a content pack (decision E-917): the groups, options and presets of the world generation

QcWorldTypeParser

Parses the settings of the flat and void world types (worldgen/flat.json, worldgen/void.json, decision E-223)

QcWorldgenParser

Parses the world generation definitions of content packs: biomes, features, ores and terrain

Classes

QcAabb

Axis-aligned bounding box in world space (metres)

QcAdvancementCatalog

Advancements of the content (part of QcContentRegistry, decision E-923), in load order and replaced by name like other definitions

QcAdvancementConditions

What an event must show for a criterion to be met; empty fields accept anything

QcAdvancementCriterion

One criterion of an advancement: its name inside the advancement, the event and its conditions

QcAdvancementDefinition

An advancement of the adventure guide (advancements/<name>.json, decision E-923): its place in the tree (parent, empty for a root), how it shows (icon item, title and description keys, frame, hidden until reached, announced in the chat), the handbook entry it leads to ("chapter:<name>", "item:<name>", "block:<name>", "mob:<name>", "biome:<name>"), its criteria and which of them it needs: requirements holds groups, every group must have one met criterion

QcAdvancementProgress

Criteria one player has met, per advancement (decision E-923)

QcAdventureRules

Allow-lists of adventure mode (decision E-735), a setting of the world: for each item kind, the blocks it may break and the blocks it may act on (be placed on, till, light, pour, …), like the reference's can_break and can_place_on, but per item kind instead of per stack

QcAdventureRules::Read

What QcAdventureRules::fromJson() read and what it left out

QcAirSupply

Air of a player or a creature under water (decision E-955), counted in game ticks

QcAnvilSwap

An anvil swap (decision E-870): the anvil turns a stack of one item into the same number of into, using up one with from its right slot

QcAppearance

A player's chosen look: outfit, hair style and cape by content name, and four colours as 0xRRGGBB

QcAppearanceDefinition

An outfit (textures for the slots of a skeleton model), a hair style (extra boxes on the head, textured through its own layers) or a cape (a plate on the back, textured through its layers)

QcAppearanceLayer

Texture for one slot of a model

QcAquaticDefinition

A creature that lives in water (fish, decision E-502), from its data (aquatic): it swims only in water, in schools with its kind (cohesion, alignment and separation among at most neighbours creatures of its kind within schoolRadius metres), flops about on land and suffocates there after airSeconds

QcArcherDefinition

How a creature with the archer AI shoots (decision E-426), from its data (archer)

QcArmourDefinition

What makes an item armour: the slot it is worn in, the armour points it gives, the set it belongs to (showcase stands and the handbook group by it) and how it is drawn on a body

QcArmourLayer

A layer box of a piece of armour (decision E-235): every box of the reference model (the humanoid) whose slot is in covers, made inflate metres larger on every side and cut to the heights fromY..toY (model space), drawn with texture on its bone

QcArmourPart

An extra box of a piece of armour on one bone (shoulder piece, crest, visor, toe cap), in model space like the bone's own boxes

QcAssetCatalog

What the client draws and plays (part of QcContentRegistry, synchronised with the content): textures, skeleton models, appearances (outfits, hair styles) and sounds, each replaced by name

QcBaseContent::Loaded

Finished base content with the warnings of loading and finishing it

QcBiomeDefinition

A biome of the terrain generator: its climate point, the shape of its land, its ground blocks, rivers, deltas, villages, monsters, features and vegetation (a biome file of a pack)

QcBitesDefinition

A block eaten bite by bite where it stands (cake, decision E-773): using it eats one bite of food points; its state bites counts the bites taken, the bite after its last value removes the block

QcBlastDefinition

How a block takes part in explosions (decision E-600)

QcBlockAccess

Read access to blocks, implemented by the server world and the client world mirror

QcBlockBox

A box of block cells from low to high, both corners inclusive (decision E-975)

QcBlockDefinition

Definition of a block type as read from a content pack's JSON (QcBlockParser)

QcBlockPos

Integer position of a block in the world, in blocks (= metres)

QcBlockProperty

A named block state property (facing, half, open, ...) and its possible values; the first value is the default

QcBlockRules::Aim

What the player aims at when placing a block: face of the block at clicked, hit (0..1 inside that block), while looking along yaw and pitch (degrees, positive is up)

QcBlockShare

A block covering a share of some ground (the beds of rivers, decision E-840)

QcBlockState

Everything that depends on one concrete block state, derived from the block definition and its shape

QcBlockStateTable

Runtime ids are block states: every block owns a contiguous range of ids, one per combination of its property values (the first property varies fastest)

QcBlockTextures

Textures of a block: one per face plus the named slots that shape parts use

QcBoatControls

What the driver of a boat does in one tick (decision E-920): paddle forward or back, turn left or right

QcBoatState

A boat as it moves (decision E-920), the shared physics of the server (every boat, authoritative) and the client (the prediction of the own boat): its feet, velocity and contact (motion.inWater: it floats), the direction it points to and how fast it turns

QcBodyGrid

Bodies sorted into columns of one block (decision E-882), so that the push on one body (QcBodyPush::between) looks only at the bodies in the columns within reach of it instead of at all of them: building costs a sort of the bodies, a look-up a binary search per column around the body

QcBodyPush::Body

A body as the push sees it

QcBreedingDefinition

How a peaceful creature breeds (decision E-293): fed with one of food, an adult falls in love for loveSeconds; two of a kind in love within partnerDistance metres get a young one, which grows up after growUpSeconds

QcCampfireDefinition

A campfire (decision E-772)

QcCapeShape

Size of a cape in metres and its distance from the back (decision E-240)

QcCarryDefinition

A creature that takes single blocks and puts them down again (the shadewalker, decision E-460), from its data (carries): only the blocks of blocks, and only while the game rule mobGriefing is on

QcChunk

Column of QcWorld::sectionCount sections at one chunk position

QcChunkPos

Horizontal position of a chunk column, in chunks

QcChunkSection

16x16x16 blocks stored as a palette plus per-block palette indices

QcCoastalTowerSettings

Coastal towers of the terrain generator ("coastalTowers" in worldgen/terrain.json, decision E-605): a tower from structure data on land at or a little above sea level with ocean near it, standing on a foundation down to the ground

QcColdEdgeSettings

Soft edges of cold biomes (decision E-858): the top water layer freezes by the temperature of its column with a noise instead of by biome, rivers only further into the cold, and the ground blocks of a column come from the biome a few blocks away in a jittered direction, so they mix over the border

QcCommandMacroDefinition

A command made of other commands, defined in data (commands/*.json, decision E-248): mods have no C++ access, so this is how they add commands

QcCommandSyntax::Form

One form of a command's usage

QcCommandSyntax::Parameter

One word of a form: a literal or a placeholder

QcConnection

Message-level view of a transport: encodes outgoing messages, decodes incoming frames and closes the link on undecodable input

QcContentPackInfo

Manifest of a content pack (base game or mod): pack.json in the pack directory

QcContentPackLoader

Reads content packs from disk (or Qt resources) into a registry

QcContentRegistry

Central catalogue of all content (blocks, items, creatures, recipes, effects); assets, world generation, villages and translations are catalogues of their own that it owns (decision E-715)

QcContentRegistry::ParsedState

A parsed state name: the state (std::nullopt for an unknown block) and what was wrong with it

QcContentSerializer

Wire format of the content sync message: everything a client needs to show the world

QcCrashHandler::Setup

Where and how install() writes reports

QcCreativeCatalog

Every item of the content, mods included, sorted into the tabs of the creative inventory and searchable by name (decision E-286)

QcCropDefinition

A plant that ripens in stages (wheat, carrots, pumpkin stems), driven by random ticks on the server (decision E-289)

QcCrumbleDefinition

A creature that crumbles into blocks where it touches a source block of the liquid liquid (the sand golem, decision E-593), from its data (crumbles): it is gone without loot or experience, and its build stands in its place, an iron golem's T in reverse: body at its feet, in the middle above them and on both sides of the middle across its facing, head on the middle

QcDamagedFile

A damaged file of a world and what it held

QcDiagnosticsOptions

Command line options of logging, crash reports and the health line, shared by qtcraft and qtcraft-headless

QcDiagnosticsSession

Logging and crash reports of one run of a program (decision E-834), from the start of main() until its end: deletes the files of old sessions, installs the log file (QcMessageLog) with its header and the crash handler, applies –log-rules, and on destruction closes the log

QcDiagnosticsSession::Start

What the session starts with

QcDiagnosticsSetup

What the diagnostics options asked for (decision E-834)

QcDrinkDefinition

Drunk with the use button like food is eaten (milk, decision E-500); it becomes emptiesTo

QcDrinkHealDefinition

A creature that drinks to heal (the witch, decision E-623), from its data (drinks): once its health lies heal or more below its most and cooldownSeconds have passed since its last drink, it holds item for seconds without shooting, then heals by heal with sound

QcDungeonSettings

Dungeons of the terrain generator ("dungeons" in worldgen/terrain.json, decision E-522): a room of wall/moss blocks deep underground with a spawner of a weighted kind and chests with loot, and corridors carved from it to caves within reach, lined where they border cave or earth and lit sparsely outside the spawner's spawn area

QcEffectDefinition

A kind of status effect (decision E-450), from effects/<name>.json: what it does to a body while it lasts (poison: damage now and then, never below minHealth) and how the HUD shows it (icon, colour, hearts in the colour)

QcEnchantingTable::Offer

One offer: the levels the player needs (0: no offer) and the enchantments it gives

QcEnchantment

An enchantment an item carries (decision E-864): the enchantment's content name and its level

QcEnchantmentDefinition

An enchantment (enchantments/<name>.json, decision E-864), as in the reference game

QcEntityMotion

Kinematic state of an entity

QcEquipment

What a player or an armour stand wears in the four armour slots (QcEquipmentSlot, decisions E-232, E-234): one stack each

QcExperience

A player's experience (decision E-398): a level and the points gathered towards the next one, with the reference game's cost curve (7 + 2 L points per level below 15, 37 + 5 (L - 15) up to 29, then 112 + 9 (L - 30))

QcExperienceDrop

Experience points something gives as orbs (decision E-398): a mined ore, a killed creature, a pair of bred animals; between min and max points, chosen evenly

QcFaceOffset

Step from a block to its neighbour across one face, in blocks

QcFamilyDefinition

A parent that splits off children and takes them with it (the Kjut, decision E-839), from its data (family): every fresh hurt it survives that takes health splits off childrenPerHit creatures of kind child while fewer than maxChildren of its children live and it has split fewer than maxSplits children in its life; when it dies, every child of it vanishes with popSound and leaves popDrops (like the children of a QObject on deleteLater), without an explosion

QcFeatureDefinition

A terrain feature (a feature file of a pack): a tree, a column, a single plant or a pool of liquid

QcFeaturePlacement

A feature a biome places (an entry of the biome's "features")

QcFireDefinition

How a block takes part in fire (decision E-392)

QcFishingDefinition

What a fishing rod does (decision E-503; "fishing" in the item's file): the use button casts bobber, a projectile kind, at speed and reels it in again

QcFishingLoot

One entry of a fishing rod's loot table (decision E-503): count of item, drawn with weight against the weights of the other entries

QcFlatDefinition

Settings of the flat world type (worldgen/flat.json): the layer preset a new flat world gets unless it names its own, "bedrock,59*stone,3*dirt,grass_block" (bottom up, n* repeats)

QcFrameReader

Framing of the protocol on a byte stream (TCP, decision E-251): every frame is a big-endian quint32 length followed by that many bytes; a frame of length 0 only keeps the connection alive

QcGameModes::Rules

What a mode changes about the rules

QcGazeDefinition

A creature that a player provokes by looking at its head (the shadewalker, decision E-460), from its data (gaze): the player's look and the direction from their eyes to the middle of its head agree within tolerance, which narrows with the distance d (look · direction > 1 − tolerance / d, like the reference game: about 4.5° at 8 m, 1.8° at 50 m), from no farther than range metres, with nothing in between

QcGolemDefinition

How a creature with the golem AI fights, is repaired and built (decision E-471), from its data (golem)

QcGrowthDefinition

A plant that grows upwards by itself (sugar cane): random ticks of its top block add a block of the same kind above until the column is maxHeight tall

QcHandbook

Handbook of one content registry in one language (built by QcHandbookBuilder): categories with their entries, grouped by pack, and a search over titles in this language and in English

QcHandbook::Category

A category and its entries

QcHandbook::Contents

Everything a handbook consists of; see the accessors of the same names

QcHandbookBlockTables::LightBlocking

How much light a block takes away

QcHandbookChapter

A chapter of the handbook about playing (controls, hunger, death ...), from handbook/*.json

QcHandbookContext

What the handbook page builders share while building one handbook

QcHandbookEntry

One page of the handbook: a block, item, creature, biome, chapter ... with its facts, recipes and references to other pages

QcHandbookEntry::Fact

One row of the facts table: a value, links, or both

QcHandbookEntry::Link

A reference to another entry (target is its id)

QcHandbookEntry::Recipe

A crafting recipe (cells of a grid, row by row; empty links are empty cells) or a machine recipe (one input cell)

QcHandbookEntry::Section

A titled part of the page: text (a small Markdown subset: paragraphs, "- " lists, **bold**), links or recipes

QcHandbookIndex

Reverse lookups over the content for the handbook pages, all in content order: recipes by result and ingredient, smelting by result and input, what drops an item, where a block occurs, which creatures spawn on it, machines by category and parts by base block

QcHandbookLinks

Titles, icons and entry ids of content in the handbook, and links to their entries

QcHandbookMarkdown::File

One file of an export: a Markdown page or a file of the web handbook's data (QcHandbookWeb)

QcHandbookRecipes

Recipes as shown in the handbook, and the sections every item page has about how the item is made and what it is used for

QcHandbookText

Texts of a handbook in one language: translations of content and handbook labels, numbers with units, and the rule and key placeholders in descriptions and chapters

QcHanging

Where an item frame or a painting hangs and what it shows (decisions E-790, E-791), the same for the server (placement, support, saving) and the client (targeting, drawing)

QcHangingDefinition

Field "hangs" of an item (decision E-790): used on a block face, the item hangs an entity of type there that drops the item again

QcHealthLog

Health line (decision E-834): every interval one info line "HEALTH …" in qtcraft.health with memory (resident and peak), frame and tick times, chunks, entities, players, round trip and network rates, so a log of a long playtest shows how the program fared before a problem

QcHealthSample

What a program reports in its health line; unknown parts stay empty or -1

QcHitEffect

One thing a projectile does when it hits (decision E-427), an entry of its kind's "onHit" list: {"type": "knockback", "strength": 0.5}

QcHitEffect::Type

A type of effect: its name, the key and range of its number and the number when not given

QcHoldDefaults

Defaults of every category (held.json); a later pack's file overrides the fields it sets

QcHoldDisplay

Hold of an item or block definition, or one category's defaults

QcHoldParser::Range

Bounds one value of a vector must keep, both inclusive

QcHoldTransform

One placement of the held thing around the grip

QcHoverDefinition

A creature that hovers (the Kjut, decision E-839), from its data (hover): it floats height metres above the ground or the liquid below it, bobbing by bob metres every bobSeconds, never higher than maxHeight above the ground and lower under a low ceiling; it flies without gravity towards where its brain wants to go, rises over a wall in its way and turns to face where it goes at no more than turnSpeed degrees a second

QcIdList

A read-only view of the definitions (of the type T) of a content registry list, indexed by their strong id type Id instead of an integer (decision E-952)

QcInProcessTransport

One end of an in-process link

QcIndexId

Index of a definition in a list of its own kind, as a type of its own per list (decision E-952): Tag tells the lists apart, so an index of one list cannot pass for one of another

QcIntervalStats

Collects durations until take() hands out their mean and maximum and starts anew

QcIntervalTiming

Mean and maximum of durations within one interval of the health line (decision E-834)

QcInventory

Player inventory: hotbar slots 0..8 followed by the main storage

QcItemData

Optional data of an item stack (decision E-823): typed components, each with a fixed id that is never reused (ids from QcItemData::firstModId on belong to mods)

QcItemDefinition

An item kind of a content pack (items/<name>.json, QcItemParser): its stack size, tool, food and fuel values and all the ways it can be used

QcItemDrop

An item that a block (or other content) drops, with count, chance and conditions

QcItemStack

A number of identical items, e.g. one inventory slot

QcJsonFieldReader

Reads typed fields of one untrusted JSON object

QcKeptComponent

A saved component this version does not read (decisions E-420, E-823), kept as raw bytes so that saving again loses nothing: a component of an unknown id whole, or, for a known component of a newer version, the fields after the ones this version knows (tail), written back after them under the newer version

QcKeyBindings

Which keys trigger which action of the game, as a table: every action has a primary and a secondary key (Qt::Key values, 0 = none)

QcKeyBindings::Displaced

A binding moved away from another action to resolve a conflict: action's slot now holds key (the key the rebound action had before, 0 = none)

QcLauncherDefinition

What an item that shoots projectiles does (a bow, decision E-425): held with the use button down, it draws for up to drawSeconds; released, it shoots the first ammunition of the inventory it takes (decision E-427) at speed times the power of the draw, if the power reached minPower

QcLayingDefinition

What a creature lays now and then (a chicken's eggs, decision E-452): an awake adult drops item at its feet after a time chosen evenly between minSeconds and maxSeconds, anew after each one, and sound plays there

QcLightEngine

Block and sky light of all loaded chunks per section, kept up to date incrementally (decisions E-049 and E-389); the server and the client use the same engine

QcLightEngine::Memory

Sections that hold cells and the bytes they take, per channel

QcLightEngine::Options

What the engine keeps

QcLightEngine::Prepared

Light of one chunk computed on its own (its neighbours dark walls), on any thread

QcLightNibbles

Light levels (0..15) of the cells of one section, two per byte (2 KiB per section)

QcLightTable

How every block state treats light, indexed by runtime block id (decision E-389): the opacity (light lost entering the cell, 15 stops it), the block light it gives off and the faces light cannot cross (QcLightPassage)

QcLightVolume

Block light of a box-shaped volume of cells: sources flood outwards breadth-first, every step into a cell costs max(1, opacity of that cell) levels, cells of opacity 15 stay dark and no step crosses a face that a partial shape covers (QcLightPassage)

QcLinkList

Links of a handbook section, one per target: a link to a target that is already there adds its note to that one

QcLiquidDefinition

How a liquid block flows (see QcLiquidFlow)

QcLiquidReaction

What a liquid turns into where it touches another liquid (lava next to water)

QcListedLatency

Round trip as the player list carries it (decision E-886), in microseconds; negative while unknown

QcLoadFailure

A load that failed (a file, a definition, the base game): why, and the warnings collected up to there (decision E-975)

QcLoadedPack

A pack loaded into a registry: its manifest and the warnings about the entries it skipped

QcLogWriter

One log file with a size cap (decision E-834): lines are appended unbuffered, so a crash loses none of them; when the file would grow beyond the cap it becomes the rotated part 1, older parts move up by one, the oldest beyond rotations is deleted and a new file starts

QcLogWriter::Limits

Size cap and the rotated parts kept

QcLoginSettings

Login settings of a server open to network players (decision E-252); a single-player world opened to the LAN gets them when it starts listening

QcLootTableDefinition

A loot table (loot/<name>.json, decision E-521): what a chest the world generator places holds (dungeons; later mine shafts and surface structures)

QcLootTableDefinition::Pool

A pool of entries drawn from a number of times

QcLootTables

Loot tables of the content (decision E-521), replaced by name like other definitions, and what one gives: roll() draws the pools of a table from a seed (the same seed gives the same loot) and scatters the stacks over the free slots of a chest

QcLootTables::ItemInfo

What draw() needs to know of an item: its id and largest stack

QcMachineDefinition

Block capability of a machine (furnace, smoker, blast furnace): an input, a fuel and an output slot that work through the smelting recipes of category while fuel burns; kinds narrows them to recipes of those kinds (decision E-770)

QcMailbox

Thread-safe hand-over of values of the type T from producer threads to one consumer

QcMapCrafting::Result

What the grid makes

QcMapData

Picture of one map (decision E-799), the same for the server, which reveals and saves it, and the client, which keeps what the server sent: size x size pixels over a square of the world that lies on a fixed grid of its scale (the map of a block column is the same for every holder), each pixel the top block of its column with a shade (QcMapPixel), 0 where nobody has looked yet

QcMapMarker

A player or an item frame shown on a map (decisions E-803, E-808): where, in half pixels from the map's middle (-128 at the west or north edge, 127 at the east or south edge), and which way the player looks or the frame faces, in sixteenths of a full turn clockwise from north

QcMaterialDefinition

A material that building parts are made of: a base block and its kind

QcMessageLog::Config

Log file install() writes

QcMessageLog::LineTime

When a line was written: the local time and the milliseconds since the log started

QcMessageLog::Recent

What recent() found: the lines, and the sequence of the newest line kept when it looked (read under the same lock, so a caller that asks again after it gets every later line exactly once)

QcMessageLog::RecentLine

One of the latest lines

QcMineshaftSettings

Abandoned mine shafts of the terrain generator ("mineshafts" in worldgen/terrain.json, decision E-570): a network of corridors on several levels below a central room, laid out on a square lattice, with wooden supports, rails, cobwebs, chest minecarts with loot and spawners; levels joined by staircases, plank bridges on pillars where a corridor crosses a cave, and a ladder shaft with a headframe up to the surface in some of them

QcMineshaftSettings::BiomeChance

A biome with its own chance of a surface entrance

QcMobAbilities

How a creature finds its way (decision E-423), from its data (abilities); the path rules (QcPathRules::of) follow from it

QcMobDefinition

Data definition of a creature: stats, behaviour, spawning, model and drops

QcMobDefinition::SpawnRule

One place and time where the creature spawns: the main rule (the fields above) or an extra one (spawn.also, e.g. slimes also on swamp surfaces at night)

QcMobPart

One box of a mob's model, in metres relative to the mob's feet centre, facing north (-Z)

QcMobReader

Reads one mob definition of a content pack: owns the definition being built and the reader of the mob's JSON object

QcModelBone

One bone of a skeleton model: boxes that turn together around a pivot

QcModelBox

One box of a bone

QcModelDefinition

A skeleton model for creatures and players (a file in models): named bones with boxes that outfits texture by slot

QcMsg::AdminCatalogue

Server -> client: the commands of the registry and the macros of the content

QcMsg::AdminCatalogue::Command

One command or macro

QcMsg::AdminChat

Server -> client: recent chat after subscribing (history), then each new line

QcMsg::AdminChatLine

One chat line as the server sent it to the players, with when (ms since the epoch) and who wrote it (empty for lines of the server)

QcMsg::AdminHistory

Server -> client after subscribing to the status: the bounded history for charts, oldest first

QcMsg::AdminLists

Server -> client: operators, whitelist and bans

QcMsg::AdminLists::Ban

One ban

QcMsg::AdminLog

Server -> client: the log's tail (tail, answering a subscription or LogTail) or new lines

QcMsg::AdminLogLine

One line of the server's log (QcMessageLog::recent)

QcMsg::AdminPlayers

Server -> client: everyone playing, with the server's view of each

QcMsg::AdminRequest

Client -> server: one request of the operator; the server answers with AdminResult (same id) and, for the readers and the changes of a list or setting, the report of that topic

QcMsg::AdminResult

Server -> client: the outcome of an AdminRequest (id 0 answers a subscription or ends it), with the command's replies as chat lines

QcMsg::AdminSample

One point of the status: at timeMs (milliseconds since the epoch, UTC) the ticks of the second before it, the players, chunks and entities, the resident memory and the network rates

QcMsg::AdminSettings

Server -> client: game rules and server limits with what a settings page needs

QcMsg::AdminSettings::Setting

One game rule or server limit

QcMsg::AdminStatus

Server -> client, about once a second while the operator follows the status

QcMsg::AdminSubscribe

Client -> server: the topics the operator follows; 0 ends the subscription

QcMsg::AdvancementProgress

Server -> client: the receiving player's progress in the adventure guide (decision E-923)

QcMsg::AnvilState

Server -> client: the open anvil's slots, the name in its name field, what it would make and the levels that costs (QcAnvil::Result; 0 and an empty output for nothing)

QcMsg::AttackEntity

Client -> server: hit an entity with the held item

QcMsg::BlockAck

Server -> client: the player's action numbered sequence (FinishMining, UseItem) is handled, together with every earlier one (decision E-853)

QcMsg::BlockBatch

Server -> client: blocks set together in one tick (an explosion's, decision E-604)

QcMsg::BlockUpdate

Server -> client: the block at pos is now block

QcMsg::CampfireDisplay

Server -> client: the items lying on the campfire at pos (decision E-772), sent after the ChunkData of its chunk and whenever they change; one content item id per slot, 0 for an empty one

QcMsg::CancelMining

Client -> server: the player stopped hitting before the block broke

QcMsg::ChatInput

Client -> server: chat line or command starting with '/'

QcMsg::ChatMessage

Server -> client: chat line or command feedback

QcMsg::ChooseEnchantment

Client -> server: take offer slot (0–2) of the open enchanting table

QcMsg::ChunkData

Server -> client: a whole chunk, sent when it comes into the player's view

QcMsg::ChunkLabels

Server -> client: the labels floating in a chunk (decision E-222), sent right after its ChunkData when there are any; they go with the chunk's ChunkUnload

QcMsg::ChunkUnload

Server -> client: the client forgets the chunk at pos

QcMsg::CloseAnvil

Client -> server: the anvil screen closed

QcMsg::CloseCrafting

Client -> server: the crafting screen closed; grid items go back to the inventory

QcMsg::CloseEnchanting

Client -> server: the enchanting screen closed

QcMsg::CloseMachine

Client -> server: the machine screen closed

QcMsg::CloseStonecutter

Client -> server: the stonecutter screen closed

QcMsg::CloseTrade

Client -> server: the player closed the trading screen

QcMsg::ConsumeItem

Client -> server: use the held item without a target: eat it, or put on held armour (swapping with what is worn in its slot)

QcMsg::ContentSync

Server -> client: all content definitions; runtime block ids are the indices in this registry

QcMsg::CraftRecipe

Client -> server: craft a recipe directly from the inventory (recipe book), count times

QcMsg::CreativeItem

Client -> server, creative mode only (decision E-283): puts stack into the inventory slot slot (0..35, or an armour slot 100..103 for armour made for it), onto the same item up to its stack size, else in place of what is there; an empty stack clears the slot (the bin)

QcMsg::DebugSubscribe

Client -> server: which debug data the client wants while its debug display, the control interface or the statistics log needs it; 0 stops it

QcMsg::Disconnect

Both directions: the connection ends

QcMsg::DrawLauncher

Client -> server: the use button pressed or released with a launcher in the hand, or the draw given up (a screen opened, decision E-425)

QcMsg::DropItem

Client -> server: throw one item (or the whole stack) of the selected hotbar slot

QcMsg::EditSign

Client -> server: the lines the player wrote on the sign at pos

QcMsg::EnchantingOffer

One of the three offers as the player sees it: the levels it needs (0: no offer) and, as a clue, the first enchantment it gives (its content name and level)

QcMsg::EnchantingState

Server -> client: the open enchanting table's slots, the bookshelves that count, the offers and the rune seed the screen writes the clues with (decision E-884: a random value of the player's own, drawn anew with the enchanting seed but not derived from it, so the order of the readable letters stays until the player enchants and tells nothing about the offers)

QcMsg::EntityMove

State of one entity in EntityMoves; the fields as in EntitySpawn

QcMsg::EntityMoves

Server -> client: positions of all visible entities that changed this tick, with the server's time of the tick (players' time, QcServerClock::playerTimeNs, in ms) for the client's interpolation buffer (decision E-271)

QcMsg::EntityRemove

Server -> client: the entity id left the player's view or died

QcMsg::EntitySpawn

Server -> client: an entity came into view, with its kind (decision E-365); a creature also names its type, an index into the content's mobs

QcMsg::Explosion

Server -> client: an explosion of power (QcBlastDefinition) at centre (decision E-604); the client shows its flash and smoke, the sound comes as a sound event

QcMsg::FinishMining

Client -> server: the client's timer says the block is broken; the server checks the time itself

QcMsg::ForgeAnvil

Client -> server: take the anvil's output output for levelCost levels, as the last AnvilState showed them; refused when either changed since

QcMsg::GameMode

Server -> client: the receiving player's game mode (decision E-282), after the welcome and with every change

QcMsg::Hello

Client -> server: first message on every connection

QcMsg::InventoryState

Server -> client: the receiving player's complete inventory, crafting grid and armour slots

QcMsg::LatencyEcho

Server -> client: the answer to LatencyProbe

QcMsg::LatencyProbe

Client -> server: measures the round trip of the connection (decision E-886)

QcMsg::Lightning

Server -> client: lightning struck at position (the top of the column it hit)

QcMsg::LoginChallenge

Server -> client after Hello from a remote client: what the server needs for the login

QcMsg::LoginResponse

Client -> server: the answer to LoginChallenge

QcMsg::MachineState

Server -> client: contents and progress of the open machine

QcMsg::MapUpdate

Server -> client: what is new of map id for a player holding it (decision E-802): its place on the grid, the pixels of area row by row (QcMapPixel; an empty area sends none) and the players shown on it now (QcMapMarker)

QcMsg::MobGoal

Where a creature is heading: chasing a player, wandering or fleeing

QcMsg::MoveInventoryItem

Client -> server: move count items from slot from to slot to

QcMsg::OpenAnvil

Server -> client: the player opened the anvil at pos (decision E-866); AnvilState follows

QcMsg::OpenCrafting

Server -> client: open the crafting screen with a grid of this size (crafting table)

QcMsg::OpenEnchanting

Server -> client: the player opened the enchanting table at pos (decision E-864); EnchantingState follows

QcMsg::OpenMachine

Server -> client: the player opened the machine at pos, or with an empty category the storage block (chest) there; MachineState follows

QcMsg::OpenSignEditor

Server -> client: the player placed or used the sign at pos; the client opens its editor with the sign's current lines

QcMsg::OpenStonecutter

Server -> client: the player opened the stonecutter at pos (decision E-785); StonecutterState follows

QcMsg::PauseRequest

Client -> server: the player opened (paused) or left the pause menu (decision E-877)

QcMsg::PickBlock

Client -> server: the middle mouse button on a block (decision E-285)

QcMsg::Ping

Server -> client: measures the round trip for the admin channel's player list (decision E-848); the client's tick thread answers at once with a Pong of the same nonce

QcMsg::PlayerAir

Server -> client: the receiving player's air under water (decision E-955), sent only when what the HUD shows changes: the bubbles (QcAirSupply::bubblesOf), a full breath or whether the eyes are under water

QcMsg::PlayerExperience

Server -> client: the receiving player's experience (decision E-398): his level and the points towards the next one, which needs pointsForNext (QcExperience::pointsForNext, sent so the client needs no curve)

QcMsg::PlayerFood

Server -> client: the receiving player's food points

QcMsg::PlayerHealth

Server -> client: the receiving player's health; dead players wait for Respawn

QcMsg::PlayerInput

Client -> server: one tick of movement intent

QcMsg::PlayerList

Server -> client: everyone on the server, sent to all whenever someone joins or leaves, and every two seconds while a round trip changed (decision E-886)

QcMsg::PlayerList::Entry

One player

QcMsg::PlayerState

Server -> client: authoritative state of the receiving player

QcMsg::Pong

Client -> server: the answer to Ping

QcMsg::QuickMoveItem

Client -> server: shift-click on a slot

QcMsg::RenameAnvil

Client -> server: the text of the anvil's name field changed (at most QcItemData::maxNameLength characters after trimming)

QcMsg::Respawn

Client -> server: leave the death screen

QcMsg::SelectHotbarSlot

Client -> server: the player selected another hotbar slot

QcMsg::SelectStonecutterRecipe

Client -> server: choose the stonecutting recipe recipe for the input of the open stonecutter (empty: none); the server answers with StonecutterState

QcMsg::ServerDebug

Server -> client: tick phases and server counts, at most twice a second while subscribed

QcMsg::ServerDebug::Chunks

On the server (decisions E-374 to E-377): in its storage, under way (read or generated, waiting for their group), unloaded and not yet saved; groups of circuits among the loaded ones (more than one chunk), the largest, the one of the player's chunk, groups over the limit seen so far; load tickets of circuits (and those refused), forced chunks, chunk loaders

QcMsg::ServerPause

Server -> client: the server stopped (paused) or resumed its ticks (decision E-877)

QcMsg::SetAppearance

Client -> server: the player changed their look

QcMsg::SignText

Server -> client: the text on the sign at pos, sent after the ChunkData of its chunk and whenever it changes; all lines empty: no text (cleared, or the sign is gone)

QcMsg::SoundEvent

Server -> client: a sound at a world position (block broken, creature hurt, furnace crackling)

QcMsg::SpawnerDisplay

Server -> client: the creature kind shown spinning in the monster spawner at pos (decision E-520), sent after the ChunkData of its chunk and whenever it changes; mob is the kind's index in the content, -1 for none (an empty cage, or the spawner is gone)

QcMsg::StartMining

Client -> server: the player starts hitting a block

QcMsg::StonecutterState

Server -> client: the open stonecutter's input slot and the stonecutting recipe chosen for it (empty: none)

QcMsg::TakeCraftingResult

Client -> server: take the crafting result once into the inventory

QcMsg::ThrowItem

Client -> server: the use button pressed with a throwable item in the hand (a snowball, decision E-427); the server throws it unless its cooldown runs

QcMsg::Trade

Client -> server: trade the offer at index offer of the open screen once, or with repeat as often as the inventory and the uses left allow (shift-click)

QcMsg::TradeOffer

One offer as the trading screen shows it: what the player pays (one or two stacks, the first at its current price), what they get, and how often it can still be traded before the villager restocks

QcMsg::TradeState

Server -> client: the trading screen of the villager villager opened or changed (a trade, a restock, a level gained)

QcMsg::UseEntity

Client -> server: use the held item on a creature (catch a firefly with an empty bottle) or on an armour stand (put on or take off armour or the held item; the server picks the body part from the player's view)

QcMsg::UseItem

Client -> server: use the held item on a block face (places blocks, opens doors)

QcMsg::UseItem::View

Degrees; the server wraps yaw into [0, 360) and clamps pitch to [-90, 90] (positive is up)

QcMsg::Weather

Server -> client: the weather as this player sees it (decision E-395)

QcMsg::Welcome

Server -> client: accepted connection

QcMsg::WorldTime

Server -> client: seconds since the world began and the length of a full day; running is false while the time of day stands still (game rule daylightCycle, decision E-221)

QcNamedList

Definitions of one kind in registration order, found by their name: registering a name again replaces the earlier definition in its place, so a later pack overrides an earlier one. Definition is the type of the definitions

QcNoteInstruments

Instruments of a note block (decision E-767): the sound it plays for the block below it, by that block's name, else by its sound material, else fallback

QcOreDefinition

Ore veins of the terrain generator (an ore file of a pack): compact clumps of block grown inside one chunk, replacing only replaces

QcPackFingerprint

One content pack as server and client compare it: id, version and a hash over its files (QcContentFingerprint)

QcPackReference

Identity of a content pack that went into a registry (base game or mod); shown in the UI and recorded with saved worlds

QcPaintingMotif

One picture a painting can show (decision E-791): its size in blocks and its texture

QcPartFamily

A family of building parts (stairs, slabs, walls, fences, gates) that QcPartGenerator derives from every material of a matching kind: block, item, recipe and names come from this template and the material's base block

QcPhaseWindow

Mean and maximum of a few series of times (milliseconds) over the latest samples, for the debug display (decision E-225): one sample per server tick or per frame, each with one value per series

QcPhysics::BodySize

Width and height of an entity's collision box

QcPhysics::MoveResult

Outcome of moveBox(): the movement that was possible and the axes on which blocks stopped it

QcPhysics::Steering

What an entity wants for one tick: wish is the horizontal movement direction (length <= 1), speed its target speed, jump jumps on ground, swims up in water or climbs, hold keeps a climber in place, keepsToEdges stops it at edges it would drop off (a sneaking player, sneakEdgeDepth), slideDrag is how it slides on slippery ground (footDrag, itemDrag, coastDrag)

QcPhysics::SurfaceFactors

Walking speed and jump factors of the block under a body's feet (mud), and its slipperiness (ice)

QcPlacedBlock

A block state at a cell: one block a plan, a rule or a server system places or changes (decision E-975). Protocol messages keep their own types

QcPlacedChunkLoader

A chunk loader block of a world (decision E-377): where it stands and who placed it (QcChunkLoaders::Loader on the server)

QcPlayerInput

Movement intent for one simulation tick, sent from client to server

QcPrecipitationTable

Which block states keep rain and snow out of the cells below them (decision E-395): those that keep sky light coming straight down out (QcLightPassage::skyStop: opaque blocks, leaves, covered tops), solid blocks with a collision shape (glass, fences, slabs) and liquids

QcProjectileDefinition

A kind of projectile (decision E-425), from projectiles/<name>.json; server side only

QcPulseDefinition

A water creature that swims in pulses (the squid, decision E-974), from its data ("aquatic": {"pulse": ...}): each pulse of seconds starts with a push of thrust times the pulse towards speed m/s, then it glides and slows down; hurt, it pulses twice as often at its chaseSpeed

QcQuickMove::Situation

What is open and what the moved item is

QcRails::Behaviour

What a rail state does to the carts on it (decision E-384)

QcRails::End

One end of a track: the middle of the cell's side side (north, east, south or west), at the bottom of the cell or, when raised, at its top

QcRails::Joint

Cell of the rail whose track meets end end of the track track in cell (the same height, one higher or one lower beside it), and which of its ends meets it; nothing at the end of a line

QcRails::Line

Rails of the same block as the rail at cell along its line, at most reach each way, in the order of the line (from the end of its first track end to that of its second), cell among them at index (the lines of powered and activator rails, decision E-384)

QcRails::Table

Track and behaviour of every block state of a content, looked up once (carts ask every tick)

QcRails::Track

Track a rail state lays out through its cell

QcRaycastHit

Block a ray hit (QcRaycast::cast)

QcRecipeDefinition

Crafting recipe from content data

QcRoundTripStats

Round trip samples of the last windowNs (decision E-886)

QcRoundTripSummary

Round trip of a connection as the debug display, the control interface and the health line show it (decision E-886), in milliseconds: the latest sample, the smoothed value (EWMA with 1/8 like TCP's SRTT), the smallest and largest sample and the jitter (mean difference between consecutive samples) over the window

QcSaplingDefinition

A block that grows into a tree feature after a random time (saplings)

QcSectionAddress

A section of a chunk: the address a key of qcSectionKey() stands for, and the section a light or mesh change concerns (decision E-975)

QcShapeCondition

A part of a shape applies when every condition holds: the block's value of property is one of values

QcShapeDefinition

Block geometry from data

QcShapePart

One part of a block shape: boxes and crossed planes that apply in the states where all its conditions hold

QcSharedItemData

Shared, reference-counted holder of a stack's data

QcShowcaseCategory

One category of the showcase world (an entry of "categories")

QcShowcaseDefinition

Settings of the showcase world (worldgen/showcase.json, decision E-220): the flat ground, the time of day, the blocks of podiums, enclosures and item chests, the lookout structure and the categories that sort every block of the registry onto podiums

QcShowcaseDefinition::Layer

One ground layer: its block ("block") and its depth in blocks ("depth", at least 1)

QcShowcaseMatch

Which blocks belong to a showcase category

QcShyDefinition

A shy creature (the ocelot, decision E-480), from its data (shy): it flees from players closer than distance metres, except from one who holds one of its calmItems and moves no faster than calmSpeed m/s (sneaking up slowly with its food)

QcSignDefinition

A sign (decision E-766): lines lines of at most lineLength characters that players write and everyone sees (QcSignTexts on the server, QcMsg::SignText); 0 lines: no sign

QcSignText::Ink

Ink of a sign text colour as red, green and blue (decision E-830): a tone of the dye dark enough to stand off the lightest planks (birch) at a contrast of at least 2:1

QcSignText::Text

Text of one sign: its lines and the colour a dye gave them (decision E-830), the dye's name (QcItemDefinition::dye); empty for the default, which is also what black dye gives

QcSignalDefinition

Signal Dust part of a block (the "signal" object, decision E-333): its kind and the numbers that tune it

QcSlotList

Slots of a screen as one list (inventory, crafting grid, an open machine or chest, armour), as the server moves items between them

QcSmeltingRecipe

Turns one input item into a result inside a machine of the same category (furnace: "smelting"); the stonecutter's recipes (decision E-784) have the category "stonecutting" and their own list

QcSoilDefinition

Soil that crops grow on (farmland): random ticks keep it wet while water lies within reach blocks horizontally (same level or one above) and let it dry otherwise; dry soil without a crop on it, or soil under a full block, turns into revertsTo

QcSoundDefinition

A sound effect, ambience loop or jingle described by synthesis parameters (content sounds/)

QcSoundLayer

One synthesized voice of a sound: a source with a pitch sweep, an envelope and simple filters

QcSpawnWeight

Weight a biome gives a monster kind instead of the kind's own (decision E-838): the husk's desert takes most of the zombies' share

QcSpawnWeights

Monster list of every biome (decision E-838), as in the original game: each monster kind has a weight in a biome, and an attempt picks one kind of the whole list by weight and then tests it at the place; a kind that may not spawn there wastes the attempt

QcSpawnerDefinition

What makes a block a monster spawner ("spawner" in block data, decision E-520): the rules it spawns its creature kind by

QcStandPose

How an armour stand stands (decision E-238): a rotation per body part and what it shows

QcStandPose::Rotation

Degrees around the part's pivot like QcAnimator::BoneRotation: x (pitch) swings arms and legs forward and tilts the head up, y (yaw) turns it towards the stand's right, z (roll) lifts it outwards to the right

QcStatusEffect

One status effect a body has (decision E-450): its kind (QcEffectDefinition::name), its level (1 = level I) and the ticks it still lasts

QcStatusEffects

Status effects of a player or a creature (decision E-450): at most one of each kind

QcStructureDefinition

A building made of blocks, defined in data (structures/*.json, decision E-219): a palette of block states and the palette key of every cell, plus what a placed copy brings along: creatures, contents of chests and machines, armour stands, labels, block updates to run (liquids start to flow, sand falls) and saplings that grow

QcStructureDefinition::Boat

A boat (decision E-920) with its feet at at (a point, like a creature's), of the boat item item, pointing to yaw degrees (0: north). The JSON keys are the field names

QcStructureDefinition::Cart

A minecart on the rail at at, placed from item (a chest or hopper cart takes the contents whose at is its rail, decision E-386). An entry of "minecarts" is a plain cell for qtcraft:minecart or an object with "at" and "item"

QcStructureDefinition::Choice

A choice of the village planner (decision E-404): one of the options is taken per placed copy, each as likely as the others

QcStructureDefinition::Guardian

A zone of the structure whose guardians come back by themselves (decision E-591; "guardians"): while fewer than max creatures of mob that belong to the zone are awake, at most one comes every cooldownSeconds into a cell of the box from..to (local, both corners inside) with block light at most maxLight, when no living player is within minPlayerDistance of the box and one is within maxPlayerDistance (QcGuardians)

QcStructureDefinition::Hanging

An item frame or painting hung when the world is made (decision E-797, the showcase's station): on face of the block behind cell at (a painting's lower left cell), from item; a frame holds held turned by rotation eighths, a painting shows the motif motif. The JSON keys are the field names

QcStructureDefinition::Label

A floating text placed with the structure (an entry of "labels")

QcStructureDefinition::Loot

A chest at at filled from the loot table table when its chunk first arrives (decision E-521). The JSON keys are the field names

QcStructureDefinition::Mob

A creature placed with the structure (an entry of "mobs")

QcStructureDefinition::Part

An optional part of the village planner (decision E-404): cells in the structure's palette written over its own cells with chance per placed copy (keep: the structure's own cell)

QcStructureDefinition::Sign

Text on the sign at at (decision E-766; lines, up to four of at most 32 characters), written when the world is made (the showcase's stations). The JSON keys are the field names

QcStructureDefinition::SpawnArea

Structure's footprint over the whole height of the world as a spawn area of the original game (decision E-871; "spawnArea": {"monsters": [...]}): a monster that spawns naturally in one of its columns is one of monsters, drawn alike, by the monsters' rules of light, ground, distance and cap, one at a time (QcSpawnAreas)

QcStructureDefinition::Spawner

A monster spawner of the structure (decision E-520): the cell at of the spawner, the creature mob it brings forth and whether its creatures stay put (confined: they walk, but neither teleport nor change the world, like the showcase's spawner behind glass); in world coordinates also given to the server with the chunk (QcChunkFurnishing::spawners). The JSON keys are the field names

QcStructureDefinition::Stack

A stack of count (1 to 64, default 1) item; name and enchantments give it a custom name and enchantments (an enchanted book in a showcase chest, decision E-873). The JSON keys are the field names

QcStructureDefinition::Stand

An armour stand (decision E-238): where it stands, turned by yaw degrees (0 faces north), and its properties as command lines ("equip qtcraft:iron", "pose right_arm -90 0 0"), which the server checks when it places the stand (QcStandProperties). The JSON keys are the field names; a property line keeps at most 256 characters

QcStructureDefinition::Surface

Where the terrain generator places the structure by itself (decision E-590; "surface"): at most one copy per square region of spacing blocks (whole chunks), with chance, at the first of attempts places that lies wholly inside the region on land above the sea in one of biomes (all five samples of its footprint) whose ground varies by at most maxSlope; never within villageMargin blocks of a village

QcStructureSiteParser::Site

Where and how a structure is placed by the generator: the fields of QcStructureDefinition of the same names

QcSwingSpeed

How long one arm swing lasts (decision E-881), shared by the client's animation and the server's cadence of swings while a player mines: the reference's six ticks (300 ms), one tick shorter per level of a hastening effect and two ticks longer per level of a tiring one

QcTameDefinition

A creature that players tame (wolves, cats; decision E-480), from its data (tameable): each of its taming items used on it tames it with chance (a tame one belongs to that player's identity, follows, sits when its owner uses it and fights for its owner with defends); a wolf becomes a dog

QcTeleportDefinition

A creature that teleports (the shadewalker, decision E-460), from its data (teleport): to a random safe place within range metres (a solid floor, room for its body, no liquid, only in loaded chunks; QcSafeSpot), at most once per cooldownSeconds

QcTerrainSettings

Settings of the terrain generator (worldgen/terrain.json): sea level, base blocks, caves, bedrock, rivers, deltas, the biome scale and the settings of dungeons, mine shafts, coastal towers and cold edges

QcTextureAnimation

How a texture animates (decision E-878): frames pictures shown for frameTicks game ticks (50 ms) each, in a loop; with interpolate the picture blends smoothly into the next one

QcTextureAnimation::Frame

What is shown at a time: frame index, blended by blend (0..1) into frame next

QcTextureDefinition

Texture source as delivered by content packs

QcThreadCpuClock

CPU time consumed by the calling thread, independent of waiting (VSync, locks, sleeping)

QcThrowableDefinition

An item thrown by hand as its own projectile (a snowball, decision E-427): the use button throws one at once at speed, randomly turned by up to inaccuracyDegrees; the thrower waits cooldownSeconds before the next throw of that item

QcTickSummary

Server tick durations, lateness and skipped ticks so far (QcTickStats::summary, benchmark)

QcTradeOffer

One offer of a profession (decision E-414): from level on, a villager may offer result for costs (one or two stacks, paid by the player), maxUses times until it restocks at its workstation

QcTradeSet

A file of offers (trades/<name>.json): offers of one profession

QcTradeStack

A number of items of one kind in a trade offer (by item name)

QcTradingSettings

How villagers trade (villagers/<name>.json "trading", decision E-414): the experience a villager needs for each level (the first is 0, the fifth is master), how many offers of each level a villager draws from its profession's pool, and how often a day it restocks at its workstation, at least restockGap of a day apart

QcTraffic

Bytes of the message frames a connection sent and received so far (health line, decision E-834)

QcTranslations

Texts of the content by language and key (part of QcContentRegistry)

QcTransport

Frame-based, bidirectional link between one client and the server

QcVec3

Minimal double-precision vector for GUI-free code (QVector3D lives in QtGui)

QcVegetationDefinition

Grass and flowers of a biome (decision E-814): two weighted tables of plant blocks

QcVegetationLayer

One layer of vegetation: the plants, their density per surface column (scattered by the generator), the size of the areas one kind grows in (patchSize blocks, 0: mixed column by column), and the patches

QcVegetationPatches

Patches the generator lays out of one plant of the table (flower patches): a patch cell of patchCell × patchCell blocks holds one with chance, centred at a random spot of the cell; it tries tries columns at most radius blocks from its centre on each axis and plants one kind, chosen by weight, on every free one. Read from the "patches" object

QcVegetationTable

One layer of a biome's vegetation (decision E-814) resolved to block ids: a weighted choice shared by the world generator and bone meal

QcVegetationTable::Plant

One plant of the layer

QcVegetationTable::Resolved

A table and the block names of the layer that were left out

QcVillageCatalog

Villages of the content (part of QcContentRegistry, server side only, not synchronised): village styles and settings (decision E-403), villager species and professions (decisions E-411, E-421) and the professions' offers (decision E-414)

QcVillageGolemPatch

A style's own golems (its "golem", decision E-421): the fields it gives, each over the settings' golems (worldgen/villages.json), so {"minVillagers": 5} keeps the settings' creature kind

QcVillageGolemSettings

Golems villagers summon (worldgen/villages.json "golem" or a style's "golem", decisions E-421, E-470), like in the reference game: a villager wants a golem while it slept in its bed within sleptSeconds

QcVillageJetty

Walkway of a piece with a water rule (decision E-404): from the end of the road it stands at straight on to the water and over blocks out over it, at the height of the road's end

QcVillageLayout

One street plan the villages of a style are laid out with (decision E-408), chosen per village by weight

QcVillagePiece

One kind of building of a style (decision E-403): one of its blueprints, chosen by weight, per building

QcVillageRange

A range a village draws one value from, uniformly: min to max, both included, of the type Value

QcVillageResident

Other creatures living in the villages of a style (decision E-421), such as cats: mob with min to max of them per village

QcVillageRoad

One surface a village may lay its roads of one rank with (decision E-406): block goes into the ground's top block; step (a slab, optional) is laid on a road cell next to one a block higher, so a step on terraced ground reads as a stair

QcVillageSettings

Village settings (worldgen/villages.json, decision E-403): how often and where villages are built, which creature kind lives in them and which golems guard them

QcVillageStilts

How a style over water stands (decision E-407): its pieces and boardwalks lie at one floor height above the water surface on posts down to the bottom, and stairs lead down where a boardwalk ends on dry land

QcVillageStyleDefinition

A village style (villages/*.json, decision E-403): the biomes it is built in, the pieces its villages are built from, their roads, fields and street plans, how its blocks are swapped and who lives there

QcVillageWetland

Ground a village over water shapes around itself (decision E-407, E-660, E-661): within margin blocks of its pieces and boardwalks (frayed by noise up to fray more) the ground lies at the water surface, blending back to the terrain over at least blend blocks; on it a noise of scale blocks forms pools depth blocks deep over water of the open ground, ringed by mudBand blocks of the bottom block, grass between, with plant beside the pools at plantChance and floatingPlant on their water at floatingPlantChance (lily pads, decision E-774); dry ground stays where stairs lead down to land

QcVillagerBreedingSettings

How villagers breed (villagers/<name>.json "breeding", decision E-415)

QcVillagerLook

What the villagers of one village style wear (decision E-411): an outfit, hair styles or headwear to choose from (an empty name: none) and the colours of the tinted layers (0xRRGGBB)

QcVillagerProfession

A profession (professions/<name>.json, decision E-411, E-421): the blocks it works at (its workstation kind is then its own name, the kind QcVillagePlan and QcVillage keep for a workstation; no blocks: the unemployed), layers laid over the style's outfit (an apron on the torso; QcVillagerOutfits joins them), headwear in place of the style's hair (a hair-kind appearance; empty keeps the style's), whether it tends the crops of the village fields (farmers), and optionally its own routine and number of offers per level in place of its species'

QcVillagerRoutineStep

From from (a share of the day: 0 sunrise, 0.25 noon, 0.5 sunset, 0.75 midnight) until the next step the villagers do activity

QcVillagerSettings

Settings of one villager species (villagers/<name>.json, decision E-411, E-421; server side only): a creature kind with "villager": "<name>" lives by them

QcVoidDefinition

Settings of the void world type (worldgen/void.json): air everywhere except a square platform of platform blocks around the world's origin (radius 0: none) at height platformY

QcWeather::Climate

Precipitation of one column: dry, or rain below snowFrom and snow from that height up

QcWeatherDefinition

What the weather does to the world (weather.json of a pack, decision E-396; server side only, a later pack replaces it)

QcWeatherDefinition::Snow

("snow"): while it snows, columnsPerTick random columns near each player per tick get a layer block on their top where they may; no layer when the block is missing or the count 0. The JSON keys are the field names

QcWeatherState

Weather of a world as world.json keeps it (decision E-395): the current spell (kind and the ticks until it ends), how many spells the world has had, the strengths of rain and thunder, which fade towards the spell's kind, and how many ticks the weather has run

QcWeightedBlockName

A block picked by weight among others (decision E-975): the qualified block name (key "block") and its relative weight (key "weight", at least 1). Village crops and vegetation plants use it

QcWeightedStructureName

A structure picked by weight among others (decision E-975): the qualified structure name (key "structure") and its relative weight (key "weight", at least 1). Village blueprints and coastal towers use it

QcWorkerPool

Fixed set of worker threads executing queued jobs in FIFO order

QcWorldInfo

Metadata of a saved world (world.json)

QcWorldLabel

A text floating in the world (showcase names, decision E-222)

QcWorldOptionDefinition

One option of the world generation a player sets when creating a world (an entry of "options" in worldgen/options.json of a pack, decision E-917)

QcWorldOptionGroup

A heading the options of the menu are grouped under

QcWorldOptionSet

What one pack's worldgen/options.json adds; a later pack replaces groups, options and presets of the same name

QcWorldPreset

A named set of option values (more villages, large biomes): the other options keep their defaults

QcWorldTypeRules

Rules a world type sets once when a world of it is created (decision E-223): a time of day that stands still (seconds after sunrise) or the running day, and whether creatures spawn by themselves

QcWorldgenCatalog

What the world generators build from (part of QcContentRegistry, server side only, not synchronised): biomes, features, ores and the terrain settings, the structures and the settings of the showcase, flat and void world types, and the options a world may set on them (decision E-917)

QcXzRect

A rectangle of columns (or of other cells on the x-z plane, such as regions) from (minX, minZ) to (maxX, maxZ), both corners inclusive

Detailed Description

Uses no other library of the project.