# mcjtymods/rftools architecture

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

- Interactive diagram: https://gitdiagram.com/mcjtymods/rftools
- Repository: https://github.com/mcjtymods/rftools

## Overview

RFTools is a Minecraft 1.12 mod offering blocks and items for storage, crafting, screens, building, environmental effects, power, logic, and teleportation. A representative user flow is interacting with a storage scanner, opening its interface, and accessing nearby inventories; the scanner also supports crafting-grid operations. The tree indicates several other substantial feature families, but their runtime wiring was not sampled, so those branches are shown without speculative connections. The README provides only a brief product description, and some indexed storage files are absent from the supplied tree.

Main entry points: [`src/main/java/mcjty/rftools/setup/GuiProxy.java`](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/setup/GuiProxy.java) (GUI routing), [`src/main/java/mcjty/rftools/blocks/storagemonitor/StorageScannerTileEntity.java`](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/storagemonitor/StorageScannerTileEntity.java) (Storage scanner), [`src/main/java/mcjty/rftools/blocks/storagemonitor/StorageScannerContainer.java`](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/storagemonitor/StorageScannerContainer.java) (Scanner container), [`src/main/java/mcjty/rftools/blocks/screens/modules/StorageControlScreenModule.java`](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/screens/modules/StorageControlScreenModule.java) (Storage screen module)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_storage["Storage and crafting"]
  node_gui_router["GUI routing<br/>[GuiProxy.java]"]
  node_scanner_ui["Scanner interface"]
  node_scanner_container["Scanner container"]
  node_scanner["Storage scanner"]
  node_modular_storage["Modular storage"]
  node_storage_items["Storage modules"]
  node_storage_tablet["Storage tablet"]
  node_filters["Storage filters"]
  node_crafting["Grid crafting"]
end

subgraph group_screens["Screens and monitoring"]
  node_screen_control["Storage screen module"]
  node_screen_client["Screen client modules"]
  node_screen_system["Modular screens"]
end

subgraph group_machines["Machines and logic"]
  node_builder["Builder and chamber"]
  node_environment["Environmental effects"]
  node_logic["Redstone logic"]
  node_power["Power network"]
end

subgraph group_platform["Mod infrastructure"]
  node_teleport["Teleportation API"]
  node_module_registry["Screen module registry"]
  node_mod_entry["Mod entry point<br/>[RFTools.java]"]
  node_network["Packet registration"]
end

node_player(("Player"))

node_gui_router -->|"opens"| node_scanner_ui
node_gui_router -->|"creates"| node_scanner_container
node_scanner_container -->|"binds inventory"| node_scanner
node_scanner -->|"uses crafting tools"| node_crafting
node_modular_storage -->|"uses crafting tools"| node_crafting
node_screen_control -->|"queries counts"| node_scanner
node_screen_client -->|"implements client side"| node_screen_control
node_player -.->|"opens interface"| node_gui_router
node_player -.->|"uses item"| node_storage_tablet

