Совместимость и межмодовые интеграции (MC 26.2)
Этот документ подробно описывает интеграцию со сторонними модами, динамическую рефлексию, работу со Stack Size Adjuster и совместимость с фермами в Minecraft 26.2.
📊 Информационный блок функции
| Интеграция | Тип | Статус совместимости | Механизм обработки |
|---|---|---|---|
| Magnet («Let me get that!») | Опционально | 🟢 100% бесшовно | Динамическая проверка через рефлексию (ig_magnet$isMagnetized / ig$isMagnetized) |
| Stack Size Adjuster | Опционально | 🟢 Динамическая синхронизация | Делегирует регистрацию max_clump_size методу getMaxStackSize() |
| YetAnotherConfigLib (YACL v3) | Опциональный GUI | 🟢 Поддерживается | Отложенная загрузка классов через GuiHelper.getOptionalYaclFactory |
| ModMenu | Опциональный GUI | 🟢 Поддерживается | Интеграция точки входа ModMenu |
| Ванильная автоматизация / Редстоун | Ядро | 🟢 100% соответствие | Поштучное извлечение воронками и наследование наименьшего возраста |
🧲 1. Защита предметов мода Magnet в полете
При использовании магнитов (например, Magnet: Let me get that!) предметы поднимаются в воздух и летят по трехмерной траектории к игроку.
┌───────────────────────────────────────────────────────────┐
│ Item In-Flight Magnet Trajectory │
│ │
│ [Item A (In-Flight)] --------> [Player] │
│ │ │
│ (Passes close to Item B on ground) │
│ │ │
│ ❌ WITHOUT MAGNET CHECK: │
│ Item A merges with B; flight velocity resets; │
│ Item snaps to ground. │
│ │
│ ✅ WITH ITEM CLUMPS MAGNET CHECK: │
│ Merge paused while in-flight; │
│ Smooth curve preserved straight to player! │
└───────────────────────────────────────────────────────────┘Item Clumps опрашивает состояние магнита через рефлексию без жестких зависимостей на этапе компиляции:
java
if (net.fabricmc.loader.api.FabricLoader.getInstance().isModLoaded("magnet")) {
try {
java.lang.reflect.Method isMagnetizedMethod;
try {
isMagnetizedMethod = this.getClass().getMethod("ig_magnet$isMagnetized");
} catch (NoSuchMethodException e) {
isMagnetizedMethod = this.getClass().getMethod("ig$isMagnetized");
}
if ((boolean) isMagnetizedMethod.invoke(this) || (boolean) isMagnetizedMethod.invoke(other)) {
ci.cancel();
return;
}
} catch (Throwable ignored) {}
}📦 2. Динамическое согласование со Stack Size Adjuster
При совместной установке со Stack Size Adjuster:
- Устранение дублирования правил: Item Clumps автоматически отключает регистрацию правила
item_clumps:max_clump_sizeи виджета в YACL. - Единая синхронизация лимитов: Ограничения объединения на земле запрашивают
itemStack.getMaxStackSize(), позволяя Stack Size Adjuster управлять лимитами глобально или для каждого предмета.
java
int maxClump;
if (net.fabricmc.loader.api.FabricLoader.getInstance().isModLoaded("stack-size-adjuster") ||
ItemClumpsFabric.MAX_CLUMP_SIZE == null) {
maxClump = thisStack.getMaxStackSize();
} else {
maxClump = DynamicGameRuleManager.getInt(this.level(), ItemClumpsFabric.MAX_CLUMP_SIZE);
}