feat: API 3, placements from a website (stage 4, D249) #6

Merged
whitlocktech merged 2 commits from feat/stage-4-api3 into edge 2026-09-30 19:52:57 +00:00
Member

What

This is RunicNPC's part of stage 4 (docs/runicnpc/PLAN.md). It is API 3, which the org lead approved as a fifth PR (D249).

  • RunicNpc_AddPlacement(JObject) creates a placement and names it as /rnpc place does (warden-3, D241, D246).
    • A position without y is a point on a map. It is grounded on terrain and rock, never a building or a tree (D245), then checked against the navmesh like any placement.
    • It answers {id, position, built, cost}, or {error} with the sentence /rnpc place would have said.
  • RunicNpc_RenamePlacement and RunicNpc_RespawnPlacement do what rnpc rename and rnpc respawn do.
  • OnRunicNpcPlacementChanged(id, change, previous) is raised on every set, remove and rename, from the API or in game. The bridge uses it to tell the site at once.
  • rnpc place and here now share one function with the API, so they refuse with the same sentences.
  • The release now ends by asking the installer to recompose the Rust bundle, as Rust-Plugins' does (D224).

Tested

  • The harness gained an api3 group (25 checks: naming, grounding, refusals, rename, respawn, the hook in game and through the API).
  • rnt.run all passes 157/157 on both rigs.
  • Walked end to end through the site with the other four PRs (docs PR, PLAN.md stage 4).

Pairs with

Rust-Plugins, Rust-Link, Module-Rust and installer feat/runicnpc-stage4, plus the docs PR.

Checklist

  • I have read CONTRIBUTING.md.
  • The change builds and existing tests/checks pass locally (checkPlugin.js, the harness on both rigs).
  • I have added or updated tests/docs where it makes sense.
  • My commits are reasonably scoped with clear messages.
  • AI tools were used. Tool(s): Claude Code (Claude Opus 5.5). Commits carry the Co-Authored-By trailer.
  • I agree that my contribution is licensed under GPL-3.0-or-later.

🤖 Generated with Claude Code

https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY

## What This is RunicNPC's part of stage 4 (docs/runicnpc/PLAN.md). It is **API 3**, which the org lead approved as a fifth PR (D249). - **`RunicNpc_AddPlacement(JObject)`** creates a placement and names it as `/rnpc place` does (`warden-3`, D241, D246). - A position without `y` is a point on a map. It is grounded on terrain and rock, never a building or a tree (D245), then checked against the navmesh like any placement. - It answers `{id, position, built, cost}`, or `{error}` with the sentence `/rnpc place` would have said. - **`RunicNpc_RenamePlacement`** and **`RunicNpc_RespawnPlacement`** do what `rnpc rename` and `rnpc respawn` do. - **`OnRunicNpcPlacementChanged(id, change, previous)`** is raised on every set, remove and rename, from the API or in game. The bridge uses it to tell the site at once. - `rnpc place` and `here` now share one function with the API, so they refuse with the same sentences. - The release now ends by asking the installer to recompose the Rust bundle, as Rust-Plugins' does (D224). ## Tested - The harness gained an `api3` group (25 checks: naming, grounding, refusals, rename, respawn, the hook in game and through the API). - **`rnt.run all` passes 157/157 on both rigs.** - Walked end to end through the site with the other four PRs (docs PR, PLAN.md stage 4). ## Pairs with Rust-Plugins, Rust-Link, Module-Rust and installer `feat/runicnpc-stage4`, plus the docs PR. ## Checklist - [x] I have read CONTRIBUTING.md. - [x] The change builds and existing tests/checks pass locally (`checkPlugin.js`, the harness on both rigs). - [x] I have added or updated tests/docs where it makes sense. - [x] My commits are reasonably scoped with clear messages. - [x] AI tools were used. Tool(s): `Claude Code (Claude Opus 5.5)`. Commits carry the `Co-Authored-By` trailer. - [x] I agree that my contribution is licensed under GPL-3.0-or-later. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
wtclaude added 2 commits 2026-09-30 13:46:33 +00:00
RunicNpc_AddPlacement creates a placement and names it as /rnpc place
does (D241, D246). A position without y is a map point: it is put on the
ground there (terrain and rock, never a building or a tree, D245), then
checked against the navmesh like an in-game placement. It answers the id,
the grounded position, whether the spot is player-built, and the cost
warning, or the in-game refusal sentence.

RunicNpc_RenamePlacement and RunicNpc_RespawnPlacement do what rnpc
rename and rnpc respawn do. OnRunicNpcPlacementChanged(id, change,
previous) is raised on every set, remove and rename, from the API or in
game, so the bridge can tell the site at once.

rnpc place and here now share CreatePlacement with the API, so both give
the same refusals. The test harness gains an api3 group; all 157 checks
pass on the Oxide and Carbon rigs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
ci(release): ask the installer to recompose the Rust bundle (stage 4, D224)
All checks were successful
PR Checks / plugin-checks (pull_request) Successful in 9s
e2c0db2a5d
RunicNPC is the Rust bundle's third artefact from stage 4, so its release
ends as Rust-Plugins' does: a dispatch of the installer's bundle workflow,
warned rather than failed when the token cannot reach it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
whitlocktech merged commit bf2940b819 into edge 2026-09-30 19:52:57 +00:00
whitlocktech deleted branch feat/stage-4-api3 2026-09-30 19:52:58 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RunicGateway/runicnpc-rust#6
No description provided.