SetNet.Crafting
1.2.0
dotnet add package SetNet.Crafting --version 1.2.0
NuGet\Install-Package SetNet.Crafting -Version 1.2.0
<PackageReference Include="SetNet.Crafting" Version="1.2.0" />
<PackageVersion Include="SetNet.Crafting" Version="1.2.0" />
<PackageReference Include="SetNet.Crafting" />
paket add SetNet.Crafting --version 1.2.0
#r "nuget: SetNet.Crafting, 1.2.0"
#:package SetNet.Crafting@1.2.0
#addin nuget:?package=SetNet.Crafting&version=1.2.0
#tool nuget:?package=SetNet.Crafting&version=1.2.0
<p align="center"> <img src="https://raw.githubusercontent.com/Povstalez/SetNet/master/assets/icon.png" alt="SetNet" width="96"> </p>
SetNet.Crafting
Server-authoritative crafting for SetNet.
Register recipes as inputs → outputs. A client requests a craft and the server validates and atomically consumes the ingredients from the player's inventory (rolling back if anything's missing) before granting the results — through the shared SetNet.Inventory hub, so there's no way to craft something for free. Added by composition — no base class.
Install
dotnet add package SetNet
dotnet add package SetNet.Inventory
dotnet add package SetNet.Crafting
Usage
Call InventoryRuntime.Enable() and CraftingRuntime.Enable() once at startup.
// server
InventoryRuntime.Enable(); CraftingRuntime.Enable();
var inventory = server.UseInventory();
var crafting = server.UseCrafting(inventory)
.Define(new Recipe("iron_sword",
inputs: new[] { new ItemAmount("iron", 3), new ItemAmount("wood", 1) },
outputs: new[] { new ItemAmount("iron_sword", 1) }));
// client
InventoryRuntime.Enable(); CraftingRuntime.Enable();
var crafting = client.UseCrafting();
foreach (var r in await crafting.ListAsync()) ShowRecipe(r);
await crafting.CraftAsync("iron_sword"); // throws CraftingException if ingredients missing
API
Server: server.UseCrafting(InventoryServer) → CraftingServer — Define(Recipe), CraftAsync(playerKey, recipeId, times).
Client: client.UseCrafting() → CraftingClient — CraftAsync(recipeId, times = 1), ListAsync().
InventoryRuntime.Enable() + CraftingRuntime.Enable() — one-time bootstrap.
Notes
- Rides the unified SetNet.Protocol messaging layer on the
Channels.Craftingchannel (all modules share one envelope wire type,65447) — no per-module wire ids to reserve. Serializer-agnostic: the control protocol is hand-framedbyte[], your payloads use yourSetNetSerializer. - Atomic. Inputs are revoked before outputs are granted; a shortfall rolls back everything taken.
- Server owns recipes. Clients can only craft what the server registered;
ListAsyncjust mirrors the book for UI. - Resulting inventory changes arrive via the client's
SetNet.InventoryChangedsubscription.
Documentation & source
- 🐙 https://github.com/Povstalez/SetNet — full catalog in docs/MODULES.md
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- SetNet (>= 1.2.0)
- SetNet.Inventory (>= 1.2.0)
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 |
|---|---|---|
| 1.2.0 | 93 | 8/5/2026 |