# wuhenqiubai/pehkui-rebuilt architecture

> Architecture diagram of the GitHub repository wuhenqiubai/pehkui-rebuilt, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/wuhenqiubai/pehkui-rebuilt
- Repository: https://github.com/wuhenqiubai/pehkui-rebuilt

## Overview

Pehkui Rebuilt is a Minecraft library mod that provides entity scale data and scale-dependent behavior to mods and commands. Its main paths are direct scale changes, periodic datapack-rule application, and propagation of scale state to clients; mixins then adapt gameplay and rendering to that state. The graph also shows the public scale API and loader-specific integration. Workflow details for rule loading and command execution are based on README capabilities and the source tree; sampled excerpts confirm selected mixin, rendering, packet-handling, and configuration behavior, but not every connection.

Main entry points: [`common/src/main/java/virtuoel/pehkui/api/ScaleData.java`](https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/common/src/main/java/virtuoel/pehkui/api/ScaleData.java) (Scale data), [`fabric/src/main/java/virtuoel/pehkui/data/ScaleRules.java`](https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/fabric/src/main/java/virtuoel/pehkui/data/ScaleRules.java) (Fabric rules), [`neoforge/src/main/java/virtuoel/pehkui/neoforge/data/ScaleRules.java`](https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/neoforge/src/main/java/virtuoel/pehkui/neoforge/data/ScaleRules.java) (NeoForge rules), [`common/src/main/java/virtuoel/pehkui/network/ScalePayload.java`](https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/common/src/main/java/virtuoel/pehkui/network/ScalePayload.java) (Scale packets)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_scale["Scale API"]
  node_scale_api["Scale API"]
  node_scale_state["Scale data<br/>[ScaleData.java]"]
  node_scale_registry["Scale registries"]
  node_scale_utils["Scale utilities<br/>[ScaleUtils.java]"]
end

subgraph group_inputs["Scale Inputs"]
  node_scale_command["Scale commands<br/>[ScaleCommand.java]"]
  node_rule_loader_fabric["Fabric rule loader"]
  node_rules_fabric["Fabric rules<br/>[ScaleRules.java]"]
  node_rule_loader_neoforge["NeoForge rule loader"]
  node_rules_neoforge["NeoForge rules<br/>[ScaleRules.java]"]
  node_rule_parser["Rule parser"]
  node_rule_applier["Rule applier"]
end

subgraph group_runtime["Gameplay Runtime"]
  node_gameplay_mixins["Gameplay hooks"]
  node_client_mixins["Client hooks"]
  node_render_scale["Render scaling"]
  node_network["Scale packets<br/>[ScalePayload.java]"]
end

subgraph group_platform["Loader Integration"]
  node_fabric_client["Fabric client handler"]
  node_neoforge_handler["NeoForge packet handler"]
  node_neoforge_client["NeoForge client handler<br/>[PehkuiClient.java]"]
  node_config["Config handling<br/>[ConfigHandler.java]"]
  node_fabric_init["Fabric entrypoint<br/>[PehkuiFabric.java]"]
  node_neoforge_init["NeoForge entrypoint"]
end

node_mod_author(("Mod developer"))
node_player(("Player / operator"))
node_datapack["Datapack rules"]
node_minecraft["Minecraft"]

node_mod_author -->|"uses API"| node_scale_api
node_player -->|"runs commands"| node_scale_command
node_datapack -->|"provides rules"| node_rule_loader_fabric
node_datapack -->|"provides rules"| node_rule_loader_neoforge
node_scale_command -->|"changes scale"| node_scale_state
node_rule_loader_fabric -->|"loads rules"| node_rules_fabric
node_rules_fabric -->|"parses rules"| node_rule_parser
node_rules_fabric -->|"applies rules"| node_rule_applier
node_rule_loader_neoforge -->|"loads rules"| node_rules_neoforge
node_rules_neoforge -->|"parses rules"| node_rule_parser
node_rules_neoforge -->|"applies rules"| node_rule_applier
node_rule_applier -->|"updates scale"| node_scale_state
node_scale_api -->|"registers types"| node_scale_registry
node_gameplay_mixins -->|"reads scale"| node_scale_utils
node_client_mixins -->|"reads scale"| node_scale_utils
node_render_scale -->|"uses render helpers"| node_scale_utils
node_scale_state -->|"serializes scale"| node_network
node_network -->|"dispatches payload"| node_fabric_client
node_network -->|"dispatches payload"| node_neoforge_handler
node_neoforge_handler -->|"routes payload"| node_neoforge_client
node_fabric_client -->|"updates client state"| node_scale_state
node_neoforge_client -->|"updates client state"| node_scale_state
node_minecraft -->|"invokes hooks"| node_gameplay_mixins
node_minecraft -->|"invokes render hook"| node_render_scale
node_fabric_init -->|"integrates loader"| node_rule_loader_fabric
node_neoforge_init -->|"integrates loader"| node_rule_loader_neoforge
node_config -->|"loads settings"| node_minecraft

