From 989bc045201625e57bbb48d331ac74214907a2f2 Mon Sep 17 00:00:00 2001 From: Natalie Rose Date: Tue, 15 Sep 2026 14:50:05 +1000 Subject: [PATCH] Housekeeping --- config/filters.js | 6 + content/about.md | 12 +- content/developers/api/announcement.md | 2 +- content/developers/api/buildings/index.md | 24 ++- content/developers/api/index.md | 193 ++++++++++-------- content/developers/api/modules/index.md | 6 +- content/developers/api/payments.md | 19 -- content/developers/api/reference/index.njk | 10 +- content/developers/api/reference/schemas.njk | 4 +- content/developers/index.md | 44 ++-- content/help/index.md | 16 +- content/privacy/index.md | 2 +- content/rules/index.md | 5 +- content/servers.njk | 7 + content/servers/index.md | 28 --- content/servers/index.njk | 34 +++ content/terms/index.md | 95 ++++----- content/wiki/alliance-logo.md | 18 +- content/wiki/buildings.md | 4 +- content/wiki/clients-and-utilities.md | 2 +- content/wiki/development-ministry.md | 2 +- content/wiki/game-administrators-or-admins.md | 2 +- content/wiki/how-spying-works.md | 2 +- content/wiki/index.md | 7 +- content/wiki/mining-ministry.md | 2 +- css/index.css | 6 +- data/servers.js | 11 + includes/layouts/base.njk | 28 +++ includes/partials/site-footer.njk | 4 +- package-lock.json | 1 + 30 files changed, 318 insertions(+), 278 deletions(-) delete mode 100644 content/developers/api/payments.md create mode 100644 content/servers.njk delete mode 100644 content/servers/index.md create mode 100644 content/servers/index.njk create mode 100644 data/servers.js diff --git a/config/filters.js b/config/filters.js index 301d278..48d246d 100644 --- a/config/filters.js +++ b/config/filters.js @@ -73,4 +73,10 @@ export default function (eleventyConfig) { } return type }) + + eleventyConfig.addFilter('prettyPrintJson', (obj) => { + if (!obj || typeof obj !== 'object') return '' + + return JSON.stringify(obj, null, 2) + }) } diff --git a/content/about.md b/content/about.md index 039bd42..03bc4ee 100644 --- a/content/about.md +++ b/content/about.md @@ -9,9 +9,9 @@ recreation of the interface and gameplay mechanics from when the game was "compl mid-2010's. There is a playable server and this site, which collects the old developer documentation and a recovered copy of the player-maintained wiki. -Everyone working on it is an unpaid contributor. If you want to help - running the server, fixing -the client, writing docs, or playing and reporting bugs - the code lives at -[github.com/tlecommunity](https://github.com/tlecommunity), or email +Everyone working on it is a volunteer contributor. If you want to help - running the server, fixing +the client, writing docs, or playing-testing and reporting bugs - the code lives at +[https://tangled.org/tlecommunity.com](https://tangled.org/tlecommunity.com), or email [natalie@thecommunity.com](mailto:natalie@thecommunity.com). ## Credits & attribution @@ -33,6 +33,6 @@ to detract from any present-day Lacuna Expanse endeavour. resized or reformatted, per that license. - **Wiki** - the [wiki](/wiki/) is a community-preserved copy of the original player wiki (circa 2013), kept for reference. -- **Developer documentation** - the [developer docs](/developers/) are imported from the original - developer site and are largely historical; the live [API reference](/developers/api/reference/) is - generated from the current `@tlecommunity/api-spec`. +- **Developer Documentation** - the [developer docs](/developers/) are imported from the original + developer site; the live [API reference](/developers/api/reference/) is generated from + [@tlecommunity/api-spec](https://tangled.org/tlecommunity.com/api-spec). diff --git a/content/developers/api/announcement.md b/content/developers/api/announcement.md index 0770946..c448ce4 100644 --- a/content/developers/api/announcement.md +++ b/content/developers/api/announcement.md @@ -7,7 +7,7 @@ layout: 'layouts/page.njk' The announcement system is used to announced scheduled server maintenance, contests, etc. -**NOTE:** This API is **not** JSON-RPC based. It just returns an HTML document. +**Note:** This API is **not** JSON-RPC based. It just returns an HTML document. The client should call this URI to fetch the announcement whenever the `server` status block contains `announcement` like this: diff --git a/content/developers/api/buildings/index.md b/content/developers/api/buildings/index.md index 1a278af..7c230aa 100644 --- a/content/developers/api/buildings/index.md +++ b/content/developers/api/buildings/index.md @@ -6,17 +6,19 @@ title: 'Buildings Overview' # Building Descriptions Your app can download a copy of the building descriptions from -`http://servername.tlecommunity.com/resources.json`. Your app should cache this file, and only -download a new copy if it has changed. We do not include this information in -[`body/get_buildings`](/developers/api/reference/body/#get_buildings) because it's the same on every -request for every empire and would add a lot of bandwidth for nothing. +`https://servername.tlecommunity.com/resources.json` for example Meanjin One's resource file lives +at +[https://meanjin-one.tlecommunity.com/resources.json](https://meanjin-one.tlecommunity.com/resources.json). +Your app should cache this file, and only download a new copy if it has changed. We do not include +this information in [`body/get_buildings`](/developers/api/reference/body/#get_buildings) because +it's the same on every request for every empire and would add a lot of bandwidth for nothing. # Building Methods All buildings have some methods in common. This is a description of the methods available from each building. -**NOTE:** To use these methods, you must use the URL of the individual building type. Every building +**Note:** To use these methods, you must use the URL of the individual building type. Every building type has its own page in the [API reference](/developers/api/reference/) listing these shared methods plus any extras. @@ -353,13 +355,13 @@ Returns **view** # Space Station Modules -Space stations have buildings too (called Modules), but they don't behave exactly the same as ground -based buildings. See [Modules vs buildings](/developers/api/modules/) for more information. +Space Stations have buildings too (called Modules), but they don't behave exactly the same as ground +based buildings. See [Modules vs Buildings](/developers/api/modules/) for more information. # Building Types Every type of structure that can be built on a planet has its own page in the -[API reference](/developers/api/reference/) - for example -[`spaceport`](/developers/api/reference/spaceport/) or -[`planetarycommand`](/developers/api/reference/planetarycommand/). They all share the methods above, -and many add extras. +[API Reference](/developers/api/reference/) - for example +[Space Port](/developers/api/reference/spaceport/) or +[Planetary Command Center](/developers/api/reference/planetarycommand/). They all share the methods +above, and many add extras. diff --git a/content/developers/api/index.md b/content/developers/api/index.md index 862db51..a51ce7a 100644 --- a/content/developers/api/index.md +++ b/content/developers/api/index.md @@ -3,42 +3,43 @@ title: 'Introduction to the TLE API' layout: 'layouts/page.njk' --- -This document can introduce you to interacting with the Lacuna Expanse game server. +This document can introduce you to interacting with the TLE Community game server. -# SERVERS +# Servers The list of playable servers can be read from -[http://www.tlecommunity.com/servers.json](http://www.tlecommunity.com/servers.json). +[https://tlecommunity.com/servers.json](/servers.json). ```json -[ - { - "name": "meanjin-one", - "uri": "https://meanjin-one.tlecommunity.com/", - "status": "Open", - "location": "Meanjin/Brisbane, Australia", - "type": "Empire Server", - "description": "Long term empire building, with focus on exploration, trade and malevolent AI." - } -] +{{ servers | prettyPrintJson | safe }} ``` Each server in this list is an instance of the game, an individual universe separated from the others. Your app will need to allow users to select which server they want to interact with from this list. -# JSON-RPC +## API Versions + +Currently two versions of the API exist together. The responses and paramters are fundamentally the +same however the conventions for sending requests and receiving responses are very different. The V2 +convention was introduced as part of the TLE Community rollout and will be the standard going +forward, however the old system is supported and will likely remain for the lifetime of this edition +of the game. + +### V1 AKA "JSON-RPC" -The Lacuna Expanse uses a JSON-RPC 2.0 based API. You can read more about JSON-RPC 2.0 at +TLE Community uses a JSON-RPC 2.0 based API. You can read more about JSON-RPC 2.0 at [http://www.jsonrpc.org/specification](http://www.jsonrpc.org/specification). You can access these methods either as HTTP POSTs or GETs. -## HTTP GET +#### HTTP GET Many of the methods can be accessed using an HTTP GET request. Here's an example URL: - https://game.tlecommunity.com/empire?jsonrpc=2.0&id=1&method=is_name_available¶ms=["Lacuna Expanse Corp"] +``` +https://game.tlecommunity.com/empire?jsonrpc=2.0&id=1&method=is_name_available¶ms=["Lacuna Expanse Corp"] +``` The `https://game.tlecommunity.com/` part gets you to the server. @@ -50,18 +51,20 @@ To make it JSON-RPC 2.0 compatible, you must include the `jsonrpc=2.0&id=1` part Then specify the method you wish to call with `method=is_name_available`. And finally pass in whatever parameters you need like `params=["Lacuna Expanse Corp"]`. Parameters -need to be encoded in JSON. Most requests now require a hash reference of parameters, this would -look like `params={"this":"that","foo":"bar"}` +need to be encoded in JSON. Some requests require an object of parameters, this would look like +`params={"this":"that","foo":"bar"}` -**NOTE:** You must URL encode the params. If you don't, you'll get a parse error from the server. +**Note:** You must URL encode the params. If you don't, you'll get a parse error from the server. -## HTTP POST +#### HTTP POST Most programming languages will have a JSON-RPC 2.0 client you can either use directly, or download from the internet. These will use HTTP POST. If you need to manually create a POST, it would look like: - POST https://game.tlecommunity.com/species +``` +POST https://game.tlecommunity.com/species +``` ```json { @@ -72,11 +75,11 @@ like: } ``` -**NOTE:** It's important to make the distinction here that when you're sending a POST, you're not +**Note:** It's important to make the distinction here that when you're sending a POST, you're not sending URL parameters. You're sending a full POST body. If you format it with parameters like a GET request you'll get a parse error in response. -### Use Post When Possible +##### Use Post When Possible HTTP POST is the preferred method of execution. The reasons for this are: @@ -86,11 +89,11 @@ HTTP POST is the preferred method of execution. The reasons for this are: - If you use an HTTP GET, you'll need to URL Encode the params, but with POST you don't need to do that. -## Response +#### Response Either way you'll get a response back with either a result or an error message. -### Result +#### Result If you make a successful request you'll get a response like: @@ -98,11 +101,11 @@ If you make a successful request you'll get a response like: { "jsonrpc": "2.0", "id": 1, - "result": 0 + "result": 1 } ``` -### Error +#### Error If an exception is thrown you'll get an error response. It's a hash containing a code, message, and data section. @@ -119,74 +122,95 @@ data section. } ``` -**NOTE:** If you get a JSON-RPC error, then the web server will also give you a 500 HTTP error code. +**Note:** If you get a JSON-RPC error, then the web server will also give you a 500 HTTP error code. -## Named parameter requests +### V2 AKA "Open API/Swagger" -Starting in Version 4.000 of the server code, named arguments have been introduced. The use of -positional arguments is no longer supported. +Available on the `/v2/` endpoint of any TLE Community server is a more idiomatic layout of the +game's API. Using HTTP POST you can call `https://game.tlecommunity.com/v2//` and +get a JSON response. The Session ID is passed in via the `Authorization` HTTP header with the header +value taking the form `Token `. Finally - named arguments are supported for all API +calls to reduce ambiguity in the spec. The server's `/v2/` proxy layer still supports sending +positional arguments (it just passes them through without changing them) however if you send an +object, it will convert that into the legacy positional args on-the-fly. -As an example, the following is a call to the shipyard API to find out what fleets are buildable -using both the original positional arguments and the new named argument calling conventions. +#### Response -### original positional calling convention (no longer supported) +A complete example would look like the following: + +``` +POST https://game.tlecommunity.com/v2/spaceport/get_ships_for +Authorization: Token +Body: { + "from_body_id": 1234, + "target": { "star_id": 5678 }, +} +``` ```json { "jsonrpc": "2.0", "id": 1, - "method": "get_buildable", - "params": ["329da49c-7e88-4897-9d8c-3e5f6309d9b7", "127894", "Trade"] + "result": { + "available": [], + "unavailable": [ + { + "ship": { + "date_available": "11 09 2026 02:08:54 +0000", + "date_started": "11 09 2026 02:08:54 +0000", + "hold_size": 0, + "payload": [], + "combat": 0, + "id": 133, + "fleet_speed": 0, + "number_of_docks": null, + "can_recall": 0, + "type": "short_range_colony_ship", + "berth_level": 0, + "image": "short_range_colony_ship", + "stealth": 0, + "task": "Docked", + "can_scuttle": 1, + "max_occupants": 0, + "name": "The Gift", + "speed": 5500, + "type_human": "Short Range Colony Ship" + }, + "reason": [1009, "Can only be sent to planets."] + } + ], + "incoming": [], + "fleet_send_limit": 600, + "status": { + "empire": "Omitted for brevity", + "body": "Omitted for brevity", + "server": { + "rpc_limit": 2000, + "time": "15 09 2026 03:58:25 +0000", + "version": 4.0004, + "star_map_size": { "x": [-2000, 2000], "y": [-2000, 2000] } + } + } + } } ``` -This method is no longer supported. It is shown in case you have any scripts which need to be -modified and for comparison with the following. +#### Error -### new named argument calling convention +An error response is exactly the same as the old API: ```json { "jsonrpc": "2.0", "id": 1, - "method": "get_buildable", - "params": { - "session_id": "329da49c-7e88-4897-9d8c-3e5f6309d9b7", - "tag": "Trade", - "building_id": "127894" + "error": { + "code": 1000, + "message": "Name not available.", + "data": null } } ``` -Parameters are named and can be in any order, if a parameter is optional, then just don't include -it. This convention allows future enhancements to methods without breaking backwards compatibility -or having long lists of fixed place arguments. - -## Date Format - -As of Version 4.00 the date format has changed. - -### original date format (no longer supported) - -``` - "MM DD YYYY hh:mm:ss +zone" - e.g. - "01 31 2013 13:15:59 +0000" -``` - -This has been discontinued due to ambiguity of dates such as 7th Apr 2013 which was previously "04 -07 2013" and in most parts of the world would be interpreted as 4th July 2013. - -### New date format - -``` - "YYYY MM DD hh:mm:ss +zone" - e.g. - "2013 01 31 13:15:59 +0000" -``` - -This format is unambiguous in all parts of the world. - ## RPC Limit You may only make a number of calls up to the RPC Limit in a given 24 hour period. The current limit @@ -199,7 +223,7 @@ of redundant requests. For example `body.get_buildings()` returns the entire lis a time as to when their stats will change. So instead of calling every building on every planet every time your program looks something up, cache it until it changes. -# Status +## Status Most methods will provide a status block as part of the response. This is used to update the user interface and alert the user to things. The status block looks like this: @@ -235,21 +259,14 @@ Methods using the 'hash of named parameters' method can specify a 'no_status : 1 will inhibit the return of a status block. This can be slightly more efficient for those cases where you don't care to check the status so often. -# Modules +## Modules -The full, generated list of RPC modules and their methods lives in the -**[API reference](/developers/api/reference/)** - one page per module, each with request and result -schemas, backed by a [shared-schemas page](/developers/api/reference/schemas/). It is generated from -the `@tlecommunity/api-spec` OpenAPI document, so it tracks the current `/v2` server API rather than -this page's historical prose. +The full, list of RPC modules and their methods lives in the +[API reference](/developers/api/reference/). -The following pages are maintained by hand: - -- [Error codes](/developers/api/error-codes/) - codes that may be thrown by any method. -- [API keys](/developers/api/api-keys/) - you need a key to call the API. -- [Payments](/developers/api/payments/) - how to let users purchase Essentia from your app (not - JSON-RPC). +- [Error Codes](/developers/api/error-codes/) - codes that may be thrown by any method. +- [API Keys](/developers/api/api-keys/) - you need a key to call the API. - [Announcement](/developers/api/announcement/) - the serverwide announcement endpoint (not JSON-RPC). - [Buildings overview](/developers/api/buildings/) and - [Modules vs buildings](/developers/api/modules/) - conceptual background. + [Modules vs Buildings](/developers/api/modules/) - conceptual background. diff --git a/content/developers/api/modules/index.md b/content/developers/api/modules/index.md index c940b15..a84fafe 100644 --- a/content/developers/api/modules/index.md +++ b/content/developers/api/modules/index.md @@ -12,11 +12,11 @@ Modules produce no resources, and therefore may be built to consume resources be levels. Modules can only be built, repaired, upgraded, downgraded, and demolished via acts of -[`parliament`](/developers/api/reference/parliament/). Therefore modules don't inherit the `build`, +[Parliament](/developers/api/reference/parliament/). Therefore modules don't inherit the `build`, `upgrade`, `downgrade`, `demolish`, and `repair` methods that ordinary buildings share. # Module Types Each module type has its own page in the [API reference](/developers/api/reference/) - for example -[`stationcommand`](/developers/api/reference/stationcommand/) or -[`artmuseum`](/developers/api/reference/artmuseum/). +[Station Command](/developers/api/reference/stationcommand/) or +[Art Museum](/developers/api/reference/artmuseum/). diff --git a/content/developers/api/payments.md b/content/developers/api/payments.md deleted file mode 100644 index f74a866..0000000 --- a/content/developers/api/payments.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: 'Payments' -layout: 'layouts/page.njk' ---- - -# Payments - -The payments system allows users to purchase essentia. There's not much for an app developer to do -here except to hand off to the payment system. Usually this involves opening a window for them. - -**NOTE:** This API is **not** JSON-RPC based. - -To initiate the payments process you simply need to open the following url: - - https://servername.tlecommunity.com/pay?session_id=xxxxxxxxxxxxxxxx - -The payment system will handle the rest. - -**NOTE:** The parameters in the above URL can be passed via GET or POST, it doesn't matter which. diff --git a/content/developers/api/reference/index.njk b/content/developers/api/reference/index.njk index 6746ea4..f12e287 100644 --- a/content/developers/api/reference/index.njk +++ b/content/developers/api/reference/index.njk @@ -5,17 +5,17 @@ const permalink = '/developers/api/reference/'

