Skip to content

Клиентские GameRules и помощники GUI

Класс помощникаСреда выполненияНазначение
ClientGameRuleHelperКлиент / Встроенный серверЗапрос значений GameRules в потоке клиента
ConfigHelperCommon (Клиент/Сервер)Атомарная загрузка, сохранение и бэкап конфигурации JSON
GuiHelperКлиентПомощники экранов для ModMenu / Cloth Config

🖥️ Безопасность выделенного сервера от сбоев загрузки классов

Чтобы обеспечить 100% совместимость с выделенным сервером и избежать вылетов из-за обращения к классам клиента, все GUI-помощники защищены ленивой проверкой (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT).

ascii
                      DynamicGameRuleManager.getInt(level, ruleKey)

                    ┌───────────────────┴───────────────────┐
                    ▼                                       ▼
          [ level instanceof ServerLevel ]       [ Client Environment ]
                    │                                       │
                    ▼                                       ▼
            Direct Level Lookup                   ClientGameRuleHelper
                                            (Queries Integrated Server)

📄 Атомарная замена JSON в ConfigHelper

ConfigHelper гарантирует надежное сохранение файлов конфигурации без риска повреждения при выключении питания:

  1. Записывает новые данные во временный файл config.json.tmp.
  2. Проверяет структуру JSON и размер файла.
  3. Создает резервную копию config.json.bak.
  4. Выполняет атомарную замену config.json.tmp -> config.json через Files.move(..., StandardCopyOption.ATOMIC_MOVE).

🔗 Связанные страницы

Official documentation & web portal for Dasik Igaijinn mods.