All pluginsMC Skylines

Connected city services

MCSkylines-Technology

Version 1.5.0 · Documentation refreshed October 16, 2026

Placeable computers, player mail, online commerce, deliveries, ticket payment, card intrusion, and police MDTs.

Required plugins: MCSkylines-Core, MCSkylines-Economy, MCSkylines-Justice, MCSkylines-Property, MCSkylines-Lock, MCSkylines-Vehicles, WorldGuard. Optional integrations: Oraxen, GSit, LuckPerms, MCSkylines-Government.

01

Feature reference

What it handles

Feature overview

Computers & laptops

Generic placeable computers and seated laptops open a modular city-services interface.

Addon modules

WorldGuard-aware installation lets owners add capabilities without baking them into each computer item.

Online commerce

Business kiosks, inventory pools, persistent listings, orders, and delivery fees extend the physical economy.

Delivery workflow

Registered delivery chests and temporary property-scoped Lock access support assigned drivers.

Mail & tickets

Player communications and official ticket payment connect Technology to Justice and Economy.

Police MDT

Vehicle interactions issue configured parking tickets and produce one-use evidence links.

Card intrusion

Stolen-card mechanics, security incidents, and dirty-funds withdrawal create connected criminal gameplay.

Panel authentication

Hashed, short-lived, one-use tokens provide the trusted handoff for the future web panel.

02

Mechanics, workflows & reference

Encyclopedia

Contents · jump to a topic

Web panel setup

The City desktop at /panel uses verified email/password accounts linked to Minecraft UUIDs. A first one-use Panel link from a placed computer permits enrollment; verify the email before signing in. Reusing a computer token cannot relink an enrolled player. Password reset and verification resend are available on the sign-in screen. Cookies and server sessions expire after one idle hour; foreground interactions refresh the hour and background polling does not. Registration, password changes and resets accept passwords of 8–128 characters.

The backend is a separate Node service, not a Minecraft plugin or a second Site. Start with a Node 22.15+ split, one shared CPU, 1 GB RAM and 10 GB disk, retaining Minecraft's resources. Use a separate MySQL database, initially budgeting about 500 MB of the shared database quota. Photos live outside MySQL in private R2. Install only the combined suite JAR and preserve all module data folders.

  1. Back up module databases/configuration and install the matching combined JAR.

Government's schema is 5; rollback needs the pre-upgrade database backup.

  1. Allocate a Node HTTP port (default 3100) and a game-bridge port (default 3180).

Follow Bloom's regional HTTPS proxy instructions for the actual host. Use separate API/game proxy DNS names and preserve Minecraft join DNS. Localhost does not connect separate splits.

  1. Extract MC-Skylines-Panel-Backend-<date>.zip at the Node split's file root,

where package.json, index.js, setup.js and src are together. With a shell run npm ci; Bloom's generic Node template installs dependencies on startup instead. Install native packages on the target OS, without uploading Windows node_modules. The SQLite driver is optional and loaded only for sqlite: connections, so its compiler/Python requirements do not block MySQL installation. Keep one backend process supervised by the host.

  1. Configure backend PUBLIC_ORIGIN=https://mcskylines.net, allocated bind/port,

a separate DATABASE_URL, and independent random AUTH_SECRET, SITE_PROXY_SECRET, GAME_BRIDGE_SECRET values of at least 48 characters. The delivery includes .env.example with names/defaults, never live secrets.

  1. Enable plugins/MCSkylines-Technology/panel-bridge.yml; configure its allocated

port/bind and set Minecraft's MCSKYLINES_BRIDGE_SECRET environment variable to match the backend's GAME_BRIDGE_SECRET. If the host cannot set environment variables, use a private panel-bridge.secret UTF-8 file inside that module folder. Environment takes precedence. Restart Minecraft; reload does not restart the bridge. Keep LuckPerms running and Government enabled for elections.

  1. Set GAME_BRIDGE_URL to the bridge's HTTPS origin. Configure Resend's verified

sender DNS while preserving existing mail DNS, then set RESEND_API_KEY and EMAIL_FROM. The key needs sending access, not account administration.

  1. With a shell run npm run migrate, then npm start. With Bloom's generic

