# a-team-pjnceadc/mite-recrafted architecture

> Architecture diagram of the GitHub repository a-team-pjnceadc/mite-recrafted, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-06-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/a-team-pjnceadc/mite-recrafted
- Repository: https://github.com/a-team-pjnceadc/mite-recrafted

## Overview

MITE-Recrafted is a Fabric-based Minecraft mod with a clear split between common game logic and client-only presentation logic. The build is Gradle-driven, with Fabric metadata, mixin configs, and an access widener defining how the mod integrates with the base game.

The entrypoint in `src/main/java/com/mite/recraft/MiteRecrafted.java` is the root of the common-side bootstrap. From there, the mod’s systems are organized around registry-style subsystems: blocks, items, entities, data components, and creative tabs are each isolated into their own packages and registration helpers.

A major architectural boundary is the block/workbench subsystem. It includes custom block types, specialized bar and door blocks, and a workbench family with its own block, menu, and material model. That workbench appears to be a central gameplay surface, not just a decorative block, because it has server-side menu logic and client-side screen UI.

The item/tool subsystem is the largest part of the mod. `ModItems`, `ModTools`, `ModMaterials`, and `ModToolMaterial` define the base item/material layer, while the `toolItem` package splits tools into many concrete categories such as swords, bows, arrows, pickaxes, shovels, hatschets, mattocks, warhammers, daggers, and more. This suggests a design where tool behavior is type-specific rather than driven by one generic item class.

The mod also introduces a custom quality/material progression model. `Quality` and the material-related packages indicate that item strength and crafting results are likely influenced by quality tiers and bespoke material definitions, rather than vanilla item stats alone.

Entity and combat behavior are extended through a custom arrow entity and a set of mixins. The `entity/arrowentity/ArrowEntity` class is complemented by mixins targeting arrow recovery, stuck-arrow handling, fishing hook behavior, and living-entity arrow state. That indicates the mod modifies vanilla projectile and stuck-projectile logic rather than replacing it entirely.

Networking is small but important: `CraftingProgressSyncPayload` shows that crafting state is synchronized from server to client. This ties the workbench/menu system to the client screen, so the UI can reflect server-authoritative crafting progress.

The `component` package suggests the mod uses data components to attach structured state to items or other game objects. In architecture terms, this is the persistence/state layer that sits between registries and runtime behavior.

Client-only code lives under `src/client/java`, which cleanly separates rendering and screens from the common gameplay systems. The client package provides a custom workbench screen, an arrow renderer, an item property provider for nocked arrows, and a client data generator/model provider for assets.

Data generation is a first-class part of the repository. Providers for recipes, item/block tags, and both English and Chinese language files indicate that a significant portion of content is generated rather than hand-authored, and localization is explicitly supported for two languages.

The resource tree reinforces the content-heavy nature of the mod: there are extensive textures for blocks, doors, bars, workbenches, arrows, bows, tools, and GUI assets. This means the architecture is not just code-driven; the visual and content definitions are a major part of the mod’s surface area.

In diagram terms, the core flow is: Fabric loads the common mod bootstrap, registries install blocks/items/entities/components, mixins alter vanilla behavior, the workbench/menu/server logic produces crafting state, networking syncs that state to the client, and the client renders custom entities, screens, and item models against the generated resources.

Main entry points: [`src/main/java/com/mite/recraft/MiteRecrafted.java`](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/MiteRecrafted.java) (Mod bootstrap), [`src/main/java/com/mite/recraft/block/ModBlocks.java`](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/block/ModBlocks.java) (Blocks), [`src/client/java/com/mite/recraft/client/MiteRecraftedClient.java`](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/client/java/com/mite/recraft/client/MiteRecraftedClient.java) (Client bootstrap), [`src/main/java/com/mite/recraft/item/ModItems.java`](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/item/ModItems.java) (Items)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_group_common["Common runtime"]
  node_bootstrap["Mod bootstrap<br/>Fabric entrypoint<br/>[MiteRecrafted.java]"]
  node_network["Sync payload<br/>network packet"]
  node_mixins["Mixins<br/>vanilla hooks"]
  node_datagen["Data gen<br/>generated content"]