click node_scale_api "https://github.com/wuhenqiubai/pehkui-rebuilt/tree/26.3/common/src/main/java/virtuoel/pehkui/api"
click node_scale_state "https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/common/src/main/java/virtuoel/pehkui/api/ScaleData.java"
click node_scale_registry "https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/common/src/main/java/virtuoel/pehkui/api/ScaleRegistries.java"
click node_scale_utils "https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/common/src/main/java/virtuoel/pehkui/util/ScaleUtils.java"
click node_scale_command "https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/common/src/main/java/virtuoel/pehkui/server/command/ScaleCommand.java"
click node_rule_loader_fabric "https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/fabric/src/main/java/virtuoel/pehkui/data/ScaleRuleLoader.java"
click node_rules_fabric "https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/fabric/src/main/java/virtuoel/pehkui/data/ScaleRules.java"
click node_rule_loader_neoforge "https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/neoforge/src/main/java/virtuoel/pehkui/neoforge/data/ScaleRuleLoader.java"
click node_rules_neoforge "https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/neoforge/src/main/java/virtuoel/pehkui/neoforge/data/ScaleRules.java"
click node_rule_parser "https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/common/src/main/java/virtuoel/pehkui/data/ScaleRuleParser.java"
click node_rule_applier "https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/common/src/main/java/virtuoel/pehkui/data/ScaleRuleApplier.java"
click node_gameplay_mixins "https://github.com/wuhenqiubai/pehkui-rebuilt/tree/26.3/common/src/main/java/virtuoel/pehkui/mixin"
click node_client_mixins "https://github.com/wuhenqiubai/pehkui-rebuilt/tree/26.3/common/src/main/java/virtuoel/pehkui/mixin/client"
click node_render_scale "https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/common/src/main/java/virtuoel/pehkui/mixin/client/EntityRenderManagerMixin.java"
click node_network "https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/common/src/main/java/virtuoel/pehkui/network/ScalePayload.java"
click node_fabric_client "https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/fabric/src/main/java/virtuoel/pehkui/fabric/PehkuiClientFabric.java"
click node_neoforge_handler "https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/neoforge/src/main/java/virtuoel/pehkui/neoforge/network/PehkuiPacketHandler.java"
click node_neoforge_client "https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/neoforge/src/main/java/virtuoel/pehkui/neoforge/PehkuiClient.java"
click node_config "https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/common/src/main/java/virtuoel/kanos_config/api/ConfigHandler.java"
click node_fabric_init "https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/fabric/src/main/java/virtuoel/pehkui/fabric/PehkuiFabric.java"
click node_neoforge_init "https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/neoforge/src/main/java/virtuoel/pehkui/neoforge/PehkuiNeoForge.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_scale_api,node_scale_state,node_scale_registry,node_scale_utils toneBlue
class node_scale_command,node_rule_loader_fabric,node_rules_fabric,node_rule_loader_neoforge,node_rules_neoforge,node_rule_parser,node_rule_applier toneAmber
class node_gameplay_mixins,node_client_mixins,node_render_scale,node_network toneMint
class node_fabric_client,node_neoforge_handler,node_neoforge_client,node_config,node_fabric_init,node_neoforge_init toneRose
class node_mod_author,node_player,node_datapack,node_minecraft toneIndigo
```

## Components

### Scale API

- [Scale API](https://github.com/wuhenqiubai/pehkui-rebuilt/tree/26.3/common/src/main/java/virtuoel/pehkui/api): `common/src/main/java/virtuoel/pehkui/api`
- [Scale data](https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/common/src/main/java/virtuoel/pehkui/api/ScaleData.java): `common/src/main/java/virtuoel/pehkui/api/ScaleData.java`
- [Scale registries](https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/common/src/main/java/virtuoel/pehkui/api/ScaleRegistries.java): `common/src/main/java/virtuoel/pehkui/api/ScaleRegistries.java`
- [Scale utilities](https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/common/src/main/java/virtuoel/pehkui/util/ScaleUtils.java): `common/src/main/java/virtuoel/pehkui/util/ScaleUtils.java`

### Scale Inputs

- [Scale commands](https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/common/src/main/java/virtuoel/pehkui/server/command/ScaleCommand.java): `common/src/main/java/virtuoel/pehkui/server/command/ScaleCommand.java`
- [Fabric rule loader](https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/fabric/src/main/java/virtuoel/pehkui/data/ScaleRuleLoader.java): `fabric/src/main/java/virtuoel/pehkui/data/ScaleRuleLoader.java`
- [Fabric rules](https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/fabric/src/main/java/virtuoel/pehkui/data/ScaleRules.java): `fabric/src/main/java/virtuoel/pehkui/data/ScaleRules.java`
- [NeoForge rule loader](https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/neoforge/src/main/java/virtuoel/pehkui/neoforge/data/ScaleRuleLoader.java): `neoforge/src/main/java/virtuoel/pehkui/neoforge/data/ScaleRuleLoader.java`
- [NeoForge rules](https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/neoforge/src/main/java/virtuoel/pehkui/neoforge/data/ScaleRules.java): `neoforge/src/main/java/virtuoel/pehkui/neoforge/data/ScaleRules.java`
- [Rule parser](https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/common/src/main/java/virtuoel/pehkui/data/ScaleRuleParser.java): `common/src/main/java/virtuoel/pehkui/data/ScaleRuleParser.java`
- [Rule applier](https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/common/src/main/java/virtuoel/pehkui/data/ScaleRuleApplier.java): `common/src/main/java/virtuoel/pehkui/data/ScaleRuleApplier.java`

### Gameplay Runtime

- [Gameplay hooks](https://github.com/wuhenqiubai/pehkui-rebuilt/tree/26.3/common/src/main/java/virtuoel/pehkui/mixin): `common/src/main/java/virtuoel/pehkui/mixin`
- [Client hooks](https://github.com/wuhenqiubai/pehkui-rebuilt/tree/26.3/common/src/main/java/virtuoel/pehkui/mixin/client): `common/src/main/java/virtuoel/pehkui/mixin/client`
- [Render scaling](https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/common/src/main/java/virtuoel/pehkui/mixin/client/EntityRenderManagerMixin.java): `common/src/main/java/virtuoel/pehkui/mixin/client/EntityRenderManagerMixin.java`
- [Scale packets](https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/common/src/main/java/virtuoel/pehkui/network/ScalePayload.java): `common/src/main/java/virtuoel/pehkui/network/ScalePayload.java`

### Loader Integration

- [Fabric client handler](https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/fabric/src/main/java/virtuoel/pehkui/fabric/PehkuiClientFabric.java): `fabric/src/main/java/virtuoel/pehkui/fabric/PehkuiClientFabric.java`
- [NeoForge packet handler](https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/neoforge/src/main/java/virtuoel/pehkui/neoforge/network/PehkuiPacketHandler.java): `neoforge/src/main/java/virtuoel/pehkui/neoforge/network/PehkuiPacketHandler.java`
- [NeoForge client handler](https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/neoforge/src/main/java/virtuoel/pehkui/neoforge/PehkuiClient.java): `neoforge/src/main/java/virtuoel/pehkui/neoforge/PehkuiClient.java`
- [Config handling](https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/common/src/main/java/virtuoel/kanos_config/api/ConfigHandler.java): `common/src/main/java/virtuoel/kanos_config/api/ConfigHandler.java`
- [Fabric entrypoint](https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/fabric/src/main/java/virtuoel/pehkui/fabric/PehkuiFabric.java): `fabric/src/main/java/virtuoel/pehkui/fabric/PehkuiFabric.java`
- [NeoForge entrypoint](https://github.com/wuhenqiubai/pehkui-rebuilt/blob/26.3/neoforge/src/main/java/virtuoel/pehkui/neoforge/PehkuiNeoForge.java): `neoforge/src/main/java/virtuoel/pehkui/neoforge/PehkuiNeoForge.java`

### Other components

- **Mod developer**
- **Player / operator**
- **Datapack rules**
- **Minecraft**

## Connections

- Mod developer → Scale API: uses API
- Player / operator → Scale commands: runs commands
- Datapack rules → Fabric rule loader: provides rules
- Datapack rules → NeoForge rule loader: provides rules
- Scale commands → Scale data: changes scale
- Fabric rule loader → Fabric rules: loads rules
- Fabric rules → Rule parser: parses rules
- Fabric rules → Rule applier: applies rules
- NeoForge rule loader → NeoForge rules: loads rules
- NeoForge rules → Rule parser: parses rules
- NeoForge rules → Rule applier: applies rules
- Rule applier → Scale data: updates scale
- Scale API → Scale registries: registers types
- Gameplay hooks → Scale utilities: reads scale
- Client hooks → Scale utilities: reads scale
- Render scaling → Scale utilities: uses render helpers
- Scale data → Scale packets: serializes scale
- Scale packets → Fabric client handler: dispatches payload
- Scale packets → NeoForge packet handler: dispatches payload
- NeoForge packet handler → NeoForge client handler: routes payload
- Fabric client handler → Scale data: updates client state
- NeoForge client handler → Scale data: updates client state
- Minecraft → Gameplay hooks: invokes hooks
- Minecraft → Render scaling: invokes render hook
- Fabric entrypoint → Fabric rule loader: integrates loader
- NeoForge entrypoint → NeoForge rule loader: integrates loader
- Config handling → Minecraft: loads settings