Node template use main file setup.js once, wait for the schema-ready message, stop it, then change the main file to index.js for normal startup. Keep the template startup command intact; its console is application input, not a shell. Runtime requests do not create tables. Use private host environment settings or a protected, untracked .env; never put keys in browser source or arguments.

  1. On the existing Sites project, set server-only MC_PANEL_BACKEND_URL to the

HTTPS backend origin and MC_PANEL_PROXY_SECRET to the same value as backend SITE_PROXY_SECRET. Apply/publish the existing site as its environment settings require. Do not add NEXT_PUBLIC_ secrets or create another site.

  1. Create a dedicated private R2 Standard bucket, disable public access, and

provide backend R2_ENDPOINT, R2_BUCKET, R2_ACCESS_KEY_ID and R2_SECRET_ACCESS_KEY with object/list/delete access scoped to that bucket. No public media domain, bucket CORS or website R2 binding is needed.

  1. Set TRUST_PROXY_IP=true behind the authenticated Sites proxy, grant the role

nodes below, then test ordinary/official accounts. Start native photos with Administration → Reconcile storage. Verify actual email, TLS, role revocation, voting and R2 recovery on a staging server before inviting players.

The frontend remains closed to sign-in until its backend connection and email are configured. Source code and automated tests do not provision a Bloom split, database, DNS, email account, bucket or real credentials.

Bloom ports, domain records and database details

Use Nodejs 22 in the generic Node split. On its Ports & Proxies page, keep the allocated 3100 port as primary, turn TCP on and UDP off, and set its Reverse Proxy Domain(s) field to panel-api.mcskylines.net. On the Minecraft server's Ports & Proxies page, add port 3180 if available, with TCP on, UDP off and domain panel-game.mcskylines.net. Leave Minecraft's existing join allocation and records unchanged. If a suggested port is unavailable, use the actual allocation in its service configuration. Restart after adding ports. The database needs no extra server port allocation.

At the registrar/DNS provider managing mcskylines.net, add two CNAME records:

Host/nameTarget/value for Bloom's US proxy
panel-apirevproxy-us.bloom.host
panel-gamerevproxy-us.bloom.host

Some editors require the full subdomain. Enter only the hostname in Bloom's domain box, without a scheme, path or port. Use the regional target shown by your own panel; Bloom's proxy guide lists the EU/Singapore alternatives. Cloudflare DNS users must select DNS only. Allow time for DNS/certificates; the service must be running before API requests can succeed.

The website's private MC_PANEL_BACKEND_URL is https://panel-api.mcskylines.net, and the backend's GAME_BRIDGE_URL is https://panel-game.mcskylines.net. These HTTPS addresses have no custom port suffix. Keep backend PUBLIC_ORIGIN=https://mcskylines.net, the player's website.

To use `panel.mcskylines.net` for players, attach that hostname to the existing Sites project. At the registrar, create Sites' returned CNAME and TXT verification records. Use the Sites CNAME target, not the Bloom proxy target. The site serves the City desktop at https://panel.mcskylines.net/; the main domain retains its homepage. Enrollment, sign-in and API routes keep their /panel paths on the player hostname.

Once its DNS/TLS is active, change backend PUBLIC_ORIGIN=https://panel.mcskylines.net and restart the backend. In plugins/MCSkylines-Technology/config.yml, set panel.base-url to https://panel.mcskylines.net/panel, then run /technology reload for new computer links. Bridge bind/secret changes still require a Minecraft restart. The backend and game bridge service URLs remain panel-api.mcskylines.net and panel-game.mcskylines.net. Use one public player origin for sign-in, verification emails and cookies. Existing UUID associations remain; changing the hostname requires players to sign in again.

In the Node split's file manager, copy .env.example to exactly `.env` beside package.json. Keep the remaining settings and configure:

PUBLIC_ORIGIN=https://mcskylines.net
LISTEN_HOST=0.0.0.0
PORT=3100
DATABASE_URL=mysql://USERNAME:PASSWORD@HOST:DB_PORT/DATABASE_NAME
AUTH_SECRET=REPLACE_WITH_AN_INDEPENDENT_RANDOM_SECRET
SITE_PROXY_SECRET=REPLACE_WITH_AN_INDEPENDENT_RANDOM_SECRET
GAME_BRIDGE_SECRET=REPLACE_WITH_AN_INDEPENDENT_RANDOM_SECRET

If using the player subdomain, replace the example's PUBLIC_ORIGIN with https://panel.mcskylines.net as described above.

