


Unified client-side V Rising UI mod that surfaces every chat command of the Bloodcraft server mod — with first-class support for KindredCommands and KindredLogistics on the same server.
Repo: https://github.com/KDavidP1987/BloodCraftHub Status: v0.9.1 — public on Thunderstore. 16 tabs across BLOODCRAFT / KINDRED / HELP, 5 secondary overlays (including the Professions overlay), every chat command from the 3 backing server mods surfaced as forms + buttons (~250+ commands). v0.9.x adds dual text-size toggles, per-overlay transparency, a master overlay show/hide button, an opt-in chat suppression for familiar-action confirmations, and pulls ~25 read-data chat replies into the UI.
.wep get, .class l, .misc userstats, .clan list, etc.) appear in-UI as well as in chat, so you don't have to chase the chat box for the answer..lvl set <Player> <Level> in chat..fam boxes/.fam l replies.BloodCraftHub is a client-side mod. It does nothing on the server; install only on the V Rising client of the player who wants the UI.
Same flow — open r2modman, V Rising profile, search BloodCraftHub, install, launch.
BepInExPack_V_Rising 1.733.2 or compatible).BloodCraftHub.dll into <V Rising>/BepInEx/plugins/.When you connect to a server running Bloodcraft, a small floating BCH button appears top-right. Click to open the panel. Hover any control to see what it does — the description prints in the panel's bottom footer.
You don't need to be an admin to use BloodCraftHub — non-admin commands work for everyone. Admin tabs return permission errors gracefully if you're not authorized.
BloodCraftHub talks to the server through chat commands and Bloodcraft's signed Eclipse-protocol channel. It was tested against these versions:
| Mod | Tested version | Role |
|---|---|---|
| BepInEx for V Rising | BepInExPack_V_Rising 1.733.2 |
Loader (hard dependency) |
| Bloodcraft (server) | v1.13.21 | Primary integration target |
| KindredCommands (server) | v2.5.8 | Admin/player commands surfaced under KINDRED |
| KindredLogistics (server) | v1.6.0 | Personal/admin toggles surfaced under KINDRED |
| Eclipse (client, optional) | v1.3.13 | Source mod for the signed-protocol design; coexists, doesn't conflict |
| BloodCraftUI / OnlyFams (client, optional) | v1.1.0 | Source mod for the panel framework; coexists, doesn't conflict |
If the server is running a newer Bloodcraft, most things should still work — the chat-command grammar is fairly stable. If a tab silently does nothing on click, the server probably renamed a command and MessageService_Processing.cs's BCCOM_* constants need a bump.
LogOutput.log but the footer never updates while hovering, please open a GitHub issue..clan list — the other paginated commands (.castle plotsowned, .search item, etc.) accept a page int but don't have prev/next widgets yet. Type the command in chat for now.BloodCraftHub.dll and the post-build copy step errors.For the full open-issue list, see the project's GitHub issues.
BloodCraftHub is a client UI for server-side mods built by other developers. The features it surfaces would not exist without their work. If you use BCH, please also show the upstream mods some love:
Leveling, expertise, legacies, professions, familiars, classes, quests! The bulk of what BloodCraftHub surfaces (every BLOODCRAFT-group tab) is wrapping zfolmt's chat-command surface.
Server administration utilities and personal/admin logistics toggles. The KINDRED admin tabs (Players / Server / World) and the Logistics section all call into odjit's mods.
BCH was built on the V Rising server The Shadow Realm (Brutal PvE), maintained by Chaos. If you want to support BCH development directly:
BloodCraftHub is open source (MIT). Bug reports, feature ideas, and pull requests welcome at https://github.com/KDavidP1987/BloodCraftHub.
| Doc | Purpose |
|---|---|
CHANGELOG.md |
Full phase-by-phase history. Read this to catch up on what's been built. |
CONTRIBUTING.md |
Daily workflow, commit-message format, release procedure. |
docs/MOD_DESIGN.md |
User-facing feature/UX spec. |
docs/ARCHITECTURE.md |
Internal code structure and porting map from BloodCraftUI/Eclipse. |
docs/VERSIONING.md |
Semver policy, single-source-of-truth rules, how to bump. |
docs/PREFLIGHT.md |
Pre-commit / pre-release checklist. Enforced by tools/preflight.ps1. |
docs/LOCAL_TESTING.md |
How to side-load the built DLL into your V Rising client and verify it loads. |
docs/THUNDERSTORE.md |
Thunderstore packaging + publishing. |
cd BloodCraftHub
.\tools\install-hooks.ps1 # wires up the pre-commit + commit-msg hooks
cd BloodCraftHub
dotnet restore BloodCraftHub.sln
dotnet build BloodCraftHub.sln -c Release
Optional: deploy the built DLL directly to your client's BepInEx plugins folder:
# Default target is r2modman / Thunderstore Mod Manager "Default" profile.
dotnet build BloodCraftHub\BloodCraftHub.csproj -c Release -p:DeployToClient=true
# Override the r2modman profile name:
dotnet build BloodCraftHub\BloodCraftHub.csproj -c Release -p:DeployToClient=true -p:R2ModmanProfile=MyProfile
# Or target a non-r2modman install (vanilla Steam path):
dotnet build BloodCraftHub\BloodCraftHub.csproj -c Release `
-p:DeployToClient=true `
"-p:ClientPluginDirectory=C:\Program Files (x86)\Steam\steamapps\common\VRising\BepInEx\plugins"
Heads up: fully quit V Rising before redeploying. A running game file-locks the DLL and MSBuild's Copy step errors with
MSB3021. The compile itself still succeeds — just the copy fails.
BloodCraftHub/
├── BloodCraftHub.sln
├── docs/ ← read CHANGELOG + ARCHITECTURE first
├── tools/ ← preflight.ps1, bump-version.ps1, install-hooks.ps1
├── .githooks/ ← pre-commit + commit-msg
└── BloodCraftHub/ ← plugin project
├── BloodCraftHub.csproj
├── Manifest.props ← generates Thunderstore manifest.json
├── thunderstore.toml ← package metadata for tcli
├── Plugin.cs ← BepInEx entry
├── Core.cs ← runtime singleton
├── icon.png ← 256×256 BCH icon
├── Behaviors/
│ CoreUpdateBehavior.cs ← IL2CPP-registered MonoBehaviour, per-frame loop
├── Config/
│ Settings.cs ← BepInEx-bound, static accessors
├── Patches/ ← Harmony patches
│ ClientChatPatch ← inbound: Eclipse protocol + regex fallback + name harvest
│ InitializationPatch ← UI bring-up + LocalCharacter/User capture
│ GameManagerPatch / EscapeMenuPatch / UICanvasSystemPatch / VersionStringPatch
├── Services/
│ MessageService ← outbound chat injection (immediate send)
│ MessageService_Processing ← BCCOM_* command constants + regex pipeline
│ EclipseProtocolService ← MAC-signed protocol decode + registration
│ PlayerStateService ← single source of truth for parsed state
│ PlayerNameCacheService ← passive name harvest + autocomplete cache
├── UI/
│ BCHubUIManager ← root, owns floating button + lazy panels
│ TooltipHover ← hover-tooltip polling service
│ Framework/ ← UniverseLib + CustomLib + ModernLib (folded in)
│ Forms/
│ FormBuilder ← builds form panels from FormField specs
│ FormField ← TextField/IntField/EnumField<T>/BoolField/PlayerNameField
│ CollapsibleSection ← accordion wrapper, fires Toggled event
│ ModContent/
│ FloatingButtonPanel ← 40×40 BCH button (top-right)
│ MainPanel ← tabbed primary UI (Bloodcraft tabs + Quick Start)
│ MainPanel.KindredAdmin ← partial-class file: 3 KindredCommands admin sub-tabs
│ ExperienceOverlayPanel / FamiliarOverlayPanel
│ ModContent/Data/PanelType ← enum of every tab and overlay identity
├── Utils/ ← LogUtils + Extensions (Entity.Read/Write/Has, color helpers)
└── Resources/
├── PrefabGUIDs.cs ← static prefab GUID lookup (stub)
├── PrefabNameResolver.cs ← runtime PrefabCollectionSystem name lookup
├── SecretManager.cs ← HMAC shared-key loader (regex-parses secrets.json)
├── secrets.json ← embedded HMAC key (same default Bloodcraft+Eclipse ship)
└── Localization/English.json
MIT — see LICENSE.txt for the full text plus third-party attribution for ported code from BloodCraftUI (panthernet), Eclipse (zfolmt), and the runtime peers we integrate with: Bloodcraft (zfolmt), KindredCommands (odjit), and KindredLogistics (odjit).