API reference

- Generated from @tlecommunity/api-spec (OpenAPI {{ apiSpec.info.version }}). Every + Generated from @tlecommunity/api-spec. Every method is an HTTP POST to /v2/<module>/<method> and returns the JSON-RPC envelope { "id", "jsonrpc", "result" }.

- See also shared schemas, - error codes, - API keys, and the - API overview. + See also: Shared Schemas, + Error Codes, + API Keys, and the + API Overview.

{{ apiSpec.moduleCount }} modules:

diff --git a/content/developers/api/reference/schemas.njk b/content/developers/api/reference/schemas.njk index 95bcc78..3eaae85 100644 --- a/content/developers/api/reference/schemas.njk +++ b/content/developers/api/reference/schemas.njk @@ -1,10 +1,10 @@ ---js -const title = 'Shared schemas' +const title = 'Shared Schemas' const permalink = '/developers/api/reference/schemas/' --- {% from "partials/api-schema.njk" import schema %} -

Shared schemas

+

Shared Schemas

Reusable object shapes referenced by $ref from the diff --git a/content/developers/index.md b/content/developers/index.md index a58ad4a..33ea8f3 100644 --- a/content/developers/index.md +++ b/content/developers/index.md @@ -3,18 +3,7 @@ title: Official Developer Program --- We have opened up our API's to developers so that they may create utilities, scripts, programs, -bots, and other software packages to aid players in playing this edition of The Lacuna Expanse, -managing alliances, and more. - -Other links to help you get started would be: - -- [API overview](/developers/api/) -- [Shared schemas](/developers/api/reference/schemas/) -- [Error codes](/developers/api/error-codes/) -- [API keys](/developers/api/api-keys/) - -For the full endpoint reference, see the [API Reference](/developers/api/reference/) which is -generated from the official OpenAPI spec for TLE Community. +bots, and other software packages to aid players in playing the game, managing alliances, and more. ## Developer Program Rules @@ -30,8 +19,8 @@ generated from the official OpenAPI spec for TLE Community. 6. These rules are subject to change without notice. It is your responsibility to visit this page regularly to keep up with changes. -\* Cheating is defined as circumventing the rules to gain an advantage other players don't have. -Cheating will be determined at the sole discretion of the TLE Community team. +_\* Cheating is defined as circumventing the rules to gain an advantage other players don't have. +Cheating will be determined at the sole discretion of the TLE Community team._ ## Attribution @@ -40,12 +29,29 @@ Plainblack, Lacuna Expanse Corp., and their contributors. This edition of the ga developer program, are operated by **TLE Community**, a group of unpaid volunteer open-source contributors. TLE Community is not a registered company and is not affiliated with, endorsed by, or sponsored by the original creators, and claims no ownership of the "The Lacuna Expanse" or "Lacuna -Expanse Corp" names or marks. See the [about page](/about/) for full credits. +Expanse Corp" names or marks. See the [About](/about/) page for full credits. + +## Getting Started -## Links +We recommend getting an [API Key](/developers/api/api-keys/). This allows you to keep track of +interesting stastics such as number of empires using the tool, essentia spend, etc. We also allow +hitting the server with an API Key of `anonymous` if you prefer however this will be taken away if +abused. The [TLE Community Rules](/rules/) and [Terms of Service](/terms/) have already been made +clear so consider this your only warning: do not fuck around, or else. +- [API Overview](/developers/api/) - Start here! Learn how to send requests to the server and the + rough outline of what the data looks like when it comes back. +- [Error Codes](/developers/api/error-codes/) - List of errors the TLE Community backend will throw + back at you. - [API Documentation](/developers/api/) - The official documentation of all public APIs. -- [Lacuna Assets Repository](https://github.com/plainblack/Lacuna-Assets) - The original game +- [Shared Schemas](/developers/api/reference/schemas/) - Shared schemas that you will see repeated + throughout the API. +- [Lacuna Assets Repository](https://tangled.org/tlecommunity.com/assets) - The original game artwork, for use in your own clients and utilities under the terms carried in that repository. -- [Lacuna Web Client Repository](https://github.com/plainblack/Lacuna-Web-Client) - The original - code used to create The Lacuna Expanse web client. It may be used to create your own client. +- [Lacuna App Repository](https://tangled.org/tlecommunity.com/app) - The code used to create TLE + Community web frontend. It may be used to create your own app or tool. +- [Lacuna Client Repository](https://tangled.org/tlecommunity.com/client) - TypeScript client for + TLE Community which can be used for other automation tools or serve as inspiration for + implementing your own API client. +- [API Keys - Meanjin One](https://meanjin-one.tlecommunity.com/apikey) - Get an API key to identify + your tool's usage as well as see interesting stats. diff --git a/content/help/index.md b/content/help/index.md index 2869dd1..47481b8 100644 --- a/content/help/index.md +++ b/content/help/index.md @@ -2,31 +2,31 @@ title: Help --- -## [Game Account Login](https://tlecommunity.com.au) +## Game Account Login You can use the green Play link at the top of any page to log in to the game. Just in case you don't -see that, [click here](https://tlecommunity.com.au) to log in. +see that, [click here](/servers/) to log in. Your account password, email address and other settings are managed from inside the game client. -## [Frequently Asked Questions](/wiki/faq/) +## Frequently Asked Questions Our [FAQ](/wiki/faq/) can answer your most common questions about the game. -## [Tutorial](/tutorial/) +## Tutorial If you are new to the game, you should check out the [tutorial](/tutorial/). It is a step by step video guide to getting introduced to the game user interface. -## [Documentation](/wiki/) +## Documentation -Our [wiki](/wiki/) is a community-preserved copy of the original player wiki. Some of it is out of -date, but it is still the best reference for how the game works. +Our [wiki](/wiki/) is a revived copy of the original player wiki from when the game was active in +the 2010's. Some of it is out of date, but it is still the best reference for how the game works. ## Getting Help and Reporting Problems TLE Community is run by volunteers. If you can't find an answer in the wiki or FAQ, found a bug, or need to reach the people running the server, open an issue at -[github.com/tlecommunity](https://github.com/tlecommunity) or email +[https://tangled.org/tlecommunity.com/server](https://tangled.org/tlecommunity.com/server) or email [natalie@thecommunity.com](mailto:natalie@thecommunity.com). We endeavour to answer as quickly as we can. diff --git a/content/privacy/index.md b/content/privacy/index.md index 732efa6..5e64ef0 100644 --- a/content/privacy/index.md +++ b/content/privacy/index.md @@ -74,4 +74,4 @@ _The Lacuna Expanse_ is the original commercial game, developed and published by Plainblack, Lacuna Expanse Corp., and their contributors. This edition of the game is operated by **TLE Community**, a group of unpaid volunteer open-source contributors, and is not affiliated with, endorsed by, or sponsored by the original creators. TLE Community claims no ownership of the "Lacuna -Expanse" name or marks. See the [about page](/about/) for full credits. +Expanse" name or marks. See the [About](/about/) page for full credits. diff --git a/content/rules/index.md b/content/rules/index.md index e9029ab..b940ef7 100644 --- a/content/rules/index.md +++ b/content/rules/index.md @@ -13,7 +13,8 @@ This document serves as a code of conduct for playing The Lacuna Expanse and aug their permission. Scamming is stealing through misrepresentation. 4. Software defects (also called bugs) may not be used to anyone's benefit. If a player discovers a bug, they are duty bound to report it to the TLE Community team on - [GitHub](https://github.com/tlecommunity). + [Tangled](https://tangled.org/tlecommunity.com/server) or by emailing + [natalie@tlecommunity.com](mailto:natalie@thecommunity.com). 5. Do not ever give out your password to anyone under any circumstances ever. If you want someone to log into your account, give them your sitter password. Likewise, if you are using any software to connect to the game other than the official clients, you should only use your sitter password @@ -26,4 +27,4 @@ termination of your account. _The Lacuna Expanse_ is the original game by JT Smith, Plainblack, Lacuna Expanse Corp., and contributors. This edition is run by TLE Community, a volunteer open-source project that is not -affiliated with the original creators - see the [about page](/about/) for full credits. +affiliated with the original creators - see the [About](/about/) page for full credits. diff --git a/content/servers.njk b/content/servers.njk new file mode 100644 index 0000000..738baec --- /dev/null +++ b/content/servers.njk @@ -0,0 +1,7 @@ +--- +title: Servers +permalink: servers.json +layout: '' +--- + +{{ servers | prettyPrintJson | safe }} diff --git a/content/servers/index.md b/content/servers/index.md deleted file mode 100644 index 6d291bc..0000000 --- a/content/servers/index.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Choose A Server ---- - -

