Mod
AnvilLib
No reviews yet
AnvilLib is a NeoForge mod library developed by Anvil-Dev, providing Minecraft mod developers with a series of practical tools and frameworks.
Provides a framework or library for other mods to use.
Neoforge is a fork of the Minecraft Forge available for versions 1.20.1+ of Minecraft. Many Forge mods are compatible with Neoforge and vice versa.
Community voices
Reviews
Click once to include, again to exclude, again to clear
No reviews yet. Be the first to review this project!
Get it on
Available Platforms
Compatibility
Supported Environments
About
Project Details
For authors
Embed Badge
If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.
Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.
Identifiers
Platform IDs
About
Description
AnvilLib

AnvilLib is a NeoForge mod library developed by Anvil Dev, providing Minecraft mod developers with a series of practical tools and frameworks.
Features
AnvilLib adopts a modular design and includes the following functional modules:
| Module | Description |
|---|---|
| Config | Annotation-based configuration system |
| Integration | Mod compatibility integration framework |
| Network | Networking API with automatic packet registration |
| Recipe | In-world recipe system |
| Moveable Entity Block | Support for block entities movable by pistons |
| Registrum | Simplified registration system |
| Main | Aggregated module that bundles all submodules |
Module Introduction
Config Module
Provides an annotation-based configuration management system to simplify the definition and management of mod configurations.
Key Features:
- Define configuration classes using
@Configannotation - Add configuration comments with
@Comment - Define numerical ranges with
@BoundedDiscrete - Create nested configurations with
@CollapsibleObject - Automatically generate client configuration GUI
Usage Example:
@Config(name = "my_mod", type = ModConfig.Type.COMMON)
public class MyModConfig {
@Comment("Enable debug mode")
public boolean debugMode = false;
@Comment("Maximum count")
@BoundedDiscrete(min = 1, max = 100)
public int maxCount = 10;
}
// Register configuration
MyModConfig config = ConfigManager.register("my_mod", MyModConfig::new);
Integration Module
Provides a framework for mod integrations, supporting automatic loading of integration code based on the presence of other mods.
Key Features:
- Declare integration classes with
@Integrationannotation - Support for version range matching
- Support for different runtime environments (CLIENT / DEDICATED_SERVER / DATA)
Usage Example:
@Integration(value = "jei", version = "[19.0,)")
public class JEIIntegration {
public void init() {
// JEI integration logic
}
}
Network Module
Provides a NeoForge networking abstraction with package-based packet auto-registration.
Key Features:
- Define packet direction using
IClientboundPacket/IServerboundPacket/IInsensitiveBiPacket - Automatically register packet classes in a package via
NetworkRegistrar.register(...) - Supports
PLAY,CONFIGURATION, andCOMMONprotocols
Usage Example:
@SubscribeEvent
public static void onRegisterPayload(RegisterPayloadHandlersEvent event) {
PayloadRegistrar registrar = event.registrar("1");
NetworkRegistrar.register(registrar, "my_mod");
}
Recipe Module
Provides an in-world recipe system, allowing recipes to be executed in the world (rather than in crafting tables).
Key Features:
- Supports custom recipe triggers (Trigger)
- Supports recipe predicates (Predicate) for conditional checks
- Supports multiple recipe outcomes (Outcome)
- Built-in priority system
- Full datapack support
Recipe Components:
- Trigger: Conditions to trigger the recipe (e.g., item dropping, explosions)
- Predicate: Recipe matching conditions
- Outcome: Recipe execution results (e.g., spawning items, setting blocks)
Moveable Entity Block Module
Allows blocks with block entities to be pushed by pistons while preserving their data.
Usage Example:
public class MyBlock extends Block implements IMoveableEntityBlock {
@Override
public CompoundTag clearData(Level level, BlockPos pos) {
// Return block entity data to preserve
BlockEntity be = level.getBlockEntity(pos);
return be != null ? be.saveWithoutMetadata(level.registryAccess()) : new CompoundTag();
}
@Override
public void setData(Level level, BlockPos pos, CompoundTag nbt) {
// Restore block entity data at new position
BlockEntity be = level.getBlockEntity(pos);
if (be != null) {
be.loadAdditional(nbt, level.registryAccess());
}
}
}
Registrum Module
A registration system based on Registrate, simplifying the registration process for items, blocks, entities, etc.
Key Features:
- Chain-style API design
- Automatic language file generation
- Automatic datapack generation
- Support for various builders
Usage Example:
public static final Registrum REGISTRUM = Registrum.create("my_mod");
public static final RegistryEntry<Item> MY_ITEM = REGISTRUM
.item("my_item", Item::new)
.properties(p -> p.stacksTo(16))
.register();
Main Module
anvillib-neoforge-1.21.1 is the aggregate artifact. It bundles and re-exports:
configintegrationnetworkrecipemoveable-entity-blockregistrum
Dependency Integration
Gradle (Groovy DSL)
repositories {
mavenCentral() // This project is already uploaded to Maven Central
}
dependencies {
// Full library
implementation "dev.anvilcraft.lib:anvillib-neoforge-1.21.1:2.0.0"
// Or import individual modules as needed
implementation "dev.anvilcraft.lib:anvillib-config-neoforge-1.21.1:2.0.0"
implementation "dev.anvilcraft.lib:anvillib-integration-neoforge-1.21.1:2.0.0"
implementation "dev.anvilcraft.lib:anvillib-network-neoforge-1.21.1:2.0.0"
implementation "dev.anvilcraft.lib:anvillib-recipe-neoforge-1.21.1:2.0.0"
implementation "dev.anvilcraft.lib:anvillib-moveable-entity-block-neoforge-1.21.1:2.0.0"
implementation "dev.anvilcraft.lib:anvillib-registrum-neoforge-1.21.1:2.0.0"
}
Gradle (Kotlin DSL)
repositories {
mavenCentral() // This project is already uploaded to Maven Central
}
dependencies {
implementation("dev.anvilcraft.lib:anvillib-neoforge-1.21.1:2.0.0")
// Optional single-module example
implementation("dev.anvilcraft.lib:anvillib-network-neoforge-1.21.1:2.0.0")
}
Keep the dependency version aligned with release tags (current project property is
mod_version=2.0.0).
Building the Project
# Clone repository
git clone https://github.com/Anvil-Dev/AnvilLib.git
cd AnvilLib
# Build on macOS / Linux
./gradlew build
# Build on Windows (PowerShell / CMD)
gradlew.bat build
Requirements
- Java 21+
- Minecraft 1.21.1
- NeoForge 21.1.x
License
This project is licensed under the MIT License.
Part of the Registrum module code is based on Registrate and follows the Mozilla Public License 2.0.
Author
- Gugle - Main developer
Links
AnvilLib
AnvilLib is a NeoForge mod library developed by Anvil Dev, providing Minecraft mod developers with a series of practical tools and frameworks.
Features
AnvilLib adopts a modular design and includes the following functional modules:
| Module | Description |
|---|---|
| Config | Annotation-based configuration system |
| Integration | Mod compatibility integration framework |
| Network | Networking API with automatic packet registration |
| Recipe | In-world recipe system |
| Moveable Entity Block | Support for block entities movable by pistons |
| Registrum | Simplified registration system |
| Main | Aggregated module that bundles all submodules |
Module Introduction
Config Module
Provides an annotation-based configuration management system to simplify the definition and management of mod configurations.
Key Features:
- Define configuration classes using
@Configannotation - Add configuration comments with
@Comment - Define numerical ranges with
@BoundedDiscrete - Create nested configurations with
@CollapsibleObject - Automatically generate client configuration GUI
Usage Example:
@Config(name = "my_mod", type = ModConfig.Type.COMMON)
public class MyModConfig {
@Comment("Enable debug mode")
public boolean debugMode = false;
@Comment("Maximum count")
@BoundedDiscrete(min = 1, max = 100)
public int maxCount = 10;
}
// Register configuration
MyModConfig config = ConfigManager.register("my_mod", MyModConfig::new);
Integration Module
Provides a framework for mod integrations, supporting automatic loading of integration code based on the presence of other mods.
Key Features:
- Declare integration classes with
@Integrationannotation - Support for version range matching
- Support for different runtime environments (CLIENT / DEDICATED_SERVER / DATA)
Usage Example:
@Integration(value = "jei", version = "[19.0,)")
public class JEIIntegration {
public void init() {
// JEI integration logic
}
}
Network Module
Provides a NeoForge networking abstraction with package-based packet auto-registration.
Key Features:
- Define packet direction using
IClientboundPacket/IServerboundPacket/IInsensitiveBiPacket - Automatically register packet classes in a package via
NetworkRegistrar.register(...) - Supports
PLAY,CONFIGURATION, andCOMMONprotocols
Usage Example:
@SubscribeEvent
public static void onRegisterPayload(RegisterPayloadHandlersEvent event) {
PayloadRegistrar registrar = event.registrar("1");
NetworkRegistrar.register(registrar, "my_mod");
}
Recipe Module
Provides an in-world recipe system, allowing recipes to be executed in the world (rather than in crafting tables).
Key Features:
- Supports custom recipe triggers (Trigger)
- Supports recipe predicates (Predicate) for conditional checks
- Supports multiple recipe outcomes (Outcome)
- Built-in priority system
- Full datapack support
Recipe Components:
- Trigger: Conditions to trigger the recipe (e.g., item dropping, explosions)
- Predicate: Recipe matching conditions
- Outcome: Recipe execution results (e.g., spawning items, setting blocks)
Moveable Entity Block Module
Allows blocks with block entities to be pushed by pistons while preserving their data.
Usage Example:
public class MyBlock extends Block implements IMoveableEntityBlock {
@Override
public CompoundTag clearData(Level level, BlockPos pos) {
// Return block entity data to preserve
BlockEntity be = level.getBlockEntity(pos);
return be != null ? be.saveWithoutMetadata(level.registryAccess()) : new CompoundTag();
}
@Override
public void setData(Level level, BlockPos pos, CompoundTag nbt) {
// Restore block entity data at new position
BlockEntity be = level.getBlockEntity(pos);
if (be != null) {
be.loadAdditional(nbt, level.registryAccess());
}
}
}
Registrum Module
A registration system based on Registrate, simplifying the registration process for items, blocks, entities, etc.
Key Features:
- Chain-style API design
- Automatic language file generation
- Automatic datapack generation
- Support for various builders
Usage Example:
public static final Registrum REGISTRUM = Registrum.create("my_mod");
public static final RegistryEntry<Item> MY_ITEM = REGISTRUM
.item("my_item", Item::new)
.properties(p -> p.stacksTo(16))
.register();
Main Module
anvillib-neoforge-1.21.1 is the aggregate artifact. It bundles and re-exports:
configintegrationnetworkrecipemoveable-entity-blockregistrum
Dependency Integration
Gradle (Groovy DSL)
repositories {
mavenCentral() // This project is already uploaded to Maven Central
}
dependencies {
// Full library
implementation "dev.anvilcraft.lib:anvillib-neoforge-1.21.1:2.0.0"
// Or import individual modules as needed
implementation "dev.anvilcraft.lib:anvillib-config-neoforge-1.21.1:2.0.0"
implementation "dev.anvilcraft.lib:anvillib-integration-neoforge-1.21.1:2.0.0"
implementation "dev.anvilcraft.lib:anvillib-network-neoforge-1.21.1:2.0.0"
implementation "dev.anvilcraft.lib:anvillib-recipe-neoforge-1.21.1:2.0.0"
implementation "dev.anvilcraft.lib:anvillib-moveable-entity-block-neoforge-1.21.1:2.0.0"
implementation "dev.anvilcraft.lib:anvillib-registrum-neoforge-1.21.1:2.0.0"
}
Gradle (Kotlin DSL)
repositories {
mavenCentral() // This project is already uploaded to Maven Central
}
dependencies {
implementation("dev.anvilcraft.lib:anvillib-neoforge-1.21.1:2.0.0")
// Optional single-module example
implementation("dev.anvilcraft.lib:anvillib-network-neoforge-1.21.1:2.0.0")
}
Keep the dependency version aligned with release tags (current project property is
mod_version=2.0.0).
Building the Project
# Clone repository
git clone https://github.com/Anvil-Dev/AnvilLib.git
cd AnvilLib
# Build on macOS / Linux
./gradlew build
# Build on Windows (PowerShell / CMD)
gradlew.bat build
Requirements
- Java 21+
- Minecraft 1.21.1
- NeoForge 21.1.x
License
This project is licensed under the MIT License.
Part of the Registrum module code is based on Registrate and follows the Mozilla Public License 2.0.
Author
- Gugle - Main developer
Links
Screenshots
Gallery
Versions
Files
Relations
Project Relations
More like this
Similar Mods
Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.
On ModDex
Community snapshot
By the numbers
Statistics
Want to reach Minecraft players?
We're looking for a server hosting partner to feature here and other parts of the site. Interested? Send us a message!
Get in touchGet it on
Available Platforms
On ModDex
Community snapshot
By the numbers