Use three different password-manager-generated secrets of at least 48 characters (64 random letters/numbers works). On Bloom's Databases page, open the new panel database's connection details and substitute its username, password, host, database port and full database name, including prefixes. Use the supplied host, not the Node split's allocation IP. The database port is often 3306; use the value Bloom displays. URL-encode special characters in URL credentials, for example @ as %40, # as %23 and % as %25. Keep actual credentials in Bloom's private editor, without sharing them in chat or public encoders.

Email, game bridge and R2 settings can remain blank for initial database setup. Sign-in stays closed until its required connections are configured. On Startup, select main file setup.js and start once. When the console says Panel schema is ready. No test players or accounts were inserted., stop, change the main file to index.js, and start for normal service. Setup exits when finished; stop any automatic restart loop before switching the main file. Configure bridge, email and the existing website's private settings before enrolling players.

If installation stops at better-sqlite3/node-gyp and the next error says better-auth is missing, stop the split and preserve .env and the database. Extract the complete current backend ZIP over the application files, delete only the split's node_modules folder, and start again with main file setup.js. Bloom reinstalls dependencies; restore index.js after the schema-ready message. The MySQL path does not load the optional SQLite driver. Keep optional dependencies enabled globally because the image processor needs its platform binaries.

Permissions and applications

technology.panel.use defaults true. LuckPerms is queried in its static server context for every protected action. Configure server-scoped job groups; world-only nodes are not web authority. Explicit false takes precedence over operator fallback. Professional nodes default false:

PermissionCapability
technology.panel.lawyerFile for a client; client must accept counsel for private participation
technology.panel.paralegalReceive a participating lawyer's record-specific delegation
technology.panel.judgeManage proceedings, witnesses/parties, closure and evidence holds
technology.panel.prosecutorProsecution role; citation supplements additionally require evidence access
technology.panel.legislation.manageDraft and change law status
technology.panel.legislation.voteOne yes/no/abstain vote per open proposal
technology.panel.evidence.cityExplicit city-official access to restricted evidence
technology.panel.adminStorage reconciliation, retention and audit view
government.remote-voting.manageChange election policy with an audited reason

Every player can read all case threads. Only parties, accepted counsel, assigned paralegals/witnesses and judges can participate; evidence has its own authorization. Clients accept/revoke counsel in Manage case access. A paralegal loses protected access when their granting lawyer loses current authority or representation. Case grants do not assign permanent LuckPerms groups. A linked citation must belong to the case's client. Keep private material in evidence rather than public case text.

Court/mail/civic work is available while the player is offline, with the Minecraft server running. Account/business balances, property, marketplace listings/orders, own tickets and active vehicles use the same live modules. Physical purchases, delivery, cash/item handling, stock trading and enforcement remain in Minecraft. Web activity does not earn playtime, salary, duty or candidacy qualification.

Law proposals have discussion, voting, enactment and withdrawal status. Enactment records the civic decision rather than running arbitrary game commands. Election ballots use Government's voter ledger and revision rules. Remote elections start disabled; an authorized official explicitly changes that policy. When outlawed, the panel blocks ballots and requires a polling station. Current policy, schedule and election status are checked at ballot acceptance; stale pages cannot bypass it.

The private network offers fictional discussions and black-market advertisements. Choose Panel at a placed computer with criminal_module, stay within six blocks, online and able to act. Its ten-minute connection ends on departure, disconnect, death, computer/addon removal, restraint, custody or incapacitation. Reconnect at the computer to renew it. Every private read/write checks the live connection and does not load chunks. Website sessions alone do not grant remote criminal access. Advertisements do not settle items or escrow through the browser.

Photos, budgets and retention

Native uploads accept single-frame PNG/JPEG/WebP up to 10 MB and 24 MP. The backend strips metadata and chooses the smaller lossless PNG/WebP, falling back to quality-94 WebP only when necessary. It does not resize screenshot text. Final size is at most 2 MB; larger files can use an external host. Each evidence bundle allows three non-expired native photos across all supplements. No native video, SVG or animation is accepted. HTTPS image-host and YouTube links are not fetched by the server and may change/disappear at their external host.