-

- - Meanjin One - -

-

Long term empire building, never expires. Largest map with millions of planets, asteroids, and gas giants. Focussing on exploration, trade, and malevolent non-player empires.

-
    -
  • Type: Empire Server
  • -
  • Status: Open
  • -
  • Location: Meanjin/Brisbane, Australia
  • -
-

- - Play - -

-
diff --git a/content/servers/index.njk b/content/servers/index.njk new file mode 100644 index 0000000..cb42a95 --- /dev/null +++ b/content/servers/index.njk @@ -0,0 +1,34 @@ +--- +title: Choose A Server +--- + +{% for server in servers %} +
+

+ + {{ server.name }} + +

+

+ {{ server.description }} +

+
    +
  • Type: {{ server.type }}
  • +
  • Status: {{ server.status }}
  • +
  • Location: {{ server.location }}
  • +
+ {% if server.status == 'Open' %} +

+ + Play + +

+ {% endif %} +
+{% endfor %} diff --git a/content/terms/index.md b/content/terms/index.md index 0541459..3fa9265 100644 --- a/content/terms/index.md +++ b/content/terms/index.md @@ -23,11 +23,6 @@ Expanse Corp. terms; "Lacuna Expanse Corp" as the contracting party has been rep Community" except where the name refers to the original game, its creators, or the in-game entity of the same name. -> **Note:** This document was adapted from the original commercial game's terms and has not had a -> full legal review. Passages marked _[HUMAN LEGAL REVIEW]_ still reflect the original paid, -> company-run service and need a person to confirm or rewrite them for a volunteer, non-commercial -> operation. - ### Changes to the Terms of Service TLE Community may update these terms of service. We will notify you about significant changes by @@ -212,12 +207,9 @@ other TLE Community sites. violates the rights of a third party; or (d) protect the rights, property or safety of TLE Community, its members or the public. These Terms are also subject to TLE Community's general [Privacy Policy](/privacy/), which is incorporated by this reference as if set out in full. -11. Charges for Service. _[HUMAN LEGAL REVIEW]_ TLE Community operates this edition of The Lacuna - Expanse on a non-commercial, volunteer basis. It does not charge for the game, for the in-game - Essentia currency, or for any "Premium Services", and collects no fees of any kind. The original - commercial game charged for Essentia and for optional premium services; that wording has been - removed. If a paid offering is ever introduced, this section must be rewritten and you must be - given advance notice before any charge could apply to you. +11. Charges for Service. TLE Community operates this edition of The Lacuna Expanse on a + non-commercial, volunteer basis. It does not charge for the game, for the in-game Essentia + currency, or for any "Premium Services", and collects no fees of any kind. 12. International Use. Recognizing the global nature of the Internet, you agree to comply with all local rules regarding online conduct and acceptable content. Specifically, you agree to comply with all applicable laws regarding the transmission of technical data exported from the United @@ -235,12 +227,12 @@ other TLE Community sites. AVAILABLE" BASIS, AND MAKES NO WARRANTY OF PERFORMANCE OR QUALITY OR THAT THE SITE, SERVICES OR GAMES WILL BE ERROR-FREE OR UNINTERRUPTED. SOME JURISDICTIONS DO NOT PERMIT THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. -15. Limitation of Liability. _[HUMAN LEGAL REVIEW]_ NOTWITHSTANDING ANYTHING TO THE CONTRARY, THE - TOTAL LIABILITY OF TLE COMMUNITY AND ITS CONTRIBUTORS TO YOU ARISING FROM OR IN RELATION TO THIS - AGREEMENT, THE SITE, SERVICES OR GAMES SHALL BE LIMITED TO THE GREATEST EXTENT PERMITTED BY LAW. - TLE COMMUNITY COLLECTS NO FEES, SO NO PAYMENT-BASED LIABILITY CAP APPLIES. THE FOREGOING - LIMITATION SHALL NOT APPLY TO DAMAGES ARISING FROM DEATH OR PERSONAL INJURY TO PERSONAL OR - TANGIBLE PROPERTY IN ANY JURISDICTION WHERE SUCH LIMITATION IS PROHIBITED BY LAW. +15. Limitation of Liability. NOTWITHSTANDING ANYTHING TO THE CONTRARY, THE TOTAL LIABILITY OF TLE + COMMUNITY AND ITS CONTRIBUTORS TO YOU ARISING FROM OR IN RELATION TO THIS AGREEMENT, THE SITE, + SERVICES OR GAMES SHALL BE LIMITED TO THE GREATEST EXTENT PERMITTED BY LAW. TLE COMMUNITY + COLLECTS NO FEES, SO NO PAYMENT-BASED LIABILITY CAP APPLIES. THE FOREGOING LIMITATION SHALL NOT + APPLY TO DAMAGES ARISING FROM DEATH OR PERSONAL INJURY TO PERSONAL OR TANGIBLE PROPERTY IN ANY + JURISDICTION WHERE SUCH LIMITATION IS PROHIBITED BY LAW. 16. Consequential Damages. IN NO EVENT WILL TLE COMMUNITY OR ITS CONTRIBUTORS BE RESPONSIBLE OR LIABLE TO YOU FOR ANY CONSEQUENTIAL, SPECIAL, INDIRECT, INCIDENTAL, EXEMPLARY OR PUNITIVE DAMAGES OF ANY KIND, INCLUDING BUT NOT LIMITED TO ANY LOSS OF USE OR COSTS OF SUBSTITUTE @@ -257,18 +249,18 @@ other TLE Community sites. Public Content or any act or omission by you relating the Site, Services or Games. TLE Community reserves the right to assume its own defense and/or control of any matter otherwise subject to indemnification by you hereunder. -18. Termination. _[HUMAN LEGAL REVIEW]_ Either you or TLE Community may terminate your account and - this agreement upon notice at any time without further obligation to the other. Further, TLE - Community reserves the right to terminate the Site, Services and/or Games, or any part thereof, - at any time without notice and without further obligation to you. TLE Community collects no - fees, so no refund or proration of fees can arise. UPON TERMINATION OF THIS AGREEMENT, YOUR - ACCESS PRIVILEGES TO THE SITE, SERVICES AND GAMES WILL TERMINATE. A member whose account TLE - Community has terminated may not access the Site, Services or Games in any manner or for any - reason without TLE Community's express, prior, written permission. Termination of this agreement - shall have no effect on any obligation accrued prior to the effective date of termination. The - following sections shall survive termination: Participatory Content, Third Party Content, Idea - Submission Policy, Disclaimer of Warranty, Consequential Damages, Indemnification, Termination, - Amendment, Reservation of Rights, and General Provisions. +18. Termination. Either you or TLE Community may terminate your account and this agreement upon + notice at any time without further obligation to the other. Further, TLE Community reserves the + right to terminate the Site, Services and/or Games, or any part thereof, at any time without + notice and without further obligation to you. TLE Community collects no fees, so no refund or + proration of fees can arise. UPON TERMINATION OF THIS AGREEMENT, YOUR ACCESS PRIVILEGES TO THE + SITE, SERVICES AND GAMES WILL TERMINATE. A member whose account TLE Community has terminated may + not access the Site, Services or Games in any manner or for any reason without TLE Community's + express, prior, written permission. Termination of this agreement shall have no effect on any + obligation accrued prior to the effective date of termination. The following sections shall + survive termination: Participatory Content, Third Party Content, Idea Submission Policy, + Disclaimer of Warranty, Consequential Damages, Indemnification, Termination, Amendment, + Reservation of Rights, and General Provisions. 19. Amendment. TLE Community may amend the Terms in its sole discretion at any time by posting revised Terms on the Site, and you agree to regularly review the Terms. If any such revision is unacceptable to you, you may terminate your account and this agreement as provided in @@ -276,26 +268,25 @@ other TLE Community sites. after posting of the revised Terms shall constitute your acceptance of the same. Except as expressly set forth herein, the Terms may not otherwise be modified or amended. 20. Reservation of Rights. TLE Community hereby reserves any rights not expressly granted herein. -21. General Provisions. _[HUMAN LEGAL REVIEW: the governing law, venue, and notice address below - were carried over from the original company's California/Wisconsin terms and must be set by the - project maintainers before this document is relied upon.]_ You may not sublicense, rent, sell, - assign or otherwise transfer the rights or obligations granted to you in this agreement, and any - such attempted transfer shall be void. If any provision of this agreement is held to be - unenforceable for any reason, such provision shall be reformed only to the extent necessary to - make it enforceable, and such decision shall not affect the enforceability of: (i) such - provision under other circumstances, or (ii) the remaining provisions hereof under all - circumstances. TLE Community's failure to enforce at any time any provision of this agreement - shall in no way be construed to be a present or future waiver of such provision, nor in any way - affect the right of any party to enforce each and every such provision thereafter. The express - waiver by TLE Community of any provision, condition or requirement of this agreement shall not - constitute a waiver of any future obligation to comply with such provision, condition or - requirement. Notwithstanding anything to the contrary, no default, delay or failure to perform - on the part of TLE Community shall be considered a breach of this agreement if such default, - delay or failure to perform is shown to be due to causes beyond TLE Community's reasonable - control. This agreement is governed by the laws applicable where the TLE Community project - maintainers are located, and you agree to submit to the courts of that jurisdiction for the - resolution of any dispute arising from or related to this agreement. All notices to TLE - Community should be sent to natalie@thecommunity.com or raised as an issue at - . TLE Community may give notice to you at the e-mail address - you provide in the Registration Data. This agreement represents the entire agreement between you - and TLE Community with respect to the subject matter referenced herein. +21. General Provisions. You may not sublicense, rent, sell, assign or otherwise transfer the rights + or obligations granted to you in this agreement, and any such attempted transfer shall be void. + If any provision of this agreement is held to be unenforceable for any reason, such provision + shall be reformed only to the extent necessary to make it enforceable, and such decision shall + not affect the enforceability of: (i) such provision under other circumstances, or (ii) the + remaining provisions hereof under all circumstances. TLE Community's failure to enforce at any + time any provision of this agreement shall in no way be construed to be a present or future + waiver of such provision, nor in any way affect the right of any party to enforce each and every + such provision thereafter. The express waiver by TLE Community of any provision, condition or + requirement of this agreement shall not constitute a waiver of any future obligation to comply + with such provision, condition or requirement. Notwithstanding anything to the contrary, no + default, delay or failure to perform on the part of TLE Community shall be considered a breach + of this agreement if such default, delay or failure to perform is shown to be due to causes + beyond TLE Community's reasonable control. This agreement is governed by the laws applicable + where the TLE Community project maintainers are located, and you agree to submit to the courts + of that jurisdiction for the resolution of any dispute arising from or related to this + agreement. All notices to TLE Community should be sent to + [natalie@thecommunity.com](mailto:natalie@thecommunity.com) or raised as an issue at + [https://tangled.org/tlecommunity.com/server](https://tangled.org/tlecommunity.com/server). TLE + Community may give notice to you at the e-mail address you provide in the Registration Data. + This agreement represents the entire agreement between you and TLE Community with respect to the + subject matter referenced herein. diff --git a/content/wiki/alliance-logo.md b/content/wiki/alliance-logo.md index 475164c..53e47ba 100644 --- a/content/wiki/alliance-logo.md +++ b/content/wiki/alliance-logo.md @@ -10,25 +10,9 @@ superimposed over it._ - In order to use a custom alliance logo it is required to upload a PNG image file which measures 300x300 pixels and is named **logo\_xxxx\_###.png** (xxxx is alliance ID, ### is version number starting at 001) to - [Lacuna-Assets/alliances/us1/ on Github](https://github.com/plainblack/Lacuna-Assets/tree/master/alliances/us1). + [`assets/alliances/meanjin-one/` on Tangled](https://tangled.org/tlecommunity.com/assets/tree/main/alliances). - Due to a change in Feb 2016 it is not required anymore to use git, instead files can be added directly via the webpage. Afterwards you may issue a pull request to the plainblack repository which needs to get accepted (feel free to contact an admin like Norway/Sweden). - Be aware that changing your alliance logo requires to upload a new image file with an incremented version number. - -Here is an example of an alliance logo: - -Screenshot of what it looks like on the Starmap: - ---- - -## Community notes - -> **Matthew Quallie:** What does "Fork" the repository mean? - -> **Tarthos:** this needs better explanation on how to add this. - -> **TRSS:** 2015-03-12 Added details and image - -> **Kaboom3009:** Fork cabn be found here .. https://help.github.com/articles/fork-a-repo/ diff --git a/content/wiki/buildings.md b/content/wiki/buildings.md index 29a2d30..3be474e 100644 --- a/content/wiki/buildings.md +++ b/content/wiki/buildings.md @@ -31,6 +31,6 @@ game. ## Community notes > **ore swappers:** -> https://github.com/plainblack/Lacuna-Server-Open/tree/master/lib/Lacuna/DB/Result/Building check -> out building stats straight out of the server source code. (or building names to help with your +> https://tangled.org/tlecommunity.com/server/tree/main/lib/Lacuna/DB/Result/Building check out +> building stats straight out of the server source code. (or building names to help with your > scripts) diff --git a/content/wiki/clients-and-utilities.md b/content/wiki/clients-and-utilities.md index 05334f3..7866ecb 100644 --- a/content/wiki/clients-and-utilities.md +++ b/content/wiki/clients-and-utilities.md @@ -35,5 +35,5 @@ This is a list of browser extensions: - Lacuna Pro (Chrome) -**NOTE:** You should never use your regular password with an unofficial client or utility. Use the +**Note:** You should never use your regular password with an unofficial client or utility. Use the sitter password which you can set in the [web client](/wiki/web-client/) in the profile settings. diff --git a/content/wiki/development-ministry.md b/content/wiki/development-ministry.md index e247f9f..02d2d0e 100644 --- a/content/wiki/development-ministry.md +++ b/content/wiki/development-ministry.md @@ -12,7 +12,7 @@ through the use of [Essentia](/wiki/essentia/) to build them faster. The higher building the more [buildings](/wiki/buildings/) you can have in your queue. The number of projects that can be placed in the queue is the level of the ministry plus 1. -**NOTE:** The build queue is a queue, which means that the [buildings](/wiki/buildings/) in the +**Note:** The build queue is a queue, which means that the [buildings](/wiki/buildings/) in the queue build in series (one after the other), not in parallel (at the same time). Therefore if you have one building already in the queue which takes 5:00 to build, and you add another building which takes 1:30 to build, then the second building will be completed in 6:30. diff --git a/content/wiki/game-administrators-or-admins.md b/content/wiki/game-administrators-or-admins.md index 3e879e6..c4f9b2c 100644 --- a/content/wiki/game-administrators-or-admins.md +++ b/content/wiki/game-administrators-or-admins.md @@ -5,7 +5,7 @@ title: 'Game Administrators or Admins' # Game Administrators or Admins > Preserved from the original player wiki. This roster is from the original game and is not the -> current TLE Community team - see the [about page](/about/) for who runs this edition. +> current TLE Community team - see the [About](/about/) page for who runs this edition. There are currently 4 active game administrators of [The Lacuna Expanse](/wiki/the-lacuna-expanse/). diff --git a/content/wiki/how-spying-works.md b/content/wiki/how-spying-works.md index 883f438..a3dfa4a 100644 --- a/content/wiki/how-spying-works.md +++ b/content/wiki/how-spying-works.md @@ -9,7 +9,7 @@ everything about spying. First let's start with a flow chart that you can reference to see how all these pieces fit together. -**NOTE:** The chart is not complete. It is meant to give you an idea of what can happen, not +**Note:** The chart is not complete. It is meant to give you an idea of what can happen, not necessarily will happen. For example "No Contact" can be triggered if there's no one there to kill just as easily if there's no one there to knock out. And there are more than 3 possible outcomes on each side of the equation. Just flow charting all of that would be a very large flow chart. diff --git a/content/wiki/index.md b/content/wiki/index.md index 4ca08d0..8570119 100644 --- a/content/wiki/index.md +++ b/content/wiki/index.md @@ -4,10 +4,9 @@ title: 'Wiki' # Wiki -A community-preserved copy of the original _Lacuna Expanse_ player wiki. Start with the -[getting started](/wiki/getting-started/) guide, or dig into [buildings](/wiki/buildings/), -[ships](/wiki/ships/), [alliances](/wiki/alliances/), [medals](/wiki/medals/), -[stats](/wiki/stats/), and [resources](/wiki/resources/). +Start with the [Getting Started](/wiki/getting-started/) guide, or dig into +[Buildings](/wiki/buildings/), [Ships](/wiki/ships/), [Alliances](/wiki/alliances/), +[Medals](/wiki/medals/), [Stats](/wiki/stats/), and [Resources](/wiki/resources/). > These pages were imported from the old game wiki (circa 2013) and are preserved for reference. > Some information is out of date. Guides here were written by players of the original game and are diff --git a/content/wiki/mining-ministry.md b/content/wiki/mining-ministry.md index 9a653f5..0532b3e 100644 --- a/content/wiki/mining-ministry.md +++ b/content/wiki/mining-ministry.md @@ -13,7 +13,7 @@ also allows management of deployed [mining platform](/wiki/mining-platform/)s an of [cargo ship](/wiki/cargo-ship/)s to and from the platforms. You can control one platform per two levels of the mining ministry. -**NOTE:** The Mining Ministry is no easy building to make work. It takes lots of platforms and lots +**Note:** The Mining Ministry is no easy building to make work. It takes lots of platforms and lots of upgrades before it becomes profitable, but once it does become profitable it is well worth the effort. diff --git a/css/index.css b/css/index.css index 2803d1c..19f29ab 100644 --- a/css/index.css +++ b/css/index.css @@ -2,9 +2,9 @@ :root { --font-family: -apple-system, system-ui, sans-serif; --font-family-monospace: - Consolas, Menlo, Monaco, Andale Mono WT, Andale Mono, Lucida Console, Lucida Sans Typewriter, - DejaVu Sans Mono, Bitstream Vera Sans Mono, Liberation Mono, Nimbus Mono L, Courier New, - Courier, monospace; + Victor Mono, Victor Mono Nerd Font Mono, Consolas, Menlo, Monaco, Andale Mono WT, Andale Mono, + Lucida Console, Lucida Sans Typewriter, DejaVu Sans Mono, Bitstream Vera Sans Mono, + Liberation Mono, Nimbus Mono L, Courier New, Courier, monospace; } /* Theme colors */ diff --git a/data/servers.js b/data/servers.js new file mode 100644 index 0000000..44d2b5a --- /dev/null +++ b/data/servers.js @@ -0,0 +1,11 @@ +export default [ + { + name: 'Meanjin One', + uri: 'https://meanjin-one.tlecommunity.com/app/', + status: 'Open', + location: 'Meanjin/Brisbane, Australia', + type: 'Empire Server', + description: + 'Long term empire building, never expires. Largest map with millions of planets, asteroids, and gas giants. Focussing on exploration, trade, and malevolent non-player empires.', + }, +] diff --git a/includes/layouts/base.njk b/includes/layouts/base.njk index fe17cd5..f0a08a5 100644 --- a/includes/layouts/base.njk +++ b/includes/layouts/base.njk @@ -3,9 +3,12 @@ + {% if title %}{{ title }} | {{ metadata.title }}{% else %}{{ metadata.title }}{% endif %} + + @@ -15,6 +18,29 @@ Nunjucks re-parsing of the CSS; `eleventy:ignore` keeps it out of the bundle scrape. #} + {# Syntax-highlighter CSS #} + + + + {#- Per-page CSS bundle (Prism theme from post.njk, any {% css %} shortcodes). #} @@ -22,8 +48,10 @@ {#- heading-anchors web component, added to the JS bundle #} + {#- Mailchimp #} + {#- Umami, open source analytics that respects privacy #} diff --git a/includes/partials/site-footer.njk b/includes/partials/site-footer.njk index ace3437..5c94c4f 100644 --- a/includes/partials/site-footer.njk +++ b/includes/partials/site-footer.njk @@ -20,8 +20,8 @@ TLE Community is a volunteer-run reboot of The Lacuna Expanse originally created by JT Smith, Plainblack, Lacuna Expanse Corp., and open-source contributors; credit is given whereever possible. See the - about page - for more details. Footer icons by + About + page for more details. Footer icons by Icons8.

diff --git a/package-lock.json b/package-lock.json index 85bc5b8..71f6d3e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,6 +7,7 @@ "": { "name": "@tlecommunity/site", "version": "1.0.0", + "license": "GPL-3.0-only", "dependencies": { "@tlecommunity/api-spec": "^1.6.3", "@zachleat/heading-anchors": "^1.0.5" -- 2.51.2