Skip to content

Latest commit

 

History

History
140 lines (106 loc) · 3.82 KB

File metadata and controls

140 lines (106 loc) · 3.82 KB

Framework

Source: Decompiled from HytaleServer.jar (pre-release 2026.02.05-9ce2783f7)

The Framework system provides named constants and position providers that can be referenced across the world generation pipeline. Frameworks are defined at the World Structure level and made available to biomes and their sub-systems via a ReferenceBundle. There are 2 registered framework types.


How It Works

  1. A WorldStructureAsset defines a Framework array
  2. During build, each framework populates the ReferenceBundle with named data
  3. Other systems (scanners, position providers, density functions) reference this data by name
graph LR
    WS[WorldStructure] --> F[Framework Array]
    F --> DC[DecimalConstants]
    F --> P[Positions]
    DC --> RB[ReferenceBundle]
    P --> RB
    RB --> S[Scanners]
    RB --> PP[Position Providers]
    RB --> DF[Density Functions]
Loading

ReferenceBundle

The runtime container for framework data. Provides type-safe storage and retrieval.

Method Description
put(name, reference, type) Register named reference with type
get(name, type) Retrieve typed reference (asserts type compatibility)

Framework Types

Type: DecimalConstants

Stores named double values accessible throughout the pipeline.

Field Type Required Default Description
Entries EntryAsset[] Yes [] Array of named constants

Each entry contains:

Field Type Required Default Description
Name string Yes Constant name
Value double Yes Constant value

Registered as: "DecimalConstants" in ReferenceBundle

Usage: Referenced by scanners (BaseHeightName field) and density functions that need named height values or other global constants.

{
  "Type": "DecimalConstants",
  "Entries": {
    "base_height": { "Name": "base_height", "Value": 64.0 },
    "sea_level": { "Name": "sea_level", "Value": 62.0 },
    "max_terrain": { "Name": "max_terrain", "Value": 200.0 }
  }
}

Type: Positions

Stores named position providers accessible throughout the pipeline.

Field Type Required Default Description
Entries EntryAsset[] Yes [] Array of named position providers

Each entry contains:

Field Type Required Default Description
Name string Yes Position provider name
Positions PositionProviderAsset Yes List() Position provider definition

Registered as: "Positions" in ReferenceBundle

Usage: Referenced by Framework type position providers (see Position Providers).

{
  "Type": "Positions",
  "Entries": {
    "spawn_grid": {
      "Name": "spawn_grid",
      "Positions": {
        "Type": "Mesh2D",
        "PointGenerator": { "Type": "Mesh", "Spacing": 16, "Jitter": 0.3 },
        "PointsY": 0
      }
    }
  }
}

WorldStructure Example

{
  "Type": "NoiseRange",
  "Framework": {
    "constants": {
      "Type": "DecimalConstants",
      "Entries": {
        "base_height": { "Name": "base_height", "Value": 64.0 }
      }
    },
    "positions": {
      "Type": "Positions",
      "Entries": {
        "tree_grid": {
          "Name": "tree_grid",
          "Positions": { "Type": "Mesh2D", "PointGenerator": { "Type": "Mesh", "Spacing": 8 }, "PointsY": 0 }
        }
      }
    }
  },
  "Biomes": {},
  "DefaultBiome": "plains"
}

Source files: FrameworkAsset.java, DecimalConstantsFrameworkAsset.java, PositionsFrameworkAsset.java, ReferenceBundle.java