Accepted photos are immutable. The evidence record retains uploader, time, source and canonical hashes, codec/processing, byte count and retention status. It does not retain a duplicate full original. Corrections are new submissions. Citation photos are visible only to the cited player, issuing officer, explicit city officials and authorized participants in linked cases. Police/prosecution may append supplements under those same access checks. Read-only viewers do not get upload controls. Public case readership does not reveal attachments.

ControlDefault
Upload attempts per UUID6/minute, 30/hour, 100/day
Native photo requests per UUID120/minute, 5,000/day, including cache hits
R2_CLASS_A_LIMIT100,000 attempts in a conservative 33-day rolling ledger
R2_CLASS_B_LIMIT1,000,000 attempts in that ledger
PHOTO_CLEANUP_BYTES8,000,000,000 bytes
PHOTO_CLEANUP_BATCH_BYTES1,000,000,000 bytes of oldest eligible whole objects
PHOTO_CEILING_BYTES9,000,000,000 reserved/stored bytes
PHOTO_RETENTION_DAYS90 days after eligible closure
EMAIL_DAILY_LIMIT90 attempted verification/reset sends per UTC day, plus 3/recipient/hour

Authorization and persistent budgets run before R2, including PUT/LIST/GET/HEAD and uncertain attempts. SDK automatic retries are disabled. A bounded private cache rechecks permissions even on hits; public/signed photo URLs do not bypass these controls. R2's account allowance is a pricing threshold, not a spending cap. Leave room for other account usage and use provider alerts. Separate proxy/Worker costs and credentials used outside the backend are outside these application limits.

Every five minutes, cleanup near 8 GB reclaims about the oldest eligible 1 GB. Closed cases must be at least 90 days old, with no preservation hold. A PAID/VOID citation must have been observed resolved for 90 days, and every linked case must be closed, old enough and unheld. Keep appeals open or held. Deletion preserves audited tombstones and only frees bytes after success. When protected evidence leaves no space, uploads stop at 9 GB and external links remain available. A surge of more than 200 photos/hour near cleanup pauses admission and cleanup for review. Do not apply an R2 age-only lifecycle rule to accepted evidence.

An uncertain upload remains pending and reserves its bytes/budget. After at least two minutes an administrator can reconcile the bucket: budgeted listing counts all objects and HEAD verifies pending objects without uploading them again. A missing object after an uncertain write conservatively keeps its reservation; review with the backend stopped before manual repair. Failed reconciliation keeps uploads closed. A stale maintenance flag is recoverable after ten minutes. Review a surge before reconciling to resume uploads. Back up the panel database, stable auth secret and private configuration separately from the Minecraft databases. Stop SQLite before copying its files or use a proper online backup, then reconcile R2 after restoration. Keep counters and object accounting across updates.

Configuration defaults: Values shown for operator-configurable settings are the bundled defaults, and can be changed in the module’s configuration or definitions. The server’s active settings take precedence, so costs, speeds, ranges, durations, chances, effects, recipes, limits and enabled features may differ. Command examples illustrate syntax; fixed mechanics and validation bounds are not configuration defaults.

Technology supplies placeable computers/laptops, installable modules, kiosks, mail, persistent orders/delivery, ticket interfaces, card intrusion/dirty funds and police MDTs. It requires Core, Economy, Justice, Property, Lock, Vehicles and WorldGuard APIs and refuses partial startup.

Computers and module lifecycle

Place a genuine desktop or laptop item, then right-click the placed computer to open its interface. Access is physical: anyone who can reach the machine can use its available applications. Use WorldGuard, Property, and Lock to control the location rather than assuming the computer itself has user accounts.

Sneak-right-click with a genuine module to install it. Sneak-right-click empty-handed to remove an installed module. Both changes require WorldGuard build permission at the computer. The item stores only its generic type; the placed machine, module slots, kiosk binding, and application data are authoritative in Technology's database.

Business kiosk and ordering workflow

  1. Create or select the Economy business account that will own the store.
  2. Add one or more world:property entries to its inventory pool with /technology business pool add.
  3. Place a computer, install the kiosk module, target it, and bind it with /technology kiosk <business-account>.
  4. Stock the configured business properties. Online listings coexist with physical Economy chest shops; one system does not replace the other.
  5. Register a destination chest with /technology deliverybox before relying on delivery fulfillment.

Orders persist even when stock is currently unavailable. Delivery assignment gives the driver a one-hour, property-scoped Lock USE bypass for the destination, not ownership or management permission. Clearing a kiosk returns that computer to general use without deleting unrelated business records.

