AnvilLib
AnvilLib — это библиотека модов для NeoForge, разработанная Anvil-Dev, которая предоставляет разработчикам модов Minecraft ряд практичных инструментов и фреймворков.
- Загрузчики
- NeoForge
- Скачиваний на Modrinth
- 11,7 тыс.
- Подписчиков на Modrinth
- 3
- версий
- 270
- Обновлён
- 10 октября 202610 окт.
- Опубликован
- в 2026
Коротко о моде
Нужен и в игре, и на сервере
AnvilLib
AnvilLib — это библиотека модов для NeoForge, разработанная Anvil Dev, предоставляющая разработчикам модов для Minecraft ряд практичных инструментов и фреймворков.
Возможности
AnvilLib использует модульную архитектуру и включает следующие функциональные модули:
| Модуль | Описание |
|---|---|
| Config | Система конфигурации на основе аннотаций |
| Integration | Фреймворк интеграции совместимости модов |
| Network | Сетевой API с автоматической регистрацией пакетов |
| Recipe | Система рецептов в мире |
| Moveable Entity Block | Поддержка блоков-сущностей, двигаемых поршнями |
| Registrum | Упрощённая система регистрации |
| Main | Сводный модуль, объединяющий все подмодули |
Описание модулей
Модуль Config
Предоставляет систему управления конфигурацией на основе аннотаций для упрощения определения и управления конфигурациями модов.
Ключевые возможности:
- Определение классов конфигурации с помощью аннотации
@Config - Добавление комментариев к конфигурации с помощью
@Comment - Определение числовых диапазонов с помощью
@BoundedDiscrete - Создание вложенных конфигураций с помощью
@CollapsibleObject - Автоматическая генерация GUI клиентской конфигурации
Пример использования:
@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
Предоставляет фреймворк для интеграции модов, поддерживающий автоматическую загрузку кода интеграции в зависимости от наличия других модов.
Ключевые возможности:
- Объявление классов интеграции с помощью аннотации
@Integration - Поддержка сопоставления диапазонов версий
- Поддержка различных сред выполнения (CLIENT / DEDICATED_SERVER / DATA)
Пример использования:
@Integration(value = "jei", version = "[19.0,)")
public class JEIIntegration {
public void init() {
// JEI integration logic
}
}Модуль Network
Предоставляет абстракцию сетевого взаимодействия NeoForge с автоматической регистрацией пакетов на основе пакетов.
Ключевые возможности:
- Определение направления пакета с помощью
IClientboundPacket/IServerboundPacket/IInsensitiveBiPacket - Автоматическая регистрация классов пакетов в пакете через
NetworkRegistrar.register(...) - Поддержка протоколов
PLAY,CONFIGURATIONиCOMMON
Пример использования:
@SubscribeEvent
public static void onRegisterPayload(RegisterPayloadHandlersEvent event) {
PayloadRegistrar registrar = event.registrar("1");
NetworkRegistrar.register(registrar, "my_mod");
}Модуль Recipe
Предоставляет систему рецептов в мире, позволяющую выполнять рецепты в мире (а не в верстаках).
Ключевые возможности:
- Поддержка пользовательских триггеров рецептов (Trigger)
- Поддержка предикатов рецептов (Predicate) для условных проверок
- Поддержка нескольких результатов рецептов (Outcome)
- Встроенная система приоритетов
- Полная поддержка датапаков
Компоненты рецептов:
- Trigger: Условия для запуска рецепта (например, выброс предмета, взрывы)
- Predicate: Условия соответствия рецепта
- Outcome: Результаты выполнения рецепта (например, спавн предметов, установка блоков)
Модуль Moveable Entity Block
Позволяет толкать поршнями блоки с block entity, сохраняя их данные.
Пример использования:
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
Система регистрации на основе Registrate, упрощающая процесс регистрации предметов, блоков, сущностей и т.д.
Ключевые особенности:
- API в стиле цепочек
- Автоматическая генерация языковых файлов
- Автоматическая генерация датапаков
- Поддержка различных билдеров
Пример использования:
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();Основной модуль
anvillib-neoforge-1.21.1 — это агрегирующий артефакт. Он включает и реэкспортирует:
configintegrationnetworkrecipemoveable-entity-blockregistrum
Подключение зависимости
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")
}Держите версию зависимости в соответствии с тегами релизов (текущее свойство проекта —
mod_version=2.0.0).
Сборка проекта
# 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Требования
- Java 21+
- Minecraft 1.21.1
- NeoForge 21.1.x
Лицензия
Этот проект распространяется под лицензией MIT.
Часть кода модуля Registrum основана на Registrate и распространяется по Mozilla Public License 2.0.
Автор
- Gugle — главный разработчик
Ссылки
Частые вопросы
Как установить AnvilLib?
Установите NeoForge под свою версию Minecraft, скачайте AnvilLib под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть AnvilLib?
У AnvilLib есть сборки для Minecraft 1.21.1–26.1, 26.1.2.
Нужен ли AnvilLib на сервере?
Нужен и в игре, и на сервере