end

subgraph group_group_client["Client runtime"]
  node_client_bootstrap["Client bootstrap<br/>client entrypoint"]
  node_client_screen["Workbench screen<br/>client ui"]
  node_client_renderer(("Arrow renderer<br/>client render"))
  node_client_item_props["Item props<br/>client item hooks"]
  node_client_datagen["Client model gen<br/>client datagen"]
end

subgraph group_group_content["Content systems"]
  node_blocks["Blocks<br/>registry<br/>[ModBlocks.java]"]
  node_block_types["Block types<br/>block defs<br/>[ModBlockType.java]"]
  node_bar_blocks["Bar blocks<br/>block family<br/>[ModBarBlocks.java]"]
  node_door_blocks["Door blocks<br/>block family<br/>[ModDoorBlocks.java]"]
  node_workbench["Workbench<br/>block/menu"]
  node_items["Items<br/>registry<br/>[ModItems.java]"]
  node_creative_tabs["Creative tabs<br/>inventory UI"]
  node_materials["Materials<br/>[ModMaterials.java]"]
  node_quality["Quality<br/>progression tier<br/>[Quality.java]"]
  node_tools["Tools<br/>tool registry<br/>[ModTools.java]"]
  node_tool_family["Tool families<br/>tool classes<br/>[ToolType.java]"]
  node_tool_material["Tool material"]
  node_entities["Entities<br/>entity registry<br/>[ModEntitys.java]"]
  node_arrow_entity(("Arrow entity<br/>projectile<br/>[ArrowEntity.java]"))
  node_components["Components"]
end

node_bootstrap -->|"registers"| node_blocks
node_bootstrap -->|"registers"| node_items
node_bootstrap -->|"registers"| node_entities
node_bootstrap -->|"registers"| node_components
node_bootstrap -->|"syncs"| node_network
node_bootstrap -->|"enables"| node_mixins
node_bootstrap -->|"provides"| node_datagen
node_blocks -->|"uses"| node_block_types
node_blocks -->|"includes"| node_bar_blocks
node_blocks -->|"includes"| node_door_blocks
node_blocks -->|"includes"| node_workbench
node_items -->|"uses"| node_materials
node_items -->|"uses"| node_quality
node_items -->|"includes"| node_tools
node_tools -->|"uses"| node_tool_material
node_tools -->|"expands"| node_tool_family
node_entities -->|"defines"| node_arrow_entity
node_mixins -->|"supports"| node_arrow_entity
node_workbench -->|"syncs"| node_network
node_client_bootstrap -->|"opens"| node_client_screen
node_client_bootstrap -->|"registers"| node_client_renderer
node_client_bootstrap -->|"registers"| node_client_item_props
node_client_bootstrap -->|"generates"| node_client_datagen
node_client_screen -->|"renders"| node_workbench
node_client_renderer -->|"renders"| node_arrow_entity