Email application

Open Email on a computer, then choose Write email on the right of the inbox footer. The button remains available on every page, separate from the page counter. Type the recipient's Minecraft username in chat; online names support tab completion and known offline players can receive mail. Type cancel to return to the inbox. The recipient entry expires after two minutes. /technology mail is not a compose command.

Your selected held item is temporarily replaced by a book and quill. Right-click the book to open the editor, write its pages, then sign it to send; the signing title is the subject. Paper can open a reader automatically, but its public API cannot force the writable editor open. The draft supports plain text and authored page breaks, up to 10,000 characters within the reader's page limit. Text is never interpreted as formatting commands. Writing from a vehicle is refused so the movement lock cannot interfere with its driving.

While the draft is held, walking, dropping, hotbar switching, hand swaps, pickup, inventory moves, mounting and other interactions are blocked. You can look around and use the book. The Cancel draft chat button restores the original item. Successful sending, death, disconnect, forced teleport or losing the held draft also resolves the temporary item; death still follows the server's normal drop/keep-inventory policy. A saved item journal recovers the original held item after an interrupted session. If delivery cannot be confirmed, Retry sending checks the same immutable submission; it cannot duplicate or alter the accepted message. The final editor pages remain available after a validation failure.

Inbox entries open an automatic book reader, and only the opened email becomes read. A new-mail notification has a Read button. The final page's Mail actions link opens Reply, Delete and Back to inbox. Paper has no reliable book-reader-close event, so use that link to open the action menu. Reply prepares a fresh draft addressed to the original sender. Delete hides only that recipient's selected message and retains its submission receipt so a retry cannot recreate it. Mail persists through restart in SQLite or MySQL; another player cannot read or delete it by guessing an ID.

Police MDT and ticket evidence

Hold the genuine handheld MDT and right-click a registered vehicle to issue the configured parking ticket. Justice and Vehicles supply the vehicle/citation behavior. The evidence link/token is single-use and expires after one hour. It carries lightweight metadata only; the City desktop and separate backend handle private photos and YouTube/image-host links after verified account sign-in.

Stolen-card intrusion and dirty funds

Technology uses Economy's signed card serial state for intrusion attempts. A copied physical card does not create additional attempts because the opportunity is consumed server-side. Dirty-funds withdrawal and related incidents remain database/audit operations tied to the configured modules and integrated accounts; never use item names as proof of a valid card or device.

Finance module

Installing a finance_module into a placed computer enables its stock-terminal button. The button opens Economy's exchange and preserves the same account ownership, order reservations and confirmation checks as /economy stock. The module is checked again when opening the terminal; it does not grant ownership of another player's personal or business accounts.

MDT vehicle recognition and parking enforcement

MDTs resolve vehicle bodies, seats and model entities through VehiclesApi, without assuming a plugin namespace. Right-clicking the visible model also supports a line-of-sight ray lookup, respecting walls and the configured interaction range. Group vehicles show their registration and group owner; personal ticket/history tools remain available only for player registrations.

Shift-right-click the MDT to open its home menu, with Wanted records and Parking enforcement. The parking list is paginated and shows occupied unpaid/expired meters, current plates and world coordinates. Click an entry to recheck its live state and print its location; Refresh updates the list. Vacant meters, paid plates and payments still being recovered are excluded. Enforcement remains manual; verify the car before issuing a citation. These tools require technology.mdt, including after menu opening. New labels and feedback are merged into existing messages.yml without overwriting operator customizations. Install the current client pack for the enlarged placed computer; no extra display scaling or clearing configuration is required.

Industrial dashboards

Utilities and Industry have their own vanilla inventory dashboards at physical controllers. They do not currently install a remote factory app into Technology computers. Their machine operator permissions are separate from physical computer access.

Panel boundary

The Minecraft plugin generates cryptographically random short-lived access tokens and stores only SHA-256 hashes. Redemption is single-use and atomic through TechnologyApi. The City desktop uses the separate Node backend and optional authenticated bridge for verified player access. Do not paste tokens into chat, logs, documentation, or manual database tools.

Current boundaries

Technology requires the listed suite service APIs and intentionally refuses partial operation. Computer reachability is the access model; there is no separate in-computer login system. The website uses a separate Node backend and optional authenticated bridge; configure both before enabling player sign-in.

Computer access and installation

