BlueBeard.Core 0.1.0-ci.24

This is a prerelease version of BlueBeard.Core.
dotnet add package BlueBeard.Core --version 0.1.0-ci.24
                    
NuGet\Install-Package BlueBeard.Core -Version 0.1.0-ci.24
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="BlueBeard.Core" Version="0.1.0-ci.24" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="BlueBeard.Core" Version="0.1.0-ci.24" />
                    
Directory.Packages.props
<PackageReference Include="BlueBeard.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add BlueBeard.Core --version 0.1.0-ci.24
                    
#r "nuget: BlueBeard.Core, 0.1.0-ci.24"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package BlueBeard.Core@0.1.0-ci.24
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=BlueBeard.Core&version=0.1.0-ci.24&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=BlueBeard.Core&version=0.1.0-ci.24&prerelease
                    
Install as a Cake Tool

BlueBeard.Core

Shared foundation library for all BlueBeard plugins. Provides configuration management, common helpers, and the IManager lifecycle interface.

Installation

Add a project reference:

<ProjectReference Include="..\BlueBeard.Core\BlueBeard.Core.csproj" />

IManager

Standard lifecycle interface for all managers:

public interface IManager
{
    void Load();
    void Unload();
}

ConfigManager

XML-based configuration system with automatic validation and migration. New properties added to a config class are automatically populated with defaults on next load. Removed properties are cleaned up on save.

Setup

using BlueBeard.Core.Configs;

// In your plugin's Load():
var configManager = new ConfigManager();
configManager.Initialize(Directory); // RocketPlugin.Directory
configManager.LoadConfig<MyConfig>();

Defining a Config

using BlueBeard.Core.Configs;

public class MyConfig : IConfig
{
    public ushort SpawnEffectId { get; set; }
    public float CooldownSeconds { get; set; }
    public int MaxPlayers { get; set; }

    public void LoadDefaults()
    {
        SpawnEffectId = 1234;
        CooldownSeconds = 30f;
        MaxPlayers = 10;
    }
}

Reading and Reloading

// Read a loaded config:
var config = configManager.GetConfig<MyConfig>();

// Hot-reload from disk:
var updated = configManager.ReloadConfig<MyConfig>();

Configs are saved as {TypeName}.configuration.xml inside a Configs/ subfolder of the plugin directory.

Helpers

ThreadHelper

Bridge between background threads and Unity's main thread:

using BlueBeard.Core.Helpers;

// Run work off the main thread:
ThreadHelper.RunAsynchronously(() =>
{
    var data = LoadExpensiveData();
    // Return to main thread to use Unturned APIs:
    ThreadHelper.RunSynchronously(() =>
    {
        UnturnedChat.Say(player, $"Loaded {data.Count} items");
    });
});

// Async/await version:
ThreadHelper.RunAsynchronously(async () =>
{
    var data = await db.Table<MyEntity>().QueryAsync();
    ThreadHelper.RunSynchronously(() => ProcessOnMainThread(data));
});

MessageHelper

Thread-safe chat messaging (automatically dispatches to main thread):

using BlueBeard.Core.Helpers;

// Safe to call from any thread:
MessageHelper.Say(player, "Hello!", Color.green);
MessageHelper.Say("Server broadcast", Color.yellow);

SurfaceHelper

Snap a world position down to the terrain/structure surface:

using BlueBeard.Core.Helpers;

var groundPos = SurfaceHelper.SnapPositionToSurface(targetPosition);
// Optionally pass a custom layer mask:
var groundOnly = SurfaceHelper.SnapPositionToSurface(pos, RayMasks.GROUND);

BarricadeHelper

Extract barricade info from a raycast hit and change barricade ownership:

using BlueBeard.Core.Helpers;

if (BarricadeHelper.TryGetBarricadeFromHit(hitTransform, out var info))
{
    Logger.Log($"Hit barricade: {info.AssetName} (ID: {info.AssetId})");
}

BarricadeHelper.ChangeBarricadeOwner(transform, newOwnerSteamId, groupId);

CommandDocGenerator

Auto-generate markdown documentation for all CommandBase commands in your plugin:

using BlueBeard.Core.Helpers;

// In your plugin's Load() or OnLevelLoaded():
CommandDocGenerator.Generate(Directory);
// Writes one .md file per command to {pluginDirectory}/Commands/
Product Compatible and additional computed target framework versions.
.NET Framework net481 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETFramework 4.8.1

    • No dependencies.

NuGet packages (12)

Showing the top 5 NuGet packages that depend on BlueBeard.Core:

Package Downloads
BlueBeard.Database

Lightweight MySQL ORM for Unturned plugins. Attribute-based entity mapping, LINQ-to-SQL expressions, and automatic schema sync.

BlueBeard.Zones

Advanced zone management for Unturned. Trigger colliders, persistent storage, 26 enforcement flags, block lists, and CLI administration.

BlueBeard.Holograms

Proximity-based hologram system for Unturned. Pooled UI overlays, per-player state, and dynamic metadata.

BlueBeard.UI

Full-screen UI framework for Unturned. Hierarchical screens and dialogs with automatic event routing and per-player state.

BlueBeard.Effects

Managed effect emitter system for Unturned. Spatial patterns, audience targeting, and automatic lifecycle management.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0-ci.24 137 7/4/2026
0.1.0-ci.23 137 6/25/2026
0.1.0-ci.22 174 5/8/2026
0.1.0-ci.19 109 5/7/2026
0.1.0-ci.18 99 5/7/2026
0.1.0-ci.17 116 5/3/2026
0.1.0-ci.16 113 5/3/2026
0.1.0-ci.15 84 4/13/2026
0.1.0-ci.14 88 4/12/2026
0.1.0-ci.13 77 4/12/2026
0.1.0-ci.12 81 4/12/2026
0.1.0-ci.11 87 4/12/2026
0.1.0-ci.10 80 4/11/2026
0.1.0-ci.9 73 4/7/2026
0.1.0-ci.8 75 4/7/2026
0.1.0-ci.7 76 4/7/2026
0.1.0-ci.6 86 3/14/2026
0.1.0-ci.5 132 2/22/2026