How a-team-pjnceadc/mite-recrafted works
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: MiteRecrafted.java Mod bootstrap · ModBlocks.java Blocks · MiteRecraftedClient.java Client bootstrap · ModItems.java Items
Components 24
Common runtime
Server/shared gameplay logic and bootstrap
- Mod bootstrap · Common-side mod initialization and wiring
src/main/java/com/mite/recraft/MiteRecrafted.java - Sync payload · Crafting progress synchronization from server to client
src/main/java/com/mite/recraft/network/CraftingProgressSyncPayload.java - Mixins · Behavior patches for arrows, fishing hooks, and stuck-arrow state
src/main/java/com/mite/recraft/mixin/ArrowRecoveryMixin.java - Data gen · 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 · Client-side setup and resource hooks
src/client/java/com/mite/recraft/client/MiteRecraftedClient.java - Workbench screen · Client UI for the workbench menu
src/client/java/com/mite/recraft/client/screen/ModWorkbenchScreen.java - Arrow renderer · Renderer for the custom arrow entity
src/client/java/com/mite/recraft/client/renderer/ModArrowRenderer.java - Item props · Client property provider for nocked arrows
src/client/java/com/mite/recraft/client/renderer/item/NockedArrowProperty.java - Client model gen · Client-side model and asset generation
src/client/java/com/mite/recraft/client/datagen/ModModelProvider.java
Content systems
Registries and gameplay subsystems
- Blocks · Shared block registration surface
src/main/java/com/mite/recraft/block/ModBlocks.java - Block types · Core block type definitions and shared block plumbing
src/main/java/com/mite/recraft/block/ModBlockType.java - Bar blocks · Specialized bar-style block variants
src/main/java/com/mite/recraft/block/modbarblock/ModBarBlocks.java - Door blocks · Specialized door block variants
src/main/java/com/mite/recraft/block/moddoorblock/ModDoorBlocks.java - Workbench · Workbench block, menu, and material model
src/main/java/com/mite/recraft/block/workbench/ModWorkbenchBlock.java - Items · Shared item registration surface
src/main/java/com/mite/recraft/item/ModItems.java - Creative tabs · Creative tab grouping for mod content
src/main/java/com/mite/recraft/item/ModCreativeTabs.java - Materials · Custom material definitions for crafting and progression
src/main/java/com/mite/recraft/item/material/ModMaterials.java - Quality · Quality tiers that influence item strength and crafting results
src/main/java/com/mite/recraft/item/quality/Quality.java - Tools · Tool registration and shared tool setup
src/main/java/com/mite/recraft/item/tools/ModTools.java - Tool families · Concrete tool categories such as swords, bows, pickaxes, and hammers
src/main/java/com/mite/recraft/item/tools/toolItem/ToolType.java - Tool material · Tool material behavior and stats layer
src/main/java/com/mite/recraft/item/tools/modtoolmaterials/ModToolMaterial.java - Entities · Custom entity registration surface
src/main/java/com/mite/recraft/entity/ModEntitys.java - Arrow entity · Custom arrow entity implementation
src/main/java/com/mite/recraft/entity/arrowentity/ArrowEntity.java - Components · Structured state attached to items or game objects
src/main/java/com/mite/recraft/component/ModDataComponents.java
Connections 25
- 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