Ask language models from a Turbo plugin with IAi - an AiAgent class (instructions, McpTool tools, MaxSteps, budgets, middleware, stop conditions), AiCall (who it acts as, memory, overrides), typed answers with AiAgent , player text as PlayerText, approvals for tools that change things - and test it with AiFake. Use…
Write a Turbo plugin's client module (client/src/index.tsx, TypeScript + React on @nitrodevco/client-module-sdk) - windows, toolbar and me menu entries, links, context menus, client chat commands, events and state, template patches on core windows, texts, assets, web calls, and secondary rooms fed with carried core…
Write furniture behaviour in a Turbo plugin with FurniLogic and [FurniLogic("key")] - use, walk on/off, walk-to-use, timers, state, extra data, linked pairs, forwarding to another room and messages from the plugin's own handlers - and act in a room's turn through IRoomTurn (speech, effects, bots, temporary furni). Use…
Sweep this Turbo plugin's own code for the conventions it already follows (folder layout, naming, message and permission node names, settings and texts, tables, test style, client module layout), show each with the files that prove it, and once the author approves, record them as project rules with npm run ai:rule.…
Give AI assistants tools on a Turbo hotel from a plugin with McpTool - name, description, input record with [Description] and [Range], hints, a required [RequiresPermission] node, PlayerText for anything a player wrote - and test them with McpToolTester. Use when a plugin should expose read or write actions to Claude…
Build the server half of a Turbo plugin - the plugin class and its services, the hotel API (IHotel), chat commands, permission nodes, settings, scheduled tasks, room event listeners, post-commit events and the plugin's own tables. Use when adding or changing any C# in a Turbo plugin's server/ folder.
Make a Turbo plugin's client and server halves talk with named plugin messages - [PluginMessage(" .name")] records, IPluginMessageHandler , ReplyAsync and sends to players and rooms, carrying a core packet, and api.messages.on/send with ClientModuleMessageOf in the client module. Use whenever data crosses between a…
Test a Turbo plugin without a server - xunit v3 tests in tests/ .Tests against FakeHotel (the hotel API in memory with its rules and assertions), McpToolTester for MCP tools, policies and commands called directly, client logic with node --test - and run them with npm test. Use when writing or fixing any plugin test…
Let a Turbo plugin allow, refuse or change hotel actions before they commit (IPurchasePolicy, IRoomEntryPolicy, IRoomArrivalPolicy, IPlacementPolicy, IRegistrationPolicy, IAvatarEffectPolicy, IPurchaseFulfilment, IPublicRoomOrder, IPlayPolicy) and react after them with post-commit events (IEventHandler …
Keep a Turbo room loaded and awake with no one in it (IHotel.Rooms.HoldAsync/ReleaseAsync) and send a player another room's view and live packets inside the plugin's envelope message (WatchAsync/UnwatchAsync, IFurniContext.WatchRoomAsync), with their leases, limits and answers. Use for portals, screens showing another…
Serve HTTP from a Turbo plugin - player-facing web routes (IPluginWebRoute at /api/plugins/ /..., signed-in or anonymous, webhooks with RawBody signatures, api.http from the client module) and staff admin pages and endpoints drawn by the admin panel from a schema (IPluginAdmin with Node, Map and Page). Use for a site…
Add wired boxes (effects, triggers, conditions, selectors) to a Turbo plugin with WiredEffect, WiredTrigger , WiredCondition, WiredSelector and [WiredBox("wf...")], each opening an official editor, and fire the plugin's own wired events. Use when a plugin adds wired furni or lets its features start wired stacks.
★not rated 7▲
+1 yesterdayA79 tokens
At most 3 mods per repository are shown here, and a mod shipped inside a plugin is left to that plugin's page — the rest are on their repository pages: