Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Integration boundaries

- Keep domain plugins independent of Moonvale, miniPORTAL and any specific deployment or customer.
- Domain plugins expose general-purpose, documented local public API contracts. Preserve compatibility; do not rename or remove public methods just to remove historical profile terminology.
- Website payload mapping, authentication tokens, HTTP destinations and endpoint configuration belong to separately installed adapters, never the domain plugin.
- Adapters must require an administrator-configured destination and explicit selection of additional domain data sources. Do not add production server addresses as defaults.
- A configurable endpoint still uses a documented protocol. Do not claim arbitrary backend compatibility without implementing that protocol.
- Do not access another plugin's private implementation or database to satisfy a portal requirement.
- Document configuration migrations and verify destination validation, source selection and existing contracts when changing the adapter.
6 changes: 5 additions & 1 deletion docs/profile-details.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Owner profile read API

Read-only persisted snapshots for MiniPortalPlayerProfile 0.3.0. Existing snapshot constructors and existing API methods remain unchanged. New optional owner-list method provides composed detailed snapshots. No entity/chunk loading, teleport, database writes or simulation updates.
Portal-independent, read-only persisted snapshots for any local API consumer. Existing snapshot constructors and existing API methods remain unchanged. New optional owner-list method provides composed detailed snapshots. No entity/chunk loading, teleport, database writes or simulation updates.

getOwnedPlotProfiles(UUID) uses the existing plot cache and owner filter. PlotProfileSnapshot wraps the original plot and nullable configured teleport block. TP X/Z are integer block coordinates (in-game destination uses +0.5). It is not a safe destination guarantee: the normal teleport flow revalidates blocks and can select a fallback. A missing configured point must not be replaced with a fabricated TP.

Expand All @@ -11,3 +11,7 @@ The bootstrap loader is Java and uses only Paper-provided Java dependencies. `pa
`build` runs `verifyRuntimePackaging`: it rejects bundled Kotlin classes, a missing or unexpanded Kotlin runtime coordinate, and Kotlin references in the bootstrap loader. Unit tests cover repository routing and runtime manifest parsing. The disposable Paper acceptance plugin checks the actual `Function1` identity used by SyntaxDB and PlotsX before exercising SQLite and plot protection. Its seed data uses scoped SyntaxDB connections.

Update only the PlotsX JAR while the server is stopped, remove the previous duplicate, and restart fully. Keep the existing PlotsX configuration and database. No schema or player-data changes are part of this packaging fix.

## Integration boundary

This plugin owns its domain and exposes a local public API. It has no dependency on Moonvale, miniPORTAL or a particular website. These snapshot methods are general-purpose contracts; existing method names remain compatible. Website DTOs, HTTP endpoints, credentials, destination configuration and export selection belong to separately installed adapters. Installing this plugin does not authorize an adapter to export its data. Each server administrator configures the adapter and explicitly selects its sources. Domain API changes must serve the domain rather than encode a website layout or a particular customer.
Loading