Skip to content

✨ Притягивание сфер опыта (MC 26.1.2)

📌 Отказ от ответственности за исходный код репозитория: Документация в этой Wiki отражает текущее состояние исходного кода в репозитории, которое может включать недавние невыпущенные коммиты или функции в разработке до публичных релизов на CurseForge и Modrinth.

Инфоблок механикиТехнические параметры
Целевой класс сущностиnet.minecraft.world.entity.ExperienceOrb
Класс менеджераnet.instantgratification.magnet.MagnetManager
Включающее правило GameRuleig:magnet_affects_xp (По умолчанию: true)
Запрос сканированияplayer.level().getEntitiesOfClass(ExperienceOrb.class, area, Entity::isAlive)
Тип частицParticleTypes.ELECTRIC_SPARK
Лимит источников частицig:magnet_max_particle_sources (По умолчанию: 5)

📖 Механика вакуума сфер опыта

В философии Instant Gratification оставлять сферы опыта без присмотра противоречит комфортному игровому процессу. В Minecraft 26.1.2 сущности ExperienceOrb притягиваются с точно такой же скоростью и физикой фазового сдвига, как и выброшенные предметы.

+------------------+     getEntitiesOfClass     +-----------------------+     MagnetMovement.pull     +--------------------+
| Область AABB     | -------------------------> | Список ExperienceOrb  | --------------------------> | Сбор игроком       |
+------------------+                            +-----------------------+                             +--------------------+
                                                             |
                                                             v
                                                [Применить фазовый сдвиг]
                                                [Применить вектор Lerp]
                                                [Ограниченные искры частиц]

⚡ Синхронизированная физика и фазовый сдвиг

  1. Фазовый сдвиг (NoClip): Сферы опыта проходят сквозь твердые блоки, что предотвращает их застревание за стенами или в углах потолка.
  2. Интерполяция скорости: Сферы плавно ускоряются по направлению к глазам игрока с учетом настроенных процентов скорости и ускорения.
  3. Фильтрация видимости (LOS): Если параметр ig:magnet_los_only включен, сферы опыта должны быть видны игроку либо обладать активным импульсом намагничивания.

🛡️ Защита от лагов и пул частиц

java
int maxParticleSources = ModGameRules.getInt(player.level(), ModGameRules.MAGNET_MAX_PARTICLE_SOURCES);
int particleSourceCount = 0;

for (ExperienceOrb orb : orbs) {
    boolean shouldSpawnParticles = false;
    if (particleSourceCount < maxParticleSources) {
        shouldSpawnParticles = true;
        particleSourceCount++;
    }
    MagnetMovement.pull(orb, player, shouldSpawnParticles);
}
  • Максимум источников частиц: Только первые $N$ сущностей за тик испускают визуальные шлейфы.
  • Безопасное переключение на клиенте: В MagnetMovement.java, если мир не является ServerLevel, частицы корректно направляются через level.addParticle(...).

⚙️ Связанные настройки и игровые правила (GameRules)

GameRuleТипПо умолчаниюОписание
ig:magnet_affects_xpBooleantrueПритягивает ли магнит сферы опыта.
ig:magnet_particlesBooleantrueГлавный переключатель визуальных эффектов частиц.
ig:magnet_particle_countInteger1Количество искр на сущность за тик генерации частиц.
ig:magnet_max_particle_sourcesInteger5Максимум сущностей, испускающих частицы одновременно.

🔗 Связанная документация Вики

Official documentation & web portal for Dasik Igaijinn mods.