🔄 Совместимость версий и жизненный цикл
На этой странице представлена таблица совместимости версий, правила обратной совместимости и управление зависимостями Agrarian Reform.
📌 Отказ от ответственности по исходному коду: Документация отражает текущее состояние репозитория, включая невыпущенные коммиты и функции в разработке.
📊 Матрица совместимости версий Minecraft
| Версия Minecraft | Сборка мода | Статус | Java | Fabric Loader | Ограничение зависимостей |
|---|---|---|---|---|---|
| Minecraft 26.3 | 2.2.18+26.3 | Основная ветка (Снапшот 6+) | Java 25 | >=0.16.9 | "minecraft": ">=26.3-" |
| Minecraft 26.2 | 2.2.18+26.2 | Основная ветка (Стабильная) | Java 25 | >=0.16.9 | "minecraft": ">=26.2-" |
| Minecraft 26.1.2 | 1.2.7+R-26.1.2 | Архивный релиз | Java 25 | >=0.15.0 | "minecraft": ">=26.1.2" |
🛡️ 1 Jar 1 Version и открытые границы версий
Agrarian Reform строго придерживается политики 1 Jar 1 Version и правил прямой совместимости:
- Индивидуальная сборка: Каждый скомпилированный JAR собирается и тестируется под конкретный целевой релиз Minecraft (
agrarian-reform-2.2.18+26.2.jarиagrarian-reform-2.2.18+26.3.jar). - Открытые нижние границы: В
fabric.mod.jsonзависимость Minecraft задается открытым диапазоном:jsonи для 26.3:"minecraft": ">=26.2-"jsonЭто предотвращает ложные блокировки Fabric Loader при игре на минорных патчах."minecraft": ">=26.3-" - Свободные зависимости: Зависимости
fabric-apiиdasik-libraryиспользуют открытые границы ("*"), предотвращая конфликты при обновлении библиотек.
🔄 Современная архитектура и SavedData Codec
- Ежегодная система релизов: Minecraft перешел на систему
Year.Drop.Patch. Версии 26.2 и 26.3 представляют собой актуальные релизы. - Эра без обфускации: Базы кода 26.x работают на официальных маппингах Mojang. Устаревшие маппинги Yarn (
world,getWorld) полностью удалены. - Современный SavedData: Сохранение данных мира использует
SavedDataTypeс кодеками Codec вместо устаревшего ручного разбора NBT:
java
public static final SavedDataType<ContinuumData> TYPE = new SavedDataType<>(
Identifier.fromNamespaceAndPath("agrarian_reform", "continuum"),
ContinuumData::create,
Codec.unboundedMap(Codec.STRING, Codec.LONG).xmap(
map -> {
ContinuumData data = new ContinuumData();
map.forEach((k, v) -> data.timestamps.put(Long.parseLong(k), v));
return data;
},
data -> {
Map<String, Long> map = new HashMap<>();
data.timestamps.forEach((k, v) -> map.put(k.toString(), v));
return map;
}
),
DataFixTypes.SAVED_DATA_MAP_DATA
);См. также: Руководство по Minecraft 26.2 и 26.3 и API и интеграция аддонов.
