# skixl/nocturnelanterns-fabric architecture

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

- Interactive diagram: https://gitdiagram.com/skixl/nocturnelanterns-fabric
- Repository: https://github.com/skixl/nocturnelanterns-fabric

## Overview

Nocturne Lanterns is a Fabric Minecraft mod whose central workflow is to register lantern content, let players craft and place it, and have placed lanterns switch their light with the day/night cycle. Copper variants additionally weather and can be waxed. Client rendering and the resource-pack assets provide the visual presentation. The sampled source confirms registration, ticking, oxidation, and rendering setup; recipe and asset relationships are based on the repository tree and README, not inspected implementations.

Main entry points: [`src/main/java/com/skixl/nocturnelanterns/block/BlocksRegistry.java`](https://github.com/skixl/nocturnelanterns-fabric/blob/master/src/main/java/com/skixl/nocturnelanterns/block/BlocksRegistry.java) (Block registry), [`src/main/java/com/skixl/nocturnelanterns/NocturneLanterns.java`](https://github.com/skixl/nocturnelanterns-fabric/blob/master/src/main/java/com/skixl/nocturnelanterns/NocturneLanterns.java) (Mod initializer), [`src/main/java/com/skixl/nocturnelanterns/block/nocturne_lantern/NocturneLanternBlock.java`](https://github.com/skixl/nocturnelanterns-fabric/blob/master/src/main/java/com/skixl/nocturnelanterns/block/nocturne_lantern/NocturneLanternBlock.java) (Day-night lantern), [`src/main/java/com/skixl/nocturnelanterns/block/nocturne_lantern/OxidizableNocturneLanternBlock.java`](https://github.com/skixl/nocturnelanterns-fabric/blob/master/src/main/java/com/skixl/nocturnelanterns/block/nocturne_lantern/OxidizableNocturneLanternBlock.java) (Copper weathering)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Mod runtime"]
  node_initializer["Mod initializer"]
  node_registry["Block registry"]
  node_registry_helper["Registration helper"]
  node_item_groups["Item groups<br/>[ModItemGroups.java]"]
  node_oxidation_registry["Oxidation registration"]
end

subgraph group_lanterns["Lantern behavior"]
  node_lantern["Day-night lantern"]
  node_copper_lantern["Copper weathering"]
end

subgraph group_content["Crafting and content"]
  node_recipes["Crafting recipes"]
  node_block_data["Block data"]
end

subgraph group_presentation["Visual presentation"]
  node_client_init["Client rendering setup"]
  node_assets["Models and states"]
end

node_player(("Player"))
node_minecraft["Minecraft"]

node_player -->|"plays in"| node_minecraft
node_minecraft -->|"initializes mod"| node_initializer
node_initializer -->|"registers blocks"| node_registry
node_registry -->|"registers items"| node_registry_helper
node_initializer -->|"registers entries"| node_item_groups
node_registry -->|"creates lanterns"| node_lantern
node_registry -->|"creates variants"| node_copper_lantern
node_initializer -->|"registers copper set"| node_oxidation_registry
node_player -->|"crafts and places"| node_minecraft
node_minecraft -->|"uses recipes"| node_recipes
node_minecraft -->|"loads block data"| node_block_data
node_minecraft -->|"ticks placed block"| node_lantern
node_lantern -->|"updates block state"| node_minecraft
node_minecraft -->|"random ticks"| node_copper_lantern
node_copper_lantern -->|"degrades state"| node_minecraft
node_minecraft -->|"initializes client"| node_client_init
node_client_init -->|"sets render layers"| node_registry
node_minecraft -->|"loads visuals"| node_assets

click node_initializer "https://github.com/skixl/nocturnelanterns-fabric/blob/master/src/main/java/com/skixl/nocturnelanterns/NocturneLanterns.java"
click node_registry "https://github.com/skixl/nocturnelanterns-fabric/blob/master/src/main/java/com/skixl/nocturnelanterns/block/BlocksRegistry.java"
click node_registry_helper "https://github.com/skixl/nocturnelanterns-fabric/blob/master/src/main/java/com/skixl/nocturnelanterns/block/BlocksRegistryHelper.java"
click node_item_groups "https://github.com/skixl/nocturnelanterns-fabric/blob/master/src/main/java/com/skixl/nocturnelanterns/item/ModItemGroups.java"
click node_lantern "https://github.com/skixl/nocturnelanterns-fabric/blob/master/src/main/java/com/skixl/nocturnelanterns/block/nocturne_lantern/NocturneLanternBlock.java"
click node_copper_lantern "https://github.com/skixl/nocturnelanterns-fabric/blob/master/src/main/java/com/skixl/nocturnelanterns/block/nocturne_lantern/OxidizableNocturneLanternBlock.java"
click node_oxidation_registry "https://github.com/skixl/nocturnelanterns-fabric/blob/master/src/main/java/com/skixl/nocturnelanterns/NocturneLanterns.java"
click node_recipes "https://github.com/skixl/nocturnelanterns-fabric/tree/master/src/main/resources/data/nocturnelanterns/recipe"
click node_block_data "https://github.com/skixl/nocturnelanterns-fabric/tree/master/src/main/resources/data/nocturnelanterns"
click node_client_init "https://github.com/skixl/nocturnelanterns-fabric/blob/master/src/main/java/com/skixl/nocturnelanterns/NocturneLanternsClient.java"
click node_assets "https://github.com/skixl/nocturnelanterns-fabric/tree/master/src/main/resources/assets/nocturnelanterns"

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_initializer,node_registry,node_registry_helper,node_item_groups,node_oxidation_registry toneBlue
class node_lantern,node_copper_lantern toneAmber
class node_recipes,node_block_data toneMint
class node_client_init,node_assets toneRose
class node_player,node_minecraft toneIndigo
```

## Components

### Mod runtime

- [Mod initializer](https://github.com/skixl/nocturnelanterns-fabric/blob/master/src/main/java/com/skixl/nocturnelanterns/NocturneLanterns.java): `src/main/java/com/skixl/nocturnelanterns/NocturneLanterns.java`
- [Block registry](https://github.com/skixl/nocturnelanterns-fabric/blob/master/src/main/java/com/skixl/nocturnelanterns/block/BlocksRegistry.java): `src/main/java/com/skixl/nocturnelanterns/block/BlocksRegistry.java`
- [Registration helper](https://github.com/skixl/nocturnelanterns-fabric/blob/master/src/main/java/com/skixl/nocturnelanterns/block/BlocksRegistryHelper.java): `src/main/java/com/skixl/nocturnelanterns/block/BlocksRegistryHelper.java`
- [Item groups](https://github.com/skixl/nocturnelanterns-fabric/blob/master/src/main/java/com/skixl/nocturnelanterns/item/ModItemGroups.java): `src/main/java/com/skixl/nocturnelanterns/item/ModItemGroups.java`
- [Oxidation registration](https://github.com/skixl/nocturnelanterns-fabric/blob/master/src/main/java/com/skixl/nocturnelanterns/NocturneLanterns.java): `src/main/java/com/skixl/nocturnelanterns/NocturneLanterns.java`

### Lantern behavior

- [Day-night lantern](https://github.com/skixl/nocturnelanterns-fabric/blob/master/src/main/java/com/skixl/nocturnelanterns/block/nocturne_lantern/NocturneLanternBlock.java): `src/main/java/com/skixl/nocturnelanterns/block/nocturne_lantern/NocturneLanternBlock.java`
- [Copper weathering](https://github.com/skixl/nocturnelanterns-fabric/blob/master/src/main/java/com/skixl/nocturnelanterns/block/nocturne_lantern/OxidizableNocturneLanternBlock.java): `src/main/java/com/skixl/nocturnelanterns/block/nocturne_lantern/OxidizableNocturneLanternBlock.java`

### Crafting and content

- [Crafting recipes](https://github.com/skixl/nocturnelanterns-fabric/tree/master/src/main/resources/data/nocturnelanterns/recipe): `src/main/resources/data/nocturnelanterns/recipe`
- [Block data](https://github.com/skixl/nocturnelanterns-fabric/tree/master/src/main/resources/data/nocturnelanterns): `src/main/resources/data/nocturnelanterns`

### Visual presentation

- [Client rendering setup](https://github.com/skixl/nocturnelanterns-fabric/blob/master/src/main/java/com/skixl/nocturnelanterns/NocturneLanternsClient.java): `src/main/java/com/skixl/nocturnelanterns/NocturneLanternsClient.java`
- [Models and states](https://github.com/skixl/nocturnelanterns-fabric/tree/master/src/main/resources/assets/nocturnelanterns): `src/main/resources/assets/nocturnelanterns`

### Other components

- **Player**
- **Minecraft**

## Connections

- Player → Minecraft: plays in
- Minecraft → Mod initializer: initializes mod
- Mod initializer → Block registry: registers blocks
- Block registry → Registration helper: registers items
- Mod initializer → Item groups: registers entries
- Block registry → Day-night lantern: creates lanterns
- Block registry → Copper weathering: creates variants
- Mod initializer → Oxidation registration: registers copper set
- Player → Minecraft: crafts and places
- Minecraft → Crafting recipes: uses recipes
- Minecraft → Block data: loads block data
- Minecraft → Day-night lantern: ticks placed block
- Day-night lantern → Minecraft: updates block state
- Minecraft → Copper weathering: random ticks
- Copper weathering → Minecraft: degrades state
- Minecraft → Client rendering setup: initializes client
- Client rendering setup → Block registry: sets render layers
- Minecraft → Models and states: loads visuals