click node_bootstrap "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/MiteRecrafted.java"
click node_blocks "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/block/ModBlocks.java"
click node_block_types "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/block/ModBlockType.java"
click node_bar_blocks "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/block/modbarblock/ModBarBlocks.java"
click node_door_blocks "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/block/moddoorblock/ModDoorBlocks.java"
click node_workbench "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/block/workbench/ModWorkbenchBlock.java"
click node_items "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/item/ModItems.java"
click node_creative_tabs "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/item/ModCreativeTabs.java"
click node_materials "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/item/material/ModMaterials.java"
click node_quality "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/item/quality/Quality.java"
click node_tools "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/item/tools/ModTools.java"
click node_tool_family "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/item/tools/toolItem/ToolType.java"
click node_tool_material "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/item/tools/modtoolmaterials/ModToolMaterial.java"
click node_entities "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/entity/ModEntitys.java"
click node_arrow_entity "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/entity/arrowentity/ArrowEntity.java"
click node_components "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/component/ModDataComponents.java"
click node_network "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/network/CraftingProgressSyncPayload.java"
click node_mixins "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/mixin/ArrowRecoveryMixin.java"
click node_datagen "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/datagen/ModRecipeProvider.java"
click node_client_bootstrap "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/client/java/com/mite/recraft/client/MiteRecraftedClient.java"
click node_client_screen "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/client/java/com/mite/recraft/client/screen/ModWorkbenchScreen.java"
click node_client_renderer "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/client/java/com/mite/recraft/client/renderer/ModArrowRenderer.java"
click node_client_item_props "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/client/java/com/mite/recraft/client/renderer/item/NockedArrowProperty.java"
click node_client_datagen "https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/client/java/com/mite/recraft/client/datagen/ModModelProvider.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_bootstrap,node_network,node_mixins,node_datagen toneBlue
class node_client_bootstrap,node_client_screen,node_client_renderer,node_client_item_props,node_client_datagen toneAmber
class node_blocks,node_block_types,node_bar_blocks,node_door_blocks,node_workbench,node_items,node_creative_tabs,node_materials,node_quality,node_tools,node_tool_family,node_tool_material,node_entities,node_arrow_entity,node_components toneMint
```

## Components

### Common runtime

Server/shared gameplay logic and bootstrap

- [Mod bootstrap](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/MiteRecrafted.java): Fabric entrypoint · Common-side mod initialization and wiring · `src/main/java/com/mite/recraft/MiteRecrafted.java`
- [Sync payload](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/network/CraftingProgressSyncPayload.java): network packet · Crafting progress synchronization from server to client · `src/main/java/com/mite/recraft/network/CraftingProgressSyncPayload.java`
- [Mixins](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/mixin/ArrowRecoveryMixin.java): vanilla hooks · Behavior patches for arrows, fishing hooks, and stuck-arrow state · `src/main/java/com/mite/recraft/mixin/ArrowRecoveryMixin.java`
- [Data gen](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/datagen/ModRecipeProvider.java): generated content · Recipes, tags, and language providers · `src/main/java/com/mite/recraft/datagen/ModRecipeProvider.java`

### Client runtime

Client-only rendering, screens, and model hooks

- [Client bootstrap](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/client/java/com/mite/recraft/client/MiteRecraftedClient.java): client entrypoint · Client-side setup and resource hooks · `src/client/java/com/mite/recraft/client/MiteRecraftedClient.java`
- [Workbench screen](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/client/java/com/mite/recraft/client/screen/ModWorkbenchScreen.java): client ui · Client UI for the workbench menu · `src/client/java/com/mite/recraft/client/screen/ModWorkbenchScreen.java`
- [Arrow renderer](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/client/java/com/mite/recraft/client/renderer/ModArrowRenderer.java): client render · Renderer for the custom arrow entity · `src/client/java/com/mite/recraft/client/renderer/ModArrowRenderer.java`
- [Item props](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/client/java/com/mite/recraft/client/renderer/item/NockedArrowProperty.java): client item hooks · Client property provider for nocked arrows · `src/client/java/com/mite/recraft/client/renderer/item/NockedArrowProperty.java`
- [Client model gen](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/client/java/com/mite/recraft/client/datagen/ModModelProvider.java): client datagen · Client-side model and asset generation · `src/client/java/com/mite/recraft/client/datagen/ModModelProvider.java`

### Content systems

Registries and gameplay subsystems

- [Blocks](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/block/ModBlocks.java): registry · Shared block registration surface · `src/main/java/com/mite/recraft/block/ModBlocks.java`
- [Block types](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/block/ModBlockType.java): block defs · Core block type definitions and shared block plumbing · `src/main/java/com/mite/recraft/block/ModBlockType.java`
- [Bar blocks](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/block/modbarblock/ModBarBlocks.java): block family · Specialized bar-style block variants · `src/main/java/com/mite/recraft/block/modbarblock/ModBarBlocks.java`
- [Door blocks](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/block/moddoorblock/ModDoorBlocks.java): block family · Specialized door block variants · `src/main/java/com/mite/recraft/block/moddoorblock/ModDoorBlocks.java`
- [Workbench](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/block/workbench/ModWorkbenchBlock.java): block/menu · Workbench block, menu, and material model · `src/main/java/com/mite/recraft/block/workbench/ModWorkbenchBlock.java`
- [Items](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/item/ModItems.java): registry · Shared item registration surface · `src/main/java/com/mite/recraft/item/ModItems.java`
- [Creative tabs](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/item/ModCreativeTabs.java): inventory UI · Creative tab grouping for mod content · `src/main/java/com/mite/recraft/item/ModCreativeTabs.java`
- [Materials](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/item/material/ModMaterials.java): item materials · Custom material definitions for crafting and progression · `src/main/java/com/mite/recraft/item/material/ModMaterials.java`
- [Quality](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/item/quality/Quality.java): progression tier · Quality tiers that influence item strength and crafting results · `src/main/java/com/mite/recraft/item/quality/Quality.java`
- [Tools](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/item/tools/ModTools.java): tool registry · Tool registration and shared tool setup · `src/main/java/com/mite/recraft/item/tools/ModTools.java`
- [Tool families](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/item/tools/toolItem/ToolType.java): tool classes · Concrete tool categories such as swords, bows, pickaxes, and hammers · `src/main/java/com/mite/recraft/item/tools/toolItem/ToolType.java`
- [Tool material](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/item/tools/modtoolmaterials/ModToolMaterial.java): tool material · Tool material behavior and stats layer · `src/main/java/com/mite/recraft/item/tools/modtoolmaterials/ModToolMaterial.java`
- [Entities](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/entity/ModEntitys.java): entity registry · Custom entity registration surface · `src/main/java/com/mite/recraft/entity/ModEntitys.java`
- [Arrow entity](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/entity/arrowentity/ArrowEntity.java): projectile · Custom arrow entity implementation · `src/main/java/com/mite/recraft/entity/arrowentity/ArrowEntity.java`
- [Components](https://github.com/a-team-pjnceadc/mite-recrafted/blob/main/src/main/java/com/mite/recraft/component/ModDataComponents.java): data components · Structured state attached to items or game objects · `src/main/java/com/mite/recraft/component/ModDataComponents.java`

## Connections

- Mod bootstrap → Blocks: registers · Installs block content and block families
- Mod bootstrap → Items: registers · Installs item content and creative tab wiring
- Mod bootstrap → Entities: registers · Registers custom entities
- Mod bootstrap → Components: registers · Registers shared data components
- Mod bootstrap → Sync payload: syncs · Sets up crafting progress synchronization
- Mod bootstrap → Mixins: enables · Applies vanilla behavior patches through mixins
- Mod bootstrap → Data gen: provides · Supplies recipe, tag, and language generation
- Blocks → Block types: uses · Shared block registration depends on core block types
- Blocks → Bar blocks: includes · Registers bar-style block variants
- Blocks → Door blocks: includes · Registers custom door variants
- Blocks → Workbench: includes · Registers the workbench family as a central block subsystem
- Items → Materials: uses · Item definitions rely on custom materials
- Items → Quality: uses · Item stats and crafting results are quality-aware
- Items → Tools: includes · Delegates to tool registration
- Tools → Tool material: uses · Tool behavior is driven by custom tool material rules
- Tools → Tool families: expands · Concrete tool categories are split into specialized classes
- Entities → Arrow entity: defines · Custom projectile entity implementation
- Mixins → Arrow entity: supports · Hooks vanilla arrow and stuck-arrow behavior around the custom projectile
- Workbench → Sync payload: syncs · Server workbench state is pushed to the client UI
- Client bootstrap → Workbench screen: opens · Registers the workbench screen on the client
- Client bootstrap → Arrow renderer: registers · Registers custom entity rendering
- Client bootstrap → Item props: registers · Hooks item property behavior for arrow state
- Client bootstrap → Client model gen: generates · Client-side models and asset metadata
- Workbench screen → Workbench: renders · Client UI mirrors the workbench menu and crafting flow
- Arrow renderer → Arrow entity: renders · Client renderer targets the custom arrow entity
