Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Weapon Neon Contour Mod
Adds dynamic neon contours for high-quality weapons. Fully optimized, supports dual/two-handed custom weapons, multiplayer, and includes Server Lockdown config sync.
| Date uploaded | 16 hours ago |
| Version | 2.8.5 |
| Download link | Kayfovi-Weapon_Neon_Contour_Mod-2.8.5.zip |
| Downloads | 17 |
| Dependency string | Kayfovi-Weapon_Neon_Contour_Mod-2.8.5 |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured and includes unstripped Unity DLLs.
Preferred version: 5.4.2200README
Weapon Neon Contour Mod (Valheim) — v2.8.5
Модификация для игры Valheim на базе платформы BepInEx, которая добавляет динамические светящиеся (неоновые) контуры вокруг оружия высокого качества. Мод полностью оптимизирован для игры в мультиплеере, поддерживает кастомное оружие из сторонних дополнений и включает систему принудительной синхронизации и блокировки конфигураций на стороне сервера.
🌟 Основные особенности
-
Индикатор качества: Светящийся контур появляется только на оружии 5-го уровня качества и выше.
-
Динамическая палитра: Цвет и пульсация свечения автоматически меняются в зависимости от уровня прокачки предмета:
- Уровень 5–7: Глубокий синий / Темно-голубой эффект.
- Уровень 8–10: Неоновый голубой / Магический фиолетовый перелив.
- Уровень 11–13: Яркий розовый / Пурпурный градиент.
- Уровень 14+: Огненный оранжевый / Насыщенный красный контур (поддерживает моды на сверх-прокачку).
-
15 независимых категорий: Индивидуальные настройки для всех типов ванильного и кастомного оружия (Топоры, Мечи, Копья, Магия, Кастеты и их двуручные/парные аналоги).
-
Честный 3D Bloom: Использование нативного игрового шейдера Custom/Piece с поддержкой _EMISSION обеспечивает честное свечение контуров в темноте и интеграцию с графическими модами на постобработку.
-
Server Lockdown: Встроенная система защиты и подчинения конфигураций. Администраторы серверов могут принудительно заблокировать локальные настройки клиентов и транслировать серверный эталон.
🛠 Оптимизация и Производительность
Данный плагин спроектирован с учетом минимизации нагрузки на процессор и видеокарту:
- Тайм-аут проверок (Кэширование): Тяжелые операции поиска компонентов в иерархии Unity и сетевые запросы ZDO выполняются всего 2 раза в секунду (раз в 0.5с), а не каждый кадр в Update().
- Zero GC Allocation: Использование кэшированных ID свойств шейдеров (Shader.PropertyToID) вместо строковых названий полностью предотвращает спам памяти и микрофризы от сборщика мусора (Garbage Collector).
- Мировая привязка (World Space следование): Для двуручного и парного оружия реализована ежекадровая синхронизация матриц трансформации с активным визуальным представлением игрока (VisEquipment). Это полностью решило проблему «отрыва» и зависания неона в воздухе во время анимаций атак и замахов.
- Обратная совместимость: Код написан строго под стандарт C# 7.3 без использования фич современных версий языка, что гарантирует успешную сборку в любой старой среде Unity / MSBuild без ошибок вывода типов.
💾 Установка
Для игроков (Клиент):
- Убедитесь, что у вас установлен BepInEx Pack для Valheim.
- Скопируйте скомпилированный файл ValheimWeaponContourMod.dll в папку Valheim/BepInEx/plugins/.
- Запустите игру один раз для автоматической генерации конфигурационного файла.
Для администраторов (Сервер):
- Поместите ValheimWeaponContourMod.dll в папку BepInEx/plugins/ вашего выделенного сервера.
- В сгенерированном файле конфигурации настройте глобальные эталоны свечения и активируйте параметр блокировки.
⚙️ Настройка конфигурации
Файл конфигурации com.yourname.weaponcontour.cfg автоматически создается в папке BepInEx/config/.
Глобальные настройки ([Служебные])
- LockConfiguration (По умолчанию: true): При включении на сервере все подключившиеся клиенты принудительно перейдут на настройки сервера, а их локальное меню конфигурации будет временно заблокировано.
Настройки категорий (Пример для [Одноручные мечи])
Каждая из 15 категорий оружия имеет следующие параметры:
- Thickness (Толщина): Масштаб обводки контура относительно оригинального меша.
- Intensity (Яркость): Сила свечения Emission-материала (для категорий Двуручные топоры, Двуручные ножи и Двуручные кулаки стартовое значение по умолчанию установлено в 0 — скрыто).
- WaveSpeed (Скорость): Скорость анимации пульсации и перелива цвета.
- MaxAlpha (Прозрачность): Максимальный порог прозрачности неонового слоя.
- OffsetX / OffsetY / OffsetZ: Тонкое смещение контура по осям влево/вправо, вверх/вниз и вперед/назад для идеальной калибровки кастомных моделей.
👥 Сетевая синхронизация (RPC)
Синхронизация данных реализована через оптимизированный строковый RPC-метод RPC_WeaponContour_SyncString встроенного сетевого движка Valheim (ZRoutedRpc).
- Данные передаются в виде легкой текстовой строки при успешном подключении игрока (OnNewConnection).
- Метод полностью автономен, не требует подключения сторонних тяжелых библиотек игры (таких как assembly_utils.dll) и автоматически возвращает управление игроку при его выходе в одиночный режим.
📄 Лицензия
Этот проект распространяется под свободной лицензией. Вы можете модифицировать, оптимизировать и адаптировать данный код под нужды своих серверов или сборок модификаций.
CHANGELOG
История изменений (Changelog) — Weapon Neon Contour Mod
Все заметные изменения в этом проекте будут документироваться в данном файле.
2.7.6 Добавлено
- Система Server Lockdown (Блокировка конфигурации): Добавлен глобальный параметр LockConfiguration в категорию [Служебные]. Если он включен (true) на стороне сервера, плагин принудительно блокирует меню настроек клиентов и подчиняет их серверным эталонам.
- Исправлена критическая ошибка приведения типов
2.7.7 Изменено
- Стабилизация сетевого кода: Полностью удален экспериментальный перехват конфигураций через события игрового текстового чата (Chat.OnChatMessage), вызывавший полное исчезновение контуров со всех предметов.
- Безопасный RPC-движок: Возвращена работа через системный ZRoutedRpc, но тип данных изменен с тяжелого ZPackage на легкую строку string. Это полностью решило проблему без необходимости подключения внешней библиотеки assembly_utils.dll.
- Сетевое подчинение конфигов (Server Sync): Реализована автоматическая синхронизация настроек от сервера к подключающимся игрокам. Клиенты временно перенимают параметры сервера на время сессии, не перезаписывая локальный файл конфигурации на диске. При отключении локальные настройки возвращаются.
2.7.8 Изменено
- Мировая синхронизация мешей (World Space): Изменен фундаментальный подход к отрисовке неона на персонажах. Вместо дублирования скрытых мешей оригинального статического префаба, плагин теперь динамически находит активный меш оружия в руках игрока (VisEquipment) и принудительно копирует его позицию и поворот в мировых координатах каждый кадр.
- Времено отключен неон: Для категорий Двуручные топоры, Двуручные ножи и Двуручные кулаки установлено в 0f (неон скрыт по умолчанию до ручной настройки).
2.7.9 Добавлено
- Разделение категорий оружия: Добавлены "Двуручные кулаки" для корректного разделения и калибровки тяжелых кастетов/когтей из контентных модификаций.
2.8.0 Изменено
- Безопасное чтение API Valheim: Обойти уровни защиты protected и private для переменных m_moveDir и m_wallRunning путем их замены на открытый метод GetMoveDir() и стандартный расчет скорости физики Unity GetVelocity().
2.8.1 Неисправлено
- Зависание двуручного оружия в воздухе:
2.8.2 Добавлено
- Новые раздельные категории: В систему распределения добавлены три независимые категории: "Двуручные топоры", "Двуручные ножи", "Двуручные дубины".
2.8.3 Изменено
- Обновлен метод сортировки DetermineCategory(): двуручное оружие теперь безошибочно распределяется по типам навыков и маскам имен префабов (battleaxe, ripper, sled), предотвращая их ошибочное попадание в базовые одноручные группы.
- Изменена стартовая калибровка толщины по умолчанию для категории "Одноручные мечи": defaultThickness установлено строго в значение 1f.
2.8.4 Оптимизация
- Снижение нагрузки на FPS:
- Очистка памяти от GC: Строковые обращения к свойствам шейдеров заменены на кэшированные
- Честный Bloom и Emission: Произведена замена плоского UI-шейдера на нативный 3D-шейдер игры
2.8.5 Исправлено
- Мультиплеерная синхронизация: Добавлено чтение сетевых ZDO-ключей данных игры (RightItemQuality и LeftItemQuality). Это позволило неонам корректно отображаться на оружии других игроков при просмотре со стороны в сетевой игре.