Скачать Roid's Old Obsidian — Minecraft Моды — MetaMods

Roid's Old Obsidian

Активный

Установок

0

Последнее обновление

3 недели назад
Клиент
Утилиты

Roid's Old Obsidian

Изначальный мод Jsoned Old Obsidian при использовании большого количества рецептов демонстрировал серьезные проблемы с производительностью, как видно из отчетов профилирования. Именно это побудило меня создать собственную версию этого мода. Хотя у меня нет точных бенчмарков, пользователи, которые ранее жаловались на замедление загрузки чанков (более 80% времени уходило на обработку оригинального мода), сообщили об отсутствии заметного влияния на производительность после перехода на эту версию.

Ключевые возможности

Основная функция мода заключается в автоматическом преобразовании блоков при взаимодействии жидкостей. Когда один блок (назовем его жидкость1) активирует обновление состояния другого блока (пыли), который находится рядом с третьим блоком (жидкость2), пылевой блок превращается в результат, определенный в конфигурации JSON. Примечательно, что жидкость1 и жидкость2 не обязательно должны быть жидкостями в техническом смысле.

Возьмем классический пример: жидкость1 - лава, пыль - красная пыль, жидкость2 - вода. В результате получаем восстановление старого бага превращения красной пыли при контакте с лавой возле воды.

Конфигурация такого преобразования в JSON выглядит следующим образом:

{
    "liquid1": "minecraft:flowing_lava",
    "liquid2": [
        "minecraft:flowing_water",
        "minecraft:water"
    ],
    "dust": "minecraft:redstone_wire",
    "result": "minecraft:obsidian"
}

Расширенная система сопоставления

Мод поддерживает несколько методов идентификации блоков:

  • Сопоставление по конкретному состоянию блока
  • Сопоставление по типу блока
  • Поддержка словаря руд (ore dictionary using picked block)
  • Регулярные выражения (используя формат registryname:meta)
  • Любое другое сопоставление через GroovyScript

Добавление новых методов сопоставления осуществляется через нативный доступ к методам GroovyScript. Подробная документация доступна в вики проекта.

Обслуживание и производительность

Перезагрузка конфигурации

Все добавленные через JSON преобразования можно перезагрузить без перезапуска сервера, используя команду /jsonedoldobsidian:conversion_reload

Оптимизация работы

Основная проблема оригинального Jsoned Old Obsidian заключалась в использовании регулярных выражений для каждого события NeighborNotifyEvent, что создавало значительную нагрузку на производительность из-за повторяющихся ресурсоемких операций.

Эта версия включает следующие оптимизации:

  • Избегает использования регулярных выражений там, где это не необходимо (например, используется простое сравнение == для сопоставления блоков)
  • Выполняет предварительные вычисления для блоков, состояний блоков, идентификаторов руд и компиляции регулярных выражений при добавлении рецептов, а не при их сопоставлении
  • Использует хэширование для сопоставления liquid1

Эти улучшения значительно снижают нагрузку на систему и обеспечивают стабильную работу даже при большом количестве зарегистрированных рецептов.

Участники проекта
roidrole

roidrole

Создан: 29 сен 2025

ID: 269171