Obsidian.MSBuild
2.0.1-nightly.g76d65868a6
dotnet add package Obsidian.MSBuild --version 2.0.1-nightly.g76d65868a6
NuGet\Install-Package Obsidian.MSBuild -Version 2.0.1-nightly.g76d65868a6
<PackageReference Include="Obsidian.MSBuild" Version="2.0.1-nightly.g76d65868a6" />
<PackageVersion Include="Obsidian.MSBuild" Version="2.0.1-nightly.g76d65868a6" />
<PackageReference Include="Obsidian.MSBuild" />
paket add Obsidian.MSBuild --version 2.0.1-nightly.g76d65868a6
#r "nuget: Obsidian.MSBuild, 2.0.1-nightly.g76d65868a6"
#:package Obsidian.MSBuild@2.0.1-nightly.g76d65868a6
#addin nuget:?package=Obsidian.MSBuild&version=2.0.1-nightly.g76d65868a6&prerelease
#tool nuget:?package=Obsidian.MSBuild&version=2.0.1-nightly.g76d65868a6&prerelease
Obsidian.MSBuild
An MSBuild package that packs your plugin into a version 2 .obby archive when it is built or published.
Installation
NuGet package: https://www.nuget.org/packages/Obsidian.MSBuild
Install-Package Obsidian.MSBuild
Instructions
Install the package and set the plugin metadata in your csproj:
<PropertyGroup>
<PluginId>ruby</PluginId>
<Version>1.2.0</Version>
<Title>Ruby</Title>
<Authors>Tides, Ada</Authors>
<Description>Adds rubies.</Description>
<ProjectUrl>https://example.com/ruby</ProjectUrl>
<PluginApiVersion>1.0.0</PluginApiVersion>
<PluginSide>both</PluginSide>
<PluginPublishDir>$(PublishDir)</PluginPublishDir>
<PluginAssetsDir>Resources/assets</PluginAssetsDir>
<PluginDataDir>Resources/data</PluginDataDir>
</PropertyGroup>
<ItemGroup>
<PluginDependency Include="gemlib" Version="[1.0,2.0)" Type="required" Ordering="after" Side="both" />
<PluginDependency Include="prettylib" Required="false" />
</ItemGroup>
Build (or publish) the plugin and <AssemblyName>.obby appears in PluginPublishDir.
Metadata
The task generates obsidian.mod.json from the properties above. If an obsidian.mod.json file exists in the
project directory (or wherever PluginMetadataFile points), it is packed as-is instead.
| JSON field | MSBuild source |
|---|---|
modId (required) |
PluginId |
version (required) |
Version |
assembly (required) |
AssemblyName |
displayName |
Title |
apiVersion |
PluginApiVersion |
authors |
Authors, split on commas |
description |
Description |
projectUrl |
ProjectUrl |
side |
PluginSide: both (default), server or client |
dependencies |
@(PluginDependency) items |
PluginDependency item metadata:
| Metadata | JSON field | Values |
|---|---|---|
Include or Id |
modId |
the dependency's mod id |
Version (or VersionRange) |
versionRange |
a NuGet/Maven range such as [1.0,2.0) or a minimum version; any version when omitted |
Type |
type |
required (default), optional, incompatible or discouraged |
Required |
type |
true maps to required, false to optional; ignored when Type is set |
Ordering |
ordering |
none, before or after |
Side |
side |
both, server or client |
Assets and data
The assets and data folders of the project are packed under assets/ and data/, laid out like a resource pack
and a data pack: assets/<namespace>/... for client resources and data/<namespace>/... for server data. Set
PluginAssetsDir or PluginDataDir in the project to pack other folders (paths relative to the project, or
absolute), or set one empty to pack no such folder. A folder that doesn't exist is skipped.
The data folder's JSON files are also given to the compiler, with their path in the folder, so that Obsidian's source
generator generates the plugin's blocks from data/<namespace>/blocks/*.json and keys for its tags from
data/<namespace>/tags/block and tags/item.
Archive layout
A version 2 .obby is a ZIP file:
| Path | Contents |
|---|---|
obsidian.mod.json |
Metadata (see above). |
<Assembly>.dll, <Assembly>.pdb, <Assembly>.deps.json |
The plugin assembly and its publish outputs. |
*.dll, *.pdb |
Libraries beside the main assembly, as dotnet publish lays them out. |
assets/<namespace>/... |
Optional client resources. |
data/<namespace>/... |
Optional server data. |
Only the top-level files of PluginPublishDir are packed; testhost* files and the archive itself are skipped.
Learn more about Target Frameworks and .NET Standard.
This package has no dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.0.1-nightly.g76d65868a6 | 59 | 10/16/2026 |
| 1.0.28-nightly.g5ea0559f7a | 57 | 10/16/2026 |
| 1.0.26-nightly.g9e0211e667 | 216 | 7/7/2025 |
| 1.0.25-nightly.g63ab6941ff | 201 | 7/7/2025 |
| 1.0.24-nightly.gd2fba904c0 | 202 | 7/6/2025 |
| 1.0.23-nightly.gcd6af0069e | 126 | 7/4/2025 |
| 1.0.22-nightly.g8df75da448 | 125 | 7/4/2025 |
| 1.0.21-nightly.gee2fd2bc26 | 127 | 7/4/2025 |
| 1.0.20-nightly.g124504443c | 150 | 7/4/2025 |
| 1.0.19-nightly.g1ab8a86802 | 148 | 7/4/2025 |
| 1.0.18-nightly.g61ec396361 | 188 | 7/4/2025 |
| 1.0.17-nightly.gc098dd3529 | 177 | 7/4/2025 |
| 1.0.16-nightly.gc51e4d89d4 | 180 | 7/3/2025 |
| 1.0.15-nightly.gf07ed0635c | 195 | 7/3/2025 |
| 1.0.14-nightly.g650b447086 | 181 | 7/3/2025 |
| 1.0.13-nightly.g29ac2be845 | 189 | 7/3/2025 |
| 1.0.12-nightly.g9908943317 | 195 | 7/2/2025 |
| 1.0.11-nightly.gae69f108bf | 195 | 7/1/2025 |
| 1.0.10-nightly.gbf1641d4f2 | 192 | 7/1/2025 |
| 1.0.9-nightly.ge4ab3f9760 | 187 | 7/1/2025 |