Anyone who physically reaches a computer can use its interface; underlying bank/business/stock/MDT actions still check their own permissions and ownership. There is no computer login account. Place a genuine computer, right-click to open, sneak-right-click with a genuine addon to install, and sneak-right-click empty-handed to remove modules. Build authority and module permission apply. Kiosk binding needs the installed kiosk module; finance needs its finance addon.

Configuration, items, and recovery

Core issues technology:<item>. Oraxen IDs are preferred with vanilla recipe fallback. SQLite/MySQL records location, installed modules, kiosk binding, orders, mail, incidents and hashed tokens; item names do not contain this database state. Configuration covers interaction range, ticket amount, intrusion gameplay, delivery window, fallback materials/recipes and panel token lifetime. messages.yml controls MiniMessage feedback. Database work is asynchronous; confirmations recheck live state before settlement.

Customer ordering and delivery

On an ordinary computer choose Store, choose a listing, select a quantity, and choose a registered delivery address. A bound kiosk opens its business’s store directly. The total is unit price times quantity plus the listing’s delivery fee; the buyer’s wallet funds a dedicated order escrow. The configurable commerce.maximum-order-quantity defaults to 2,304. Register the destination chest first; an address without a valid box cannot accept an order.

Business managers publish a held exact item template with /technology business listing create <account> <price> <delivery-fee>. They can inspect listings, inventory pools and outstanding orders in the Business application. Removing a listing or property pool uses that application or the documented commands; business deletion uses a separate confirmation. Configurable commerce.maximum-pooled-properties and commerce.maximum-listings-per-business default to 25 properties and 100 listings per business.

Assign an order with /technology assign <order-id> <player>. The assigned player receives a one-hour credential and destination-property USE access through Lock. Carry the exact ordered items and use /technology deliver <order-id>. Delivery validates assignment, credential, order state, existing destination chest, matching inventory and free chest capacity. It deposits the goods and settles the escrow to the business. A missing/full box or missing goods prevents completion; do not assume assignment itself delivered stock or released payment. Settlement retries use the recorded order rather than creating a replacement charge.

Mail, tickets, and banking applications

Use the computer's Email application to compose, read, reply to and delete stored messages. Known recipients can be offline. Tickets lists the player’s citations and offers payment through Justice’s live eligibility checks. Banking opens Economy’s account interface; business and personal account authority still belongs to Economy. Ordinary computer lists paginate at 36 entries per page. A laptop requires sitting by default, and a placed computer accepts up to three modules by default.

Card intrusion: sequence game and consequences

Hold an eligible stolen signed bank card in the main hand and choose the computer’s intrusion action. Economy validates the serial and consumes its one hack opportunity; copies do not give extra tries. Default exposed-card lifetime is 24 hours. Watch the numbered red slots, wait until the reveal finishes, then click the same slots in order. Configurable cards.stages and cards.sequence-base-length default to four stages, starting at four positions and adding one per stage (four, five, six and seven with the defaults). Positions appear ten ticks apart. Configurable cards.stage-time-seconds and cards.allowed-mistakes default to 20 seconds after reveal per stage and one mistake across the session. A further mistake, timeout or closing the game fails the attempt.

Success requests a Gaussian percentage of eligible funds. The configurable cards.payout-mean-percent, cards.payout-standard-deviation-percent, cards.payout-minimum-percent and cards.payout-maximum-percent default to 30% mean, 8 percentage points standard deviation, and 10–50% payout bounds; these payout bounds can also be changed. Economy performs the actual signed-card settlement and creates the serial’s dirty balance. The physical card receives a dirty marker only after successful settlement. Failure and success are recorded as incidents. Default police detection is 65% for failure and 20% for success. Installing a criminal module hides the username in that computer’s intrusion alert; it does not hide the computer’s location or eliminate detection.

To collect the resulting dirty balance, hold its marked card at a registered bank or ATM and run /technology dirtywithdraw. This directly attempts withdrawal of the current dirty balance; it does not open an amount selector. Default withdrawal detection is 65%, with another 20 percentage points at a bank. Police receive the location and identity when detected. A revoked, ineligible or already-used serial cannot be made valid by duplicating or renaming its item.

Reading command syntax

