
You are viewing a potentially older version of this package. View Latest Version
ModHub
One hotkey menu (F7) that gathers settings windows of all supported mods. Shared UI kit for a unified look.ModHub
Одно меню для всех модов. Жмёшь F7 — появляется окно с плитками, клик по плитке открывает настройки нужного мода.
Возможности
- Окно-сетка в стиле Valheim: тёмные слоты, золотая рамка, подпись внизу.
- Плитка мода показывает иконку предмета игры (например, Hammer или Hoe), свою иконку или цветной кружок.
- Подсказка внизу окна при наведении на плитку.
- Пока открыто меню, персонаж и камера стоят на месте, а курсор свободен.
- Если открыто меню какого-то мода, повторное нажатие F7 закрывает его.
- Esc закрывает хаб и не открывает меню паузы.
- Общий UI-кит (
HubUI): окна, кнопки, ползунки, галочки и поля в одном стиле для всех модов. - Масштаб интерфейса подстраивается под разрешение.
- Настройки прямо в игре: кнопка-шестерёнка в левом верхнем углу хаба. Там можно переназначить клавишу (в том числе с Ctrl, Shift или Alt), сменить надпись, число колонок и рядов и масштаб, скрыть ненужные плитки и сбросить всё по умолчанию. Изменения сохраняются в cfg сразу.
Конфиг (BepInEx/config/kaefchik.modhub.cfg)
Всё это можно менять и через шестерёнку в хабе.
| Параметр | По умолчанию | Что делает |
|---|---|---|
| General.HubKey | F7 | Клавиша хаба |
| UI.Title | MODS | Надпись внизу окна |
| UI.Columns | 3 | Плиток в ряду |
| UI.MaxRows | 3 | Рядов без прокрутки |
| UI.Scale | 1.0 | Масштаб всех меню на ModHub |
| UI.HiddenTiles | (пусто) | Скрытые плитки |
Для разработчика: подключение мода
Мод ставит жёсткую зависимость от ModHub, и его меню открывается только из хаба:
[BepInDependency(ModHub.ModHubAPI.GUID)]
public class MyPlugin : BaseUnityPlugin
{
void Awake()
{
ModHub.ModHubAPI.Register(
id: "mymod", title: "MyMod",
open: MyMenu.Open, close: MyMenu.Close, isOpen: () => MyMenu.IsOpen,
itemIcon: "Hammer", description: "Что делает мод", order: 50);
}
}
close и isOpen нужны, чтобы F7 закрывала открытое меню мода. В MyMenu.Open и Close вызывай ModHubAPI.SetInputBlock("mymod", true/false).
Готовые примеры: SpawnMenu.cs в SpawnTweaks и BuildMenu.cs в BuildTweaks.
Предлагаемые иконки для текущих модов:
| Мод | id | itemIcon / цвет |
|---|---|---|
| CustomRecipes | customrecipes | оранжевый кружок |
| BuildTweaks | buildtweaks | Hammer |
| TerraHoe | terrahoe | Hoe |
| GrappleHookPlus | grapple | Chain |
| PartyPlus | party | зелёный кружок |
| SpawnTweaks | spawntweaks | TrophyGreydwarf |
| BiomeMusic | biomemusic | голубой кружок |
| FoodTweaks (скоро) | foodtweaks | MeadHealthMinor |
Как нарисовать меню мода в общем стиле:
void OnGUI()
{
if (!_open) return;
var screen = ModHub.HubUI.BeginScaled();
var win = ModHub.HubUI.Centered(screen, 700, 500);
ModHub.HubUI.Window(win, "Recipes");
if (ModHub.HubUI.CloseButton(win)) Close();
_value = ModHub.HubUI.Slider(new Rect(win.x + 40, win.y + 100, 620, 30), "Множитель", _value, 0f, 5f);
if (ModHub.HubUI.Button(new Rect(win.x + 40, win.yMax - 70, 140, 40), "Назад")) { Close(); ModHub.ModHubAPI.OpenHub(); }
ModHub.HubUI.EndScaled();
}
API для серверных настроек
ModHubAPI.SetInputBlock(id, bool): блокирует управление и не даёт Esc открыть меню паузы.ModHubAPI.HubKey: текущая клавиша хаба.HubNet.IsServer,HubNet.ServerRpc(),HubNet.FindPeer(rpc),HubNet.IsAdmin(peer): помощники для модов, где админ меняет серверный конфиг прямо из меню (так устроены SpawnTweaks и BuildTweaks).
Сборка и выкладка
- Открой
ModHub.csprojв Visual Studio и проверь путиValheimDirиProfileDir. - Собери проект. После сборки DLL сама скопируется в профиль
Kaefchik. - Для Thunderstore упакуй в zip:
manifest.json,icon.png,README.mdиplugins/ModHub.dll. Перед выкладкой проверь, какая версияBepInExPack_Valheimсейчас актуальна, и при необходимости поправь её в манифесте.