Valheim
You are viewing a potentially older version of this package. View Latest Version
Install with App

Details

Date Uploaded
Downloads
27
Size
40KB
ADDatHost Valheim hosting
30% off

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).

Сборка и выкладка

  1. Открой ModHub.csproj в Visual Studio и проверь пути ValheimDir и ProfileDir.
  2. Собери проект. После сборки DLL сама скопируется в профиль Kaefchik.
  3. Для Thunderstore упакуй в zip: manifest.json, icon.png, README.md и plugins/ModHub.dll. Перед выкладкой проверь, какая версия BepInExPack_Valheim сейчас актуальна, и при необходимости поправь её в манифесте.
Thunderstore development is made possible with ads. Please consider making an exception to your adblock.