Configuration defaults: Values shown for operator-configurable settings are the bundled defaults, and can be changed in the module’s configuration or definitions. The server’s active settings take precedence, so costs, speeds, ranges, durations, chances, effects, recipes, limits and enabled features may differ. Command examples illustrate syntax; fixed mechanics and validation bounds are not configuration defaults.

<argument> is required; [argument] is optional. Replace the placeholder, including its brackets, with your value. Choices separated by a vertical bar mean choose one. ... accepts the remaining words. Do not type quotation marks around multiword names unless the command specifically requires them. A bare command has no required arguments. Examples use sample players/IDs: substitute entries from your server and use Tab for configured IDs.

player means a username; operational actions usually require that player online. amount and price are currency values such as 25.00, unless the row specifies items, levels, or units. reason, memo, message, name, and statement accept text where supported. duration uses the module's duration format (for example 10m, 2h, or 7d); it is not a bare number of minutes unless stated. id is the exact identifier displayed by that system, not its friendly name. Permissions and ownership/state/location checks both apply.

Technology commands

SyntaxArguments / actionPermission / state
/technology or /technology helpHelp; /tech alias uses same argumentsEntry access
/technology kiosk <business-account>Bind targeted module-equipped computer to owned business IDtechnology.business.manage, ownership/build
/technology kiosk clearRemove business bindingSame management/module checks
/technology business pool add <account> <world:property>Add authorized stock property's reference to business pooltechnology.business.manage, business/property control
/technology business pool remove <account> <world:property>Remove inventory-pool propertySame ownership
/technology business listing create <account> <price> <delivery-fee>Publish exact held item template; unit currency price and delivery currency feeManagement and owned business
/technology business listing remove <account> <listing-id>Remove owned listingManagement/ownership
/technology assign <order-id> <player>Assign driver to owned business order and timed USE-only destination accessOrder/business ownership
/technology deliver <order-id>Complete assigned delivery using exact carried goods and valid destination chesttechnology.delivery, assignment and stock/destination
/technology deliveryboxRegister looked-at chest within six blocks for authorized propertyProperty authority
/technology dirtywithdrawWithdraw current dirty balance while holding marked card at bank/ATMPlayer/intrusion balance policy
/technology statusService/database statustechnology.status
/technology reloadReload config/messages and supported contenttechnology.reload

Account/order/listing values are persistent IDs from the respective views; property is exactly world:region-id. Example: /technology business listing create business:<owner-uuid>:store 25.00 5.00 while holding the real template. order shown in the older manifest help is not a text subcommand: customers place orders in computer menus.

Root commands and aliases

These are the registered command entry points. The subcommand tables above describe their complete operations. Alias names use the same arguments as their root.

SyntaxPurposePermission / aliases
/technology <help|mail|business|order|deliver|deliverybox|reload|status>Technology administration and player services.Checked by operation; aliases: /tech

03

Registered entry points

Command roots

Use the command syntax sections above for every required argument and subcommand. The short usage below is the plugin’s registered help text.

CommandUsageDescriptionPermission
/technologyAliases: tech/technology <help|business|order|deliver|deliverybox|reload|status>Technology administration and player services.Subcommand-based

04

LuckPerms reference

Permissions

NodeDefaultDescription / children
technology.adminopNo additional description.Includes technology.use, technology.reload, technology.status, technology.modules, technology.mdt, technology.business.manage, technology.delivery, technology.panel.use, technology.panel.lawyer, technology.panel.paralegal, technology.panel.judge, technology.panel.prosecutor, technology.panel.legislation.manage, technology.panel.legislation.vote, technology.panel.evidence.city, technology.panel.admin
technology.usetrueNo additional description.
technology.panel.usetrueNo additional description.
technology.panel.lawyerfalseNo additional description.
technology.panel.paralegalfalseNo additional description.
technology.panel.judgefalseNo additional description.
technology.panel.prosecutorfalseNo additional description.
technology.panel.legislation.managefalseNo additional description.
technology.panel.legislation.votefalseNo additional description.
technology.panel.evidence.cityfalseNo additional description.
technology.panel.adminfalseNo additional description.
technology.reloadfalseNo additional description.
technology.statusfalseNo additional description.
technology.modulestrueNo additional description.
technology.mdtfalseNo additional description.
technology.business.managetrueNo additional description.
technology.deliverytrueNo additional description.
Next pluginMCSkylines-Fire

Command and permission references reflect the current plugin.yml manifests in this workspace.