click node_gui_router "https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/setup/GuiProxy.java"
click node_scanner_ui "https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/storagemonitor/GuiStorageScanner.java"
click node_scanner_container "https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/storagemonitor/StorageScannerContainer.java"
click node_scanner "https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/storagemonitor/StorageScannerTileEntity.java"
click node_modular_storage "https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/storage/ModularStorageTileEntity.java"
click node_storage_items "https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/items/storage/StorageModuleItem.java"
click node_storage_tablet "https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/items/storage/StorageModuleTabletItem.java"
click node_filters "https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/items/storage/StorageFilterItem.java"
click node_crafting "https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/craftinggrid/StorageCraftingTools.java"
click node_screen_control "https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/screens/modules/StorageControlScreenModule.java"
click node_screen_client "https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/screens/modulesclient/StorageControlClientScreenModule.java"
click node_screen_system "https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/screens/ScreenTileEntity.java"
click node_builder "https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/builder/BuilderTileEntity.java"
click node_environment "https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/environmental/EnvironmentalControllerTileEntity.java"
click node_logic "https://github.com/mcjtymods/rftools/tree/1.12/src/main/java/mcjty/rftools/blocks/logic"
click node_power "https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/powercell/PowerCellNetwork.java"
click node_teleport "https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/apiimpl/TeleportationManager.java"
click node_module_registry "https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/apiimpl/ScreenModuleRegistry.java"
click node_mod_entry "https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/RFTools.java"
click node_network "https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/network/RFToolsMessages.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_gui_router,node_scanner_ui,node_scanner_container,node_scanner,node_modular_storage,node_storage_items,node_storage_tablet,node_filters,node_crafting toneBlue
class node_screen_control,node_screen_client,node_screen_system toneAmber
class node_builder,node_environment,node_logic,node_power toneMint
class node_teleport,node_module_registry,node_mod_entry,node_network toneRose
class node_player toneIndigo
```

## Components

### Storage and crafting

- [GUI routing](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/setup/GuiProxy.java): `src/main/java/mcjty/rftools/setup/GuiProxy.java`
- [Scanner interface](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/storagemonitor/GuiStorageScanner.java): `src/main/java/mcjty/rftools/blocks/storagemonitor/GuiStorageScanner.java`
- [Scanner container](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/storagemonitor/StorageScannerContainer.java): `src/main/java/mcjty/rftools/blocks/storagemonitor/StorageScannerContainer.java`
- [Storage scanner](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/storagemonitor/StorageScannerTileEntity.java): `src/main/java/mcjty/rftools/blocks/storagemonitor/StorageScannerTileEntity.java`
- [Modular storage](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/storage/ModularStorageTileEntity.java): `src/main/java/mcjty/rftools/blocks/storage/ModularStorageTileEntity.java`
- [Storage modules](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/items/storage/StorageModuleItem.java): `src/main/java/mcjty/rftools/items/storage/StorageModuleItem.java`
- [Storage tablet](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/items/storage/StorageModuleTabletItem.java): `src/main/java/mcjty/rftools/items/storage/StorageModuleTabletItem.java`
- [Storage filters](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/items/storage/StorageFilterItem.java): `src/main/java/mcjty/rftools/items/storage/StorageFilterItem.java`
- [Grid crafting](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/craftinggrid/StorageCraftingTools.java): `src/main/java/mcjty/rftools/craftinggrid/StorageCraftingTools.java`

### Screens and monitoring

- [Storage screen module](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/screens/modules/StorageControlScreenModule.java): `src/main/java/mcjty/rftools/blocks/screens/modules/StorageControlScreenModule.java`
- [Screen client modules](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/screens/modulesclient/StorageControlClientScreenModule.java): `src/main/java/mcjty/rftools/blocks/screens/modulesclient/StorageControlClientScreenModule.java`
- [Modular screens](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/screens/ScreenTileEntity.java): `src/main/java/mcjty/rftools/blocks/screens/ScreenTileEntity.java`

### Machines and logic

- [Builder and chamber](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/builder/BuilderTileEntity.java): `src/main/java/mcjty/rftools/blocks/builder/BuilderTileEntity.java`
- [Environmental effects](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/environmental/EnvironmentalControllerTileEntity.java): `src/main/java/mcjty/rftools/blocks/environmental/EnvironmentalControllerTileEntity.java`
- [Redstone logic](https://github.com/mcjtymods/rftools/tree/1.12/src/main/java/mcjty/rftools/blocks/logic): `src/main/java/mcjty/rftools/blocks/logic`
- [Power network](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/blocks/powercell/PowerCellNetwork.java): `src/main/java/mcjty/rftools/blocks/powercell/PowerCellNetwork.java`

### Mod infrastructure

- [Teleportation API](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/apiimpl/TeleportationManager.java): `src/main/java/mcjty/rftools/apiimpl/TeleportationManager.java`
- [Screen module registry](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/apiimpl/ScreenModuleRegistry.java): `src/main/java/mcjty/rftools/apiimpl/ScreenModuleRegistry.java`
- [Mod entry point](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/RFTools.java): `src/main/java/mcjty/rftools/RFTools.java`
- [Packet registration](https://github.com/mcjtymods/rftools/blob/1.12/src/main/java/mcjty/rftools/network/RFToolsMessages.java): `src/main/java/mcjty/rftools/network/RFToolsMessages.java`

### Other components

- **Player**

## Connections

- GUI routing → Scanner interface: opens (evidence: `src/main/java/mcjty/rftools/setup/GuiProxy.java`)
- GUI routing → Scanner container: creates (evidence: `src/main/java/mcjty/rftools/setup/GuiProxy.java`)
- Scanner container → Storage scanner: binds inventory (evidence: `src/main/java/mcjty/rftools/blocks/storagemonitor/StorageScannerContainer.java`)
- Storage scanner → Grid crafting: uses crafting tools (evidence: `src/main/java/mcjty/rftools/blocks/storagemonitor/StorageScannerTileEntity.java`)
- Modular storage → Grid crafting: uses crafting tools (evidence: `src/main/java/mcjty/rftools/blocks/storage/ModularStorageTileEntity.java`)
- Storage screen module → Storage scanner: queries counts (evidence: `src/main/java/mcjty/rftools/blocks/screens/modules/StorageControlScreenModule.java`)
- Screen client modules → Storage screen module: implements client side (evidence: `src/main/java/mcjty/rftools/blocks/screens/modulesclient/StorageControlClientScreenModule.java`)
- Player → GUI routing: opens interface
- Player → Storage tablet: uses item
