# zhuimeng1233/block-durability architecture

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

- Interactive diagram: https://gitdiagram.com/zhuimeng1233/block-durability
- Repository: https://github.com/zhuimeng1233/block-durability

## Overview

Block Durability is a NeoForge mod that lets eligible blocks absorb durability damage from explosions and TaCZ bullets until they break. The main flow is a Minecraft explosion or TaCZ hit event entering its handler, which checks eligibility and damage, then delegates HP updates to the manager; the manager tracks damage and synchronizes crack progress. Configuration controls the whitelist, HP formula, damage, healing, and effects. The README documents vanilla/modded explosion compatibility and shielding; the sampled event handler implements those behaviors. Source excerpts do not show every registration detail for integrations.

Main entry points: [`src/main/java/top/dreamfall/blockdurability/BlockHPEventHandler.java`](https://github.com/zhuimeng1233/block-durability/blob/master/src/main/java/top/dreamfall/blockdurability/BlockHPEventHandler.java) (Explosion handler), [`src/main/java/top/dreamfall/blockdurability/BlockHPManager.java`](https://github.com/zhuimeng1233/block-durability/blob/master/src/main/java/top/dreamfall/blockdurability/BlockHPManager.java) (HP manager), [`src/main/java/top/dreamfall/blockdurability/BlockDurability.java`](https://github.com/zhuimeng1233/block-durability/blob/master/src/main/java/top/dreamfall/blockdurability/BlockDurability.java) (Mod entry), [`src/main/java/top/dreamfall/blockdurability/TaczHitHandler.java`](https://github.com/zhuimeng1233/block-durability/blob/master/src/main/java/top/dreamfall/blockdurability/TaczHitHandler.java) (Bullet handler)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_bootstrap["Mod bootstrap"]
  node_mod_entry["Mod entry"]
  node_config["Durability config<br/>[BlockHPConfig.java]"]
end

subgraph group_damage["Damage handling"]
  node_explosion_handler["Explosion handler"]
  node_bullet_handler["Bullet handler"]
end

subgraph group_state["Durability state"]
  node_hp_manager["HP manager"]
end

node_minecraft_explosions(("Minecraft explosions"))
node_tacz_bullet_hits(("TaCZ bullet hits"))

node_mod_entry -->|"registers"| node_config
node_mod_entry -->|"registers"| node_explosion_handler
node_mod_entry -->|"conditionally registers"| node_bullet_handler
node_mod_entry -->|"invalidates cache"| node_hp_manager
node_minecraft_explosions -->|"dispatches events"| node_explosion_handler
node_tacz_bullet_hits -->|"dispatches hits"| node_bullet_handler
node_explosion_handler -->|"reads settings"| node_config
node_explosion_handler -->|"checks and damages"| node_hp_manager
node_bullet_handler -->|"reads settings"| node_config
node_bullet_handler -->|"checks and damages"| node_hp_manager
node_hp_manager -->|"reads HP rules"| node_config
node_explosion_handler -->|"ticks and cleans state"| node_hp_manager

click node_mod_entry "https://github.com/zhuimeng1233/block-durability/blob/master/src/main/java/top/dreamfall/blockdurability/BlockDurability.java"
click node_config "https://github.com/zhuimeng1233/block-durability/blob/master/src/main/java/top/dreamfall/blockdurability/BlockHPConfig.java"
click node_explosion_handler "https://github.com/zhuimeng1233/block-durability/blob/master/src/main/java/top/dreamfall/blockdurability/BlockHPEventHandler.java"
click node_bullet_handler "https://github.com/zhuimeng1233/block-durability/blob/master/src/main/java/top/dreamfall/blockdurability/TaczHitHandler.java"
click node_hp_manager "https://github.com/zhuimeng1233/block-durability/blob/master/src/main/java/top/dreamfall/blockdurability/BlockHPManager.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_mod_entry,node_config toneBlue
class node_explosion_handler,node_bullet_handler toneAmber
class node_hp_manager toneMint
class node_minecraft_explosions,node_tacz_bullet_hits toneIndigo
```

## Components

### Mod bootstrap

- [Mod entry](https://github.com/zhuimeng1233/block-durability/blob/master/src/main/java/top/dreamfall/blockdurability/BlockDurability.java): `src/main/java/top/dreamfall/blockdurability/BlockDurability.java`
- [Durability config](https://github.com/zhuimeng1233/block-durability/blob/master/src/main/java/top/dreamfall/blockdurability/BlockHPConfig.java): `src/main/java/top/dreamfall/blockdurability/BlockHPConfig.java`

### Damage handling

- [Explosion handler](https://github.com/zhuimeng1233/block-durability/blob/master/src/main/java/top/dreamfall/blockdurability/BlockHPEventHandler.java): `src/main/java/top/dreamfall/blockdurability/BlockHPEventHandler.java`
- [Bullet handler](https://github.com/zhuimeng1233/block-durability/blob/master/src/main/java/top/dreamfall/blockdurability/TaczHitHandler.java): `src/main/java/top/dreamfall/blockdurability/TaczHitHandler.java`

### Durability state

- [HP manager](https://github.com/zhuimeng1233/block-durability/blob/master/src/main/java/top/dreamfall/blockdurability/BlockHPManager.java): `src/main/java/top/dreamfall/blockdurability/BlockHPManager.java`

### Other components

- **Minecraft explosions**
- **TaCZ bullet hits**

## Connections

- Mod entry → Durability config: registers (evidence: `src/main/java/top/dreamfall/blockdurability/BlockDurability.java`)
- Mod entry → Explosion handler: registers (evidence: `src/main/java/top/dreamfall/blockdurability/BlockDurability.java`)
- Mod entry → Bullet handler: conditionally registers (evidence: `src/main/java/top/dreamfall/blockdurability/BlockDurability.java`)
- Mod entry → HP manager: invalidates cache (evidence: `src/main/java/top/dreamfall/blockdurability/BlockDurability.java`)
- Minecraft explosions → Explosion handler: dispatches events (evidence: `src/main/java/top/dreamfall/blockdurability/BlockHPEventHandler.java`)
- TaCZ bullet hits → Bullet handler: dispatches hits (evidence: `src/main/java/top/dreamfall/blockdurability/TaczHitHandler.java`)
- Explosion handler → Durability config: reads settings (evidence: `src/main/java/top/dreamfall/blockdurability/BlockHPEventHandler.java`)
- Explosion handler → HP manager: checks and damages (evidence: `src/main/java/top/dreamfall/blockdurability/BlockHPEventHandler.java`)
- Bullet handler → Durability config: reads settings (evidence: `src/main/java/top/dreamfall/blockdurability/TaczHitHandler.java`)
- Bullet handler → HP manager: checks and damages (evidence: `src/main/java/top/dreamfall/blockdurability/TaczHitHandler.java`)
- HP manager → Durability config: reads HP rules (evidence: `src/main/java/top/dreamfall/blockdurability/BlockHPManager.java`)
- Explosion handler → HP manager: ticks and cleans state (evidence: `src/main/java/top/dreamfall/blockdurability/BlockHPEventHandler.java`)
