diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index e94e1b3..89eacf5 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -4,6 +4,8 @@ on: push: branches: - master + # Remove before merging + - feature/i18n paths-ignore: - '.github/CODEOWNERS' - '.github/workflows/pr.yml' @@ -26,55 +28,158 @@ concurrency: cancel-in-progress: true jobs: - build: + sync: name: Deploy to GitHub Pages runs-on: ubuntu-latest + outputs: + locales: ${{ steps.locales.outputs.locales }} + commit: ${{ steps.commit.outputs.commit-hash == '' && steps.commit.outputs.commit-hash || github.sha }} + permissions: + contents: write + env: + # Forks have no Crowdin secrets: skip the translation sync there, and deploy the pushed commit as is + CROWDIN_ENABLED: ${{ secrets.CROWDIN_TOKEN != '' }} steps: - - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af + - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 with: node-version: 22 + package-manager-cache: false - name: Enable Corepack run: corepack enable - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with: fetch-depth: 0 - - name: Setup Pages - uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b - - - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af + - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 with: node-version: 22 cache: yarn + package-manager-cache: true - name: Install dependencies - run: yarn install --frozen-lockfile + run: yarn install --immutable - - uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 + - name: Sync Translations + if: env.CROWDIN_ENABLED == 'true' + run: yarn crowdin-sync + env: + CROWDIN_TOKEN: ${{ secrets.CROWDIN_TOKEN }} + CROWDIN_ORGANIZATION: ${{ secrets.CROWDIN_ORGANIZATION }} + + - name: Commit Changes + if: env.CROWDIN_ENABLED == 'true' + id: commit + # See https://github.com/planetscale/ghcommit-action/releases + uses: planetscale/ghcommit-action@f24050e41f8694750427d111b52f4ef9ca81a32d # v0.2.18 + with: + commit_message: "Sync translations with Crowdin" + repo: ${{ github.repository }} + branch: ${{ github.head_ref || github.ref_name }} + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + + - name: Get locales + run: yarn output-locales + + - name: Define matrix + id: locales + run: echo "locales=$(cat locales.json)" >> $GITHUB_OUTPUT + + build: + runs-on: ubuntu-latest + needs: sync + strategy: + matrix: + locales: ${{ fromJson(needs.sync.outputs.locales) }} + steps: + - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 + with: + node-version: 22 + package-manager-cache: false + + - name: Enable Corepack + run: corepack enable + + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 + with: + fetch-depth: 0 + ref: ${{ needs.sync.outputs.commit }} + + - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 + with: + node-version: 22 + package-manager-cache: false + + - name: Restore Yarn Cache + uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 + with: + path: /home/runner/.yarn/berry/cache + key: | + node-cache-${{ runner.os }}-x64-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + node-cache-${{ runner.os }}-x64-yarn- + + - name: Install dependencies + run: yarn install --immutable + + - name: Restore Docusaurus Cache + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 with: path: | ${{ github.workspace }}/.docusaurus ${{ github.workspace }}/**/.cache key: | - ${{ runner.os }}-docusaurus-${{ hashFiles('**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }} + ${{ runner.os }}-docusaurus-${{ matrix.locales }}-${{ hashFiles('**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }} restore-keys: | - ${{ runner.os }}-docusaurus-${{ hashFiles('**/yarn.lock') }} + ${{ runner.os }}-docusaurus-${{ matrix.locales }}-${{ hashFiles('**/yarn.lock') }} - - name: Build website - run: yarn build + - name: Build Locale + run: yarn build --locale ${{ matrix.locales }} + env: + # The Mermaid theme makes the client bundle too large for Node's default heap + NODE_OPTIONS: --max-old-space-size=8192 - name: Upload artifact - uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 with: path: build + name: ${{ matrix.locales }} + + combine: + runs-on: ubuntu-latest + needs: [build, sync] + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 + with: + fetch-depth: 0 + ref: ${{ needs.sync.outputs.commit }} + + - name: Setup Pages + uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b + + - name: Download artifacts + uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 + with: + path: build + + - name: Move default locale to root build + run: | + mv build/en/* build/ + rm -rf build/en + + - name: Upload artifact + uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b + with: + path: build + deploy: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest - needs: build + needs: combine steps: - name: Deploy to GitHub Pages id: deployment diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 2054ac6..0e19d08 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -8,39 +8,43 @@ jobs: name: Build PR runs-on: ubuntu-latest steps: - - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af + - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 with: node-version: 22 - name: Enable Corepack run: corepack enable - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with: fetch-depth: 0 - - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af + - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 with: node-version: 22 cache: yarn + package-manager-cache: true - name: Install dependencies - run: yarn install --frozen-lockfile + run: yarn install --immutable - - uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57 + - uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 with: path: | ${{ github.workspace }}/.docusaurus ${{ github.workspace }}/**/.cache key: | - ${{ runner.os }}-docusaurus-${{ hashFiles('**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }} + ${{ runner.os }}-docusaurus-en-${{ hashFiles('**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }} restore-keys: | - ${{ runner.os }}-docusaurus-${{ hashFiles('**/yarn.lock') }} + ${{ runner.os }}-docusaurus-en-${{ hashFiles('**/yarn.lock') }} - name: Build website - run: yarn build + run: yarn build --locale en + env: + # The Mermaid theme makes the client bundle too large for Node's default heap + NODE_OPTIONS: --max-old-space-size=8192 - name: Upload artifact - uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa + uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b with: path: build \ No newline at end of file diff --git a/.gitignore b/.gitignore index 627f2ff..ef4d8fe 100755 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,7 @@ vendor .env.development.local .env.test.local .env.production.local +locales.json npm-debug.log* yarn-debug.log* diff --git a/.yarnrc.yml b/.yarnrc.yml index 3186f3f..063ed60 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -1 +1,8 @@ +approvedGitRepositories: + - "**" + +enableScripts: true + nodeLinker: node-modules + +npmMinimalAgeGate: 0 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 526d457..596b7d5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,42 +18,52 @@ Small changes can be made directly in the GitHub interface, but larger changes s ## Adding a Supported Hosting Provider -Supported hosting providers are listed in `src/data/providers.ts`. Hosting providers are grouped into three subcategories: +If you run a hosting service, see [HOSTING_PROVIDERS.md](HOSTING_PROVIDERS.md) for what to fill in, and which pre-configured strings to use. -- `built_in`: Providers that have fully automatic Geyser installation. -- `supported`: Providers that work with Geyser but require manual installation. -- `no_support`: Providers that do not work with Geyser. +Hosting providers are listed in `src/data/providers.ts`, in alphabetical order. The setup guide generates the Geyser config changes and connection instructions from each entry. +Set `updated` to the date you add or edit an entry (`'YYYY-MM-DD'`); the setup guide shows it as "Instructions last updated on". +See `src/types/providers.ts` for all fields. They are grouped in the order the setup guide shows them: `links` to the host's own help pages, `install` (step 1), `config` (step 2), `extra_step` (step 3), `connect` (step 4), and `notices` shown around the guide. -To add a new provider, add an object to the appropriate subcategory in alphabetical order. For example, to add a provider named `Example Hosting Provider` to the `supported` subcategory, edit the `providers.ts` file as follows: +Geyser uses NetherNet for Bedrock connections, which needs: + +- **UDP** for game traffic flowing over WebRTC (`config.udp`), and +- **TCP** for signaling, which is how Bedrock players find the server. Geyser can do this itself ("built-in" signaling, which needs a **TCP** port that is not the Java server's port), or through an external signaling service ([Warden](https://warden.cloud) by default), which needs no extra port. + +Ports (`udp` and `builtin_signaling`) can be: + +- `'java'`: the Java server's port (UDP only; built-in signaling cannot share the Java server's TCP port), +- a number, e.g. `19132`, if it is always the same, +- `{ obtain: translate({...}) }` with how to get one, e.g. "Open an allocation in the Network tab.". The guide adds which config option to set it as. + +Prefer a single port: use `builtin_signaling: 'same_as_udp'` when the UDP port is also open on TCP (e.g. Pterodactyl allocations), so users only need one port. Only give `builtin_signaling` its own port if the host really hands out TCP and UDP separately. Leave `builtin_signaling` out if your servers only support external signaling, and set `external_signaling` if you run your own signaling service (or `false` if external signaling is blocked). + +Anything else users need to change in the config, such as which Bedrock address to use, goes in `config.notes`, which are shown below the generated config. + +Every string is translated, so keep them few: use the templates at the top of `src/data/providers.ts` (such as `ports.assign` or `customInstallLocations.plugin_list`) where they fit, and only set `install`, `connect` or notes when the generated steps are not enough. + +If the host has not confirmed these details yet, set `config.confirmed: false`, and the guide shows a warning. Remove it once the host confirms them. ```diff - { - name: 'Cubes Hosting', - url: 'https://www.cubes.host/', - description: translate({ - id: 'providers.provider.cubes_hosting.description', - message: "Install Geyser using the plugin manager. Then restart the server and Geyser will run on an additional port - you can check it in the server console. Geyser-Standalone can be set up through a support ticket." - }) - }, + { -+ name: 'Example Hosting Provider', -+ url: 'https://example.com/', -+ description: translate({ -+ id: 'providers.provider.example_hosting_provider.description', -+ message: "Add a description of how to install Geyser on this hosting provider." -+ }) ++ name: 'Example Hosting Provider', ++ url: 'https://example.com/', ++ updated: '2026-10-11', ++ links: { article: 'https://example.com/docs/geyser' }, ++ config: { ++ udp: { ++ obtain: translate({ ++ id: 'providers.provider.example_hosting_provider.port', ++ message: "Open an additional port in the Network tab." ++ }) ++ }, ++ builtin_signaling: 'same_as_udp' ++ } + }, - { - name: 'exaroton', - url: 'https://exaroton.com/', - description: translate({ - id: 'providers.provider.exaroton.description', - message: descriptionTemplates.default - }) - }, ``` -If possible, use one of the templates listed at the top of the file, such as `descriptionTemplates.default`. +Hosts that support Geyser through Open Collaboration also get an `open_collaboration` entry with their `tier` (`bronze`, `silver` or `gold`), and an optional `logo` (placed in `static/img/hosts`) and `description`. Silver and gold hosts are listed on the [Hosting Providers](https://geysermc.org/hosting) page, and pinned at the top of the setup guide; bronze hosts are listed like any other host. + +If Geyser is installed and configured by the host, use `config: { preconfigured: true, port }` instead, where `port` is the port players connect with, and explain the installation in `install`. Hosts can configure Geyser without config changes using [system properties](https://geysermc.org/wiki/geyser/geyser-command-line-arguments-and-system-properties), such as `-DgeyserTransport`, `-DgeyserSignalingMode`, `-DgeyserWebrtcPort` and `-DgeyserSignalingPort`. ## Creating a New Page diff --git a/HOSTING_PROVIDERS.md b/HOSTING_PROVIDERS.md new file mode 100644 index 0000000..c577a0a --- /dev/null +++ b/HOSTING_PROVIDERS.md @@ -0,0 +1,175 @@ +# Listing Your Hosting Service in the Geyser Setup Guide + +This page is for hosting providers that want to add or update their entry in the [Geyser setup guide](https://geysermc.org/wiki/geyser/setup/). + +The setup guide system works by using properties instructing users what to do. These are steps users will see: +downloading Geyser, the exact config changes, and what to enter in Minecraft: Bedrock Edition to connect. + +Whenever possible, please use the pre-configured strings at the top of `providers.ts`! This makes it possible for us to +translate the guide with the help of our translators. You can add your own guide with images if you'd like, but please +ensure that the info provided to us is enough to get Geyser running. + +Entries are found in [`src/data/providers.ts`](src/data/providers.ts), in alphabetical order. The fields are documented in [`src/types/providers.ts`](src/types/providers.ts). + +## How to Submit Changes + +- Open a [pull request](https://github.com/GeyserMC/GeyserWebsite/pulls) that edits your entry, or +- Contact us on [Discord](https://discord.gg/geysermc) with the details below if you're unsure about details. + +## What We Need to Know + +Bedrock Edition connects over NetherNet, which needs: + +- a **UDP** port for gameplay (WebRTC), and +- a **TCP** port for signaling, which is how players find the server. Geyser can run signaling itself ("built-in signaling"), +or use an external signaling service ([Warden](https://warden.cloud) by default), which needs no TCP port. + +The Java server's port cannot be used for built-in signaling, because the Java server already uses it over TCP. +If your servers can only use the Java server's port, Geyser falls back to external signaling. + +These questions may help you: + +1. **Do you install and configure Geyser for your customers?** For example, a toggle in your panel, or Geyser set up on every server by default. +2. **If not, how does a customer get a port for Geyser?** For example, the customer adds one in the panel, picks one from ports already assigned to the server, or asks support. +3. **Is that port open for both TCP and UDP?** Pterodactyl allocations usually are. +4. **Do you run your own NXS-compatible signaling service or have a reverse-proxy set up?** +5. **Which links should we show?** These can be your own Geyser article, your support page and your Discord server. + +If you have further specific instructions that you can't fit into the guide, please reach out to us on Discord so we can discuss them! + +## Use the Pre-Configured Strings + +Every sentence in an entry is sent to translators for every language the website supports. So we ask hosts to use the pre-configured +strings at the top of `providers.ts` wherever they fit, and to write their own text only for steps that are specific to their panel. + +| Situation | Use | +|---------------------------------------------------------------------|-------------------------------------------------------------------| +| The customer adds a port in your panel | `udp: ports.assign` | +| The customer picks one of the ports already assigned to the server | `udp: ports.allocated` | +| The customer asks support for a port | `udp: ports.askHost` | +| You configure Geyser, and show customers their Bedrock port | `config: { preconfigured: true, port: ports.fromHost }` | +| You use the same port for every server | a number, e.g. `port: 19132` | +| Geyser is installed through your plugin or mod list | `install: customInstallLocations.plugin_list` | +| Geyser is installed and configured on every server | `install: infos.installed_by_default` | +| An "Enable Bedrock crossplay?" option when changing server software | `install: customInstallLocations.enable_bedrock_crossplay_option` | +| Players use a different address than the Java server's | `config.notes: [javaAddressInstruction]` | +| You only serve one region | `notices: { info: onlyServesRegion('Australia') }` | + +`ports.newPort` is for hosts we have no details on yet. Please replace it with one of the options above. + +### What the Guide Already Covers + +Do not add text for these. The guide generates them for you: + +- downloading Geyser and placing the jar, +- the `bedrock` section of the config, including `port`, `webrtc-port`, `transport` and the signaling mode, +- which config option to set your port as, +- turning off `clone-remote-port`, which many hosts used to preset, +- what players enter to connect: the Java server's address and the Bedrock port. + +### Writing Your Own Text + +When a pre-configured string does not fit, add a `translate({ id, message })`: + +- **Write full sentences.** Translators see each string on its own, so do not split a sentence across strings or values. +- **Name the place in your panel**, e.g. "Open an additional port in the Network tab." +- **Do not link to images or screenshots.** If your panel needs pictures to explain, put them in your own Geyser article and link it as `links.article`. +- **Do not link to order or pricing pages.** Links are limited to your article, support and Discord. +- **Use an id in the form `providers.provider..`**, e.g. `providers.provider.example_host.install`. +When you change the text of an existing string, give it a new id, so translations of the old text are not shown for the new one. + +## Which Fields Go Where + +The setup guide shows an entry in this order: + +| Field | Shown as | +|---------------------------------|----------------------------------------------------------------------------------------------------------------------------------------| +| `links` | Buttons at the top: `article` (your Geyser guide), `support`, `discord` | +| `install` | Step 1, instead of the download steps | +| `config` | Step 2: your ports, and what to change in the Geyser config | +| `extra_step` | Step 3, e.g. a panel option the customer has to turn on | +| `connect` | Step 4, instead of the generated connect instructions. Only set this if players connect differently, e.g. through a lobby with `/join` | +| `notices.info` / `notices.warn` | Notes next to the guide | +| `notices.unsupported` | Replaces the guide, for hosts Geyser does not work on | +| `proxies_banned` | Hides the Velocity, BungeeCord, Standalone and ViaProxy guides | + +Set `updated` to the date you add or change the entry, as `'YYYY-MM-DD'`. The guide shows it as "Instructions last updated on". + +## Confirming Your Entry + +Most entries were reported by the community, and have `confirmed: false`. The guide then shows a warning that the steps +have not been checked for NetherNet, and points players to the "Not listed" guide. + +Once you have tested the steps on your service, remove `confirmed: false`. Only do this for steps you have tested. + +## Configuring Geyser for Your Customers + +If you set up Geyser for your customers, you can do it without editing their config by using [system properties](https://geysermc.org/wiki/geyser/geyser-command-line-arguments-and-system-properties#nethernet-system-properties) in the start command, for example: + +```sh +java -DgeyserTransport=nethernet -DgeyserUdpPort=19132 -jar server.jar +``` +Please see our [documentation](https://geysermc.org/wiki/geyser/geyser-command-line-arguments-and-system-properties) for more information. + +Built-in signaling uses plain HTTP by default, which makes Minecraft show a "Trust on First Use?" prompt. See [HTTPS for NetherNet](https://geysermc.org/wiki/geyser/nethernet-https) to avoid it. + +Then use `config: { preconfigured: true, port }` in your entry, and describe how customers turn Geyser on in `install`. + +## Examples + +A host whose customers add a port in the panel, open for TCP and UDP: + +```ts +{ + name: 'Example Host', + url: 'https://example.com/', + updated: '2026-10-16', + links: { article: 'https://example.com/docs/geyser', discord: 'https://discord.gg/example' }, + install: customInstallLocations.plugin_list, + config: { + udp: { + obtain: translate({ + id: 'providers.provider.example_host.port', + message: "Open an additional port in the Network tab of your panel." + }) + }, + builtin_signaling: 'same_as_udp' + } +}, +``` + +A host that configures Geyser itself: + +```ts +{ + name: 'Example Host', + url: 'https://example.com/', + updated: '2026-10-16', + links: { support: 'https://example.com/support' }, + install: translate({ + id: 'providers.provider.example_host.install', + message: "Turn on 'Bedrock crossplay' in the Software tab of your panel, and restart the server." + }), + config: { preconfigured: true, port: ports.fromHost } +}, +``` + +A host where customers ask support for a port, and only get one with a dedicated IP address: + +```ts +{ + name: 'Example Host', + url: 'https://example.com/', + updated: '2026-10-16', + config: { + udp: ports.askHost, + builtin_signaling: 'same_as_udp', + notes: [otherInstructions.dedicatedIp] + } +}, +``` + +## Supporting Geyser + +Hosts that support Geyser's development through [Open Collaboration](https://opencollaboration.dev) get an `open_collaboration` entry with their +`tier` (`bronze`, `silver` or `gold`), and are highlighted in the setup guide. Silver and gold hosts can add a `logo` (placed in `static/img/hosts`) and a short `description`. diff --git a/blog/2021-12-28-1-18-release-and-more.md b/blog/2021-12-28-1-18-release-and-more.md index 2da53be..df660fc 100644 --- a/blog/2021-12-28-1-18-release-and-more.md +++ b/blog/2021-12-28-1-18-release-and-more.md @@ -1,9 +1,12 @@ --- -title: "1.18 Release, MCProtocolLib, Refactors & More!" -slug: "1-18-release-and-more" +title: '1.18 Release, MCProtocolLib, Refactors & More!' +slug: 1-18-release-and-more authors: RednedEpic hide_table_of_contents: false -description: "In this post, we will be covering all the changes that led up to the 1.18 release." +description: >- + In this post, we will be covering all the changes that led up to the 1.18 + release. +crowdin_page_id: cd16bcf9-0de9-4239-946a-4ccdbeb372f6 --- Hi everyone 👋 diff --git a/blog/2023-01-02-Looking-back-at-2022.md b/blog/2023-01-02-Looking-back-at-2022.md index 564a497..123cfb6 100644 --- a/blog/2023-01-02-Looking-back-at-2022.md +++ b/blog/2023-01-02-Looking-back-at-2022.md @@ -1,9 +1,10 @@ --- -title: "Looking back at 2022" -slug: "looking-back-at-2022" +title: Looking back at 2022 +slug: looking-back-at-2022 authors: Camotoy hide_table_of_contents: false -description: "A look back at the year of 2022 for Geyser." +description: A look back at the year of 2022 for Geyser. +crowdin_page_id: 921bcb8d-70cb-49d1-9f83-deb59979eafa --- Hi. diff --git a/blog/2023-07-08-four-years-of-geyser.md b/blog/2023-07-08-four-years-of-geyser.md index 46aaf57..33350f2 100644 --- a/blog/2023-07-08-four-years-of-geyser.md +++ b/blog/2023-07-08-four-years-of-geyser.md @@ -1,9 +1,10 @@ --- -title: "Four Years of Geyser" -slug: "four-years-of-geyser" +title: Four Years of Geyser +slug: four-years-of-geyser authors: RednedEpic hide_table_of_contents: false -description: "Geyser is now four years old!" +description: Geyser is now four years old! +crowdin_page_id: 67cfbd70-8366-42ed-b564-b84ed9ce65b5 --- Hi everyone, diff --git a/blog/2024-05-02-geyser-1-20-5.md b/blog/2024-05-02-geyser-1-20-5.md index 469ceec..e247fff 100644 --- a/blog/2024-05-02-geyser-1-20-5.md +++ b/blog/2024-05-02-geyser-1-20-5.md @@ -1,9 +1,10 @@ --- -title: "Geyser Available for Java 1.20.5/1.20.6" -slug: "geyser-1-20-5" +title: Geyser Available for Java 1.20.5/1.20.6 +slug: geyser-1-20-5 authors: Camotoy hide_table_of_contents: false -description: "Support for Java 1.20.5 and 1.20.6 has been released" +description: Support for Java 1.20.5 and 1.20.6 has been released +crowdin_page_id: f0219b8c-1dab-417d-99bb-6a068307fae9 --- Support for Java 1.20.5 and 1.20.6 has been released. Thank you for your patience as we work on the update! @@ -56,4 +57,4 @@ This update would have been a nightmare without the many hands we had to help im [AJ Ferguson](https://github.com/AJ-Ferguson) and [Chris](https://github.com/onebeastchris) both helped with implementing new features and fixing regressions. -[Kastle](https://github.com/Kas-tle), hot off the heels of stronger security protections on the Bedrock side, assisted with custom skull reimplementation and entity properties implementation. \ No newline at end of file +[Kastle](https://github.com/Kas-tle), hot off the heels of stronger security protections on the Bedrock side, assisted with custom skull reimplementation and entity properties implementation. diff --git a/blog/2024-05-05-raknet-amplification-attack.md b/blog/2024-05-05-raknet-amplification-attack.md index ff720bf..ebc6359 100644 --- a/blog/2024-05-05-raknet-amplification-attack.md +++ b/blog/2024-05-05-raknet-amplification-attack.md @@ -1,9 +1,10 @@ --- -title: "RakNet Amplification Attack Summary and Response" -slug: "raknet-amplification-attack" +title: RakNet Amplification Attack Summary and Response +slug: raknet-amplification-attack authors: Kas-tle hide_table_of_contents: false -description: "A look at how we dealt with an exploit in the RakNet protocol" +description: A look at how we dealt with an exploit in the RakNet protocol +crowdin_page_id: 4a2c95a7-61af-4d0b-aa13-d034e0e5a0b9 --- In March, we were made aware of an exploit in the RakNet networking library used by Geyser, making Geyser instances vulnerable to use in a Distributed Denial of Service (DDoS) amplification attack. This bug was patched on all builds of Geyser numbered 478 and later. If you are still running an outdated build of Geyser, you should update immediately by downloading the latest build from [https://geysermc.org/download](https://geysermc.org/download). The original [security advisory](https://github.com/CloudburstMC/Network/security/advisories/GHSA-6h3m-c6fv-8hvh) for this vulnerability was published on the [CloudburstMC/Network](https://github.com/CloudburstMC/Network) repository. This post will detail the timeline, anatomy of the attack, our response, and additional measures we have taken to prevent similar attacks in the future. @@ -239,4 +240,4 @@ It is extremely important that all those running vulnerable instances of Geyser ## Acknowledgements -We thank the community for their patience as we addressed this issue, all those who responsibly disclosed this issue to us, the developers at Cloudburst and Geyser that worked to mitigate the issue, the server hosts that took an active role in ensuring instances on their hosting services were patched as soon as possible, all donors for their financial support of Geyser, and Cubecraft for their continued financial and operational support of the project. \ No newline at end of file +We thank the community for their patience as we addressed this issue, all those who responsibly disclosed this issue to us, the developers at Cloudburst and Geyser that worked to mitigate the issue, the server hosts that took an active role in ensuring instances on their hosting services were patched as soon as possible, all donors for their financial support of Geyser, and Cubecraft for their continued financial and operational support of the project. diff --git a/blog/2025-11-30-early-packet-handling-attack.md b/blog/2025-11-30-early-packet-handling-attack.md index 4f0a63f..5e707af 100644 --- a/blog/2025-11-30-early-packet-handling-attack.md +++ b/blog/2025-11-30-early-packet-handling-attack.md @@ -1,472 +1,475 @@ ---- -title: "Bedrock Early Packet Handling DoS Attack Summary and Response" -slug: "early-packet-handling-attack" -authors: Kas-tle -hide_table_of_contents: false -description: "A summary of how we addressed a series of exploits targeting Geyser's early handling of Bedrock game packets" ---- - -Back in July, we received reports of multiple Geyser instances experiencing targeted Denial of Service (DoS) attacks exhibiting similar characteristics. Out of an abundance of caution, we delayed making this post to ensure that users had adequate time to upgrade. The bugs that allowed for this string of attacks were patched on Geyser builds numbered 897 and later. In the unlikely event you are still running an outdated build of Geyser from many months ago, you should update immediately by downloading the latest build from [https://geysermc.org/download](https://geysermc.org/download). The original [security advisory](https://github.com/GeyserMC/Geyser/security/advisories/GHSA-m2q6-2hwr-643w) for this vulnerability was published on the [GeyserMC/Geyser](https://github.com/GeyserMC/Geyser) repository. This response will detail the timeline, attack vectors, how they were patched, and additional measures we took to prevent future attacks. - - - -## Timeline (UTC) - -- **July 29th, 9:40PM:** Server being attacked privately reports the issue to Geyser and shares logs -- **July 29th, 11:45PM:** Preemptive patch is released to limit the number of authenticated connections per address -- **July 30th, 5:36PM:** Large servers continue to report attacks with newer builds of Geyser -- **July 30th, 6:20PM:** A server being attacked provides us with packet logs, illustrating what Bedrock packets malicious clients are using to carry out the attack -- **July 30th, 6:52PM:** Second patch is released to ensure the Bedrock client can only signal complete of resource pack sending once per session -- **July 30th, 7:45PM:** Issue regarding connections failing to close out is reported to upstream Bedrock protocol library -- **July 30th, 9:35PM:** Upstream Bedrock protocol library publishes patch to ensure connections are properly closed when Bedrock users are disconnected -- **July 30th, 10:45PM:** Third patch is released updating the upstream Bedrock protocol library and ensuring Bedrock connections that cause exceptions are closed immediately -- **July 31st, 11:24PM:** An @everyone ping is made in the Geyser Discord advising users to update their Geyser instances, and the initial security advisory is published to GitHub. - -## Initial Disclosure - -Use of this attack was first privately reported to us by multiple larger servers using Geyser. We were provided server logs showing a single user appearing to be authenticated multiple times. The logs generally took a form of: - -```log -[17:26:09.183 GeyserServerChild-4-1/INFO] Player connected with username BedrockPleyer -[17:26:09.183 GeyserServerChild-4-1/INFO] Player connected with username BedrockPleyer -[17:26:09.183 GeyserServerChild-4-1/INFO] Player connected with username BedrockPleyer -[17:26:09.183 GeyserServerChild-4-1/ERROR] BedrockPleyer is already logged in! -[17:26:09.183 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer -[17:26:09.183 clientNetworkSession-6-3/INFO] BedrockPlayer (logged in as: BedrockPlayer) has connected to remote java server on address 127.0.0.1 -[17:26:09.183 clientNetworkSession-6-1/INFO] BedrockPlayer (logged in as: BedrockPlayer) has connected to remote java server on address 127.0.0.1 -[17:26:09.183 clientNetworkSession-6-2/INFO] BedrockPlayer (logged in as: BedrockPlayer) has connected to remote java server on address 127.0.0.1 -[17:26:09.184 GeyserServerChild-4-1/ERROR] BedrockPlayer is already logged in! -[17:26:09.184 clientNetworkSession-6-4/INFO] BedrockPlayer (logged in as: BedrockPlayer) has connected to remote java server on address 127.0.0.1 -[17:26:09.184 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer -[17:26:09.184 GeyserServerChild-4-1/ERROR] BedrockPlayer is already logged in! -[17:26:09.184 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer -[17:26:09.184 GeyserServerChild-4-1/ERROR] BedrockPlayer is already logged in! -[17:26:09.184 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer -[17:26:09.184 GeyserServerChild-4-1/ERROR] BedrockPlayer is already logged in! -[17:26:09.185 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer -[17:26:09.185 GeyserServerChild-4-1/ERROR] BedrockPlayer is already logged in! -``` - -Based on the content of these logs, we initially suspected that packets in the early phase of the Bedrock connection were being exploited. However, we were not yet sure of what specific packets the attacker was sending. Based on these logs, we released a preemptive patch to ensure that the number of authenticated users from a single IP address at any given time was limited. This alone, however, would prove to be insufficient to mitigate the attack. - -## Game Packet and Code Analysis of the First Attack Vector - -Understanding this attack requires a basic understanding of the general Bedrock login process. This is detailed below: - -![chart_04 Bedrock Login Process](/img/blog/2025-11-30-early-packet-handling-attack/chart_04.svg#gh-light-mode-only)![chart_04 Bedrock Login Process](/img/blog/2025-11-30-early-packet-handling-attack/chart_04_dark.svg#gh-dark-mode-only) - -In order to fully mitigate this attack, we required packet capture samples from a server being actively exploited. This is somewhat challenging to achieve, as traffic at the Bedrock protocol level is generally encrypted after the player has logged into the server. As a result, a modified build of Geyser is required to capture this traffic. We were fortunate to have the cooperation of a server being targeted with this attack, who installed a build of Geyser we provided to log packets. This was the resulting log, with IP addresses and usernames redacted: - -```log -[18:16:37.767 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ClientToServerHandshakePacket -[18:16:37.795 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) -[18:16:37.808 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer -[18:16:37.808 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) -[18:16:37.809 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer -[18:16:37.809 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) -[18:16:37.809 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer -[18:16:37.809 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) -[18:16:37.810 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer -[18:16:37.810 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) -[18:16:37.810 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer -[18:16:37.810 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) -[18:16:37.810 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer -[18:16:37.810 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) -[18:16:37.811 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer -[18:16:37.811 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) -[18:16:37.811 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer -[18:16:37.811 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) -[18:16:37.811 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer -[18:16:37.811 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) -[18:16:37.812 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer -[18:16:37.812 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) -[18:16:37.820 clientNetworkSession-6-2/INFO] BedrockPlayer (logged in as: BedrockPlayer) has connected to remote java server on address 127.0.0.1 -[18:16:37.820 clientNetworkSession-6-1/INFO] BedrockPlayer (logged in as: BedrockPlayer) has connected to remote java server on address 127.0.0.1 -[18:16:37.820 clientNetworkSession-6-4/INFO] BedrockPlayer (logged in as: BedrockPlayer) has connected to remote java server on address 127.0.0.1 -[18:16:37.820 clientNetworkSession-6-3/INFO] BedrockPlayer (logged in as: BedrockPlayer) has connected to remote java server on address 127.0.0.1 -[18:16:37.848 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer -[18:16:37.849 GeyserServerChild-4-1/INFO] BedrockPlayer /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) -[18:16:37.849 GeyserServerChild-4-1/ERROR] BedrockPlayer is already logged in! -[18:16:37.849 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer -[18:16:37.849 GeyserServerChild-4-1/INFO] BedrockPlayer /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) -[18:16:37.850 GeyserServerChild-4-1/ERROR] BedrockPlayer is already logged in! -[18:16:37.850 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer -[18:16:37.850 GeyserServerChild-4-1/INFO] BedrockPlayer /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) -[18:16:37.850 GeyserServerChild-4-1/ERROR] BedrockPlayer is already logged in! -[18:16:37.850 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer -``` - -The above log clearly indicates that the packet being exploited is the [ResourcePackClientResponsePacket](https://mojang.github.io/bedrock-protocol-docs/html/ResourcePackClientResponsePacket.html). This leads to code paths in Geyser being called multiple times a way that is not intended, ultimately leading to increased resource consumption. We can essentially summarize the attack as follows: - -![chart_02 Attack Summary](/img/blog/2025-11-30-early-packet-handling-attack/chart_02.svg#gh-light-mode-only)![chart_02 Attack Summary](/img/blog/2025-11-30-early-packet-handling-attack/chart_02_dark.svg#gh-dark-mode-only) - -The initial response to the ResourcePackClientResponsePacket is handled by `UpstreamPacketHandler`: - -```java -package org.geysermc.geyser.network; -// ... -public class UpstreamPacketHandler extends LoggingPacketHandler { - // ... - public PacketSignal handle(ResourcePackClientResponsePacket packet) { - // ... - switch (packet.getStatus()) { - case COMPLETED -> { - if (geyser.getConfig().getRemote().authType() != AuthType.ONLINE) { - session.authenticate(session.getAuthData().name()); - } else if (!couldLoginUserByName(session.getAuthData().name())) { - // We must spawn the white world - session.connect(); - } - geyser.getLogger().info(GeyserLocale.getLocaleStringLog("geyser.network.connect", session.getAuthData().name())); - } - // ... - } - return PacketSignal.HANDLED; - } - // ... -} -``` - -We see in the code above that this will lead to the invocation of `GeyserSession#authenticate` for most connections, as most Geyser instances use `AuthType.FLOODGATE`: - -```java -package org.geysermc.geyser.session; -// ... -public class GeyserSession implements GeyserConnection, GeyserCommandSource { - // ... - public void authenticate(String username) { - if (loggedIn) { - geyser.getLogger().severe(GeyserLocale.getLocaleStringLog("geyser.auth.already_loggedin", username)); - return; - } - - loggingIn = true; - // Always replace spaces with underscores to avoid illegal nicknames, e.g. with GeyserConnect - protocol = new MinecraftProtocol(username.replace(' ', '_')); - - try { - connectDownstream(); - } catch (Throwable t) { - t.printStackTrace(); - } - } - // ... -} -``` - -This leads to the calling of `GeyserSession#connectDownstream`, which triggers a variety of logic to open a connection to the Java server: - -```java -package org.geysermc.geyser.session; -// ... -public class GeyserSession implements GeyserConnection, GeyserCommandSource { - // ... - private void connectDownstream() { - SessionLoginEvent loginEvent = new SessionLoginEvent(this, remoteServer, new Object2ObjectOpenHashMap<>()); - GeyserImpl.getInstance().eventBus().fire(loginEvent); - if (loginEvent.isCancelled()) { - String disconnectReason = loginEvent.disconnectReason() == null ? - BedrockDisconnectReasons.DISCONNECTED : loginEvent.disconnectReason(); - disconnect(disconnectReason); - return; - } - - this.cookies = loginEvent.cookies(); - // Don't allow changing the remote server when it's not up to us - // Just imagine the chaos of using an integrated world manager for an external server :) - this.remoteServer = this.geyser.platformType() == PlatformType.STANDALONE ? loginEvent.remoteServer() : remoteServer; - - // Start ticking - tickThread = tickEventLoop.scheduleAtFixedRate(this::tick, nanosecondsPerTick, nanosecondsPerTick, TimeUnit.NANOSECONDS); - - ClientSession downstream; - if (geyser.getBootstrap().getSocketAddress() != null) { - // We're going to connect through the JVM and not through TCP - downstream = new LocalSession(geyser.getBootstrap().getSocketAddress(), - upstream.getAddress().getAddress().getHostAddress(), - this.protocol, this.tickEventLoop); - downstream.setFlag(MinecraftConstants.CLIENT_HOST, this.remoteServer.address()); - downstream.setFlag(MinecraftConstants.CLIENT_PORT, this.remoteServer.port()); - this.downstream = new DownstreamSession(downstream); - } else { - downstream = new ClientNetworkSession(new InetSocketAddress(this.remoteServer.address(), this.remoteServer.port()), this.protocol, tickEventLoop, null, null); - this.downstream = new DownstreamSession(downstream); - - boolean resolveSrv = false; - try { - resolveSrv = this.remoteServer.resolveSrv(); - } catch (AbstractMethodError | NoSuchMethodError ignored) { - // Ignore if the method doesn't exist - // This will happen with extensions using old APIs - } - this.downstream.getSession().setFlag(BuiltinFlags.ATTEMPT_SRV_RESOLVE, resolveSrv); - } - - // Disable automatic creation of a new TcpClientSession when transferring - we don't use that functionality. - this.downstream.getSession().setFlag(MinecraftConstants.FOLLOW_TRANSFERS, false); - - if (geyser.getConfig().getRemote().isUseProxyProtocol()) { - downstream.setFlag(BuiltinFlags.CLIENT_PROXIED_ADDRESS, upstream.getAddress()); - } - if (geyser.getConfig().isForwardPlayerPing()) { - // Let Geyser handle sending the keep alive - downstream.setFlag(MinecraftConstants.AUTOMATIC_KEEP_ALIVE_MANAGEMENT, false); - } - // We'll handle this since we have the registry data on hand - downstream.setFlag(MinecraftConstants.SEND_BLANK_KNOWN_PACKS_RESPONSE, false); - - // We manually add the default listener to ensure the order of listeners. - protocol.setUseDefaultListeners(false); - - // MCPL listener comes first to handle protocol state switching before Geyser translates packets - downstream.addListener(new ClientListener(HandshakeIntent.LOGIN)); - // Geyser adapter second to ensure translating packets in the correct states - downstream.addListener(new GeyserSessionAdapter(this)); - - downstream.setFlag(BuiltinFlags.CLIENT_TRANSFERRING, loginEvent.transferring()); - downstream.connect(false); - - if (!daylightCycle) { - setDaylightCycle(true); - } - } - // ... -} -``` - -Notably, this allows for multiple downstream sessions (representing Geyser's connection to the Java server per player) to be created for a single Bedrock session. This is not intended behavior, as it leads to significantly increased resource consumption. This is especially true on Geyser Standalone, which, as seen in the code above, must open a TCP session to the Java server. The window of time for an attacker to pull this off is relatively short, as once Geyser completes the Java login process on behalf of the Bedrock client, `GeyserSession.loggedIn` is set to true, preventing further calls to `GeyserSession#connectDownstream`. However, this is still enough time for an attacker to create numerous downstream sessions, leading to a DoS attack. We attempted to mitigate this by disconnecting clients that send multiple ResourcePackClientResponsePacket in a single session. The following class diagram summarizes this: - -![chart_05 Multiple Sessions Class Diagram](/img/blog/2025-11-30-early-packet-handling-attack/chart_05.svg#gh-light-mode-only)![chart_05 Multiple Sessions Class Diagram](/img/blog/2025-11-30-early-packet-handling-attack/chart_05_dark.svg#gh-dark-mode-only) - -## Code Analysis of the Second Attack Vector - -While we thought we had addressed the root issue and provided the affected users with a patch for testing, we quickly received logs that indicated otherwise: - -```log -[18:54:29.235 GeyserServerChild-4-3/INFO] Player connected with username BedrockPlayer -[18:54:29.237 clientNetworkSession-6-2/INFO] BedrockPlayer (logged in as: BedrockPlayer) has connected to remote java server on address 127.0.0.1 -[18:54:49.257 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:54:49.259 GeyserServerChild-4-3/INFO] BedrockPlayer has disconnected from remote Java server on address 127.0.0.1 because of An internal error occurred! -[18:54:52.836 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:54:55.620 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:54:56.186 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:54:56.872 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:54:59.508 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:02.551 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:03.025 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:03.619 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:04.254 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:04.922 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:05.435 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:07.662 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:08.139 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:08.650 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:11.066 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:13.498 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:14.023 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:14.466 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:15.057 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:15.712 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:16.211 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:18.431 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:18.966 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:19.443 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:21.599 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:23.904 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:24.409 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:24.971 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:25.539 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -[18:55:26.225 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) -``` - -These exceptions are thrown by Geyser's InvalidPacketHandler, which is designed to quickly disconnect players that send malformed packets or packets that exceed the expected size limits. This is a security measure to prevent potential exploits or crashes caused by invalid data. - -```java -package org.geysermc.geyser.network; -// ... -public class InvalidPacketHandler extends ChannelInboundHandlerAdapter { - public static final String NAME = "rak-error-handler"; - - private final GeyserSession session; - - @Override - public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { - Throwable rootCause = Stream.iterate(cause, Throwable::getCause) - .filter(element -> element.getCause() == null) - .findFirst() - .orElse(cause); - - GeyserLogger logger = GeyserImpl.getInstance().getLogger(); - - if (!(rootCause instanceof IllegalArgumentException)) { - // Kick users that cause exceptions - logger.warning("Exception caught in session of " + session.bedrockUsername() + ": " + rootCause.getMessage()); - session.disconnect("An internal error occurred!"); - return; - } - - // Kick users that try to send illegal packets - logger.warning("Illegal packet from " + session.bedrockUsername() + ": " + rootCause.getMessage()); - if (logger.isDebug()) { - cause.printStackTrace(); - } - session.disconnect("Invalid packet received!"); - } -} -``` - -This makes the aforementioned logs of particular concern, as it should not be possible for any exceptions to be triggered from this handler multiple times. The first exception should be logged and trigger an immediate disconnect, preventing further exceptions from being thrown. Despite this, the log clearly indicates that multiple exceptions are being thrown in quick succession, suggesting that the disconnect is not being handled as intended. This is summarized below: - -![chart_03 Exception Handler](/img/blog/2025-11-30-early-packet-handling-attack/chart_03.svg#gh-light-mode-only)![chart_03 Exception Handler](/img/blog/2025-11-30-early-packet-handling-attack/chart_03_dark.svg#gh-dark-mode-only) - -We first followed the chain of `GeyserSession#disconnect`. This invokes Geyser's `UpstreamSession#disconnect`, which contains `BedrockServerSession` and invokes `BedrockServerSession#disconnect`. Beyond this, the disconnect logic is handled by the upstream Bedrock protocol library used by Geyser, [CloudburstMC/Protocol](https://github.com/CloudburstMC/Protocol). The overall logic is summarized below: - -![chart_01 GeyserSession Disconnect Chain](/img/blog/2025-11-30-early-packet-handling-attack/chart_01.svg#gh-light-mode-only)![chart_01 GeyserSession Disconnect Chain](/img/blog/2025-11-30-early-packet-handling-attack/chart_01_dark.svg#gh-dark-mode-only) - -Upon further investigation, we found that the Bedrock protocol library did not actually close the underlying Netty channel when a disconnect was triggered: - -```java -package org.cloudburstmc.protocol.bedrock; -// ... -public class BedrockServerSession extends BedrockSession { - // ... - public void disconnect(@Nullable String reason, boolean hideReason) { - this.checkForClosed(); - - DisconnectPacket packet = new DisconnectPacket(); - if (reason == null || hideReason) { - packet.setMessageSkipped(true); - reason = BedrockDisconnectReasons.DISCONNECTED; - } - packet.setKickMessage(reason); - this.sendPacketImmediately(packet); - } -} -``` - -This allows an attacker that should have been disconnected to continue to send malicous packets that lead to expensive deserialization logic. The result is another potential denial of service (DoS) attack vector. - -## Patch and Mitigation - -We mitigated the first attack vector by ensuring that the Bedrock client can only signal completion of resource pack sending once per session. This was done by modifying the `UpstreamPacketHandler` to check if the `finishedResourcePackSending` flag is already set before proceeding with authentication logic: - -```java -package org.geysermc.geyser.network; -// ... -public class UpstreamPacketHandler extends LoggingPacketHandler { - // ... - public PacketSignal handle(ResourcePackClientResponsePacket packet) { - // ... - // highlight-start - if (finishedResourcePackSending) { - session.disconnect("Illegal duplicate resource pack response packet received!"); - return PacketSignal.HANDLED; - } - // highlight-end - // ... - switch (packet.getStatus()) { - case COMPLETED -> { - // highlight-start - finishedResourcePackSending = true; - // highlight-end - if (geyser.getConfig().getRemote().authType() != AuthType.ONLINE) { - session.authenticate(session.getAuthData().name()); - } else if (!couldLoginUserByName(session.getAuthData().name())) { - // We must spawn the white world - session.connect(); - } - geyser.getLogger().info(GeyserLocale.getLocaleStringLog("geyser.network.connect", session.getAuthData().name())); - } - // ... - } - return PacketSignal.HANDLED; - } - // ... -} -``` - -This ensures that any further attempts to send a `ResourcePackClientResponsePacket` after the first one will result in an immediate disconnect, preventing the creation of multiple downstream sessions. - -The second attack vector was mitigated by ensuring that the disconnect logic in the Bedrock protocol library properly closes the underlying Netty channel. This was achieved by modifying the `BedrockServerSession#disconnect` method to schedule a task that closes the session after a timeout, ensuring that the channel is closed after the disconnect packet is sent. Packet serialzation is also stopped immediately for disconnected clients: - -```java -package org.cloudburstmc.protocol.bedrock; -// ... -public class BedrockServerSession extends BedrockSession { - private static final int TIMEOUT_SECONDS = SystemPropertyUtil.getInt("org.cloudburstmc.protocol.bedrock.disconnectTimeout", 10); - // ... - public void disconnect(@Nullable String reason, boolean hideReason) { - this.checkForClosed(); - - DisconnectPacket packet = new DisconnectPacket(); - String finalReason; - if (reason == null || hideReason) { - packet.setMessageSkipped(true); - finalReason = BedrockDisconnectReasons.DISCONNECTED; - } else { - finalReason = reason; - } - packet.setKickMessage(finalReason); - this.sendPacketImmediately(packet); - - // highlight-start - if (!this.isSubClient()) { - this.getPeer().blackholeInboundPackets(); - } - - this.getPeer().channel.eventLoop().schedule(() -> { - if (this.isConnected()) { - this.close(finalReason); - } - }, TIMEOUT_SECONDS, TimeUnit.SECONDS); - // highlight-end - } -} -``` - -Logic was also added to Geyser's `InvalidPacketHandler` to ensure that invalid packets result in an immediate closing of the underlying Netty channel: - -```java -package org.geysermc.geyser.network; -// ... -public class InvalidPacketHandler extends ChannelInboundHandlerAdapter { - public static final String NAME = "rak-error-handler"; - - private final GeyserSession session; - - @Override - public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { - Throwable rootCause = Stream.iterate(cause, Throwable::getCause) - .filter(element -> element.getCause() == null) - .findFirst() - .orElse(cause); - - GeyserLogger logger = GeyserImpl.getInstance().getLogger(); - - if (!(rootCause instanceof IllegalArgumentException)) { - // Kick users that cause exceptions - logger.error("Exception caught in session of " + session.bedrockUsername(), cause); - session.disconnect("An internal error occurred!"); - // highlight-start - session.forciblyCloseUpstream(); - // highlight-end - return; - } - - // Kick users that try to send illegal packets - logger.error("Illegal packet from " + session.bedrockUsername(), cause); - session.disconnect("Invalid packet received!"); - // highlight-start - session.forciblyCloseUpstream(); - // highlight-end - } -} -``` - -## Long Term Impact - -All users of Geyser running outdated builds should update as soon as possible to ensure they are not vulnerable to the attacks described in this post. During the process of investigating this attack, we were made aware of multiple servers being exploited, meaning this is being exploited in the wild. Unlike the previous RakNet amplification attack, this attack is limited in scope to the selected Geyser instance. We expect the number of unpatched instances to decrease over time as Bedrock updates require server owners to update their Geyser instances. As of November 2025, we have not received any recent reports of Geyser instances being targeted by this attack vector, indicating that most instances have been patched. - -## Acknowledgements - -We thank the community for their patience as we addressed this issue, the server owners who responsibly disclosed this issue to us, the developers at Cloudburst and Geyser that worked to mitigate the issue, all donors for their financial support of Geyser, and Cubecraft and Open Collaboration for their continued financial and operational support of the project. \ No newline at end of file +--- +title: Bedrock Early Packet Handling DoS Attack Summary and Response +slug: early-packet-handling-attack +authors: Kas-tle +hide_table_of_contents: false +description: >- + A summary of how we addressed a series of exploits targeting Geyser's early + handling of Bedrock game packets +crowdin_page_id: 7573bcfd-c352-458c-b052-c4d74568453c +--- + +Back in July, we received reports of multiple Geyser instances experiencing targeted Denial of Service (DoS) attacks exhibiting similar characteristics. Out of an abundance of caution, we delayed making this post to ensure that users had adequate time to upgrade. The bugs that allowed for this string of attacks were patched on Geyser builds numbered 897 and later. In the unlikely event you are still running an outdated build of Geyser from many months ago, you should update immediately by downloading the latest build from [https://geysermc.org/download](https://geysermc.org/download). The original [security advisory](https://github.com/GeyserMC/Geyser/security/advisories/GHSA-m2q6-2hwr-643w) for this vulnerability was published on the [GeyserMC/Geyser](https://github.com/GeyserMC/Geyser) repository. This response will detail the timeline, attack vectors, how they were patched, and additional measures we took to prevent future attacks. + + + +## Timeline (UTC) + +- **July 29th, 9:40PM:** Server being attacked privately reports the issue to Geyser and shares logs +- **July 29th, 11:45PM:** Preemptive patch is released to limit the number of authenticated connections per address +- **July 30th, 5:36PM:** Large servers continue to report attacks with newer builds of Geyser +- **July 30th, 6:20PM:** A server being attacked provides us with packet logs, illustrating what Bedrock packets malicious clients are using to carry out the attack +- **July 30th, 6:52PM:** Second patch is released to ensure the Bedrock client can only signal complete of resource pack sending once per session +- **July 30th, 7:45PM:** Issue regarding connections failing to close out is reported to upstream Bedrock protocol library +- **July 30th, 9:35PM:** Upstream Bedrock protocol library publishes patch to ensure connections are properly closed when Bedrock users are disconnected +- **July 30th, 10:45PM:** Third patch is released updating the upstream Bedrock protocol library and ensuring Bedrock connections that cause exceptions are closed immediately +- **July 31st, 11:24PM:** An @everyone ping is made in the Geyser Discord advising users to update their Geyser instances, and the initial security advisory is published to GitHub. + +## Initial Disclosure + +Use of this attack was first privately reported to us by multiple larger servers using Geyser. We were provided server logs showing a single user appearing to be authenticated multiple times. The logs generally took a form of: + +```log +[17:26:09.183 GeyserServerChild-4-1/INFO] Player connected with username BedrockPleyer +[17:26:09.183 GeyserServerChild-4-1/INFO] Player connected with username BedrockPleyer +[17:26:09.183 GeyserServerChild-4-1/INFO] Player connected with username BedrockPleyer +[17:26:09.183 GeyserServerChild-4-1/ERROR] BedrockPleyer is already logged in! +[17:26:09.183 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer +[17:26:09.183 clientNetworkSession-6-3/INFO] BedrockPlayer (logged in as: BedrockPlayer) has connected to remote java server on address 127.0.0.1 +[17:26:09.183 clientNetworkSession-6-1/INFO] BedrockPlayer (logged in as: BedrockPlayer) has connected to remote java server on address 127.0.0.1 +[17:26:09.183 clientNetworkSession-6-2/INFO] BedrockPlayer (logged in as: BedrockPlayer) has connected to remote java server on address 127.0.0.1 +[17:26:09.184 GeyserServerChild-4-1/ERROR] BedrockPlayer is already logged in! +[17:26:09.184 clientNetworkSession-6-4/INFO] BedrockPlayer (logged in as: BedrockPlayer) has connected to remote java server on address 127.0.0.1 +[17:26:09.184 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer +[17:26:09.184 GeyserServerChild-4-1/ERROR] BedrockPlayer is already logged in! +[17:26:09.184 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer +[17:26:09.184 GeyserServerChild-4-1/ERROR] BedrockPlayer is already logged in! +[17:26:09.184 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer +[17:26:09.184 GeyserServerChild-4-1/ERROR] BedrockPlayer is already logged in! +[17:26:09.185 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer +[17:26:09.185 GeyserServerChild-4-1/ERROR] BedrockPlayer is already logged in! +``` + +Based on the content of these logs, we initially suspected that packets in the early phase of the Bedrock connection were being exploited. However, we were not yet sure of what specific packets the attacker was sending. Based on these logs, we released a preemptive patch to ensure that the number of authenticated users from a single IP address at any given time was limited. This alone, however, would prove to be insufficient to mitigate the attack. + +## Game Packet and Code Analysis of the First Attack Vector + +Understanding this attack requires a basic understanding of the general Bedrock login process. This is detailed below: + +![chart_04 Bedrock Login Process](/img/blog/2025-11-30-early-packet-handling-attack/chart_04.svg#gh-light-mode-only)![chart_04 Bedrock Login Process](/img/blog/2025-11-30-early-packet-handling-attack/chart_04_dark.svg#gh-dark-mode-only) + +In order to fully mitigate this attack, we required packet capture samples from a server being actively exploited. This is somewhat challenging to achieve, as traffic at the Bedrock protocol level is generally encrypted after the player has logged into the server. As a result, a modified build of Geyser is required to capture this traffic. We were fortunate to have the cooperation of a server being targeted with this attack, who installed a build of Geyser we provided to log packets. This was the resulting log, with IP addresses and usernames redacted: + +```log +[18:16:37.767 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ClientToServerHandshakePacket +[18:16:37.795 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) +[18:16:37.808 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer +[18:16:37.808 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) +[18:16:37.809 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer +[18:16:37.809 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) +[18:16:37.809 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer +[18:16:37.809 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) +[18:16:37.810 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer +[18:16:37.810 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) +[18:16:37.810 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer +[18:16:37.810 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) +[18:16:37.810 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer +[18:16:37.810 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) +[18:16:37.811 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer +[18:16:37.811 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) +[18:16:37.811 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer +[18:16:37.811 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) +[18:16:37.811 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer +[18:16:37.811 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) +[18:16:37.812 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer +[18:16:37.812 GeyserServerChild-4-1/INFO] null /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) +[18:16:37.820 clientNetworkSession-6-2/INFO] BedrockPlayer (logged in as: BedrockPlayer) has connected to remote java server on address 127.0.0.1 +[18:16:37.820 clientNetworkSession-6-1/INFO] BedrockPlayer (logged in as: BedrockPlayer) has connected to remote java server on address 127.0.0.1 +[18:16:37.820 clientNetworkSession-6-4/INFO] BedrockPlayer (logged in as: BedrockPlayer) has connected to remote java server on address 127.0.0.1 +[18:16:37.820 clientNetworkSession-6-3/INFO] BedrockPlayer (logged in as: BedrockPlayer) has connected to remote java server on address 127.0.0.1 +[18:16:37.848 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer +[18:16:37.849 GeyserServerChild-4-1/INFO] BedrockPlayer /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) +[18:16:37.849 GeyserServerChild-4-1/ERROR] BedrockPlayer is already logged in! +[18:16:37.849 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer +[18:16:37.849 GeyserServerChild-4-1/INFO] BedrockPlayer /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) +[18:16:37.850 GeyserServerChild-4-1/ERROR] BedrockPlayer is already logged in! +[18:16:37.850 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer +[18:16:37.850 GeyserServerChild-4-1/INFO] BedrockPlayer /XXX.XXX.XXX.XXX ResourcePackClientResponsePacket(packIds=[], status=COMPLETED) +[18:16:37.850 GeyserServerChild-4-1/ERROR] BedrockPlayer is already logged in! +[18:16:37.850 GeyserServerChild-4-1/INFO] Player connected with username BedrockPlayer +``` + +The above log clearly indicates that the packet being exploited is the [ResourcePackClientResponsePacket](https://mojang.github.io/bedrock-protocol-docs/html/ResourcePackClientResponsePacket.html). This leads to code paths in Geyser being called multiple times a way that is not intended, ultimately leading to increased resource consumption. We can essentially summarize the attack as follows: + +![chart_02 Attack Summary](/img/blog/2025-11-30-early-packet-handling-attack/chart_02.svg#gh-light-mode-only)![chart_02 Attack Summary](/img/blog/2025-11-30-early-packet-handling-attack/chart_02_dark.svg#gh-dark-mode-only) + +The initial response to the ResourcePackClientResponsePacket is handled by `UpstreamPacketHandler`: + +```java +package org.geysermc.geyser.network; +// ... +public class UpstreamPacketHandler extends LoggingPacketHandler { + // ... + public PacketSignal handle(ResourcePackClientResponsePacket packet) { + // ... + switch (packet.getStatus()) { + case COMPLETED -> { + if (geyser.getConfig().getRemote().authType() != AuthType.ONLINE) { + session.authenticate(session.getAuthData().name()); + } else if (!couldLoginUserByName(session.getAuthData().name())) { + // We must spawn the white world + session.connect(); + } + geyser.getLogger().info(GeyserLocale.getLocaleStringLog("geyser.network.connect", session.getAuthData().name())); + } + // ... + } + return PacketSignal.HANDLED; + } + // ... +} +``` + +We see in the code above that this will lead to the invocation of `GeyserSession#authenticate` for most connections, as most Geyser instances use `AuthType.FLOODGATE`: + +```java +package org.geysermc.geyser.session; +// ... +public class GeyserSession implements GeyserConnection, GeyserCommandSource { + // ... + public void authenticate(String username) { + if (loggedIn) { + geyser.getLogger().severe(GeyserLocale.getLocaleStringLog("geyser.auth.already_loggedin", username)); + return; + } + + loggingIn = true; + // Always replace spaces with underscores to avoid illegal nicknames, e.g. with GeyserConnect + protocol = new MinecraftProtocol(username.replace(' ', '_')); + + try { + connectDownstream(); + } catch (Throwable t) { + t.printStackTrace(); + } + } + // ... +} +``` + +This leads to the calling of `GeyserSession#connectDownstream`, which triggers a variety of logic to open a connection to the Java server: + +```java +package org.geysermc.geyser.session; +// ... +public class GeyserSession implements GeyserConnection, GeyserCommandSource { + // ... + private void connectDownstream() { + SessionLoginEvent loginEvent = new SessionLoginEvent(this, remoteServer, new Object2ObjectOpenHashMap<>()); + GeyserImpl.getInstance().eventBus().fire(loginEvent); + if (loginEvent.isCancelled()) { + String disconnectReason = loginEvent.disconnectReason() == null ? + BedrockDisconnectReasons.DISCONNECTED : loginEvent.disconnectReason(); + disconnect(disconnectReason); + return; + } + + this.cookies = loginEvent.cookies(); + // Don't allow changing the remote server when it's not up to us + // Just imagine the chaos of using an integrated world manager for an external server :) + this.remoteServer = this.geyser.platformType() == PlatformType.STANDALONE ? loginEvent.remoteServer() : remoteServer; + + // Start ticking + tickThread = tickEventLoop.scheduleAtFixedRate(this::tick, nanosecondsPerTick, nanosecondsPerTick, TimeUnit.NANOSECONDS); + + ClientSession downstream; + if (geyser.getBootstrap().getSocketAddress() != null) { + // We're going to connect through the JVM and not through TCP + downstream = new LocalSession(geyser.getBootstrap().getSocketAddress(), + upstream.getAddress().getAddress().getHostAddress(), + this.protocol, this.tickEventLoop); + downstream.setFlag(MinecraftConstants.CLIENT_HOST, this.remoteServer.address()); + downstream.setFlag(MinecraftConstants.CLIENT_PORT, this.remoteServer.port()); + this.downstream = new DownstreamSession(downstream); + } else { + downstream = new ClientNetworkSession(new InetSocketAddress(this.remoteServer.address(), this.remoteServer.port()), this.protocol, tickEventLoop, null, null); + this.downstream = new DownstreamSession(downstream); + + boolean resolveSrv = false; + try { + resolveSrv = this.remoteServer.resolveSrv(); + } catch (AbstractMethodError | NoSuchMethodError ignored) { + // Ignore if the method doesn't exist + // This will happen with extensions using old APIs + } + this.downstream.getSession().setFlag(BuiltinFlags.ATTEMPT_SRV_RESOLVE, resolveSrv); + } + + // Disable automatic creation of a new TcpClientSession when transferring - we don't use that functionality. + this.downstream.getSession().setFlag(MinecraftConstants.FOLLOW_TRANSFERS, false); + + if (geyser.getConfig().getRemote().isUseProxyProtocol()) { + downstream.setFlag(BuiltinFlags.CLIENT_PROXIED_ADDRESS, upstream.getAddress()); + } + if (geyser.getConfig().isForwardPlayerPing()) { + // Let Geyser handle sending the keep alive + downstream.setFlag(MinecraftConstants.AUTOMATIC_KEEP_ALIVE_MANAGEMENT, false); + } + // We'll handle this since we have the registry data on hand + downstream.setFlag(MinecraftConstants.SEND_BLANK_KNOWN_PACKS_RESPONSE, false); + + // We manually add the default listener to ensure the order of listeners. + protocol.setUseDefaultListeners(false); + + // MCPL listener comes first to handle protocol state switching before Geyser translates packets + downstream.addListener(new ClientListener(HandshakeIntent.LOGIN)); + // Geyser adapter second to ensure translating packets in the correct states + downstream.addListener(new GeyserSessionAdapter(this)); + + downstream.setFlag(BuiltinFlags.CLIENT_TRANSFERRING, loginEvent.transferring()); + downstream.connect(false); + + if (!daylightCycle) { + setDaylightCycle(true); + } + } + // ... +} +``` + +Notably, this allows for multiple downstream sessions (representing Geyser's connection to the Java server per player) to be created for a single Bedrock session. This is not intended behavior, as it leads to significantly increased resource consumption. This is especially true on Geyser Standalone, which, as seen in the code above, must open a TCP session to the Java server. The window of time for an attacker to pull this off is relatively short, as once Geyser completes the Java login process on behalf of the Bedrock client, `GeyserSession.loggedIn` is set to true, preventing further calls to `GeyserSession#connectDownstream`. However, this is still enough time for an attacker to create numerous downstream sessions, leading to a DoS attack. We attempted to mitigate this by disconnecting clients that send multiple ResourcePackClientResponsePacket in a single session. The following class diagram summarizes this: + +![chart_05 Multiple Sessions Class Diagram](/img/blog/2025-11-30-early-packet-handling-attack/chart_05.svg#gh-light-mode-only)![chart_05 Multiple Sessions Class Diagram](/img/blog/2025-11-30-early-packet-handling-attack/chart_05_dark.svg#gh-dark-mode-only) + +## Code Analysis of the Second Attack Vector + +While we thought we had addressed the root issue and provided the affected users with a patch for testing, we quickly received logs that indicated otherwise: + +```log +[18:54:29.235 GeyserServerChild-4-3/INFO] Player connected with username BedrockPlayer +[18:54:29.237 clientNetworkSession-6-2/INFO] BedrockPlayer (logged in as: BedrockPlayer) has connected to remote java server on address 127.0.0.1 +[18:54:49.257 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:54:49.259 GeyserServerChild-4-3/INFO] BedrockPlayer has disconnected from remote Java server on address 127.0.0.1 because of An internal error occurred! +[18:54:52.836 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:54:55.620 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:54:56.186 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:54:56.872 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:54:59.508 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:02.551 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:03.025 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:03.619 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:04.254 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:04.922 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:05.435 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:07.662 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:08.139 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:08.650 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:11.066 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:13.498 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:14.023 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:14.466 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:15.057 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:15.712 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:16.211 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:18.431 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:18.966 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:19.443 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:21.599 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:23.904 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:24.409 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:24.971 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:25.539 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +[18:55:26.225 GeyserServerChild-4-3/WARN] Exception caught in session of BedrockPlayer: index: 13, length: 25710 (expected: range(0, 27)) +``` + +These exceptions are thrown by Geyser's InvalidPacketHandler, which is designed to quickly disconnect players that send malformed packets or packets that exceed the expected size limits. This is a security measure to prevent potential exploits or crashes caused by invalid data. + +```java +package org.geysermc.geyser.network; +// ... +public class InvalidPacketHandler extends ChannelInboundHandlerAdapter { + public static final String NAME = "rak-error-handler"; + + private final GeyserSession session; + + @Override + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { + Throwable rootCause = Stream.iterate(cause, Throwable::getCause) + .filter(element -> element.getCause() == null) + .findFirst() + .orElse(cause); + + GeyserLogger logger = GeyserImpl.getInstance().getLogger(); + + if (!(rootCause instanceof IllegalArgumentException)) { + // Kick users that cause exceptions + logger.warning("Exception caught in session of " + session.bedrockUsername() + ": " + rootCause.getMessage()); + session.disconnect("An internal error occurred!"); + return; + } + + // Kick users that try to send illegal packets + logger.warning("Illegal packet from " + session.bedrockUsername() + ": " + rootCause.getMessage()); + if (logger.isDebug()) { + cause.printStackTrace(); + } + session.disconnect("Invalid packet received!"); + } +} +``` + +This makes the aforementioned logs of particular concern, as it should not be possible for any exceptions to be triggered from this handler multiple times. The first exception should be logged and trigger an immediate disconnect, preventing further exceptions from being thrown. Despite this, the log clearly indicates that multiple exceptions are being thrown in quick succession, suggesting that the disconnect is not being handled as intended. This is summarized below: + +![chart_03 Exception Handler](/img/blog/2025-11-30-early-packet-handling-attack/chart_03.svg#gh-light-mode-only)![chart_03 Exception Handler](/img/blog/2025-11-30-early-packet-handling-attack/chart_03_dark.svg#gh-dark-mode-only) + +We first followed the chain of `GeyserSession#disconnect`. This invokes Geyser's `UpstreamSession#disconnect`, which contains `BedrockServerSession` and invokes `BedrockServerSession#disconnect`. Beyond this, the disconnect logic is handled by the upstream Bedrock protocol library used by Geyser, [CloudburstMC/Protocol](https://github.com/CloudburstMC/Protocol). The overall logic is summarized below: + +![chart_01 GeyserSession Disconnect Chain](/img/blog/2025-11-30-early-packet-handling-attack/chart_01.svg#gh-light-mode-only)![chart_01 GeyserSession Disconnect Chain](/img/blog/2025-11-30-early-packet-handling-attack/chart_01_dark.svg#gh-dark-mode-only) + +Upon further investigation, we found that the Bedrock protocol library did not actually close the underlying Netty channel when a disconnect was triggered: + +```java +package org.cloudburstmc.protocol.bedrock; +// ... +public class BedrockServerSession extends BedrockSession { + // ... + public void disconnect(@Nullable String reason, boolean hideReason) { + this.checkForClosed(); + + DisconnectPacket packet = new DisconnectPacket(); + if (reason == null || hideReason) { + packet.setMessageSkipped(true); + reason = BedrockDisconnectReasons.DISCONNECTED; + } + packet.setKickMessage(reason); + this.sendPacketImmediately(packet); + } +} +``` + +This allows an attacker that should have been disconnected to continue to send malicous packets that lead to expensive deserialization logic. The result is another potential denial of service (DoS) attack vector. + +## Patch and Mitigation + +We mitigated the first attack vector by ensuring that the Bedrock client can only signal completion of resource pack sending once per session. This was done by modifying the `UpstreamPacketHandler` to check if the `finishedResourcePackSending` flag is already set before proceeding with authentication logic: + +```java +package org.geysermc.geyser.network; +// ... +public class UpstreamPacketHandler extends LoggingPacketHandler { + // ... + public PacketSignal handle(ResourcePackClientResponsePacket packet) { + // ... + // highlight-start + if (finishedResourcePackSending) { + session.disconnect("Illegal duplicate resource pack response packet received!"); + return PacketSignal.HANDLED; + } + // highlight-end + // ... + switch (packet.getStatus()) { + case COMPLETED -> { + // highlight-start + finishedResourcePackSending = true; + // highlight-end + if (geyser.getConfig().getRemote().authType() != AuthType.ONLINE) { + session.authenticate(session.getAuthData().name()); + } else if (!couldLoginUserByName(session.getAuthData().name())) { + // We must spawn the white world + session.connect(); + } + geyser.getLogger().info(GeyserLocale.getLocaleStringLog("geyser.network.connect", session.getAuthData().name())); + } + // ... + } + return PacketSignal.HANDLED; + } + // ... +} +``` + +This ensures that any further attempts to send a `ResourcePackClientResponsePacket` after the first one will result in an immediate disconnect, preventing the creation of multiple downstream sessions. + +The second attack vector was mitigated by ensuring that the disconnect logic in the Bedrock protocol library properly closes the underlying Netty channel. This was achieved by modifying the `BedrockServerSession#disconnect` method to schedule a task that closes the session after a timeout, ensuring that the channel is closed after the disconnect packet is sent. Packet serialzation is also stopped immediately for disconnected clients: + +```java +package org.cloudburstmc.protocol.bedrock; +// ... +public class BedrockServerSession extends BedrockSession { + private static final int TIMEOUT_SECONDS = SystemPropertyUtil.getInt("org.cloudburstmc.protocol.bedrock.disconnectTimeout", 10); + // ... + public void disconnect(@Nullable String reason, boolean hideReason) { + this.checkForClosed(); + + DisconnectPacket packet = new DisconnectPacket(); + String finalReason; + if (reason == null || hideReason) { + packet.setMessageSkipped(true); + finalReason = BedrockDisconnectReasons.DISCONNECTED; + } else { + finalReason = reason; + } + packet.setKickMessage(finalReason); + this.sendPacketImmediately(packet); + + // highlight-start + if (!this.isSubClient()) { + this.getPeer().blackholeInboundPackets(); + } + + this.getPeer().channel.eventLoop().schedule(() -> { + if (this.isConnected()) { + this.close(finalReason); + } + }, TIMEOUT_SECONDS, TimeUnit.SECONDS); + // highlight-end + } +} +``` + +Logic was also added to Geyser's `InvalidPacketHandler` to ensure that invalid packets result in an immediate closing of the underlying Netty channel: + +```java +package org.geysermc.geyser.network; +// ... +public class InvalidPacketHandler extends ChannelInboundHandlerAdapter { + public static final String NAME = "rak-error-handler"; + + private final GeyserSession session; + + @Override + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { + Throwable rootCause = Stream.iterate(cause, Throwable::getCause) + .filter(element -> element.getCause() == null) + .findFirst() + .orElse(cause); + + GeyserLogger logger = GeyserImpl.getInstance().getLogger(); + + if (!(rootCause instanceof IllegalArgumentException)) { + // Kick users that cause exceptions + logger.error("Exception caught in session of " + session.bedrockUsername(), cause); + session.disconnect("An internal error occurred!"); + // highlight-start + session.forciblyCloseUpstream(); + // highlight-end + return; + } + + // Kick users that try to send illegal packets + logger.error("Illegal packet from " + session.bedrockUsername(), cause); + session.disconnect("Invalid packet received!"); + // highlight-start + session.forciblyCloseUpstream(); + // highlight-end + } +} +``` + +## Long Term Impact + +All users of Geyser running outdated builds should update as soon as possible to ensure they are not vulnerable to the attacks described in this post. During the process of investigating this attack, we were made aware of multiple servers being exploited, meaning this is being exploited in the wild. Unlike the previous RakNet amplification attack, this attack is limited in scope to the selected Geyser instance. We expect the number of unpatched instances to decrease over time as Bedrock updates require server owners to update their Geyser instances. As of November 2025, we have not received any recent reports of Geyser instances being targeted by this attack vector, indicating that most instances have been patched. + +## Acknowledgements + +We thank the community for their patience as we addressed this issue, the server owners who responsibly disclosed this issue to us, the developers at Cloudburst and Geyser that worked to mitigate the issue, all donors for their financial support of Geyser, and Cubecraft and Open Collaboration for their continued financial and operational support of the project. diff --git a/blog/2026-10-08-preparing-for-nethernet.md b/blog/2026-10-08-preparing-for-nethernet.md new file mode 100644 index 0000000..5fd7e50 --- /dev/null +++ b/blog/2026-10-08-preparing-for-nethernet.md @@ -0,0 +1,153 @@ +--- +title: Preparing Your Geyser Server for NetherNet +slug: preparing-for-nethernet +authors: Chris +hide_table_of_contents: false +description: >- + Minecraft Bedrock Edition 26.60 fully switches over to a new networking layer, + NetherNet. This blog post explains how you can also switch over, so your + crossplay server will continue to work. +crowdin_page_id: 54c391d9-7dfb-4b06-a7a0-d20628cb2b18 +--- + +With Minecraft: Bedrock Edition 26.60, [planned for October 27th, 2026](https://minecraft.wiki/w/Bedrock_Edition_26.60), +Bedrock clients will stop connecting over RakNet. From then on, every Bedrock server has to speak NetherNet, the new transport +Mojang has been rolling out since 26.40. Any Geyser build from 1237 onward supports NetherNet, but it is not enabled by default yet. +This post covers what changes with NetherNet, how to switch over on a hosting provider or on your own machine, and how to check that everything works. + +## TL;DR + +- **Update Geyser** by downloading the latest build from [https://geysermc.org/download](https://geysermc.org/download), and turn on NetherNet in your Geyser config. +- **Your server needs a TCP port** in addition to the usual UDP port, unless you use external signaling. See our [setup guide](/wiki/geyser/setup/) for detailed instructions! +- If your server is on a hosting provider for which we do not have an updated setup guide, contact their support. You can send them a link to this post. +- **`clone-remote-port` only works with external signaling.** If you use it, read [this section](#notes-for-hosting-provider-users-with-clone-remote-port-enabled) below. +- **Do it before October 27th.** After that date, Bedrock players can't join servers that haven't made the switch. + + + +## What Changes + +With RakNet, Bedrock players connected directly to the server over UDP. NetherNet adds a step before that, called signaling. +Bedrock clients now send the server a web request over TCP, asking how to connect. The signaling server then responds with +the server information needed to connect over WebRTC (which runs on UDP), finishing the join process. + +The MOTD and player count shown in the server list are now also fetched through signaling. This allows Geyser's built-in +signaling server to receive the address initially pinged by the client, and forward it to the Java server for MOTD passthrough. +Players who connect through an IP address, or through a domain without HTTPS, will see a "trust on first use" prompt on their first join. + +In practice, this means your Geyser instance now needs a TCP port for signaling, in addition to the UDP port for gameplay. +By default, Geyser uses port 19132 for both. As long as your address and port stay the same, your players can keep using the server entry they already have. +However, if Geyser previously ran on the same port as your Java server, as it does on many hosts, players will need to change the port in their saved server. + +Geyser also supports using HTTPS to avoid the "trust on first use" prompt. See the [HTTPS section](#https-and-the-trust-prompt) for details. + +## Enabling NetherNet + +Start by downloading the latest build from [https://geysermc.org/download](https://geysermc.org/download). +Any build from 1237 onward supports NetherNet, but newer builds include a number of fixes, so we recommend always using the latest one. + +RakNet is currently still Geyser's default, so NetherNet has to be turned on in the config. For this, take a look at our +[setup guide](/wiki/geyser/setup/): it shows the exact config changes needed. Also, check the server console for any errors or warnings! + +If you need help with the migration, please join our [Discord](https://discord.gg/geysermc) and ask for help. Provide the following information: +- Where you host the server +- A Geyser dump (get it by running `/geyser dump` in the server console) +- A description of the issues you are seeing + +## Using NetherNet and RakNet Together + +If some of your players are still on versions older than 26.40, you can also set `transport` to `both`. Geyser then accepts NetherNet and RakNet side by side. +However, the two transport modes cannot run on the same UDP port, so in this mode you also need to set `webrtc-port` to a separate UDP port for +NetherNet and open it. Once 26.60 is out and everyone has updated, you can switch to `nethernet` and close the old RakNet port. + +Note: 26.30 support will be removed once we add support for 26.60, so if you have players on old versions, ask them to update! + +## HTTPS and the Trust Prompt + +Built-in signaling uses plain HTTP by default. While this works, players see a "trust on first use" prompt the first time they join your server. +Serving signaling over HTTPS removes the prompt. We strongly recommend configuring HTTPS if you can! + +There are two ways to enable HTTPS signaling. You can point Geyser to a TLS certificate in its built-in signaling config, +and it will serve HTTPS instead of HTTP on the same port. Alternatively, you can put a reverse proxy in front of the signaling +port and let it handle HTTPS. See our [HTTPS guide](/wiki/geyser/nethernet-https) for detailed information. + +If neither option is available, you can use an external signaling service that provides HTTPS, such as [Warden](https://warden.cloud). + +## Checking That It Works + +After restarting, try joining from a Bedrock client on version 26.40 or newer. If the connection fails, the Geyser console is the first place to look, +since Geyser reports most NetherNet problems there. The table below covers the most common ones. + +| What you see | Likely cause | What to do | +|-----------------------------------------------------------------------------------------|--------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------| +| Console: "Built-in signaling cannot use port … because the Java server already uses it" | Bedrock and Java share a port, e.g. with `clone-remote-port` | Ask your host for a separate port, or keep using external signaling, which Geyser switches to automatically | +| Console: "RakNet and NetherNet each need their own UDP port" | `both` is set, but `webrtc-port` equals the Bedrock port | Set `webrtc-port` to a different available port | +| Console: "… is a loopback address" | The Bedrock `address` is set to 127.0.0.1 or similar | Set `address` to 0.0.0.0 | +| Players get a "trust on first use" prompt | Signaling runs over plain HTTP | Set up HTTPS, see above | + +If none of these apply, please join our [Discord](https://discord.gg/geysermc) and share a `/geyser dump`, along with any other useful information about your setup. + +## Notes For Hosting Provider Users With `clone-remote-port` Enabled + +Many hosts have relied on `clone-remote-port`, which makes Geyser use the same port as the Java server. **This does not work with built-in signaling.** +Signaling needs a TCP port, and the Java server already uses TCP on that port, so the two cannot share it. If your server only works with `clone-remote-port`, +you have two options: ask your host for a separate port for Geyser that is open for both TCP and UDP, or use external signaling, which does not need a TCP port. + +When Geyser detects that the Java server already uses its port, it falls back to external signaling through [Warden](https://warden.cloud), +a free service run by Ziax, the creators of CubeCraft, and the console shows where players can join. +If your host has no notes in our [setup guide](/wiki/geyser/setup/), pick "Not listed": it covers both options, including keeping a single port with `clone-remote-port` and Warden. +Keep in mind that with this setup, players no longer join with your Java server's address, but with the address and port Geyser shows in the console unless +a custom domain is registered on [Warden](https://warden.cloud). It also takes care of HTTPS for you, so users will not see a "trust on first use" prompt. + +You may also notice that the "Supported hosting providers" list is gone from our website. Soon, it will be replaced with +a list of hosts that support our work through the Open Collaboration program, and work with us to automatically configure Geyser +for their users. This is also highlighted in the setup guide. However, a host's absence from that list will not mean Geyser +won't run there, and the setup guide will continue to include community-collected setup instructions. + +## If You Run a Hosting Provider + +If you offer Minecraft servers, we recommend automatically configuring Geyser for your users, so NetherNet works without +them touching the config. For this purpose, Geyser reads [system properties](/wiki/geyser/geyser-command-line-arguments-and-system-properties) +that can be set in the server's startup command, and take priority over the config. +The most important ones are: + +- `-DgeyserTransport=nethernet` turns on NetherNet. +- `-DgeyserUdpPort` sets the Bedrock port. If you give each server its own port that is open for both TCP and UDP, built-in signaling works without further changes. +- `-DgeyserSignalingPort` and `-DgeyserWebrtcPort` split signaling (TCP) and gameplay (UDP) onto different ports, if your network hands them out separately. +- `-DgeyserSignalingMode=nxs` switches to external signaling, if you cannot give servers a TCP port. You can also run your own NXS-compatible signaling service. +- `-DgeyserAdvertiseAddresses` tells players which public address to connect to, if servers run in containers or behind a NAT and do not hold their public address themselves. + +Once you have set this up, please let us know by [opening a pull request](https://github.com/GeyserMC/GeyserWebsite) or +reaching out on [Discord](https://discord.gg/geysermc), so our setup guide can tell your users that there is nothing for them to do. +In case you need further system properties, please reach out to us! If you would also like to support Geyser's +development and be featured on our upcoming hosting page, have a look at [Open Collaboration](https://opencollaboration.dev/). + +## NetherNet External Signaling (NXS) + +Geyser supports using external signaling providers which follow the NetherNet External Signaling (NXS) standard. It can be useful for +load-balancing between multiple Geyser instances, central certificate management, or avoiding running multiple built-in signaling servers, +amongst other benefits. See the [Open Collaboration blog post](https://opencollaboration.dev/articles/nethernet) to find out more about NXS. +Note that NXS does not support live forwarding of the MOTD and player count. Instead, they are updated periodically. + +## HAProxy Support + +HAProxy headers are currently supported for RakNet and for built-in signaling, but not yet for NetherNet gameplay over +WebRTC. This feature will be added soon. + +## Further Reading +- [Geyser setup guide](/wiki/geyser/setup/): setup steps, including notes for individual hosts +- [HTTPS for NetherNet](/wiki/geyser/nethernet-https): removing the trust prompt with a certificate or a reverse proxy +- [NetherNet HTTP Signaling onboarding guide](https://mojang.github.io/bedrock-protocol-docs/guides/nether-net-onboarding-guide/): Mojang's official documentation +- [Open Collaboration blog post](https://opencollaboration.dev/articles/nethernet): detailed information about NetherNet and the +external signaling specification +- [System properties supported by Geyser](/wiki/geyser/geyser-command-line-arguments-and-system-properties): every NetherNet setting you can set at startup + +## Acknowledgements + +We thank Mojang for documenting NetherNet and signaling ahead of the switch, and Ziax for running Warden, a free external +signaling service open to every Geyser server. NetherNet support in Geyser would not have been possible without [Kas-tle](https://github.com/Kas-tle), +whose early NetherNet transport in [NetworkCompatible](https://github.com/Kas-tle/NetworkCompatible) and first NetherNet +support in [CloudburstMC/Network](https://github.com/CloudburstMC/Network) got this started, [rtm516](https://github.com/rtm516), +for HTTP signaling and the move to libdatachannel, and [irrld](https://github.com/irrld), for bringing NetherNet and NXS into Geyser. +Thank you as well to the community members who tested NetherNet support in Geyser and reported issues along the way. +We would also like to thank all donors, and [Open Collaboration](https://opencollaboration.dev/) and its members, for their continued support of the project. diff --git a/blog/authors.yml b/blog/authors.yml index ebe5eb3..4d20e8a 100644 --- a/blog/authors.yml +++ b/blog/authors.yml @@ -14,4 +14,10 @@ Kas-tle: name: Kas-tle title: Developer url: https://github.com/Kas-tle - image_url: https://github.com/Kas-tle.png \ No newline at end of file + image_url: https://github.com/Kas-tle.png + +Chris: + name: onechris + title: Project Lead + url: https://github.com/onebeastchris + image_url: https://github.com/onebeastchris.png diff --git a/docusaurus.config.ts b/docusaurus.config.ts index c835d49..0b84ae7 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -15,11 +15,44 @@ const config: Config = { projectName: 'GeyserWebsite', onBrokenLinks: 'throw', - onBrokenMarkdownLinks: 'warn', i18n: { defaultLocale: 'en', - locales: ['en'], + locales: ['en', 'ar','crp', 'cs', 'de', 'fr', 'it', 'ja', 'ru', 'tr', 'uk', 'zh-CN'], + localeConfigs: { + crp: { + label: 'Crowdin', + direction: 'ltr', + htmlLang: 'crp', + calendar: 'gregory', + path: 'crp', + } + } + }, + + markdown: { + mermaid: true, + hooks: { + onBrokenMarkdownLinks: 'warn' + }, + ...(process.env.DOCUSAURUS_CURRENT_LOCALE === 'crp' ? { + preprocessor: ({ fileContent }) => { + const lines = fileContent.split('\n'); + + for (let i = 0; i < lines.length; i++) { + if (lines[i].startsWith('#')) { + const lastOpenCurly = lines[i].lastIndexOf('{'); + const lastCloseCurly = lines[i].lastIndexOf('}'); + if (lastCloseCurly !== -1 && lastOpenCurly !== -1 && lastCloseCurly > lastOpenCurly) { + const curly = lines[i].substring(lastOpenCurly, lastCloseCurly + 1); + lines[i] = lines[i].replace(curly, '').replace('\\', '') + ' ' + curly; + } + } + } + + return lines.join('\n'); + } + } : {}) }, presets: [ @@ -80,9 +113,58 @@ const config: Config = { ], 'docusaurus-plugin-sass', './src/plugins/create-versions-json.ts', - './src/plugins/create-providers-json.ts' + [ + './src/plugins/crowdin-sync.ts', + { + projectId: 11, + markdownFolders: [ + { path: 'wiki', destination: 'docusaurus-plugin-content-docs/current' }, + { path: 'blog', destination: 'docusaurus-plugin-content-blog' }, + ], + jsonKeyExclusions: [ + 'providers.provider.', + 'sidebar.apiSidebar.', + 'link.item.label.Geyser', + 'link.item.label.Floodgate', + 'link.item.label.Crowdin', + 'link.item.label.Discord', + 'link.item.label.GitHub', + 'link.item.label.Reddit', + 'link.item.label.Twitter', + 'title', + 'item.label.Geyser', + 'item.label.Floodgate' + ] + } + ], + './src/plugins/output-locales.ts', + './src/plugins/modify-webpack.ts', ], - themes: ["docusaurus-theme-openapi-docs"], + themes: ["docusaurus-theme-openapi-docs", "@docusaurus/theme-mermaid"], + + headTags: process.env.DOCUSAURUS_CURRENT_LOCALE === 'crp' ? [ + { + tagName: 'script', + attributes: { + type: 'text/javascript', + }, + innerHTML: ` + var _jipt = []; + _jipt.push(['project', '88ac5ea17501f26d48048e17e149fee3']); + _jipt.push(['domain', 'geysermc']); + _jipt.push(['before_dom_insert', function(text, node, attribute) { + return text.replace(/.?\{#[^}]+\}/g, ''); + }]); + ` + }, + { + tagName: 'script', + attributes: { + type: 'text/javascript', + src: '//cdn.crowdin.com/jipt/jipt.js' + } + } + ] : [], themeConfig: { image: 'img/site/geyser.png', @@ -147,6 +229,13 @@ const config: Config = { position: 'left', className: 'header-download-link' }, + // TODO: hidden until the hosting page launches + // { + // to: 'hosting', + // label: 'Hosting', + // position: 'left', + // className: 'header-hosting-link' + // }, { // Name on mobile sidebar specified in custom.scss href: 'https://github.com/GeyserMC/Geyser', position: 'right', @@ -157,10 +246,10 @@ const config: Config = { position: 'right', className: 'header-discord-link' }, - // { - // type: 'localeDropdown', - // position: 'right', - // }, + { + type: 'localeDropdown', + position: 'right', + }, ], }, footer: { diff --git a/i18n/ar/code.json b/i18n/ar/code.json new file mode 100644 index 0000000..7251b24 --- /dev/null +++ b/i18n/ar/code.json @@ -0,0 +1,1023 @@ +{ + "pages.main.title": { + "message": "Revolutionize Your Minecraft Server" + }, + "pages.main.subtitle": { + "message": "Enable clients from Minecraft Bedrock Edition to join your Minecraft Java server" + }, + "components.homepage_features.1.line1": { + "message": "Geyser is a program that allows Minecraft: Bedrock Edition clients to join Minecraft: Java Edition servers, allowing for true crossplay between both editions of the game." + }, + "components.homepage_features.1.line2": { + "message": "The ultimate goal of this project is to allow Minecraft: Bedrock Edition users to join Minecraft: Java Edition servers as seamlessly as possible." + }, + "components.homepage_features.2": { + "message": "Geyser acts as a translator which sits between the Bedrock client and the Java server. It takes data from the Bedrock client and translates it into a format the Java server understands and vice versa. Geyser works with any modern Minecraft version and can be installed either as a plugin or ran as a standalone program." + }, + "components.homepage_features.3.line1": { + "message": "Geyser can be joined from Bedrock clients on Windows 10/11, iOS, Android, and even consoles. Geyser works with a wide array of hosting providers, but can also be used as its own standalone proxy to join any Minecraft server!" + }, + "components.homepage_features.3.line2": { + "message": "If you are a server owner, you can install our Floodgate plugin which allows Xbox Live authenticated Bedrock users to join without a Java Edition account!" + }, + "pages.download.title": { + "message": "Download" + }, + "pages.download.subheading": { + "message": "Download the latest versions of our various projects." + }, + "pages.download.description.geyser": { + "message": "A bridge/proxy allowing you to connect to Minecraft: Java Edition servers with Minecraft: Bedrock Edition." + }, + "pages.download.description.floodgate": { + "message": "Hybrid mode plugin to allow for connections from Geyser to join online mode servers." + }, + "pages.download.description.geyserconnect": { + "message": "A Geyser extension allowing players to connect to different Java or Geyser servers." + }, + "pages.download.description.thirdpartycosmetics": { + "message": "An extension that adds support for loading ears and other third party cosmetics on java players" + }, + "pages.dumpviewer.title": { + "message": "Dump Viewer" + }, + "pages.dumpviewer.subheading": { + "message": "View the breakdown of your Geyser dump." + }, + "pages.dumpviewer.enterdumpid": { + "message": "Enter Dump ID or URL below and click load." + }, + "pages.dumpviewer.button.load": { + "message": "Load" + }, + "pages.dumpviewer.versions": { + "message": "Versions" + }, + "pages.dumpviewer.versions.geyserver": { + "message": "Geyser Version" + }, + "pages.dumpviewer.versions.javaver": { + "message": "Java Version" + }, + "pages.dumpviewer.versions.os": { + "message": "Operating System" + }, + "pages.dumpviewer.geyserver": { + "message": "Geyser Version" + }, + "pages.dumpviewer.geyserver.build": { + "message": "Build" + }, + "pages.dumpviewer.geyserver.commit": { + "message": "Commit Hash" + }, + "pages.dumpviewer.geyserver.branch": { + "message": "Branch" + }, + "pages.dumpviewer.platform": { + "message": "Platform Info" + }, + "pages.dumpviewer.platform.id": { + "message": "Platform Identifier" + }, + "pages.dumpviewer.platform.name": { + "message": "Platform Name" + }, + "pages.dumpviewer.platform.version": { + "message": "Platform Version" + }, + "pages.dumpviewer.platform.apiver": { + "message": "Platform API Version" + }, + "pages.dumpviewer.platform.onlinemode": { + "message": "Online Mode" + }, + "pages.dumpviewer.sysinfo": { + "message": "System Info" + }, + "pages.dumpviewer.cpucount": { + "message": "CPU Count" + }, + "pages.dumpviewer.cpuname": { + "message": "CPU Name" + }, + "pages.dumpviewer.ram": { + "message": "RAM" + }, + "pages.dumpviewer.javaname": { + "message": "Java Name" + }, + "pages.dumpviewer.javavendor": { + "message": "Java Vendor" + }, + "pages.dumpviewer.dockercheck": { + "message": "Uses Docker?" + }, + "pages.dumpviewer.plugins": { + "message": "Plugins" + }, + "pages.dumpviewer.plugins.noplugins": { + "message": "No plugins to show." + }, + "pages.dumpviewer.plugins.helptext": { + "message": "Click on a plugin to view more information." + }, + "pages.dumpviewer.config": { + "message": "Config" + }, + "pages.dumpviewer.viewsource": { + "message": "View dump source" + }, + "theme.ErrorPageContent.title": { + "message": "This page crashed.", + "description": "The title of the fallback page when the page crashed" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "Scroll back to top", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.archive.title": { + "message": "Archive", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "Archive", + "description": "The page & hero description of the blog archive page" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "Blog list page navigation", + "description": "The ARIA label for the blog pagination" + }, + "theme.blog.paginator.newerEntries": { + "message": "Newer Entries", + "description": "The label used to navigate to the newer blog posts page (previous page)" + }, + "theme.blog.paginator.olderEntries": { + "message": "Older Entries", + "description": "The label used to navigate to the older blog posts page (next page)" + }, + "theme.blog.post.paginator.navAriaLabel": { + "message": "Blog post page navigation", + "description": "The ARIA label for the blog posts pagination" + }, + "theme.blog.post.paginator.newerPost": { + "message": "Newer Post", + "description": "The blog post button label to navigate to the newer/previous post" + }, + "theme.blog.post.paginator.olderPost": { + "message": "Older Post", + "description": "The blog post button label to navigate to the older/next post" + }, + "theme.blog.post.plurals": { + "message": "One post|{count} posts", + "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.blog.tagTitle": { + "message": "{nPosts} tagged with \"{tagName}\"", + "description": "The title of the page for a blog tag" + }, + "theme.tags.tagsPageLink": { + "message": "View All Tags", + "description": "The label of the link targeting the tag list page" + }, + "theme.colorToggle.ariaLabel": { + "message": "Switch between dark and light mode (currently {mode})", + "description": "The ARIA label for the navbar color mode toggle" + }, + "theme.colorToggle.ariaLabel.mode.dark": { + "message": "dark mode", + "description": "The name for the dark color mode" + }, + "theme.colorToggle.ariaLabel.mode.light": { + "message": "light mode", + "description": "The name for the light color mode" + }, + "theme.docs.DocCard.categoryDescription.plurals": { + "message": "1 item|{count} items", + "description": "The default description for a category card in the generated index about how many items this category includes" + }, + "theme.docs.breadcrumbs.navAriaLabel": { + "message": "Breadcrumbs", + "description": "The ARIA label for the breadcrumbs" + }, + "theme.docs.paginator.navAriaLabel": { + "message": "Docs pages", + "description": "The ARIA label for the docs pagination" + }, + "theme.docs.paginator.previous": { + "message": "Previous", + "description": "The label used to navigate to the previous doc" + }, + "theme.docs.paginator.next": { + "message": "Next", + "description": "The label used to navigate to the next doc" + }, + "theme.docs.tagDocListPageTitle.nDocsTagged": { + "message": "One doc tagged|{count} docs tagged", + "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.tagDocListPageTitle": { + "message": "{nDocsTagged} with \"{tagName}\"", + "description": "The title of the page for a docs tag" + }, + "theme.docs.versionBadge.label": { + "message": "Version: {versionLabel}" + }, + "theme.docs.versions.unreleasedVersionLabel": { + "message": "This is unreleased documentation for {siteTitle} {versionLabel} version.", + "description": "The label used to tell the user that he's browsing an unreleased doc version" + }, + "theme.docs.versions.unmaintainedVersionLabel": { + "message": "This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.", + "description": "The label used to tell the user that he's browsing an unmaintained doc version" + }, + "theme.docs.versions.latestVersionSuggestionLabel": { + "message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).", + "description": "The label used to tell the user to check the latest version" + }, + "theme.docs.versions.latestVersionLinkLabel": { + "message": "latest version", + "description": "The label used for the latest version suggestion link label" + }, + "theme.common.editThisPage": { + "message": "Edit this page", + "description": "The link label to edit the current page" + }, + "theme.common.headingLinkTitle": { + "message": "Direct link to {heading}", + "description": "Title for link to heading" + }, + "theme.lastUpdated.atDate": { + "message": " on {date}", + "description": "The words used to describe on which date a page has been last updated" + }, + "theme.lastUpdated.byUser": { + "message": " by {user}", + "description": "The words used to describe by who the page has been last updated" + }, + "theme.lastUpdated.lastUpdatedAtBy": { + "message": "Last updated{atDate}{byUser}", + "description": "The sentence used to display when a page has been last updated, and by who" + }, + "theme.NotFound.title": { + "message": "Page Not Found", + "description": "The title of the 404 page" + }, + "theme.navbar.mobileVersionsDropdown.label": { + "message": "Versions", + "description": "The label for the navbar versions dropdown on mobile view" + }, + "theme.tags.tagsListLabel": { + "message": "Tags:", + "description": "The label alongside a tag list" + }, + "theme.AnnouncementBar.closeButtonAriaLabel": { + "message": "Close", + "description": "The ARIA label for close button of announcement bar" + }, + "theme.admonition.caution": { + "message": "caution", + "description": "The default label used for the Caution admonition (:::caution)" + }, + "theme.admonition.danger": { + "message": "danger", + "description": "The default label used for the Danger admonition (:::danger)" + }, + "theme.admonition.info": { + "message": "info", + "description": "The default label used for the Info admonition (:::info)" + }, + "theme.admonition.note": { + "message": "note", + "description": "The default label used for the Note admonition (:::note)" + }, + "theme.admonition.tip": { + "message": "tip", + "description": "The default label used for the Tip admonition (:::tip)" + }, + "theme.admonition.warning": { + "message": "warning", + "description": "The default label used for the Warning admonition (:::warning)" + }, + "theme.blog.sidebar.navAriaLabel": { + "message": "Blog recent posts navigation", + "description": "The ARIA label for recent posts in the blog sidebar" + }, + "theme.CodeBlock.copied": { + "message": "Copied", + "description": "The copied button label on code blocks" + }, + "theme.CodeBlock.copyButtonAriaLabel": { + "message": "Copy code to clipboard", + "description": "The ARIA label for copy code blocks button" + }, + "theme.CodeBlock.copy": { + "message": "Copy", + "description": "The copy button label on code blocks" + }, + "theme.CodeBlock.wordWrapToggle": { + "message": "Toggle word wrap", + "description": "The title attribute for toggle word wrapping button of code block lines" + }, + "theme.DocSidebarItem.expandCategoryAriaLabel": { + "message": "Expand sidebar category '{label}'", + "description": "The ARIA label to expand the sidebar category" + }, + "theme.DocSidebarItem.collapseCategoryAriaLabel": { + "message": "Collapse sidebar category '{label}'", + "description": "The ARIA label to collapse the sidebar category" + }, + "theme.NavBar.navAriaLabel": { + "message": "Main", + "description": "The ARIA label for the main navigation" + }, + "theme.NotFound.p1": { + "message": "We could not find what you were looking for.", + "description": "The first paragraph of the 404 page" + }, + "theme.NotFound.p2": { + "message": "Please contact the owner of the site that linked you to the original URL and let them know their link is broken.", + "description": "The 2nd paragraph of the 404 page" + }, + "theme.navbar.mobileLanguageDropdown.label": { + "message": "Languages", + "description": "The label for the mobile language switcher dropdown" + }, + "theme.TOCCollapsible.toggleButtonLabel": { + "message": "On this page", + "description": "The label used by the button on the collapsible TOC component" + }, + "theme.blog.post.readMore": { + "message": "Read More", + "description": "The label used in blog post item excerpts to link to full blog posts" + }, + "theme.blog.post.readMoreLabel": { + "message": "Read more about {title}", + "description": "The ARIA label for the link to full blog posts from excerpts" + }, + "theme.blog.post.readingTime.plurals": { + "message": "One min read|{readingTime} min read", + "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.breadcrumbs.home": { + "message": "Home page", + "description": "The ARIA label for the home page in the breadcrumbs" + }, + "theme.docs.sidebar.collapseButtonTitle": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.collapseButtonAriaLabel": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.navAriaLabel": { + "message": "Docs sidebar", + "description": "The ARIA label for the sidebar navigation" + }, + "theme.docs.sidebar.closeSidebarButtonAriaLabel": { + "message": "Close navigation bar", + "description": "The ARIA label for close button of mobile sidebar" + }, + "theme.docs.sidebar.expandButtonTitle": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.docs.sidebar.expandButtonAriaLabel": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": { + "message": "← Back to main menu", + "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)" + }, + "theme.docs.sidebar.toggleSidebarButtonAriaLabel": { + "message": "Toggle navigation bar", + "description": "The ARIA label for hamburger menu button of mobile navigation" + }, + "theme.SearchBar.seeAll": { + "message": "See all {count} results" + }, + "theme.SearchPage.documentsFound.plurals": { + "message": "One document found|{count} documents found", + "description": "Pluralized label for \"{count} documents found\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.SearchPage.existingResultsTitle": { + "message": "Search results for \"{query}\"", + "description": "The search page title for non-empty query" + }, + "theme.SearchPage.emptyResultsTitle": { + "message": "Search the documentation", + "description": "The search page title for empty query" + }, + "theme.SearchPage.inputPlaceholder": { + "message": "Type your search here", + "description": "The placeholder for search page input" + }, + "theme.SearchPage.inputLabel": { + "message": "Search", + "description": "The ARIA label for search page input" + }, + "theme.SearchPage.algoliaLabel": { + "message": "Search by Algolia", + "description": "The ARIA label for Algolia mention" + }, + "theme.SearchPage.noResultsText": { + "message": "No results were found", + "description": "The paragraph for empty search result" + }, + "theme.SearchPage.fetchingNewResults": { + "message": "Fetching new results...", + "description": "The paragraph for fetching new search results" + }, + "theme.SearchBar.label": { + "message": "Search", + "description": "The ARIA label and placeholder for search button" + }, + "theme.SearchModal.searchBox.resetButtonTitle": { + "message": "Clear the query", + "description": "The label and ARIA label for search box reset button" + }, + "theme.SearchModal.searchBox.cancelButtonText": { + "message": "Cancel", + "description": "The label and ARIA label for search box cancel button" + }, + "theme.SearchModal.startScreen.recentSearchesTitle": { + "message": "Recent", + "description": "The title for recent searches" + }, + "theme.SearchModal.startScreen.noRecentSearchesText": { + "message": "No recent searches", + "description": "The text when no recent searches" + }, + "theme.SearchModal.startScreen.saveRecentSearchButtonTitle": { + "message": "Save this search", + "description": "The label for save recent search button" + }, + "theme.SearchModal.startScreen.removeRecentSearchButtonTitle": { + "message": "Remove this search from history", + "description": "The label for remove recent search button" + }, + "theme.SearchModal.startScreen.favoriteSearchesTitle": { + "message": "Favorite", + "description": "The title for favorite searches" + }, + "theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle": { + "message": "Remove this search from favorites", + "description": "The label for remove favorite search button" + }, + "theme.SearchModal.errorScreen.titleText": { + "message": "Unable to fetch results", + "description": "The title for error screen of search modal" + }, + "theme.SearchModal.errorScreen.helpText": { + "message": "You might want to check your network connection.", + "description": "The help text for error screen of search modal" + }, + "theme.SearchModal.footer.selectText": { + "message": "to select", + "description": "The explanatory text of the action for the enter key" + }, + "theme.SearchModal.footer.selectKeyAriaLabel": { + "message": "Enter key", + "description": "The ARIA label for the Enter key button that makes the selection" + }, + "theme.SearchModal.footer.navigateText": { + "message": "to navigate", + "description": "The explanatory text of the action for the Arrow up and Arrow down key" + }, + "theme.SearchModal.footer.navigateUpKeyAriaLabel": { + "message": "Arrow up", + "description": "The ARIA label for the Arrow up key button that makes the navigation" + }, + "theme.SearchModal.footer.navigateDownKeyAriaLabel": { + "message": "Arrow down", + "description": "The ARIA label for the Arrow down key button that makes the navigation" + }, + "theme.SearchModal.footer.closeText": { + "message": "to close", + "description": "The explanatory text of the action for Escape key" + }, + "theme.SearchModal.footer.closeKeyAriaLabel": { + "message": "Escape key", + "description": "The ARIA label for the Escape key button that close the modal" + }, + "theme.SearchModal.footer.searchByText": { + "message": "Search by", + "description": "The text explain that the search is making by Algolia" + }, + "theme.SearchModal.noResultsScreen.noResultsText": { + "message": "No results for", + "description": "The text explains that there are no results for the following search" + }, + "theme.SearchModal.noResultsScreen.suggestedQueryText": { + "message": "Try searching for", + "description": "The text for the suggested query when no results are found for the following search" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsText": { + "message": "Believe this query should return results?", + "description": "The text for the question where the user thinks there are missing results" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsLinkText": { + "message": "Let us know.", + "description": "The text for the link to report missing results" + }, + "theme.SearchModal.placeholder": { + "message": "Search docs", + "description": "The placeholder of the input of the DocSearch pop-up modal" + }, + "theme.ErrorPageContent.tryAgain": { + "message": "Try again", + "description": "The label of the button to try again rendering when the React error boundary captures an error" + }, + "theme.common.skipToMainContent": { + "message": "Skip to main content", + "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation" + }, + "theme.tags.tagsPageTitle": { + "message": "Tags", + "description": "The title of the tag list page" + }, + "pages.download.description.hurricane": { + "message": "A plugin with various workarounds for Geyser players that modify the server in order to achieve their goal." + }, + "theme.blog.author.pageTitle": { + "message": "{authorName} - {nPosts}", + "description": "The title of the page for a blog author" + }, + "theme.blog.authorsList.pageTitle": { + "message": "Authors", + "description": "The title of the authors page" + }, + "theme.blog.authorsList.viewAll": { + "message": "View all authors", + "description": "The label of the link targeting the blog authors page" + }, + "theme.blog.author.noPosts": { + "message": "This author has not written any posts yet.", + "description": "The text for authors with 0 blog post" + }, + "theme.contentVisibility.unlistedBanner.title": { + "message": "Unlisted page", + "description": "The unlisted content banner title" + }, + "theme.contentVisibility.unlistedBanner.message": { + "message": "This page is unlisted. Search engines will not index it, and only users having a direct link can access it.", + "description": "The unlisted content banner message" + }, + "theme.contentVisibility.draftBanner.title": { + "message": "Draft page", + "description": "The draft content banner title" + }, + "theme.contentVisibility.draftBanner.message": { + "message": "This page is a draft. It will only be visible in dev and be excluded from the production build.", + "description": "The draft content banner message" + }, + "mdx.setup.host_provider": { + "message": "Host Provider" + }, + "mdx.setup.self_host": { + "message": "Self Host" + }, + "mdx.setup.paper_spigot": { + "message": "Paper / Spigot" + }, + "mdx.setup.modded_servers": { + "message": "Modded Servers" + }, + "mdx.setup.proxy_servers": { + "message": "Proxy Servers" + }, + "mdx.setup.viaproxy": { + "message": "ViaProxy" + }, + "mdx.setup.standalone": { + "message": "Standalone" + }, + "pages.download.description.offhandextension": { + "message": "An extension that allows Bedrock players to switch their offhand and mainhand item by emoting." + }, + "pages.download.description.rainbow": { + "message": "A Minecraft mod to generate Geyser item mappings and bedrock resourcepacks for use with Geyser's custom item API (v2)." + }, + "pages.download.description.hydraulic": { + "message": "A companion mod to Geyser which allows for Bedrock players to join modded Minecraft: Java Edition servers." + }, + "pages.download.description.thunder": { + "message": "A java application to convert simple Java Edition resource packs to Bedrock Edition ones." + }, + "pages.dumpviewer.extensions": { + "message": "Extensions" + }, + "pages.dumpviewer.extensions.noextensions": { + "message": "No extensions to show." + }, + "pages.dumpviewer.extensions.helptext": { + "message": "Click on an extension to view more information." + }, + "mdx.setup.fabric": { + "message": "Fabric" + }, + "mdx.setup.neoforge": { + "message": "NeoForge" + }, + "mdx.setup.installing_geyser": { + "message": "Installing Geyser" + }, + "mdx.setup.download_jar": { + "message": "Download {jarName}." + }, + "mdx.setup.place_jar": { + "message": "Place the {jarName} in the {jarDirectory} folder." + }, + "mdx.setup.restart_server": { + "message": "Restart the server." + }, + "mdx.setup.additional_steps": { + "message": "Additional Steps" + }, + "mdx.setup.connecting_on_bedrock": { + "message": "Connecting on Bedrock" + }, + "providers.config.templates.java_address": { + "message": "Set `address` in the `bedrock` section to the public address of the Java server." + }, + "providers.config.templates.custom_port_dedicated_ip": { + "message": "This host may only give out a separate port with a dedicated IP address." + }, + "providers.warnings.ovh_firewall_misconfig": { + "message": "To fix random `Unable to Connect` issues, see [here](/wiki/geyser/port-forwarding/#ovh-and-soyoustart)." + }, + "providers.config.templates.install_location.plugin_list": { + "message": "Install Geyser through the plugin or mod list provided by the host." + }, + "providers.config.templates.install_location.enable_bedrock_crossplay": { + "message": "Select the 'Enable Bedrock crossplay?' option when changing your server software to automatically install and configure Geyser and Floodgate." + }, + "providers.config.templates.info.geyser_installed_by_default": { + "message": "Geyser is installed and configured on all servers by default." + }, + "mdx.setup.checking_server_version": { + "message": "Checking your server version" + }, + "mdx.setup.restart_geyser": { + "message": "Restart Geyser." + }, + "mdx.setup.https_note": { + "message": "Unless signaling runs over {https}, Minecraft asks players whether they trust the server the first time they join." + }, + "mdx.setup.configuring_geyser": { + "message": "Configuring Geyser" + }, + "mdx.setup.open_config_simple": { + "message": "Now open the file {configLocation}. Find the part that starts with {bedrock}, and change the lines shown below." + }, + "mdx.setup.preconfigured": { + "message": "No changes needed. {name} automatically configures Geyser." + }, + "mdx.setup.transport_nethernet_simple": { + "message": "NetherNet is supported fully by 26.50+. If you'd like to also have working MOTD and player count for older versions, you will need to set up both NetherNet and Raknet." + }, + "mdx.setup.transport_both_compat": { + "message": "Also accepts RakNet, for additional compatibility: some Bedrock versions, such as 26.40, fetch the server's MOTD and player count over RakNet. This option needs a separate UDP port for NetherNet." + }, + "mdx.setup.placeholder_word": { + "message": "Replace this" + }, + "mdx.setup.replace_with_simple": { + "message": "With this" + }, + "mdx.setup.placeholder_java_port": { + "message": "The port of the Java server." + }, + "mdx.setup.placeholder_java_port_udp": { + "message": "A UDP port for NetherNet, other than {port}. This can be the Java server's port: the Java server only uses it over TCP, so Geyser can use it over UDP. Any other available UDP port works too." + }, + "mdx.setup.placeholder_second_available_port": { + "message": "An available UDP port for NetherNet, other than {port}. Open it for UDP." + }, + "mdx.setup.raknet_on_port": { + "message": "RakNet uses {port} over UDP, so that port has to be open for UDP as well." + }, + "mdx.setup.summary.nethernet_reported_generic": { + "message": "Reported to work with NetherNet" + }, + "mdx.setup.summary.supporter_configures": { + "message": "{name} configures Geyser for you automatically, including NetherNet." + }, + "mdx.setup.summary.updated": { + "message": "Instructions last updated on {date}" + }, + "mdx.setup.badge.gold": { + "message": "Gold supporter" + }, + "mdx.setup.badge.silver": { + "message": "Silver supporter" + }, + "mdx.setup.badge.bronze": { + "message": "Bronze supporter" + }, + "mdx.setup.unconfirmed_title": { + "message": "Not checked for NetherNet yet" + }, + "mdx.setup.warning_title": { + "message": "Warning" + }, + "mdx.setup.unconfirmed_reach_out_update": { + "message": "These instructions have not been checked for NetherNet yet. If Bedrock players can't join, reach out to {name} to get instructions on how to use Geyser, and let us know on {discord} so we can update this guide." + }, + "mdx.setup.try_not_listed": { + "message": "If your host cannot give you a separate port, follow the {notListed} instead. Players then join through {warden}, an external signaling service." + }, + "mdx.setup.try_not_listed.link": { + "message": "\"Not listed\" guide for using only the Java server's port" + }, + "mdx.setup.no_signaling": { + "message": "{name} supports neither built-in nor external signaling, so Bedrock players cannot connect over NetherNet." + }, + "mdx.setup.hosting_provider_article_short": { + "message": "Host's Geyser guide" + }, + "mdx.setup.hosting_provider_website_short": { + "message": "Website" + }, + "mdx.setup.hosting_provider_support_short": { + "message": "Support" + }, + "mdx.setup.hosting_provider_discord_short": { + "message": "Discord" + }, + "mdx.setup.not_listed.tab_allocated": { + "message": "I can allocate ports" + }, + "mdx.setup.not_listed.tab_java_only": { + "message": "I only have the Java server port" + }, + "components.provider.open_collaboration_group": { + "message": "Hosts that support Geyser's development" + }, + "components.provider.other_group": { + "message": "Other providers" + }, + "mdx.setup.connect.port_java": { + "message": "Your Java server's port" + }, + "mdx.setup.connect.port_config_step": { + "message": "The port you set in \"Configuring Geyser\"" + }, + "mdx.setup.connect.intro": { + "message": "In Minecraft: Bedrock Edition, go to Play, then Servers, and select Add Server. Fill it in like this:" + }, + "mdx.setup.connect.add_server": { + "message": "Add Server" + }, + "mdx.setup.connect.server_name": { + "message": "Server Name" + }, + "mdx.setup.connect.server_name_value": { + "message": "Anything you like" + }, + "mdx.setup.connect.server_address": { + "message": "Server Address" + }, + "mdx.setup.connect.server_address_value": { + "message": "Your Java server's address" + }, + "mdx.setup.connect.port": { + "message": "Port" + }, + "mdx.setup.transport_nethernet_tab": { + "message": "NetherNet" + }, + "mdx.setup.transport_both_tab": { + "message": "NetherNet and RakNet" + }, + "providers.ports.assign": { + "message": "Assign a port in your host's panel, open for both TCP and UDP." + }, + "providers.ports.allocated": { + "message": "Pick an available port from the ports allocated to your server, open for both TCP and UDP." + }, + "providers.ports.ask_host": { + "message": "Ask your host for a port that is open for both TCP and UDP." + }, + "pages.hosting.tier.gold": { + "message": "Gold supporters" + }, + "pages.hosting.tier.silver": { + "message": "Silver supporters" + }, + "pages.hosting.tier.bronze": { + "message": "Bronze supporters" + }, + "pages.hosting.card.website": { + "message": "Website" + }, + "pages.hosting.card.setup": { + "message": "Setup guide" + }, + "pages.hosting.title": { + "message": "Hosting Providers" + }, + "pages.hosting.subheading": { + "message": "Hosting providers that support the development of Geyser." + }, + "pages.hosting.intro": { + "message": "The hosts below support Geyser and related projects through {openCollaboration}. Their support helps fund work on Geyser, such as keeping up with major changes to Bedrock Edition, like the switch to NetherNet. All hosts listed below also configure Geyser automatically when installed, making using Geyser easier than ever. We'd like to thank them all for their support." + }, + "pages.hosting.empty": { + "message": "No hosting providers are listed yet." + }, + "pages.hosting.other.title": { + "message": "Using another host?" + }, + "pages.hosting.other.text": { + "message": "Hosts not being listed here does not mean Geyser won't run there. The {setupGuide} includes community collected notes for many other hosts, and general instructions for those not listed." + }, + "pages.hosting.other.setup_guide": { + "message": "setup guide" + }, + "pages.hosting.meta.title": { + "message": "Hosting Providers" + }, + "pages.hosting.meta.description": { + "message": "Hosting providers that support the development of Geyser through Open Collaboration." + }, + "pages.download.description.floodgatedatabases": { + "message": "Database extension jars for Floodgate local linking." + }, + "providers.ports.from_host": { + "message": "The Bedrock port your host shows you." + }, + "providers.config.templates.info.only_serves_region": { + "message": "This host only provides service in {region}." + }, + "mdx.setup.velocity": { + "message": "Velocity" + }, + "mdx.setup.bungeecord": { + "message": "BungeeCord" + }, + "providers.ports.new_port": { + "message": "Open a new port in your server panel, open for both TCP and UDP, or ask your host for one if the panel has no option for it." + }, + "mdx.setup.supported_versions": { + "message": "Supported versions" + }, + "mdx.setup.restart_velocity": { + "message": "Restart Velocity." + }, + "mdx.setup.restart_bungeecord": { + "message": "Restart BungeeCord." + }, + "mdx.setup.restart_viaproxy": { + "message": "Restart ViaProxy." + }, + "mdx.setup.fabric_dependency": { + "message": "If it is not installed already, download {fabricApi} and place it in the same folder." + }, + "mdx.setup.version_step_viaversion": { + "message": "If your server is not running {version}, you will need to install {viaVersion}. For more information, see {supportedVersions}." + }, + "mdx.setup.version_step_proxy": { + "message": "All servers on the network must accept {version} Java clients, as Geyser imitates one." + }, + "mdx.setup.proxy_install_only": { + "message": "Install Geyser only on the {proxy} server! You can install Floodgate on all servers for better skin support and network-wide Floodgate API availability for other plugins." + }, + "mdx.setup.modded_requirements": { + "message": "{jarName} runs only on a {version} server, and only works alongside server-side mods. Mods that players also need to install on their client will not work. See {supportedVersions} for more details." + }, + "mdx.setup.self_port_choice": { + "message": "Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP, so it cannot be the port of the {platform} server." + }, + "mdx.setup.self_port_choice_standalone": { + "message": "Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP." + }, + "mdx.setup.self_port_sharing": { + "message": "{important}: No other program can use the Geyser port, over either protocol. This includes programs that use UDP, such as voice chat mods or Query, and programs that use TCP, such as another server, a web map, or a website." + }, + "mdx.setup.self_port_sharing.important": { + "message": "Important" + }, + "mdx.setup.connect_local_title": { + "message": "Connecting from the same network" + }, + "mdx.setup.connect_local": { + "message": "On the same device as the server, connect with {localhost} or {loopback} as the address. Other devices in the same local network can use your local IPv4 address, which starts with {ten} or {oneNineTwo}." + }, + "mdx.setup.connect_lan": { + "message": "Alternatively, open Minecraft: Bedrock Edition and join the LAN server in the {friends} tab." + }, + "mdx.setup.connect_lan.friends": { + "message": "Friends" + }, + "mdx.setup.connect_remote_title": { + "message": "Connecting from a different network" + }, + "mdx.setup.connect_remote": { + "message": "To let players from outside your network join, you need to make the Geyser port reachable from the internet." + }, + "mdx.setup.connect_tcp_udp": { + "message": "The Geyser port has to be forwarded for both TCP and UDP. Before NetherNet, forwarding UDP was enough. Now, players use TCP to find your server and UDP to play on it, so without TCP your server will not show up. If you use the \"NetherNet and RakNet\" option, also forward the {webrtcPort} for UDP." + }, + "mdx.setup.connect_options": { + "message": "You have two options:" + }, + "mdx.setup.connect_port_forwarding": { + "message": "{portForwarding}: open the Geyser port (e.g. 19132) for both TCP and UDP in your router and in your firewall. Players then connect with your public IPv4 address and the port. For detailed steps, see {guide}." + }, + "mdx.setup.connect_port_forwarding.title": { + "message": "Port forwarding" + }, + "mdx.setup.connect_port_forwarding.guide": { + "message": "Port forwarding" + }, + "mdx.setup.connect_playit": { + "message": "{playit}: if you cannot open a port, or do not want to expose your home IP address, playit.gg can create a tunnel for you. See {guide}. That guide was written for RakNet. For NetherNet, see {status}. Ngrok does not work, since it does not support UDP." + }, + "mdx.setup.connect_playit.guide": { + "message": "playit.gg Setup" + }, + "mdx.setup.connect_playit.status": { + "message": "NetherNet support on playit.gg" + }, + "mdx.setup.https_step_title": { + "message": "Recommended: Set up HTTPS for signaling" + }, + "mdx.setup.https_step": { + "message": "Geyser's built-in signaling server uses plain HTTP by default, so Minecraft shows players a \"Trust on First Use?\" prompt the first time they join. To avoid this prompt, serve signaling over HTTPS, as explained in {httpsGuide}. Some external signaling services, such as {warden}, provide HTTPS as well." + }, + "mdx.setup.https_step.guide": { + "message": "HTTPS for NetherNet" + }, + "mdx.setup.floodgate_info": { + "message": "To allow Bedrock Edition players to join your server without a paid Java Edition account, you can use {floodgate}." + }, + "mdx.setup.viaproxy_not_plugin.title": { + "message": "ViaProxy is not a plugin or mod" + }, + "mdx.setup.viaproxy_not_plugin": { + "message": "ViaProxy is a standalone program that runs separately from your Minecraft server. Do not put the ViaProxy jar into your server's {plugins} or {mods} folder. To run Geyser as a plugin or mod on your server instead, pick your server software in the tabs above." + }, + "mdx.setup.viaproxy_setup": { + "message": "Set up {viaProxy}." + }, + "mdx.setup.viaproxy_accounts": { + "message": "If you use the ViaProxy GUI, you can use its account management to join online mode servers with Bedrock Edition. If you use the ViaProxy CLI and want Bedrock players to join your online mode server, install and set up {floodgate}." + }, + "mdx.setup.viaproxy_auth_type": { + "message": "ViaProxy manages the {authType} setting itself, so its value in the config is ignored." + }, + "mdx.setup.standalone_java": { + "message": "You need Java 21 or newer to run Geyser. To run Geyser Standalone on Android, see the end of this page." + }, + "mdx.setup.standalone_not_plugin": { + "message": "Geyser Standalone is not a plugin or mod. It is a separate Java program that runs alongside your Java Edition server." + }, + "mdx.setup.standalone_download": { + "message": "Download {standalone}." + }, + "mdx.setup.standalone_folder": { + "message": "Create a new folder for Geyser, and put the jar in it." + }, + "mdx.setup.standalone_start": { + "message": "Start Geyser Standalone:" + }, + "mdx.setup.standalone_gui": { + "message": "{gui} (recommended): double-click the jar file. Geyser creates all the files it needs." + }, + "mdx.setup.standalone_console": { + "message": "{console}: create a startup script, like the one you would use for a Paper server. See {startupScript} for what to put into it. Run it, and Geyser creates all the files it needs." + }, + "mdx.setup.standalone_console.console": { + "message": "Console" + }, + "mdx.setup.standalone_console.startup_script": { + "message": "Creating a Startup Script" + }, + "mdx.setup.standalone_remote_intro": { + "message": "To choose which Java Edition server Geyser Standalone sends players to, find the {java} section:" + }, + "mdx.setup.standalone_remote": { + "message": "Change {address} to the Java server's address, or leave it as it is if the server runs on the same machine as Geyser. Then change {port} to the Java server's port. Set {authType} to {floodgate} if you set up Floodgate on the Java server, otherwise to {online} for an online mode server or {offline} for an offline mode server. To use Floodgate with Geyser Standalone, see {floodgateSetup}." + }, + "mdx.setup.standalone_remote.floodgate_setup": { + "message": "Floodgate Setup" + }, + "mdx.setup.standalone_android_title": { + "message": "Running Geyser Standalone on Android" + }, + "mdx.setup.standalone_android_caution": { + "message": "Apps such as Termux can run Geyser on Android, but how well this works depends on how powerful your device is. Do so at your own risk." + }, + "mdx.setup.standalone_termux_install": { + "message": "Download and install {termux}." + }, + "mdx.setup.run_command": { + "message": "Run {command}." + }, + "mdx.setup.standalone_termux_script": { + "message": "Alternatively, there is an automated setup script for clean Termux installs. It might not work for everyone, so try it if the steps above do not work:" + } +} \ No newline at end of file diff --git a/i18n/ar/docusaurus-plugin-content-blog/options.json b/i18n/ar/docusaurus-plugin-content-blog/options.json new file mode 100644 index 0000000..9fa6586 --- /dev/null +++ b/i18n/ar/docusaurus-plugin-content-blog/options.json @@ -0,0 +1,10 @@ +{ + "description": { + "message": "Blog", + "description": "The description for the blog used in SEO" + }, + "sidebar.title": { + "message": "Recent posts", + "description": "The label for the left sidebar" + } +} \ No newline at end of file diff --git a/i18n/ar/docusaurus-plugin-content-docs/current.json b/i18n/ar/docusaurus-plugin-content-docs/current.json new file mode 100644 index 0000000..cb3914c --- /dev/null +++ b/i18n/ar/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,34 @@ +{ + "version.label": { + "message": "Next", + "description": "The label for version current" + }, + "sidebar.geyserSidebar.category.Setup": { + "message": "Setup", + "description": "The label for category Setup in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Common Issues": { + "message": "Common Issues", + "description": "The label for category Common Issues in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Configuring Geyser": { + "message": "Configuring Geyser", + "description": "The label for category Configuring Geyser in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.FAQ": { + "message": "FAQ", + "description": "The label for category FAQ in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Geyser API": { + "message": "Geyser API", + "description": "The label for category Geyser API in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.link.Hosting Providers": { + "message": "Hosting Providers", + "description": "The label for link Hosting Providers in sidebar geyserSidebar, linking to /hosting" + }, + "sidebar.geyserSidebar.category.Custom Content": { + "message": "Custom Content", + "description": "The label for category Custom Content in sidebar geyserSidebar" + } +} \ No newline at end of file diff --git a/i18n/ar/docusaurus-plugin-content-docs/current/geyser/commands.md b/i18n/ar/docusaurus-plugin-content-docs/current/geyser/commands.md new file mode 100644 index 0000000..0492482 --- /dev/null +++ b/i18n/ar/docusaurus-plugin-content-docs/current/geyser/commands.md @@ -0,0 +1,83 @@ +--- +title: Commands and Permissions +description: Commands and their associated permission nodes for Geyser. +crowdin_sync: true +crowdin_page_id: cd92ff4f-9105-46a2-8696-8b0e2f8b9d31 +--- + +# Commands and Permissions + +Geyser features many built-in commands that can be used by players or server owners. + +:::info + +When using BungeeCord and Velocity, you will need to use a permission plugin such as [LuckPerms](https://luckperms.net/) +on the proxy server to assign permissions to players. Assigning permissions on the backend servers will not work. + +::: + +## Geyser commands & their permissions {#geyser-commands--their-permissions} + +| Command | Permission | Description | +| :-----------------------------------: | :---------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | +| `geyser`
Geyser root command | `geyser.command` | The permission required to see/run any Geyser commands. | +| `geyser help`
`geyser ?` | `geyser.command.help` | Shows help for all registered commands. | +| `geyser advancements` | `geyser.command.advancements` | Open the Java advancements menu. | +| `geyser dump` | `geyser.command.dump` | Dumps Geyser debug information for bug reports. | +| `geyser list` | `geyser.command.list` | List all players connected through Geyser. | +| `geyser nethernet` | `geyser.command.nethernet` | Shows NetherNet signaling status and diagnostics, for use with external signaling. | +| `geyser offhand` | `geyser.command.offhand` | Puts an item in your offhand. | +| `geyser reload` | `geyser.command.reload` | Reloads the Geyser configurations. Kicks all players when used! | +| `geyser settings` | `geyser.command.settings` | Opens a settings menu allowing you to modify aspects of the world. | +| `geyser shutdown`
`geyser stop` | `geyser.command.shutdown` | Shuts down Geyser.
*This command only works on Standalone.* | +| `geyser statistics` | `geyser.command.statistics` | Open the Java statistics menu. | +| `geyser version` | `geyser.command.version` | Shows the current Geyser version and checks for updates. | +| `geyser tooltips` | `geyser.command.tooltips` | Toggle showing Advanced Tooltips (F3 + H on Java) | +| `geyser extensions` | `geyser.command.extensions` | Lists all currently loaded extensions. This command is only registered if any extensions are loaded. | +| `geyser ping` | `geyser.command.ping` | Shows the ping between the player and the Geyser instance. | +| `geyser options` | `geyser.command.options` | Opens the "pause screen additions" dialogue, if sent by the Java server | +| `geyser quickactions` | `geyser.command.quickactions` | Opens the "quick actions" dialogue, if sent by the Java server. | + +## Permissions for Geyser extensions {#extension-permissions} + +For the following, `` refers to the extensions' id. + +| Command | Permission | Description | +| :------------------------- | :---------------------------- | :------------------------------------------------------------------------ | +| ` help`
` ?` | `geyser.command.exthelp.` | Shows help for all commands registered by this extension. | + +## Other Permissions {#other-permissions} + +Besides commands, there are other permissions that are used to guard specific Geyser features. + +| Permission | Description | +| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `geyser.settings.server` | Allow players to use the [game settings menu](/img/wiki/game_menu.png). (Also requires player to have op.) | +| `geyser.settings.gamerules` | Defines whether a user can alter gamerules in the [game settings menu](/img/wiki/game_menu.png). (Also requires player to have op.) | +| `geyser.update` | Whether this player will receive Geyser update notifications upon joining. | + +## Permissions when using Geyser-Standalone/Geyser-ViaProxy {#standalone-viaproxy-permissions} + +Geyser-ViaProxy and Geyser-Standalone feature their own basic permission handler. To edit base permissions, +open the `permissions.yml` file and add or remove permissions that Geyser players should receive when joining. +See the file for more information. + +You can further customize permission handling by creating a [Geyser extension](/wiki/geyser/extensions/) that makes use of Geysers API +to deal with permission checking. + +## Permissions when using Geyser on platforms without permission handlers {#permissions-platforms-no-permission-handlers} + +The following affects Geyser-BungeeCord, Geyser-Velocity, and Geyser-Fabric. +These platforms unfortunately do not have built-in permission handlers. Because of that, you will need to grant permissions on those platforms +manually using permission handlers, such as [LuckPerms](https://luckperms.net/). Geyser's permission are listed above. For extension permissions, consult their documentation. + +Alternatively, you can use [LuckLink](https://github.com/onebeastchris/LuckLink), a third-party Geyser extension, to automatically register permissions using [LuckPerms](https://luckperms.net/). + +- Install [LuckPerms](https://luckperms.net/) on the platform where you've installed Geyser (BungeeCord/Velocity/Fabric). +- To allow Geyser to automatically register permission defaults, install the [LuckLink](https://github.com/onebeastchris/LuckLink) Geyser extension + by downloading the `LuckLink.jar` and adding it to Geyser's `extensions` folder. +- Restart the server, and permissions should be automatically registered. + +## Floodgate commands and permissions {#floodgate-commands-and-permissions} + +For Floodgate commands, see [here](/wiki/floodgate/commands/). diff --git a/i18n/ar/docusaurus-plugin-content-docs/current/geyser/playit-gg.md b/i18n/ar/docusaurus-plugin-content-docs/current/geyser/playit-gg.md new file mode 100644 index 0000000..7d20bd3 --- /dev/null +++ b/i18n/ar/docusaurus-plugin-content-docs/current/geyser/playit-gg.md @@ -0,0 +1,62 @@ +--- +title: playit.gg Setup +description: How to set up playit.gg to use Geyser without port forwarding. +crowdin_sync: true +crowdin_page_id: 3aee52d0-b943-4e37-8797-4a83ef55e42a +--- + +## Prerequisites {#prerequisites} + +:::info +You must be able to connect to your Geyser instance locally! +::: + +:::warning +The playit.gg Minecraft server plugin does not support UDP tunnels. You will need to use the program agent instead! +::: + +:::caution +This guide was written for RakNet, and does not cover NetherNet. For NetherNet, see [playit.gg's progress on NetherNet support](https://status.playit.gg/3/adding-nethernet-support). +::: + +## Setup {#setup} + +1. Head over to [playit.gg's website](https://playit.gg/) - download the program & run it. +2. The program will provide a claiming link. Visit that link, log in. + ![img](/img/wiki/playit-gg/playit_claim.png) +3. Confirm your agent. + ![img](/img/wiki/playit-gg/playit_claim_confirm.png) +4. Add the agent. + ![img](/img/wiki/playit-gg/playit_add_agent.png) +5. After the agent is created, create a tunnel. + ![img](/img/wiki/playit-gg/playit_add_tunnel.png) +6. Name your tunnel and click Next. + ![img](/img/wiki/playit-gg/playit_name_tunnel.png) +7. Select "Minecraft Bedrock" as the tunnel type and click Next. + ![img](/img/wiki/playit-gg/playit_tunnel_type.png) +8. Select the Free Network and click Next. + ![img](/img/wiki/playit-gg/playit_select_network.png) + **Do not change your Geyser port in `config.yml` unless you have a reason (for example, hosting another Geyser server on the same machine).** The Bedrock (Geyser) port in `config.yml` and the playit.gg ports are separate. playit.gg will forward its port to the default Geyser port and should work as-is. Changing it can cause errors. If you have changed your config port, set the Bedrock port back to the default `19132` and ensure `clone-remote-port` is `false`. +9. If the playit.gg agent and Geyser are running on the same device, leave the IP as `127.0.0.1` and set the port to whatever you configured in Geyser's config. + ![img](/img/wiki/playit-gg/playit_set_ipandport.png) +10. Select `proxy-protocol-v2` for the Proxy Protocol section and click Next. +11. In the Geyser config, under `advanced:` `bedrock:`, set `use-haproxy-protocol` to `true`. +12. Click Create Tunnel and wait for the tunnel to be created. + ![img](/img/wiki/playit-gg/playit_create_tunnel.png) +13. Copy your tunnel's port. For example, if your tunnel address is `visiting-phone.gl.at.ply.gg:6695`, then `6695` is the tunnel port. +14. In the Geyser config under `advanced:` `bedrock:`, set `broadcast-port` to your tunnel port (`6695` in the example). +15. Save your config. Start your Minecraft server and connect using your tunnel's IP and port. +16. If you join successfully, then you are done! Make sure to leave the playit.gg program running as closing it will close the tunnel. You also may want to ratelimit individual connections - use the "Per Connection Rate Limit" option to do so. + (If you failed to join, check out the [troubleshooting](#troubleshooting) section of the page.) + +## Troubleshooting {#troubleshooting} + +### I can't connect to my server! {#i-cant-connect-to-my-server} + +- *Try going to the Agents page, set your agent to IPv4 only, and change the region. You may need to switch regions a few times before you can connect.* +- *Are there errors in your minecraft server console?* +- *Unless you manually changed the "Local Port" on the playit.gg website, in Geyser config, ensure that the bedrock port is the default of `19132` and that `clone-remote-port` is `false`.* +- *If you changed the `bedrock-port` or set `clone-remote-port` to `true` and have a reason for doing so (e.g. hosting another Geyser server on the same machine), you'll have to tell playit.gg to use that port instead! See the last paragraph in step 8.* +- *Check that you're joining with playit.gg's IP and port from the "Allocation" tab.* +- *Make sure that you have the program agent open while trying to join.* +- *See [here](/wiki/geyser/fixing-unable-to-connect-to-world/) for general troubleshooting steps.* diff --git a/i18n/ar/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md b/i18n/ar/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md new file mode 100644 index 0000000..492774c --- /dev/null +++ b/i18n/ar/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md @@ -0,0 +1,208 @@ +--- +title: Port forwarding +description: Information on how to set up port forwarding required for Geyser. +crowdin_sync: true +crowdin_page_id: be7c5a22-1e8e-4ffe-8d13-7d763dd75886 +--- + +# Port forwarding {#port-forwarding} + +This page contains information on how to set up port forwarding required for Geyser to work when self-hosting. +There are also guides for specific configurations, such as Docker/Pterodactyl, or on specific VPS/KVM providers, such as OVH or Oracle Cloud. + +:::caution + +If you are using a Minecraft server hosting provider (e.g. Aternos, or Nodecraft), you should refer to the hosting provider setup on the [setup](/wiki/geyser/setup) page instead. + +::: + +:::info Ports that need to be opened +With NetherNet, the Geyser port (by default 19132) has to be open for **both TCP and UDP**: players find the server over TCP (signaling), and play on it over UDP. +If you use the "NetherNet and RakNet" option, also open the `webrtc-port` for UDP. +With external signaling, such as [Warden](https://warden.cloud), only UDP for WebRTC is needed. +::: + +## Port forwarding on Linux/Windows/macOS {#port-forwarding-on-linuxwindowsmacos} + +To allow others to play on your server, you will need to set up port forwarding on the device hosting Geyser. +Additionally, you will need to port forward the port on your router/modem (in other words, allow and route traffic on that port to the proper machine) if you want the server to be accessible outside your own home network. +Forward it for both TCP and UDP; many routers offer a "TCP/UDP" or "Both" option for this. +See [here](https://www.howtogeek.com/66214/how-to-forward-ports-on-your-router/) or [here](https://www.lifewire.com/how-to-port-forward-4163829) for helpful guides. +Do note: if you do not have a static IP address, your IP address may change over time. + +:::info + +Some ISPs (Internet Service Providers) block certain ports, or don't allow you to open ports (e.g. by using CGNAT, which doesn't allow you to open a port with a dynamic IP). +Other ISPs may require you to pay extra for a static IP address. +As an alternative to port forwarding, you can use [playit.gg](/wiki/geyser/playit-gg/) to create a tunnel. + +::: + +### Windows {#windows} + +To open a port on Windows, you will need to open the port through the Windows Firewall. There are multiple ways to do this: + +- `Powershell` (recommended) + + To open a port on TCP and UDP (in our example, port 19132), run the following commands in an administrator Powershell: + + ```powershell + New-NetFirewallRule -DisplayName "Geyser (TCP)" -Direction Inbound -Protocol TCP -LocalPort 19132 -Action Allow + New-NetFirewallRule -DisplayName "Geyser (UDP)" -Direction Inbound -Protocol UDP -LocalPort 19132 -Action Allow + ``` + + Running these commands creates two rules that allow TCP and UDP traffic on port 19132. + +- Windows Defender Firewall with Advanced Security (GUI) + 1. Search for "Windows Defender Firewall with Advanced Security" in the start menu, and open it. ([Image](/img/wiki/port-forwarding/windows-1.png)) + 2. Click on "Inbound Rules" in the left sidebar. ([Image](/img/wiki/port-forwarding/windows-2.png)) + 3. Click on "New Rule..." in the right sidebar. ([Image](/img/wiki/port-forwarding/windows-2.png)) + 4. Select "Port" as the rule type and click "Next". ([Example](/img/wiki/port-forwarding/windows-3.png)) + 5. Select "UDP" and "Specific local ports", and enter the port you want to open (in our example, 19132). Click "Next". ([Example](/img/wiki/port-forwarding/windows-4.png)) + 6. Select "Allow the connection" and click "Next". ([Example](/img/wiki/port-forwarding/windows-5.png)) + 7. Select the profiles you want to apply the rule to (e.g. "Domain", "Private", "Public"), and click "Next". ([Example](/img/wiki/port-forwarding/windows-6.png)) + 8. Enter a name for the rule (e.g. "Geyser (UDP)"), and click "Finish". ([Image](/img/wiki/port-forwarding/windows-7.png)) + 9. Repeat these steps, selecting "TCP" in step 5 and naming the rule e.g. "Geyser (TCP)". + +### Linux {#linux} + +Different Linux distributions, even different VPS providers ship and configure different firewalls. In the following examples, we will use `19132` as the port to open, but you should replace this with the port you are using for Geyser. + +- `ufw` is a simple firewall front-end for iptables that is commonly used on Ubuntu and Debian. To open a port on TCP and UDP, run the following commands: + ```bash + sudo ufw allow 19132/tcp + sudo ufw allow 19132/udp + ``` + Then, reload the firewall with `sudo ufw reload`, and see all open rules with `sudo ufw status`. + Further helpful guides: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server), [Baeldung](https://www.baeldung.com/linux/uncomplicated-firewall) + +- `firewalld` Add a port on TCP and UDP by running: + ```bash + sudo firewall-cmd --zone=public --permanent --add-port=19132/tcp + sudo firewall-cmd --zone=public --permanent --add-port=19132/udp + ``` + Then, reload the firewall with `sudo firewall-cmd --reload`, and see all open rules with `sudo firewall-cmd --list-all`. + Further helpful guides: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7) + +- `iptables` is a common firewall that is used on many Linux distributions. To open a port on TCP and UDP, run the following commands: + ```bash + sudo iptables -A INPUT -p tcp --dport 19132 -j ACCEPT + sudo iptables -A INPUT -p udp --dport 19132 -j ACCEPT + ``` + Then, save the firewall with `sudo iptables-save`, and see all open rules with `sudo iptables -L`. + Further helpful guides for iptables: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-iptables-on-ubuntu-14-04), [Ubuntu](https://help.ubuntu.com/community/IptablesHowTo) + +### macOS {#macos} + +You will need to disable `Block all incoming connections` in your Firewall settings, as that will block any connections and won't allow you to make exceptions. +To allow incoming connections, click `Allow` when getting [these prompts](/img/wiki/port-forwarding/macos_warning.png). +If you are still facing issues, see Apple's official guide [here](https://support.apple.com/guide/mac-help/MH11783) to open a port on macOS. + +## Using Docker or Pterodactyl {#using-docker-or-pterodactyl} + +In addition to port forwarding the port in your server's firewall (and, if applicable, your router/modem), you will need to assign the port in Docker/Pterodactyl. + +### Pterodactyl {#pterodactyl} + +Make sure to allocate the port(s) to the server in the Pterodactyl panel's `Network` tab, additionally to port forwarding the port(s). +See [here](https://pterodactyl.io/community/games/minecraft.html#allocations-in-the-panel) for more information. + +![Pterodactyl panel, Network section](/img/wiki/port-forwarding/pterodactyl-1.png) + +There are also different Geyser eggs for Pterodactyl, which can be found [here](https://github.com/GeyserMC/pterodactyl-stuff). + +:::caution + +If you are not able to allocate ports in the Pterodactyl panel, you will need to contact your server host to allocate one for you or try to use an existing port allocation. + +::: + +### Docker {#docker} + +For Geyser to work under Docker (e.g. using [Itzg's Docker image](https://github.com/itzg/docker-minecraft-server)), you will need to add the Geyser port on TCP and UDP to the docker-compose file. This is done by adding the following to the `ports` section: + +```yaml +ports: + - "25565:25565" + - "19132:19132" + - "19132:19132/udp" +``` + +Without a suffix, Docker exposes the port on TCP. The additional `/udp` suffix exposes it on UDP. +Alternatively, add the ports with the `-p 19132:19132 -p 19132:19132/udp` flags to the docker run command. + +## Issues with specific VPS/KVM providers {#issues-with-specific-vpskvm-providers} + +Some providers, such as OVH, Oracle Cloud, and SoYouStart, have a firewall that blocks the ports Geyser needs by default/in most cases. + +### OVH and SoYouStart {#ovh-and-soyoustart} + +OVH's GAME firewall filters traffic with rules made for specific games. The Minecraft Bedrock and Minecraft Pocket Edition rules currently only support RakNet, the protocol Bedrock used before NetherNet. +With NetherNet, players find the server over HTTP (TCP) and play over WebRTC (UDP), which these rules currently do not support. +For now, use the `Other` rule for the Geyser port(s) instead. + +:::caution + +If you do not have access to these firewall settings, but got linked to this page, please contact your server host and provide them with this link - they are likely using OVH internally. + +::: + +**To resolve it:** + +OVH: + +1. Navigate to `Network interfaces` +2. Click on the `...` button on the table for your IP -> then `...` and `Configure the GAME firewall` -> `Add rule` -> `Other protocol` +3. Add your Geyser port into `outgoing port`. If you use the "NetherNet and RakNet" option, add a rule for the `webrtc-port` as well. +4. If you use OVH's Edge Network Firewall, make sure it allows the Geyser port over both TCP and UDP. + +SoYouStart (subsidiary of OVH): + +1. Click the IP tab. +2. Click the gear at the right of the public IP address; select "Game mitigation". +3. Pick "Add a rule". +4. Select "Other" in the dropdown list and enter the Geyser port. If you use the "NetherNet and RakNet" option, add the `webrtc-port` as well. +5. Save and wait a few seconds for the changes to come into effect. + +### Oracle Cloud/OCI {#oracle-cloudoci} + +By default, Oracle Cloud will block all incoming traffic except for SSH and RDP. This must be resolved within Oracle Cloud itself and the Compute Instance running Geyser. + +The steps below assume that you are using the default ports for the Java server and Geyser, and should be adjusted accordingly. + +1. Find your Compute Instance in the OCI Console +2. Click on the instances Virtual Cloud Network (this will be under "Instance details") +3. On the left-hand side, select "Security Lists" +4. Select one of the security lists. By default only one security list will exist. It doesn't matter which security list we add the rules to. +5. Select "Add Ingress Rules" +6. Configure rules for Java (optional) + - Set "Source CIDR" to `0.0.0.0/0` + - Set "Destination Port Range" to `25565-25565` + - Select "Another Ingress Rule" +7. Configure rules for Geyser, once for TCP and once for UDP + - Set "Source CIDR" to `0.0.0.0/0` + - Set "Destination Port Range" to `19132-19132` + - Set "IP Protocol" to TCP + - Select "Another Ingress Rule", and repeat with "IP Protocol" set to UDP +8. Select "Add Ingress Rules" + +#### Oracle Linux {#oracle-linux} + +Run the following commands to allow Minecraft and Geyser through the OS firewall: + +```bash +sudo firewall-cmd --add-port=25565/tcp --permanent +sudo firewall-cmd --add-port=19132/tcp --permanent +sudo firewall-cmd --add-port=19132/udp --permanent +sudo firewall-cmd --reload +``` + +#### Ubuntu {#ubuntu} + +Run the following commands to allow Minecraft and Geyser through the OS firewall: + +```bash +sudo ufw allow 25565/tcp +sudo ufw allow 19132/tcp +sudo ufw allow 19132/udp +``` diff --git a/i18n/ar/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx b/i18n/ar/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx new file mode 100644 index 0000000..47391e7 --- /dev/null +++ b/i18n/ar/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx @@ -0,0 +1,47 @@ +--- +title: Supported versions +description: Information on the versions Geyser supports. +crowdin_sync: true +crowdin_page_id: f199ae24-f711-486d-8e42-3079be87e8cd +--- + +import { Versions } from '@site/src/components/Versions' +import DocCardList from '@theme/DocCardList'; + +# Currently supported versions \ {#currently-supported-versions} + +:::info +**Geyser currently supports Minecraft Bedrock and Minecraft Java **. +::: + +## Using Geyser with older Minecraft: Bedrock edition versions \ {#using-geyser-with-older-minecraft-bedrock-edition-versions} + +Older Bedrock versions are not supported. Minecraft: Bedrock Edition updates automatically on all platforms, so there are few users who would +want to use older versions. Further, older Bedrock versions do not have all features which Geyser support, which would lead to a sub-par experience. + +## Using Geyser on older Minecraft: Java edition servers \ {#using-geyser-on-older-minecraft-java-edition-servers} + +Geyser emulates a client, so a Java server must accept users using that version in order for Geyser to work. +This is possible thanks to [ViaVersion](https://viaversion.com/viaversion), which allows Java edition players with newer versions to join servers +that run older versions of the game. + +### Using Geyser-Spigot on a Spigot/Paper server running on 1.20.5 or above + +You can use Geyser-Spigot on servers that run on 1.20.5 or above. You will also need to run at least Java 21 or later to use Geyser. See [here](https://docs.papermc.io/misc/java-install) for more info on updating Java. Paper versions not supporting Java 21 can add `-DPaper.IgnoreJavaVersion=true` flag to the Java startup arguments to allow Paper to run on Java 21. + +In order for Bedrock players to chat (1.19.3+) or join (1.19.1/1.19.2), you need to disable chat signing. More information about that can be read on the [chat signing page](/wiki/geyser/secure-chat). + +### Using Geyser-Spigot on a Spigot/Paper server running on a version below 1.20.5 + +This is unfortunately not possible. You'll need to use a proxy such as Velocity or BungeeCord, or set up Geyser-Standalone separately with the [ViaVersion](https://viaversion.com/viaversion) plugin. Another alternative would be to install [ViaProxy](https://viaversion.com/viaproxy), which is a standalone ViaVersion proxy that +translates between different Minecraft: Java edition versions, and to install Geyser-ViaProxy on it. + +### Using Geyser on Fabric/NeoForge servers not on the latest Minecraft version \ {#using-geyser-on-fabric-neoforge-servers-not-on-the-latest-minecraft-version} + +Unfortunately, Geyser-Fabric and Geyser-NeoForge only support the latest version of Minecraft: Java edition. The recommended way to still use +Geyser with older versions would be to install [ViaProxy](https://viaversion.com/viaproxy), which is a standalone ViaVersion proxy that +translates between different Minecraft: Java edition versions, and to install Geyser-ViaProxy on it. This will also work with Floodgate auth. + +### Using Geyser-Velocity or Geyser-BungeeCord on a proxy + +Make sure you update your proxy software to the latest available version, and, if the backend servers are not on , also install the [ViaVersion](https://viaversion.com/viaversion) plugin on the backend servers. Velocity/BungeeCord support most Minecraft versions, so you can update them regardless of the backend server versions. diff --git a/i18n/ar/docusaurus-theme-classic/footer.json b/i18n/ar/docusaurus-theme-classic/footer.json new file mode 100644 index 0000000..1a69184 --- /dev/null +++ b/i18n/ar/docusaurus-theme-classic/footer.json @@ -0,0 +1,50 @@ +{ + "link.title.Wiki": { + "message": "Wiki", + "description": "The title of the footer links column with title=Wiki in the footer" + }, + "link.title.Downloads": { + "message": "Downloads", + "description": "The title of the footer links column with title=Downloads in the footer" + }, + "link.title.Community": { + "message": "Community", + "description": "The title of the footer links column with title=Community in the footer" + }, + "link.title.More": { + "message": "More", + "description": "The title of the footer links column with title=More in the footer" + }, + "link.item.label.REST APIs": { + "message": "REST APIs", + "description": "The label of footer link with label=REST APIs linking to wiki/api/api.geysermc.org/global-api" + }, + "link.item.label.Other": { + "message": "Other", + "description": "The label of footer link with label=Other linking to download?project=other-projects" + }, + "link.item.label.Blog": { + "message": "Blog", + "description": "The label of footer link with label=Blog linking to blog" + }, + "link.item.label.Donate": { + "message": "Donate", + "description": "The label of footer link with label=Donate linking to https://opencollective.com/geysermc" + }, + "link.item.label.Global Linking": { + "message": "Global Linking", + "description": "The label of footer link with label=Global Linking linking to https://link.geysermc.org/" + }, + "link.item.label.Privacy Policy": { + "message": "Privacy Policy", + "description": "The label of footer link with label=Privacy Policy linking to https://ziax.com/terms/privacy-policy/" + }, + "logo.alt": { + "message": "GeyserMC logo", + "description": "The alt text of footer logo" + }, + "copyright": { + "message": "Copyright © 2026 GeyserMC. Built with Docusaurus.
This website is not an official Minecraft website and is not associated with Mojang Studios or Microsoft. All product and company names are trademarks or registered trademarks of their respective holders. Use of these names does not imply any affiliation or endorsement by them.", + "description": "The footer copyright" + } +} \ No newline at end of file diff --git a/i18n/ar/docusaurus-theme-classic/navbar.json b/i18n/ar/docusaurus-theme-classic/navbar.json new file mode 100644 index 0000000..c4f41a5 --- /dev/null +++ b/i18n/ar/docusaurus-theme-classic/navbar.json @@ -0,0 +1,38 @@ +{ + "logo.alt": { + "message": "GeyserMC logo", + "description": "The alt text of navbar logo" + }, + "item.label.Wiki": { + "message": "Wiki", + "description": "Navbar item with label Wiki" + }, + "item.label.Blog": { + "message": "Blog", + "description": "Navbar item with label Blog" + }, + "item.label.Utilities": { + "message": "Utilities", + "description": "Navbar item with label Utilities" + }, + "item.label.Download": { + "message": "Download", + "description": "Navbar item with label Download" + }, + "item.label.REST APIs": { + "message": "REST APIs", + "description": "Navbar item with label REST APIs" + }, + "item.label.Other": { + "message": "Other", + "description": "Navbar item with label Other" + }, + "item.label.Dump Viewer": { + "message": "Dump Viewer", + "description": "Navbar item with label Dump Viewer" + }, + "item.label.Hosting": { + "message": "Hosting", + "description": "Navbar item with label Hosting" + } +} \ No newline at end of file diff --git a/i18n/crp/code.json b/i18n/crp/code.json new file mode 100644 index 0000000..5abb281 --- /dev/null +++ b/i18n/crp/code.json @@ -0,0 +1,1023 @@ +{ + "pages.main.title": { + "message": "crwdns34164:0crwdne34164:0" + }, + "pages.main.subtitle": { + "message": "crwdns34166:0crwdne34166:0" + }, + "components.homepage_features.1.line1": { + "message": "crwdns34168:0crwdne34168:0" + }, + "components.homepage_features.1.line2": { + "message": "crwdns34170:0crwdne34170:0" + }, + "components.homepage_features.2": { + "message": "crwdns34172:0crwdne34172:0" + }, + "components.homepage_features.3.line1": { + "message": "crwdns34174:0crwdne34174:0" + }, + "components.homepage_features.3.line2": { + "message": "crwdns34176:0crwdne34176:0" + }, + "pages.download.title": { + "message": "crwdns34178:0crwdne34178:0" + }, + "pages.download.subheading": { + "message": "crwdns34180:0crwdne34180:0" + }, + "pages.download.description.geyser": { + "message": "crwdns34182:0crwdne34182:0" + }, + "pages.download.description.floodgate": { + "message": "crwdns34184:0crwdne34184:0" + }, + "pages.download.description.geyserconnect": { + "message": "crwdns34186:0crwdne34186:0" + }, + "pages.download.description.thirdpartycosmetics": { + "message": "crwdns34188:0crwdne34188:0" + }, + "pages.dumpviewer.title": { + "message": "crwdns34190:0crwdne34190:0" + }, + "pages.dumpviewer.subheading": { + "message": "crwdns34192:0crwdne34192:0" + }, + "pages.dumpviewer.enterdumpid": { + "message": "crwdns34194:0crwdne34194:0" + }, + "pages.dumpviewer.button.load": { + "message": "crwdns34196:0crwdne34196:0" + }, + "pages.dumpviewer.versions": { + "message": "crwdns34198:0crwdne34198:0" + }, + "pages.dumpviewer.versions.geyserver": { + "message": "crwdns34200:0crwdne34200:0" + }, + "pages.dumpviewer.versions.javaver": { + "message": "crwdns34202:0crwdne34202:0" + }, + "pages.dumpviewer.versions.os": { + "message": "crwdns34204:0crwdne34204:0" + }, + "pages.dumpviewer.geyserver": { + "message": "crwdns34206:0crwdne34206:0" + }, + "pages.dumpviewer.geyserver.build": { + "message": "crwdns34208:0crwdne34208:0" + }, + "pages.dumpviewer.geyserver.commit": { + "message": "crwdns34210:0crwdne34210:0" + }, + "pages.dumpviewer.geyserver.branch": { + "message": "crwdns34212:0crwdne34212:0" + }, + "pages.dumpviewer.platform": { + "message": "crwdns34214:0crwdne34214:0" + }, + "pages.dumpviewer.platform.id": { + "message": "crwdns34216:0crwdne34216:0" + }, + "pages.dumpviewer.platform.name": { + "message": "crwdns34218:0crwdne34218:0" + }, + "pages.dumpviewer.platform.version": { + "message": "crwdns34220:0crwdne34220:0" + }, + "pages.dumpviewer.platform.apiver": { + "message": "crwdns34222:0crwdne34222:0" + }, + "pages.dumpviewer.platform.onlinemode": { + "message": "crwdns34224:0crwdne34224:0" + }, + "pages.dumpviewer.sysinfo": { + "message": "crwdns34226:0crwdne34226:0" + }, + "pages.dumpviewer.cpucount": { + "message": "crwdns34228:0crwdne34228:0" + }, + "pages.dumpviewer.cpuname": { + "message": "crwdns34230:0crwdne34230:0" + }, + "pages.dumpviewer.ram": { + "message": "crwdns34232:0crwdne34232:0" + }, + "pages.dumpviewer.javaname": { + "message": "crwdns34234:0crwdne34234:0" + }, + "pages.dumpviewer.javavendor": { + "message": "crwdns34236:0crwdne34236:0" + }, + "pages.dumpviewer.dockercheck": { + "message": "crwdns34238:0crwdne34238:0" + }, + "pages.dumpviewer.plugins": { + "message": "crwdns34240:0crwdne34240:0" + }, + "pages.dumpviewer.plugins.noplugins": { + "message": "crwdns34242:0crwdne34242:0" + }, + "pages.dumpviewer.plugins.helptext": { + "message": "crwdns34244:0crwdne34244:0" + }, + "pages.dumpviewer.config": { + "message": "crwdns34246:0crwdne34246:0" + }, + "pages.dumpviewer.viewsource": { + "message": "crwdns34248:0crwdne34248:0" + }, + "theme.ErrorPageContent.title": { + "message": "crwdns34250:0crwdne34250:0", + "description": "The title of the fallback page when the page crashed" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "crwdns34252:0crwdne34252:0", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.archive.title": { + "message": "crwdns34254:0crwdne34254:0", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "crwdns34256:0crwdne34256:0", + "description": "The page & hero description of the blog archive page" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "crwdns34258:0crwdne34258:0", + "description": "The ARIA label for the blog pagination" + }, + "theme.blog.paginator.newerEntries": { + "message": "crwdns34260:0crwdne34260:0", + "description": "The label used to navigate to the newer blog posts page (previous page)" + }, + "theme.blog.paginator.olderEntries": { + "message": "crwdns34262:0crwdne34262:0", + "description": "The label used to navigate to the older blog posts page (next page)" + }, + "theme.blog.post.paginator.navAriaLabel": { + "message": "crwdns34264:0crwdne34264:0", + "description": "The ARIA label for the blog posts pagination" + }, + "theme.blog.post.paginator.newerPost": { + "message": "crwdns34266:0crwdne34266:0", + "description": "The blog post button label to navigate to the newer/previous post" + }, + "theme.blog.post.paginator.olderPost": { + "message": "crwdns34268:0crwdne34268:0", + "description": "The blog post button label to navigate to the older/next post" + }, + "theme.blog.post.plurals": { + "message": "crwdns34270:0{count}crwdne34270:0", + "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.blog.tagTitle": { + "message": "crwdns34272:0{nPosts}crwdnd34272:0{tagName}crwdne34272:0", + "description": "The title of the page for a blog tag" + }, + "theme.tags.tagsPageLink": { + "message": "crwdns34274:0crwdne34274:0", + "description": "The label of the link targeting the tag list page" + }, + "theme.colorToggle.ariaLabel": { + "message": "crwdns34276:0{mode}crwdne34276:0", + "description": "The ARIA label for the navbar color mode toggle" + }, + "theme.colorToggle.ariaLabel.mode.dark": { + "message": "crwdns34278:0crwdne34278:0", + "description": "The name for the dark color mode" + }, + "theme.colorToggle.ariaLabel.mode.light": { + "message": "crwdns34280:0crwdne34280:0", + "description": "The name for the light color mode" + }, + "theme.docs.DocCard.categoryDescription.plurals": { + "message": "crwdns34282:0{count}crwdne34282:0", + "description": "The default description for a category card in the generated index about how many items this category includes" + }, + "theme.docs.breadcrumbs.navAriaLabel": { + "message": "crwdns34284:0crwdne34284:0", + "description": "The ARIA label for the breadcrumbs" + }, + "theme.docs.paginator.navAriaLabel": { + "message": "crwdns34286:0crwdne34286:0", + "description": "The ARIA label for the docs pagination" + }, + "theme.docs.paginator.previous": { + "message": "crwdns34288:0crwdne34288:0", + "description": "The label used to navigate to the previous doc" + }, + "theme.docs.paginator.next": { + "message": "crwdns34290:0crwdne34290:0", + "description": "The label used to navigate to the next doc" + }, + "theme.docs.tagDocListPageTitle.nDocsTagged": { + "message": "crwdns34292:0{count}crwdne34292:0", + "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.tagDocListPageTitle": { + "message": "crwdns34294:0{nDocsTagged}crwdnd34294:0{tagName}crwdne34294:0", + "description": "The title of the page for a docs tag" + }, + "theme.docs.versionBadge.label": { + "message": "crwdns34296:0{versionLabel}crwdne34296:0" + }, + "theme.docs.versions.unreleasedVersionLabel": { + "message": "crwdns34298:0{siteTitle}crwdnd34298:0{versionLabel}crwdne34298:0", + "description": "The label used to tell the user that he's browsing an unreleased doc version" + }, + "theme.docs.versions.unmaintainedVersionLabel": { + "message": "crwdns34300:0{siteTitle}crwdnd34300:0{versionLabel}crwdne34300:0", + "description": "The label used to tell the user that he's browsing an unmaintained doc version" + }, + "theme.docs.versions.latestVersionSuggestionLabel": { + "message": "crwdns34302:0{latestVersionLink}crwdnd34302:0{versionLabel}crwdne34302:0", + "description": "The label used to tell the user to check the latest version" + }, + "theme.docs.versions.latestVersionLinkLabel": { + "message": "crwdns34304:0crwdne34304:0", + "description": "The label used for the latest version suggestion link label" + }, + "theme.common.editThisPage": { + "message": "crwdns34306:0crwdne34306:0", + "description": "The link label to edit the current page" + }, + "theme.common.headingLinkTitle": { + "message": "crwdns34308:0{heading}crwdne34308:0", + "description": "Title for link to heading" + }, + "theme.lastUpdated.atDate": { + "message": "crwdns34310:0{date}crwdne34310:0", + "description": "The words used to describe on which date a page has been last updated" + }, + "theme.lastUpdated.byUser": { + "message": "crwdns34312:0{user}crwdne34312:0", + "description": "The words used to describe by who the page has been last updated" + }, + "theme.lastUpdated.lastUpdatedAtBy": { + "message": "crwdns34314:0{atDate}crwdnd34314:0{byUser}crwdne34314:0", + "description": "The sentence used to display when a page has been last updated, and by who" + }, + "theme.NotFound.title": { + "message": "crwdns34316:0crwdne34316:0", + "description": "The title of the 404 page" + }, + "theme.navbar.mobileVersionsDropdown.label": { + "message": "crwdns34318:0crwdne34318:0", + "description": "The label for the navbar versions dropdown on mobile view" + }, + "theme.tags.tagsListLabel": { + "message": "crwdns34320:0crwdne34320:0", + "description": "The label alongside a tag list" + }, + "theme.AnnouncementBar.closeButtonAriaLabel": { + "message": "crwdns34322:0crwdne34322:0", + "description": "The ARIA label for close button of announcement bar" + }, + "theme.admonition.caution": { + "message": "crwdns34324:0crwdne34324:0", + "description": "The default label used for the Caution admonition (:::caution)" + }, + "theme.admonition.danger": { + "message": "crwdns34326:0crwdne34326:0", + "description": "The default label used for the Danger admonition (:::danger)" + }, + "theme.admonition.info": { + "message": "crwdns34328:0crwdne34328:0", + "description": "The default label used for the Info admonition (:::info)" + }, + "theme.admonition.note": { + "message": "crwdns34330:0crwdne34330:0", + "description": "The default label used for the Note admonition (:::note)" + }, + "theme.admonition.tip": { + "message": "crwdns34332:0crwdne34332:0", + "description": "The default label used for the Tip admonition (:::tip)" + }, + "theme.admonition.warning": { + "message": "crwdns34334:0crwdne34334:0", + "description": "The default label used for the Warning admonition (:::warning)" + }, + "theme.blog.sidebar.navAriaLabel": { + "message": "crwdns34336:0crwdne34336:0", + "description": "The ARIA label for recent posts in the blog sidebar" + }, + "theme.CodeBlock.copied": { + "message": "crwdns34338:0crwdne34338:0", + "description": "The copied button label on code blocks" + }, + "theme.CodeBlock.copyButtonAriaLabel": { + "message": "crwdns34340:0crwdne34340:0", + "description": "The ARIA label for copy code blocks button" + }, + "theme.CodeBlock.copy": { + "message": "crwdns34342:0crwdne34342:0", + "description": "The copy button label on code blocks" + }, + "theme.CodeBlock.wordWrapToggle": { + "message": "crwdns34344:0crwdne34344:0", + "description": "The title attribute for toggle word wrapping button of code block lines" + }, + "theme.DocSidebarItem.expandCategoryAriaLabel": { + "message": "crwdns34346:0{label}crwdne34346:0", + "description": "The ARIA label to expand the sidebar category" + }, + "theme.DocSidebarItem.collapseCategoryAriaLabel": { + "message": "crwdns34348:0{label}crwdne34348:0", + "description": "The ARIA label to collapse the sidebar category" + }, + "theme.NavBar.navAriaLabel": { + "message": "crwdns34350:0crwdne34350:0", + "description": "The ARIA label for the main navigation" + }, + "theme.NotFound.p1": { + "message": "crwdns34352:0crwdne34352:0", + "description": "The first paragraph of the 404 page" + }, + "theme.NotFound.p2": { + "message": "crwdns34354:0crwdne34354:0", + "description": "The 2nd paragraph of the 404 page" + }, + "theme.navbar.mobileLanguageDropdown.label": { + "message": "crwdns34356:0crwdne34356:0", + "description": "The label for the mobile language switcher dropdown" + }, + "theme.TOCCollapsible.toggleButtonLabel": { + "message": "crwdns34358:0crwdne34358:0", + "description": "The label used by the button on the collapsible TOC component" + }, + "theme.blog.post.readMore": { + "message": "crwdns34360:0crwdne34360:0", + "description": "The label used in blog post item excerpts to link to full blog posts" + }, + "theme.blog.post.readMoreLabel": { + "message": "crwdns34362:0{title}crwdne34362:0", + "description": "The ARIA label for the link to full blog posts from excerpts" + }, + "theme.blog.post.readingTime.plurals": { + "message": "crwdns34364:0{readingTime}crwdne34364:0", + "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.breadcrumbs.home": { + "message": "crwdns34366:0crwdne34366:0", + "description": "The ARIA label for the home page in the breadcrumbs" + }, + "theme.docs.sidebar.collapseButtonTitle": { + "message": "crwdns34368:0crwdne34368:0", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.collapseButtonAriaLabel": { + "message": "crwdns34370:0crwdne34370:0", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.navAriaLabel": { + "message": "crwdns34372:0crwdne34372:0", + "description": "The ARIA label for the sidebar navigation" + }, + "theme.docs.sidebar.closeSidebarButtonAriaLabel": { + "message": "crwdns34374:0crwdne34374:0", + "description": "The ARIA label for close button of mobile sidebar" + }, + "theme.docs.sidebar.expandButtonTitle": { + "message": "crwdns34376:0crwdne34376:0", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.docs.sidebar.expandButtonAriaLabel": { + "message": "crwdns34378:0crwdne34378:0", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": { + "message": "crwdns34380:0crwdne34380:0", + "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)" + }, + "theme.docs.sidebar.toggleSidebarButtonAriaLabel": { + "message": "crwdns34382:0crwdne34382:0", + "description": "The ARIA label for hamburger menu button of mobile navigation" + }, + "theme.SearchBar.seeAll": { + "message": "crwdns34384:0{count}crwdne34384:0" + }, + "theme.SearchPage.documentsFound.plurals": { + "message": "crwdns34386:0{count}crwdne34386:0", + "description": "Pluralized label for \"{count} documents found\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.SearchPage.existingResultsTitle": { + "message": "crwdns34388:0{query}crwdne34388:0", + "description": "The search page title for non-empty query" + }, + "theme.SearchPage.emptyResultsTitle": { + "message": "crwdns34390:0crwdne34390:0", + "description": "The search page title for empty query" + }, + "theme.SearchPage.inputPlaceholder": { + "message": "crwdns34392:0crwdne34392:0", + "description": "The placeholder for search page input" + }, + "theme.SearchPage.inputLabel": { + "message": "crwdns34394:0crwdne34394:0", + "description": "The ARIA label for search page input" + }, + "theme.SearchPage.algoliaLabel": { + "message": "crwdns34396:0crwdne34396:0", + "description": "The ARIA label for Algolia mention" + }, + "theme.SearchPage.noResultsText": { + "message": "crwdns34398:0crwdne34398:0", + "description": "The paragraph for empty search result" + }, + "theme.SearchPage.fetchingNewResults": { + "message": "crwdns34400:0crwdne34400:0", + "description": "The paragraph for fetching new search results" + }, + "theme.SearchBar.label": { + "message": "crwdns34402:0crwdne34402:0", + "description": "The ARIA label and placeholder for search button" + }, + "theme.SearchModal.searchBox.resetButtonTitle": { + "message": "crwdns34404:0crwdne34404:0", + "description": "The label and ARIA label for search box reset button" + }, + "theme.SearchModal.searchBox.cancelButtonText": { + "message": "crwdns34406:0crwdne34406:0", + "description": "The label and ARIA label for search box cancel button" + }, + "theme.SearchModal.startScreen.recentSearchesTitle": { + "message": "crwdns34408:0crwdne34408:0", + "description": "The title for recent searches" + }, + "theme.SearchModal.startScreen.noRecentSearchesText": { + "message": "crwdns34410:0crwdne34410:0", + "description": "The text when no recent searches" + }, + "theme.SearchModal.startScreen.saveRecentSearchButtonTitle": { + "message": "crwdns34412:0crwdne34412:0", + "description": "The label for save recent search button" + }, + "theme.SearchModal.startScreen.removeRecentSearchButtonTitle": { + "message": "crwdns34414:0crwdne34414:0", + "description": "The label for remove recent search button" + }, + "theme.SearchModal.startScreen.favoriteSearchesTitle": { + "message": "crwdns34416:0crwdne34416:0", + "description": "The title for favorite searches" + }, + "theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle": { + "message": "crwdns34418:0crwdne34418:0", + "description": "The label for remove favorite search button" + }, + "theme.SearchModal.errorScreen.titleText": { + "message": "crwdns34420:0crwdne34420:0", + "description": "The title for error screen of search modal" + }, + "theme.SearchModal.errorScreen.helpText": { + "message": "crwdns34422:0crwdne34422:0", + "description": "The help text for error screen of search modal" + }, + "theme.SearchModal.footer.selectText": { + "message": "crwdns34424:0crwdne34424:0", + "description": "The explanatory text of the action for the enter key" + }, + "theme.SearchModal.footer.selectKeyAriaLabel": { + "message": "crwdns34426:0crwdne34426:0", + "description": "The ARIA label for the Enter key button that makes the selection" + }, + "theme.SearchModal.footer.navigateText": { + "message": "crwdns34428:0crwdne34428:0", + "description": "The explanatory text of the action for the Arrow up and Arrow down key" + }, + "theme.SearchModal.footer.navigateUpKeyAriaLabel": { + "message": "crwdns34430:0crwdne34430:0", + "description": "The ARIA label for the Arrow up key button that makes the navigation" + }, + "theme.SearchModal.footer.navigateDownKeyAriaLabel": { + "message": "crwdns34432:0crwdne34432:0", + "description": "The ARIA label for the Arrow down key button that makes the navigation" + }, + "theme.SearchModal.footer.closeText": { + "message": "crwdns34434:0crwdne34434:0", + "description": "The explanatory text of the action for Escape key" + }, + "theme.SearchModal.footer.closeKeyAriaLabel": { + "message": "crwdns34436:0crwdne34436:0", + "description": "The ARIA label for the Escape key button that close the modal" + }, + "theme.SearchModal.footer.searchByText": { + "message": "crwdns34438:0crwdne34438:0", + "description": "The text explain that the search is making by Algolia" + }, + "theme.SearchModal.noResultsScreen.noResultsText": { + "message": "crwdns34440:0crwdne34440:0", + "description": "The text explains that there are no results for the following search" + }, + "theme.SearchModal.noResultsScreen.suggestedQueryText": { + "message": "crwdns34442:0crwdne34442:0", + "description": "The text for the suggested query when no results are found for the following search" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsText": { + "message": "crwdns34444:0crwdne34444:0", + "description": "The text for the question where the user thinks there are missing results" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsLinkText": { + "message": "crwdns34446:0crwdne34446:0", + "description": "The text for the link to report missing results" + }, + "theme.SearchModal.placeholder": { + "message": "crwdns34448:0crwdne34448:0", + "description": "The placeholder of the input of the DocSearch pop-up modal" + }, + "theme.ErrorPageContent.tryAgain": { + "message": "crwdns34450:0crwdne34450:0", + "description": "The label of the button to try again rendering when the React error boundary captures an error" + }, + "theme.common.skipToMainContent": { + "message": "crwdns34452:0crwdne34452:0", + "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation" + }, + "theme.tags.tagsPageTitle": { + "message": "crwdns34454:0crwdne34454:0", + "description": "The title of the tag list page" + }, + "pages.download.description.hurricane": { + "message": "crwdns34456:0crwdne34456:0" + }, + "theme.blog.author.pageTitle": { + "message": "crwdns34458:0{authorName}crwdnd34458:0{nPosts}crwdne34458:0", + "description": "The title of the page for a blog author" + }, + "theme.blog.authorsList.pageTitle": { + "message": "crwdns34460:0crwdne34460:0", + "description": "The title of the authors page" + }, + "theme.blog.authorsList.viewAll": { + "message": "crwdns34462:0crwdne34462:0", + "description": "The label of the link targeting the blog authors page" + }, + "theme.blog.author.noPosts": { + "message": "crwdns34464:0crwdne34464:0", + "description": "The text for authors with 0 blog post" + }, + "theme.contentVisibility.unlistedBanner.title": { + "message": "crwdns34466:0crwdne34466:0", + "description": "The unlisted content banner title" + }, + "theme.contentVisibility.unlistedBanner.message": { + "message": "crwdns34468:0crwdne34468:0", + "description": "The unlisted content banner message" + }, + "theme.contentVisibility.draftBanner.title": { + "message": "crwdns34470:0crwdne34470:0", + "description": "The draft content banner title" + }, + "theme.contentVisibility.draftBanner.message": { + "message": "crwdns34472:0crwdne34472:0", + "description": "The draft content banner message" + }, + "mdx.setup.host_provider": { + "message": "crwdns34474:0crwdne34474:0" + }, + "mdx.setup.self_host": { + "message": "crwdns34476:0crwdne34476:0" + }, + "mdx.setup.paper_spigot": { + "message": "crwdns34478:0crwdne34478:0" + }, + "mdx.setup.modded_servers": { + "message": "crwdns34480:0crwdne34480:0" + }, + "mdx.setup.proxy_servers": { + "message": "crwdns34482:0crwdne34482:0" + }, + "mdx.setup.viaproxy": { + "message": "crwdns34484:0crwdne34484:0" + }, + "mdx.setup.standalone": { + "message": "crwdns34486:0crwdne34486:0" + }, + "pages.download.description.offhandextension": { + "message": "crwdns34488:0crwdne34488:0" + }, + "pages.download.description.rainbow": { + "message": "crwdns34490:0crwdne34490:0" + }, + "pages.download.description.hydraulic": { + "message": "crwdns34492:0crwdne34492:0" + }, + "pages.download.description.thunder": { + "message": "crwdns34494:0crwdne34494:0" + }, + "pages.dumpviewer.extensions": { + "message": "crwdns34496:0crwdne34496:0" + }, + "pages.dumpviewer.extensions.noextensions": { + "message": "crwdns34498:0crwdne34498:0" + }, + "pages.dumpviewer.extensions.helptext": { + "message": "crwdns34500:0crwdne34500:0" + }, + "mdx.setup.fabric": { + "message": "crwdns34502:0crwdne34502:0" + }, + "mdx.setup.neoforge": { + "message": "crwdns34504:0crwdne34504:0" + }, + "mdx.setup.installing_geyser": { + "message": "crwdns34506:0crwdne34506:0" + }, + "mdx.setup.download_jar": { + "message": "crwdns34508:0{jarName}crwdne34508:0" + }, + "mdx.setup.place_jar": { + "message": "crwdns34510:0{jarName}crwdnd34510:0{jarDirectory}crwdne34510:0" + }, + "mdx.setup.restart_server": { + "message": "crwdns34512:0crwdne34512:0" + }, + "mdx.setup.additional_steps": { + "message": "crwdns34514:0crwdne34514:0" + }, + "mdx.setup.connecting_on_bedrock": { + "message": "crwdns34516:0crwdne34516:0" + }, + "providers.config.templates.java_address": { + "message": "crwdns34520:0`address`crwdnd34520:0`bedrock`crwdne34520:0" + }, + "providers.config.templates.custom_port_dedicated_ip": { + "message": "crwdns34522:0crwdne34522:0" + }, + "providers.warnings.ovh_firewall_misconfig": { + "message": "crwdns34524:0`Unable to Connect`crwdnd34524:0[crwdnd34524:0](/wiki/geyser/port-forwarding/#ovh-and-soyoustart)crwdne34524:0" + }, + "providers.config.templates.install_location.plugin_list": { + "message": "crwdns34526:0crwdne34526:0" + }, + "providers.config.templates.install_location.enable_bedrock_crossplay": { + "message": "crwdns34528:0crwdne34528:0" + }, + "providers.config.templates.info.geyser_installed_by_default": { + "message": "crwdns34530:0crwdne34530:0" + }, + "mdx.setup.checking_server_version": { + "message": "crwdns34532:0crwdne34532:0" + }, + "mdx.setup.restart_geyser": { + "message": "crwdns34534:0crwdne34534:0" + }, + "mdx.setup.https_note": { + "message": "crwdns34536:0{https}crwdne34536:0" + }, + "mdx.setup.configuring_geyser": { + "message": "crwdns34538:0crwdne34538:0" + }, + "mdx.setup.open_config_simple": { + "message": "crwdns34540:0{configLocation}crwdnd34540:0{bedrock}crwdne34540:0" + }, + "mdx.setup.preconfigured": { + "message": "crwdns34542:0{name}crwdne34542:0" + }, + "mdx.setup.transport_nethernet_simple": { + "message": "crwdns34544:0crwdne34544:0" + }, + "mdx.setup.transport_both_compat": { + "message": "crwdns34546:0crwdne34546:0" + }, + "mdx.setup.placeholder_word": { + "message": "crwdns34548:0crwdne34548:0" + }, + "mdx.setup.replace_with_simple": { + "message": "crwdns34550:0crwdne34550:0" + }, + "mdx.setup.placeholder_java_port": { + "message": "crwdns34552:0crwdne34552:0" + }, + "mdx.setup.placeholder_java_port_udp": { + "message": "crwdns34554:0{port}crwdne34554:0" + }, + "mdx.setup.placeholder_second_available_port": { + "message": "crwdns34556:0{port}crwdne34556:0" + }, + "mdx.setup.raknet_on_port": { + "message": "crwdns34558:0{port}crwdne34558:0" + }, + "mdx.setup.summary.nethernet_reported_generic": { + "message": "crwdns34560:0crwdne34560:0" + }, + "mdx.setup.summary.supporter_configures": { + "message": "crwdns34562:0{name}crwdne34562:0" + }, + "mdx.setup.summary.updated": { + "message": "crwdns34564:0{date}crwdne34564:0" + }, + "mdx.setup.badge.gold": { + "message": "crwdns34566:0crwdne34566:0" + }, + "mdx.setup.badge.silver": { + "message": "crwdns34568:0crwdne34568:0" + }, + "mdx.setup.badge.bronze": { + "message": "crwdns34570:0crwdne34570:0" + }, + "mdx.setup.unconfirmed_title": { + "message": "crwdns34572:0crwdne34572:0" + }, + "mdx.setup.warning_title": { + "message": "crwdns34574:0crwdne34574:0" + }, + "mdx.setup.unconfirmed_reach_out_update": { + "message": "crwdns34576:0{name}crwdnd34576:0{discord}crwdne34576:0" + }, + "mdx.setup.try_not_listed": { + "message": "crwdns34578:0{notListed}crwdnd34578:0{warden}crwdne34578:0" + }, + "mdx.setup.try_not_listed.link": { + "message": "crwdns34580:0crwdne34580:0" + }, + "mdx.setup.no_signaling": { + "message": "crwdns34582:0{name}crwdne34582:0" + }, + "mdx.setup.hosting_provider_article_short": { + "message": "crwdns34584:0crwdne34584:0" + }, + "mdx.setup.hosting_provider_website_short": { + "message": "crwdns34586:0crwdne34586:0" + }, + "mdx.setup.hosting_provider_support_short": { + "message": "crwdns34588:0crwdne34588:0" + }, + "mdx.setup.hosting_provider_discord_short": { + "message": "crwdns34590:0crwdne34590:0" + }, + "mdx.setup.not_listed.tab_allocated": { + "message": "crwdns34592:0crwdne34592:0" + }, + "mdx.setup.not_listed.tab_java_only": { + "message": "crwdns34594:0crwdne34594:0" + }, + "components.provider.open_collaboration_group": { + "message": "crwdns34596:0crwdne34596:0" + }, + "components.provider.other_group": { + "message": "crwdns34598:0crwdne34598:0" + }, + "mdx.setup.connect.port_java": { + "message": "crwdns34600:0crwdne34600:0" + }, + "mdx.setup.connect.port_config_step": { + "message": "crwdns34602:0crwdne34602:0" + }, + "mdx.setup.connect.intro": { + "message": "crwdns34604:0crwdne34604:0" + }, + "mdx.setup.connect.add_server": { + "message": "crwdns34606:0crwdne34606:0" + }, + "mdx.setup.connect.server_name": { + "message": "crwdns34608:0crwdne34608:0" + }, + "mdx.setup.connect.server_name_value": { + "message": "crwdns34610:0crwdne34610:0" + }, + "mdx.setup.connect.server_address": { + "message": "crwdns34612:0crwdne34612:0" + }, + "mdx.setup.connect.server_address_value": { + "message": "crwdns34614:0crwdne34614:0" + }, + "mdx.setup.connect.port": { + "message": "crwdns34616:0crwdne34616:0" + }, + "mdx.setup.transport_nethernet_tab": { + "message": "crwdns34618:0crwdne34618:0" + }, + "mdx.setup.transport_both_tab": { + "message": "crwdns34620:0crwdne34620:0" + }, + "providers.ports.assign": { + "message": "crwdns34622:0crwdne34622:0" + }, + "providers.ports.allocated": { + "message": "crwdns34624:0crwdne34624:0" + }, + "providers.ports.ask_host": { + "message": "crwdns34626:0crwdne34626:0" + }, + "pages.hosting.tier.gold": { + "message": "crwdns34628:0crwdne34628:0" + }, + "pages.hosting.tier.silver": { + "message": "crwdns34630:0crwdne34630:0" + }, + "pages.hosting.tier.bronze": { + "message": "crwdns34632:0crwdne34632:0" + }, + "pages.hosting.card.website": { + "message": "crwdns34634:0crwdne34634:0" + }, + "pages.hosting.card.setup": { + "message": "crwdns34636:0crwdne34636:0" + }, + "pages.hosting.title": { + "message": "crwdns34638:0crwdne34638:0" + }, + "pages.hosting.subheading": { + "message": "crwdns34640:0crwdne34640:0" + }, + "pages.hosting.intro": { + "message": "crwdns34642:0{openCollaboration}crwdne34642:0" + }, + "pages.hosting.empty": { + "message": "crwdns34644:0crwdne34644:0" + }, + "pages.hosting.other.title": { + "message": "crwdns34646:0crwdne34646:0" + }, + "pages.hosting.other.text": { + "message": "crwdns34648:0{setupGuide}crwdne34648:0" + }, + "pages.hosting.other.setup_guide": { + "message": "crwdns34650:0crwdne34650:0" + }, + "pages.hosting.meta.title": { + "message": "crwdns34652:0crwdne34652:0" + }, + "pages.hosting.meta.description": { + "message": "crwdns34654:0crwdne34654:0" + }, + "pages.download.description.floodgatedatabases": { + "message": "crwdns34656:0crwdne34656:0" + }, + "providers.ports.from_host": { + "message": "crwdns34658:0crwdne34658:0" + }, + "providers.config.templates.info.only_serves_region": { + "message": "crwdns34660:0{region}crwdne34660:0" + }, + "mdx.setup.velocity": { + "message": "crwdns34662:0crwdne34662:0" + }, + "mdx.setup.bungeecord": { + "message": "crwdns34664:0crwdne34664:0" + }, + "providers.ports.new_port": { + "message": "crwdns34666:0crwdne34666:0" + }, + "mdx.setup.supported_versions": { + "message": "crwdns34668:0crwdne34668:0" + }, + "mdx.setup.restart_velocity": { + "message": "crwdns34670:0crwdne34670:0" + }, + "mdx.setup.restart_bungeecord": { + "message": "crwdns34672:0crwdne34672:0" + }, + "mdx.setup.restart_viaproxy": { + "message": "crwdns34674:0crwdne34674:0" + }, + "mdx.setup.fabric_dependency": { + "message": "crwdns34676:0{fabricApi}crwdne34676:0" + }, + "mdx.setup.version_step_viaversion": { + "message": "crwdns34678:0{version}crwdnd34678:0{viaVersion}crwdnd34678:0{supportedVersions}crwdne34678:0" + }, + "mdx.setup.version_step_proxy": { + "message": "crwdns34680:0{version}crwdne34680:0" + }, + "mdx.setup.proxy_install_only": { + "message": "crwdns34682:0{proxy}crwdne34682:0" + }, + "mdx.setup.modded_requirements": { + "message": "crwdns34684:0{jarName}crwdnd34684:0{version}crwdnd34684:0{supportedVersions}crwdne34684:0" + }, + "mdx.setup.self_port_choice": { + "message": "crwdns34686:0{platform}crwdne34686:0" + }, + "mdx.setup.self_port_choice_standalone": { + "message": "crwdns34688:0crwdne34688:0" + }, + "mdx.setup.self_port_sharing": { + "message": "crwdns34690:0{important}crwdne34690:0" + }, + "mdx.setup.self_port_sharing.important": { + "message": "crwdns34692:0crwdne34692:0" + }, + "mdx.setup.connect_local_title": { + "message": "crwdns34694:0crwdne34694:0" + }, + "mdx.setup.connect_local": { + "message": "crwdns34696:0{localhost}crwdnd34696:0{loopback}crwdnd34696:0{ten}crwdnd34696:0{oneNineTwo}crwdne34696:0" + }, + "mdx.setup.connect_lan": { + "message": "crwdns34698:0{friends}crwdne34698:0" + }, + "mdx.setup.connect_lan.friends": { + "message": "crwdns34700:0crwdne34700:0" + }, + "mdx.setup.connect_remote_title": { + "message": "crwdns34702:0crwdne34702:0" + }, + "mdx.setup.connect_remote": { + "message": "crwdns34704:0crwdne34704:0" + }, + "mdx.setup.connect_tcp_udp": { + "message": "crwdns34706:0{webrtcPort}crwdne34706:0" + }, + "mdx.setup.connect_options": { + "message": "crwdns34708:0crwdne34708:0" + }, + "mdx.setup.connect_port_forwarding": { + "message": "crwdns34710:0{portForwarding}crwdnd34710:0{guide}crwdne34710:0" + }, + "mdx.setup.connect_port_forwarding.title": { + "message": "crwdns34712:0crwdne34712:0" + }, + "mdx.setup.connect_port_forwarding.guide": { + "message": "crwdns34714:0crwdne34714:0" + }, + "mdx.setup.connect_playit": { + "message": "crwdns34716:0{playit}crwdnd34716:0{guide}crwdnd34716:0{status}crwdne34716:0" + }, + "mdx.setup.connect_playit.guide": { + "message": "crwdns34718:0crwdne34718:0" + }, + "mdx.setup.connect_playit.status": { + "message": "crwdns34720:0crwdne34720:0" + }, + "mdx.setup.https_step_title": { + "message": "crwdns34722:0crwdne34722:0" + }, + "mdx.setup.https_step": { + "message": "crwdns34724:0{httpsGuide}crwdnd34724:0{warden}crwdne34724:0" + }, + "mdx.setup.https_step.guide": { + "message": "crwdns34726:0crwdne34726:0" + }, + "mdx.setup.floodgate_info": { + "message": "crwdns34728:0{floodgate}crwdne34728:0" + }, + "mdx.setup.viaproxy_not_plugin.title": { + "message": "crwdns34730:0crwdne34730:0" + }, + "mdx.setup.viaproxy_not_plugin": { + "message": "crwdns34732:0{plugins}crwdnd34732:0{mods}crwdne34732:0" + }, + "mdx.setup.viaproxy_setup": { + "message": "crwdns34734:0{viaProxy}crwdne34734:0" + }, + "mdx.setup.viaproxy_accounts": { + "message": "crwdns34736:0{floodgate}crwdne34736:0" + }, + "mdx.setup.viaproxy_auth_type": { + "message": "crwdns34738:0{authType}crwdne34738:0" + }, + "mdx.setup.standalone_java": { + "message": "crwdns34740:0crwdne34740:0" + }, + "mdx.setup.standalone_not_plugin": { + "message": "crwdns34742:0crwdne34742:0" + }, + "mdx.setup.standalone_download": { + "message": "crwdns34744:0{standalone}crwdne34744:0" + }, + "mdx.setup.standalone_folder": { + "message": "crwdns34746:0crwdne34746:0" + }, + "mdx.setup.standalone_start": { + "message": "crwdns34748:0crwdne34748:0" + }, + "mdx.setup.standalone_gui": { + "message": "crwdns34750:0{gui}crwdne34750:0" + }, + "mdx.setup.standalone_console": { + "message": "crwdns34752:0{console}crwdnd34752:0{startupScript}crwdne34752:0" + }, + "mdx.setup.standalone_console.console": { + "message": "crwdns34754:0crwdne34754:0" + }, + "mdx.setup.standalone_console.startup_script": { + "message": "crwdns34756:0crwdne34756:0" + }, + "mdx.setup.standalone_remote_intro": { + "message": "crwdns34758:0{java}crwdne34758:0" + }, + "mdx.setup.standalone_remote": { + "message": "crwdns34760:0{address}crwdnd34760:0{port}crwdnd34760:0{authType}crwdnd34760:0{floodgate}crwdnd34760:0{online}crwdnd34760:0{offline}crwdnd34760:0{floodgateSetup}crwdne34760:0" + }, + "mdx.setup.standalone_remote.floodgate_setup": { + "message": "crwdns34762:0crwdne34762:0" + }, + "mdx.setup.standalone_android_title": { + "message": "crwdns34764:0crwdne34764:0" + }, + "mdx.setup.standalone_android_caution": { + "message": "crwdns34766:0crwdne34766:0" + }, + "mdx.setup.standalone_termux_install": { + "message": "crwdns34768:0{termux}crwdne34768:0" + }, + "mdx.setup.run_command": { + "message": "crwdns34770:0{command}crwdne34770:0" + }, + "mdx.setup.standalone_termux_script": { + "message": "crwdns34772:0crwdne34772:0" + } +} \ No newline at end of file diff --git a/i18n/crp/docusaurus-plugin-content-blog/options.json b/i18n/crp/docusaurus-plugin-content-blog/options.json new file mode 100644 index 0000000..aa538f1 --- /dev/null +++ b/i18n/crp/docusaurus-plugin-content-blog/options.json @@ -0,0 +1,10 @@ +{ + "description": { + "message": "crwdns34774:0crwdne34774:0", + "description": "The description for the blog used in SEO" + }, + "sidebar.title": { + "message": "crwdns34776:0crwdne34776:0", + "description": "The label for the left sidebar" + } +} \ No newline at end of file diff --git a/i18n/crp/docusaurus-plugin-content-docs/current.json b/i18n/crp/docusaurus-plugin-content-docs/current.json new file mode 100644 index 0000000..2f4c540 --- /dev/null +++ b/i18n/crp/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,34 @@ +{ + "version.label": { + "message": "crwdns34778:0crwdne34778:0", + "description": "The label for version current" + }, + "sidebar.geyserSidebar.category.Setup": { + "message": "crwdns34780:0crwdne34780:0", + "description": "The label for category Setup in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Common Issues": { + "message": "crwdns34782:0crwdne34782:0", + "description": "The label for category Common Issues in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Configuring Geyser": { + "message": "crwdns34784:0crwdne34784:0", + "description": "The label for category Configuring Geyser in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.FAQ": { + "message": "crwdns34786:0crwdne34786:0", + "description": "The label for category FAQ in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Geyser API": { + "message": "crwdns34788:0crwdne34788:0", + "description": "The label for category Geyser API in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.link.Hosting Providers": { + "message": "crwdns34790:0crwdne34790:0", + "description": "The label for link Hosting Providers in sidebar geyserSidebar, linking to /hosting" + }, + "sidebar.geyserSidebar.category.Custom Content": { + "message": "crwdns34792:0crwdne34792:0", + "description": "The label for category Custom Content in sidebar geyserSidebar" + } +} \ No newline at end of file diff --git a/i18n/crp/docusaurus-plugin-content-docs/current/geyser/commands.md b/i18n/crp/docusaurus-plugin-content-docs/current/geyser/commands.md new file mode 100644 index 0000000..9cc8694 --- /dev/null +++ b/i18n/crp/docusaurus-plugin-content-docs/current/geyser/commands.md @@ -0,0 +1,78 @@ +--- +title: crwdns33550:0crwdne33550:0 +description: crwdns33552:0crwdne33552:0 +crowdin_sync: true +crowdin_page_id: cd92ff4f-9105-46a2-8696-8b0e2f8b9d31 +--- + +# crwdns33554:0crwdne33554:0 + +crwdns33556:0crwdne33556:0 + +:::info + +crwdns33558:0[crwdnd33558:0](https://luckperms.net/)crwdne33558:0 crwdns33560:0crwdne33560:0 + +::: + +## crwdns33562:0{#geyser-commands--their-permissions}crwdne33562:0 + +| crwdns33564:0crwdne33564:0 | crwdns33566:0crwdne33566:0 | crwdns33568:0crwdne33568:0 | +| :-------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------: | +| crwdns33570:0`geyser`crwdne33570:0 | `geyser.command` | crwdns33574:0crwdne33574:0 | +| crwdns33576:0`geyser help`crwdnd33576:0`geyser ?`crwdne33576:0 | `geyser.command.help` | crwdns33580:0crwdne33580:0 | +| `geyser advancements` | `geyser.command.advancements` | crwdns33586:0crwdne33586:0 | +| `geyser dump` | `geyser.command.dump` | crwdns33592:0crwdne33592:0 | +| `geyser list` | `geyser.command.list` | crwdns33598:0crwdne33598:0 | +| `geyser nethernet` | `geyser.command.nethernet` | crwdns34840:0crwdne34840:0 | +| `geyser offhand` | `geyser.command.offhand` | crwdns33604:0crwdne33604:0 | +| `geyser reload` | `geyser.command.reload` | crwdns33610:0crwdne33610:0 crwdns33612:0crwdne33612:0 | +| `geyser settings` | `geyser.command.settings` | crwdns33618:0crwdne33618:0 | +| crwdns33620:0`geyser shutdown`crwdnd33620:0`geyser stop`crwdne33620:0 | `geyser.command.shutdown` | crwdns33624:0crwdne33624:0crwdns33626:0crwdne33626:0 | +| `geyser statistics` | `geyser.command.statistics` | crwdns33632:0crwdne33632:0 | +| `geyser version` | `geyser.command.version` | crwdns33638:0crwdne33638:0 | +| `geyser tooltips` | `geyser.command.tooltips` | crwdns33644:0crwdne33644:0 | +| `geyser extensions` | `geyser.command.extensions` | crwdns33650:0crwdne33650:0 crwdns33652:0crwdne33652:0 | +| `geyser ping` | `geyser.command.ping` | crwdns33658:0crwdne33658:0 | +| `geyser options` | `geyser.command.options` | crwdns33664:0crwdne33664:0 | +| `geyser quickactions` | `geyser.command.quickactions` | crwdns33670:0crwdne33670:0 | + +## crwdns33672:0{#extension-permissions}crwdne33672:0 + +crwdns33674:0``crwdne33674:0 + +| crwdns33676:0crwdne33676:0 | crwdns33678:0crwdne33678:0 | crwdns33680:0crwdne33680:0 | +| :--------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------- | +| crwdns33682:0` help`crwdnd33682:0` ?`crwdne33682:0 | crwdns33684:0crwdne33684:0crwdns33686:0crwdne33686:0 | crwdns33688:0crwdne33688:0 | + +## crwdns33690:0{#other-permissions}crwdne33690:0 + +crwdns33692:0crwdne33692:0 + +| crwdns33694:0crwdne33694:0 | crwdns33696:0crwdne33696:0 | +| ---------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `geyser.settings.server` | crwdns33700:0[crwdnd33700:0](/img/wiki/game_menu.png)crwdne33700:0 crwdns33702:0crwdne33702:0 | +| `geyser.settings.gamerules` | crwdns33706:0[crwdnd33706:0](/img/wiki/game_menu.png)crwdne33706:0 crwdns34842:0crwdne34842:0 | +| `geyser.update` | crwdns33712:0crwdne33712:0 | + +## crwdns33714:0{#standalone-viaproxy-permissions}crwdne33714:0 + +crwdns33716:0crwdne33716:0 crwdns33718:0`permissions.yml`crwdne33718:0 +crwdns33720:0crwdne33720:0 + +crwdns33722:0[crwdnd33722:0](/wiki/geyser/extensions/)crwdne33722:0 + +## crwdns33724:0{#permissions-platforms-no-permission-handlers}crwdne33724:0 + +crwdns33726:0crwdne33726:0 +crwdns33728:0crwdne33728:0 crwdns33730:0[crwdnd33730:0](https://luckperms.net/)crwdne33730:0 crwdns33732:0crwdne33732:0 crwdns33734:0crwdne33734:0 + +crwdns33736:0[crwdnd33736:0](https://github.com/onebeastchris/LuckLink)crwdnd33736:0[crwdnd33736:0](https://luckperms.net/)crwdne33736:0 + +- crwdns33738:0[crwdnd33738:0](https://luckperms.net/)crwdne33738:0 +- crwdns33740:0[crwdnd33740:0](https://github.com/onebeastchris/LuckLink)crwdnd33740:0`LuckLink.jar`crwdnd33740:0`extensions`crwdne33740:0 +- crwdns33742:0crwdne33742:0 + +## crwdns33744:0{#floodgate-commands-and-permissions}crwdne33744:0 + +crwdns33746:0[crwdnd33746:0](/wiki/floodgate/commands/)crwdne33746:0 diff --git a/i18n/crp/docusaurus-plugin-content-docs/current/geyser/playit-gg.md b/i18n/crp/docusaurus-plugin-content-docs/current/geyser/playit-gg.md new file mode 100644 index 0000000..c89a016 --- /dev/null +++ b/i18n/crp/docusaurus-plugin-content-docs/current/geyser/playit-gg.md @@ -0,0 +1,61 @@ +--- +title: crwdns33748:0crwdne33748:0 +description: crwdns33750:0crwdne33750:0 +crowdin_sync: true +crowdin_page_id: 3aee52d0-b943-4e37-8797-4a83ef55e42a +--- + +## crwdns33752:0{#prerequisites}crwdne33752:0 + +:::info +crwdns33754:0crwdne33754:0 +::: + +:::warning +crwdns33756:0crwdne33756:0 crwdns33758:0crwdne33758:0 +::: + +:::caution +crwdns33760:0crwdne33760:0 crwdns33762:0[crwdnd33762:0](https://status.playit.gg/3/adding-nethernet-support)crwdne33762:0 +::: + +## crwdns33764:0{#setup}crwdne33764:0 + +1. crwdns33766:0[crwdnd33766:0](https://playit.gg/)crwdne33766:0 +2. crwdns33768:0crwdne33768:0 crwdns33770:0crwdne33770:0 + crwdns33772:0![crwdnd33772:0](/img/wiki/playit-gg/playit_claim.png)crwdne33772:0 +3. crwdns33774:0crwdne33774:0 + crwdns33776:0![crwdnd33776:0](/img/wiki/playit-gg/playit_claim_confirm.png)crwdne33776:0 +4. crwdns33778:0crwdne33778:0 + crwdns33780:0![crwdnd33780:0](/img/wiki/playit-gg/playit_add_agent.png)crwdne33780:0 +5. crwdns33782:0crwdne33782:0 + crwdns33784:0![crwdnd33784:0](/img/wiki/playit-gg/playit_add_tunnel.png)crwdne33784:0 +6. crwdns33786:0crwdne33786:0 + crwdns33788:0![crwdnd33788:0](/img/wiki/playit-gg/playit_name_tunnel.png)crwdne33788:0 +7. crwdns33790:0crwdne33790:0 + crwdns33792:0![crwdnd33792:0](/img/wiki/playit-gg/playit_tunnel_type.png)crwdne33792:0 +8. crwdns33794:0crwdne33794:0 + crwdns33796:0![crwdnd33796:0](/img/wiki/playit-gg/playit_select_network.png)crwdnd33796:0`config.yml`crwdnd33796:0`config.yml`crwdne33796:0 crwdns33798:0crwdne33798:0 crwdns33800:0crwdne33800:0 crwdns33802:0`19132`crwdnd33802:0`clone-remote-port`crwdnd33802:0`false`crwdne33802:0 +9. crwdns33804:0`127.0.0.1`crwdne33804:0 + crwdns33806:0![crwdnd33806:0](/img/wiki/playit-gg/playit_set_ipandport.png)crwdne33806:0 +10. crwdns33808:0`proxy-protocol-v2`crwdne33808:0 +11. crwdns33810:0`advanced:`crwdnd33810:0`bedrock:`crwdnd33810:0`use-haproxy-protocol`crwdnd33810:0`true`crwdne33810:0 +12. crwdns33812:0crwdne33812:0 + crwdns33814:0![crwdnd33814:0](/img/wiki/playit-gg/playit_create_tunnel.png)crwdne33814:0 +13. crwdns33816:0crwdne33816:0 crwdns33818:0`visiting-phone.gl.at.ply.gg:6695`crwdnd33818:0`6695`crwdne33818:0 +14. crwdns33820:0`advanced:`crwdnd33820:0`bedrock:`crwdnd33820:0`broadcast-port`crwdnd33820:0`6695`crwdne33820:0 +15. crwdns33822:0crwdne33822:0 crwdns33824:0crwdne33824:0 +16. crwdns33826:0crwdne33826:0 crwdns33828:0crwdne33828:0 crwdns33830:0crwdne33830:0 + crwdns33832:0[crwdnd33832:0](#troubleshooting)crwdne33832:0 + +## crwdns33834:0{#troubleshooting}crwdne33834:0 + +### crwdns33836:0crwdne33836:0 crwdns33838:0{#i-cant-connect-to-my-server}crwdne33838:0 + +- crwdns33840:0crwdne33840:0 crwdns33842:0crwdne33842:0 +- crwdns33844:0crwdne33844:0 +- crwdns33846:0`19132`crwdnd33846:0`clone-remote-port`crwdnd33846:0`false`crwdne33846:0 +- crwdns33848:0`bedrock-port`crwdnd33848:0`clone-remote-port`crwdnd33848:0`true`crwdne33848:0 crwdns33850:0crwdne33850:0 +- crwdns33852:0crwdne33852:0 +- crwdns33854:0crwdne33854:0 +- crwdns33856:0[crwdnd33856:0](/wiki/geyser/fixing-unable-to-connect-to-world/)crwdne33856:0 diff --git a/i18n/crp/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md b/i18n/crp/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md new file mode 100644 index 0000000..da850e9 --- /dev/null +++ b/i18n/crp/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md @@ -0,0 +1,208 @@ +--- +title: crwdns33858:0crwdne33858:0 +description: crwdns33860:0crwdne33860:0 +crowdin_sync: true +crowdin_page_id: be7c5a22-1e8e-4ffe-8d13-7d763dd75886 +--- + +# crwdns33862:0{#port-forwarding}crwdne33862:0 + +crwdns33864:0crwdne33864:0 +crwdns33866:0crwdne33866:0 + +:::caution + +crwdns33868:0[crwdnd33868:0](/wiki/geyser/setup)crwdne33868:0 + +::: + +:::info crwdns33870:0crwdne33870:0 +crwdns33872:0crwdne33872:0 +crwdns33874:0`webrtc-port`crwdne33874:0 +crwdns33876:0[crwdnd33876:0](https://warden.cloud)crwdne33876:0 +::: + +## crwdns33878:0{#port-forwarding-on-linuxwindowsmacos}crwdne33878:0 + +crwdns33880:0crwdne33880:0 +crwdns33882:0crwdne33882:0 +crwdns33884:0crwdne33884:0 +crwdns33886:0[crwdnd33886:0](https://www.howtogeek.com/66214/how-to-forward-ports-on-your-router/)crwdnd33886:0[crwdnd33886:0](https://www.lifewire.com/how-to-port-forward-4163829)crwdne33886:0 +crwdns33888:0crwdne33888:0 + +:::info + +crwdns33890:0crwdne33890:0 +crwdns33892:0crwdne33892:0 +crwdns33894:0[crwdnd33894:0](/wiki/geyser/playit-gg/)crwdne33894:0 + +::: + +### crwdns33896:0{#windows}crwdne33896:0 + +crwdns33898:0crwdne33898:0 crwdns33900:0crwdne33900:0 + +- crwdns33902:0`Powershell`crwdne33902:0 + + crwdns33904:0crwdne33904:0 + + ```powershell + New-NetFirewallRule -DisplayName "Geyser (TCP)" -Direction Inbound -Protocol TCP -LocalPort 19132 -Action Allow + New-NetFirewallRule -DisplayName "Geyser (UDP)" -Direction Inbound -Protocol UDP -LocalPort 19132 -Action Allow + ``` + + crwdns33906:0crwdne33906:0 + +- crwdns33908:0crwdne33908:0 + 1. crwdns33910:0crwdne33910:0 crwdns33912:0[crwdnd33912:0](/img/wiki/port-forwarding/windows-1.png)crwdne33912:0 + 2. crwdns33914:0crwdne33914:0 crwdns33916:0[crwdnd33916:0](/img/wiki/port-forwarding/windows-2.png)crwdne33916:0 + 3. crwdns33918:0crwdne33918:0 crwdns33920:0[crwdnd33920:0](/img/wiki/port-forwarding/windows-2.png)crwdne33920:0 + 4. crwdns33922:0crwdne33922:0 crwdns33924:0[crwdnd33924:0](/img/wiki/port-forwarding/windows-3.png)crwdne33924:0 + 5. crwdns33926:0crwdne33926:0 crwdns33928:0crwdne33928:0 crwdns33930:0[crwdnd33930:0](/img/wiki/port-forwarding/windows-4.png)crwdne33930:0 + 6. crwdns33932:0crwdne33932:0 crwdns33934:0[crwdnd33934:0](/img/wiki/port-forwarding/windows-5.png)crwdne33934:0 + 7. crwdns33936:0crwdne33936:0 crwdns33938:0[crwdnd33938:0](/img/wiki/port-forwarding/windows-6.png)crwdne33938:0 + 8. crwdns33940:0crwdne33940:0 crwdns33942:0[crwdnd33942:0](/img/wiki/port-forwarding/windows-7.png)crwdne33942:0 + 9. crwdns33944:0crwdne33944:0 + +### crwdns33946:0{#linux}crwdne33946:0 + +crwdns33948:0crwdne33948:0 crwdns33950:0`19132`crwdne33950:0 + +- crwdns33952:0`ufw`crwdne33952:0 crwdns33954:0crwdne33954:0 + ```bash + sudo ufw allow 19132/tcp + sudo ufw allow 19132/udp + ``` + crwdns33956:0`sudo ufw reload`crwdnd33956:0`sudo ufw status`crwdne33956:0 + crwdns33958:0[crwdnd33958:0](https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server)crwdnd33958:0[crwdnd33958:0](https://www.baeldung.com/linux/uncomplicated-firewall)crwdne33958:0 + +- crwdns33960:0`firewalld`crwdne33960:0 + ```bash + sudo firewall-cmd --zone=public --permanent --add-port=19132/tcp + sudo firewall-cmd --zone=public --permanent --add-port=19132/udp + ``` + crwdns33962:0`sudo firewall-cmd --reload`crwdnd33962:0`sudo firewall-cmd --list-all`crwdne33962:0 + crwdns33964:0[crwdnd33964:0](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7)crwdne33964:0 + +- crwdns33966:0`iptables`crwdne33966:0 crwdns33968:0crwdne33968:0 + ```bash + sudo iptables -A INPUT -p tcp --dport 19132 -j ACCEPT + sudo iptables -A INPUT -p udp --dport 19132 -j ACCEPT + ``` + crwdns33970:0`sudo iptables-save`crwdnd33970:0`sudo iptables -L`crwdne33970:0 + crwdns33972:0[crwdnd33972:0](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-iptables-on-ubuntu-14-04)crwdnd33972:0[crwdnd33972:0](https://help.ubuntu.com/community/IptablesHowTo)crwdne33972:0 + +### crwdns33974:0{#macos}crwdne33974:0 + +crwdns33976:0`Block all incoming connections`crwdne33976:0 +crwdns33978:0`Allow`crwdnd33978:0[crwdnd33978:0](/img/wiki/port-forwarding/macos_warning.png)crwdne33978:0 +crwdns33980:0[crwdnd33980:0](https://support.apple.com/guide/mac-help/MH11783)crwdne33980:0 + +## crwdns33982:0{#using-docker-or-pterodactyl}crwdne33982:0 + +crwdns33984:0crwdne33984:0 + +### crwdns33986:0{#pterodactyl}crwdne33986:0 + +crwdns33988:0`Network`crwdne33988:0 +crwdns33990:0[crwdnd33990:0](https://pterodactyl.io/community/games/minecraft.html#allocations-in-the-panel)crwdne33990:0 + +crwdns33992:0![crwdnd33992:0](/img/wiki/port-forwarding/pterodactyl-1.png)crwdne33992:0 + +crwdns33994:0[crwdnd33994:0](https://github.com/GeyserMC/pterodactyl-stuff)crwdne33994:0 + +:::caution + +crwdns33996:0crwdne33996:0 + +::: + +### crwdns33998:0{#docker}crwdne33998:0 + +crwdns34000:0[crwdnd34000:0](https://github.com/itzg/docker-minecraft-server)crwdne34000:0 crwdns34002:0`ports`crwdne34002:0 + +```yaml +ports: + - "25565:25565" + - "19132:19132" + - "19132:19132/udp" +``` + +crwdns34004:0crwdne34004:0 crwdns34006:0`/udp`crwdne34006:0 +crwdns34008:0`-p 19132:19132 -p 19132:19132/udp`crwdne34008:0 + +## crwdns34010:0{#issues-with-specific-vpskvm-providers}crwdne34010:0 + +crwdns34012:0crwdne34012:0 + +### crwdns34014:0{#ovh-and-soyoustart}crwdne34014:0 + +crwdns34016:0crwdne34016:0 crwdns34018:0crwdne34018:0 +crwdns34020:0crwdne34020:0 +crwdns34022:0`Other`crwdne34022:0 + +:::caution + +crwdns34024:0crwdne34024:0 + +::: + +crwdns34026:0crwdne34026:0 + +crwdns34028:0crwdne34028:0 + +1. crwdns34030:0`Network interfaces`crwdne34030:0 +2. crwdns34032:0`...`crwdnd34032:0`...`crwdnd34032:0`Configure the GAME firewall`crwdnd34032:0`Add rule`crwdnd34032:0`Other protocol`crwdne34032:0 +3. crwdns34034:0`outgoing port`crwdne34034:0 crwdns34036:0`webrtc-port`crwdne34036:0 +4. crwdns34038:0crwdne34038:0 + +crwdns34040:0crwdne34040:0 + +1. crwdns34042:0crwdne34042:0 +2. crwdns34044:0crwdne34044:0 +3. crwdns34046:0crwdne34046:0 +4. crwdns34048:0crwdne34048:0 crwdns34050:0`webrtc-port`crwdne34050:0 +5. crwdns34052:0crwdne34052:0 + +### crwdns34054:0{#oracle-cloudoci}crwdne34054:0 + +crwdns34056:0crwdne34056:0 crwdns34058:0crwdne34058:0 + +crwdns34060:0crwdne34060:0 + +1. crwdns34062:0crwdne34062:0 +2. crwdns34064:0crwdne34064:0 +3. crwdns34066:0crwdne34066:0 +4. crwdns34068:0crwdne34068:0 crwdns34070:0crwdne34070:0 crwdns34072:0crwdne34072:0 +5. crwdns34074:0crwdne34074:0 +6. crwdns34076:0crwdne34076:0 + - crwdns34078:0`0.0.0.0/0`crwdne34078:0 + - crwdns34080:0`25565-25565`crwdne34080:0 + - crwdns34082:0crwdne34082:0 +7. crwdns34084:0crwdne34084:0 + - crwdns34086:0`0.0.0.0/0`crwdne34086:0 + - crwdns34088:0`19132-19132`crwdne34088:0 + - crwdns34090:0crwdne34090:0 + - crwdns34092:0crwdne34092:0 +8. crwdns34094:0crwdne34094:0 + +#### crwdns34096:0{#oracle-linux}crwdne34096:0 + +crwdns34098:0crwdne34098:0 + +```bash +sudo firewall-cmd --add-port=25565/tcp --permanent +sudo firewall-cmd --add-port=19132/tcp --permanent +sudo firewall-cmd --add-port=19132/udp --permanent +sudo firewall-cmd --reload +``` + +#### crwdns34100:0{#ubuntu}crwdne34100:0 + +crwdns34102:0crwdne34102:0 + +```bash +sudo ufw allow 25565/tcp +sudo ufw allow 19132/tcp +sudo ufw allow 19132/udp +``` diff --git a/i18n/crp/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx b/i18n/crp/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx new file mode 100644 index 0000000..76370df --- /dev/null +++ b/i18n/crp/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx @@ -0,0 +1,42 @@ +--- +title: crwdns34104:0crwdne34104:0 +description: crwdns34106:0crwdne34106:0 +crowdin_sync: true +crowdin_page_id: f199ae24-f711-486d-8e42-3079be87e8cd +--- + +import { Versions } from '@site/src/components/Versions' +import DocCardList from '@theme/DocCardList'; + +# crwdns34110:0crwdne34110:0 {#currently-supported-versions} + +:::info +crwdns34112:0crwdne34112:0 +::: + +## crwdns34114:0crwdne34114:0 {#using-geyser-with-older-minecraft-bedrock-edition-versions} + +crwdns34116:0crwdne34116:0 crwdns34118:0crwdne34118:0 crwdns34120:0crwdne34120:0 + +## crwdns34122:0crwdne34122:0 {#using-geyser-on-older-minecraft-java-edition-servers} + +crwdns34124:0crwdne34124:0 +crwdns34126:0[crwdnd34126:0](https://viaversion.com/viaversion)crwdne34126:0 + +### crwdns34128:0crwdne34128:0 + +crwdns34130:0crwdne34130:0 crwdns34132:0crwdne34132:0 crwdns34134:0[crwdnd34134:0](https://docs.papermc.io/misc/java-install)crwdne34134:0 crwdns34136:0`-DPaper.IgnoreJavaVersion=true`crwdne34136:0 + +crwdns34138:0crwdne34138:0 crwdns34140:0[crwdnd34140:0](/wiki/geyser/secure-chat)crwdne34140:0 + +### crwdns34142:0crwdne34142:0 + +crwdns34144:0crwdne34144:0 crwdns34146:0[crwdnd34146:0](https://viaversion.com/viaversion)crwdne34146:0 crwdns34148:0[crwdnd34148:0](https://viaversion.com/viaproxy)crwdne34148:0 + +### crwdns34150:0crwdne34150:0 {#using-geyser-on-fabric-neoforge-servers-not-on-the-latest-minecraft-version} + +crwdns34152:0crwdne34152:0 crwdns34154:0[crwdnd34154:0](https://viaversion.com/viaproxy)crwdne34154:0 crwdns34156:0crwdne34156:0 + +### crwdns34158:0crwdne34158:0 + +crwdns34160:0[crwdnd34160:0](https://viaversion.com/viaversion)crwdne34160:0 crwdns34162:0crwdne34162:0 diff --git a/i18n/crp/docusaurus-theme-classic/footer.json b/i18n/crp/docusaurus-theme-classic/footer.json new file mode 100644 index 0000000..c9e16ec --- /dev/null +++ b/i18n/crp/docusaurus-theme-classic/footer.json @@ -0,0 +1,50 @@ +{ + "link.title.Wiki": { + "message": "crwdns34794:0crwdne34794:0", + "description": "The title of the footer links column with title=Wiki in the footer" + }, + "link.title.Downloads": { + "message": "crwdns34796:0crwdne34796:0", + "description": "The title of the footer links column with title=Downloads in the footer" + }, + "link.title.Community": { + "message": "crwdns34798:0crwdne34798:0", + "description": "The title of the footer links column with title=Community in the footer" + }, + "link.title.More": { + "message": "crwdns34800:0crwdne34800:0", + "description": "The title of the footer links column with title=More in the footer" + }, + "link.item.label.REST APIs": { + "message": "crwdns34802:0crwdne34802:0", + "description": "The label of footer link with label=REST APIs linking to wiki/api/api.geysermc.org/global-api" + }, + "link.item.label.Other": { + "message": "crwdns34804:0crwdne34804:0", + "description": "The label of footer link with label=Other linking to download?project=other-projects" + }, + "link.item.label.Blog": { + "message": "crwdns34806:0crwdne34806:0", + "description": "The label of footer link with label=Blog linking to blog" + }, + "link.item.label.Donate": { + "message": "crwdns34808:0crwdne34808:0", + "description": "The label of footer link with label=Donate linking to https://opencollective.com/geysermc" + }, + "link.item.label.Global Linking": { + "message": "crwdns34810:0crwdne34810:0", + "description": "The label of footer link with label=Global Linking linking to https://link.geysermc.org/" + }, + "link.item.label.Privacy Policy": { + "message": "crwdns34812:0crwdne34812:0", + "description": "The label of footer link with label=Privacy Policy linking to https://ziax.com/terms/privacy-policy/" + }, + "logo.alt": { + "message": "crwdns34814:0crwdne34814:0", + "description": "The alt text of footer logo" + }, + "copyright": { + "message": "crwdns34816:0crwdne34816:0", + "description": "The footer copyright" + } +} \ No newline at end of file diff --git a/i18n/crp/docusaurus-theme-classic/navbar.json b/i18n/crp/docusaurus-theme-classic/navbar.json new file mode 100644 index 0000000..fd89e21 --- /dev/null +++ b/i18n/crp/docusaurus-theme-classic/navbar.json @@ -0,0 +1,38 @@ +{ + "logo.alt": { + "message": "crwdns34818:0crwdne34818:0", + "description": "The alt text of navbar logo" + }, + "item.label.Wiki": { + "message": "crwdns34820:0crwdne34820:0", + "description": "Navbar item with label Wiki" + }, + "item.label.Blog": { + "message": "crwdns34822:0crwdne34822:0", + "description": "Navbar item with label Blog" + }, + "item.label.Utilities": { + "message": "crwdns34824:0crwdne34824:0", + "description": "Navbar item with label Utilities" + }, + "item.label.Download": { + "message": "crwdns34826:0crwdne34826:0", + "description": "Navbar item with label Download" + }, + "item.label.REST APIs": { + "message": "crwdns34828:0crwdne34828:0", + "description": "Navbar item with label REST APIs" + }, + "item.label.Other": { + "message": "crwdns34830:0crwdne34830:0", + "description": "Navbar item with label Other" + }, + "item.label.Dump Viewer": { + "message": "crwdns34832:0crwdne34832:0", + "description": "Navbar item with label Dump Viewer" + }, + "item.label.Hosting": { + "message": "crwdns34834:0crwdne34834:0", + "description": "Navbar item with label Hosting" + } +} \ No newline at end of file diff --git a/i18n/cs/code.json b/i18n/cs/code.json new file mode 100644 index 0000000..7251b24 --- /dev/null +++ b/i18n/cs/code.json @@ -0,0 +1,1023 @@ +{ + "pages.main.title": { + "message": "Revolutionize Your Minecraft Server" + }, + "pages.main.subtitle": { + "message": "Enable clients from Minecraft Bedrock Edition to join your Minecraft Java server" + }, + "components.homepage_features.1.line1": { + "message": "Geyser is a program that allows Minecraft: Bedrock Edition clients to join Minecraft: Java Edition servers, allowing for true crossplay between both editions of the game." + }, + "components.homepage_features.1.line2": { + "message": "The ultimate goal of this project is to allow Minecraft: Bedrock Edition users to join Minecraft: Java Edition servers as seamlessly as possible." + }, + "components.homepage_features.2": { + "message": "Geyser acts as a translator which sits between the Bedrock client and the Java server. It takes data from the Bedrock client and translates it into a format the Java server understands and vice versa. Geyser works with any modern Minecraft version and can be installed either as a plugin or ran as a standalone program." + }, + "components.homepage_features.3.line1": { + "message": "Geyser can be joined from Bedrock clients on Windows 10/11, iOS, Android, and even consoles. Geyser works with a wide array of hosting providers, but can also be used as its own standalone proxy to join any Minecraft server!" + }, + "components.homepage_features.3.line2": { + "message": "If you are a server owner, you can install our Floodgate plugin which allows Xbox Live authenticated Bedrock users to join without a Java Edition account!" + }, + "pages.download.title": { + "message": "Download" + }, + "pages.download.subheading": { + "message": "Download the latest versions of our various projects." + }, + "pages.download.description.geyser": { + "message": "A bridge/proxy allowing you to connect to Minecraft: Java Edition servers with Minecraft: Bedrock Edition." + }, + "pages.download.description.floodgate": { + "message": "Hybrid mode plugin to allow for connections from Geyser to join online mode servers." + }, + "pages.download.description.geyserconnect": { + "message": "A Geyser extension allowing players to connect to different Java or Geyser servers." + }, + "pages.download.description.thirdpartycosmetics": { + "message": "An extension that adds support for loading ears and other third party cosmetics on java players" + }, + "pages.dumpviewer.title": { + "message": "Dump Viewer" + }, + "pages.dumpviewer.subheading": { + "message": "View the breakdown of your Geyser dump." + }, + "pages.dumpviewer.enterdumpid": { + "message": "Enter Dump ID or URL below and click load." + }, + "pages.dumpviewer.button.load": { + "message": "Load" + }, + "pages.dumpviewer.versions": { + "message": "Versions" + }, + "pages.dumpviewer.versions.geyserver": { + "message": "Geyser Version" + }, + "pages.dumpviewer.versions.javaver": { + "message": "Java Version" + }, + "pages.dumpviewer.versions.os": { + "message": "Operating System" + }, + "pages.dumpviewer.geyserver": { + "message": "Geyser Version" + }, + "pages.dumpviewer.geyserver.build": { + "message": "Build" + }, + "pages.dumpviewer.geyserver.commit": { + "message": "Commit Hash" + }, + "pages.dumpviewer.geyserver.branch": { + "message": "Branch" + }, + "pages.dumpviewer.platform": { + "message": "Platform Info" + }, + "pages.dumpviewer.platform.id": { + "message": "Platform Identifier" + }, + "pages.dumpviewer.platform.name": { + "message": "Platform Name" + }, + "pages.dumpviewer.platform.version": { + "message": "Platform Version" + }, + "pages.dumpviewer.platform.apiver": { + "message": "Platform API Version" + }, + "pages.dumpviewer.platform.onlinemode": { + "message": "Online Mode" + }, + "pages.dumpviewer.sysinfo": { + "message": "System Info" + }, + "pages.dumpviewer.cpucount": { + "message": "CPU Count" + }, + "pages.dumpviewer.cpuname": { + "message": "CPU Name" + }, + "pages.dumpviewer.ram": { + "message": "RAM" + }, + "pages.dumpviewer.javaname": { + "message": "Java Name" + }, + "pages.dumpviewer.javavendor": { + "message": "Java Vendor" + }, + "pages.dumpviewer.dockercheck": { + "message": "Uses Docker?" + }, + "pages.dumpviewer.plugins": { + "message": "Plugins" + }, + "pages.dumpviewer.plugins.noplugins": { + "message": "No plugins to show." + }, + "pages.dumpviewer.plugins.helptext": { + "message": "Click on a plugin to view more information." + }, + "pages.dumpviewer.config": { + "message": "Config" + }, + "pages.dumpviewer.viewsource": { + "message": "View dump source" + }, + "theme.ErrorPageContent.title": { + "message": "This page crashed.", + "description": "The title of the fallback page when the page crashed" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "Scroll back to top", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.archive.title": { + "message": "Archive", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "Archive", + "description": "The page & hero description of the blog archive page" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "Blog list page navigation", + "description": "The ARIA label for the blog pagination" + }, + "theme.blog.paginator.newerEntries": { + "message": "Newer Entries", + "description": "The label used to navigate to the newer blog posts page (previous page)" + }, + "theme.blog.paginator.olderEntries": { + "message": "Older Entries", + "description": "The label used to navigate to the older blog posts page (next page)" + }, + "theme.blog.post.paginator.navAriaLabel": { + "message": "Blog post page navigation", + "description": "The ARIA label for the blog posts pagination" + }, + "theme.blog.post.paginator.newerPost": { + "message": "Newer Post", + "description": "The blog post button label to navigate to the newer/previous post" + }, + "theme.blog.post.paginator.olderPost": { + "message": "Older Post", + "description": "The blog post button label to navigate to the older/next post" + }, + "theme.blog.post.plurals": { + "message": "One post|{count} posts", + "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.blog.tagTitle": { + "message": "{nPosts} tagged with \"{tagName}\"", + "description": "The title of the page for a blog tag" + }, + "theme.tags.tagsPageLink": { + "message": "View All Tags", + "description": "The label of the link targeting the tag list page" + }, + "theme.colorToggle.ariaLabel": { + "message": "Switch between dark and light mode (currently {mode})", + "description": "The ARIA label for the navbar color mode toggle" + }, + "theme.colorToggle.ariaLabel.mode.dark": { + "message": "dark mode", + "description": "The name for the dark color mode" + }, + "theme.colorToggle.ariaLabel.mode.light": { + "message": "light mode", + "description": "The name for the light color mode" + }, + "theme.docs.DocCard.categoryDescription.plurals": { + "message": "1 item|{count} items", + "description": "The default description for a category card in the generated index about how many items this category includes" + }, + "theme.docs.breadcrumbs.navAriaLabel": { + "message": "Breadcrumbs", + "description": "The ARIA label for the breadcrumbs" + }, + "theme.docs.paginator.navAriaLabel": { + "message": "Docs pages", + "description": "The ARIA label for the docs pagination" + }, + "theme.docs.paginator.previous": { + "message": "Previous", + "description": "The label used to navigate to the previous doc" + }, + "theme.docs.paginator.next": { + "message": "Next", + "description": "The label used to navigate to the next doc" + }, + "theme.docs.tagDocListPageTitle.nDocsTagged": { + "message": "One doc tagged|{count} docs tagged", + "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.tagDocListPageTitle": { + "message": "{nDocsTagged} with \"{tagName}\"", + "description": "The title of the page for a docs tag" + }, + "theme.docs.versionBadge.label": { + "message": "Version: {versionLabel}" + }, + "theme.docs.versions.unreleasedVersionLabel": { + "message": "This is unreleased documentation for {siteTitle} {versionLabel} version.", + "description": "The label used to tell the user that he's browsing an unreleased doc version" + }, + "theme.docs.versions.unmaintainedVersionLabel": { + "message": "This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.", + "description": "The label used to tell the user that he's browsing an unmaintained doc version" + }, + "theme.docs.versions.latestVersionSuggestionLabel": { + "message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).", + "description": "The label used to tell the user to check the latest version" + }, + "theme.docs.versions.latestVersionLinkLabel": { + "message": "latest version", + "description": "The label used for the latest version suggestion link label" + }, + "theme.common.editThisPage": { + "message": "Edit this page", + "description": "The link label to edit the current page" + }, + "theme.common.headingLinkTitle": { + "message": "Direct link to {heading}", + "description": "Title for link to heading" + }, + "theme.lastUpdated.atDate": { + "message": " on {date}", + "description": "The words used to describe on which date a page has been last updated" + }, + "theme.lastUpdated.byUser": { + "message": " by {user}", + "description": "The words used to describe by who the page has been last updated" + }, + "theme.lastUpdated.lastUpdatedAtBy": { + "message": "Last updated{atDate}{byUser}", + "description": "The sentence used to display when a page has been last updated, and by who" + }, + "theme.NotFound.title": { + "message": "Page Not Found", + "description": "The title of the 404 page" + }, + "theme.navbar.mobileVersionsDropdown.label": { + "message": "Versions", + "description": "The label for the navbar versions dropdown on mobile view" + }, + "theme.tags.tagsListLabel": { + "message": "Tags:", + "description": "The label alongside a tag list" + }, + "theme.AnnouncementBar.closeButtonAriaLabel": { + "message": "Close", + "description": "The ARIA label for close button of announcement bar" + }, + "theme.admonition.caution": { + "message": "caution", + "description": "The default label used for the Caution admonition (:::caution)" + }, + "theme.admonition.danger": { + "message": "danger", + "description": "The default label used for the Danger admonition (:::danger)" + }, + "theme.admonition.info": { + "message": "info", + "description": "The default label used for the Info admonition (:::info)" + }, + "theme.admonition.note": { + "message": "note", + "description": "The default label used for the Note admonition (:::note)" + }, + "theme.admonition.tip": { + "message": "tip", + "description": "The default label used for the Tip admonition (:::tip)" + }, + "theme.admonition.warning": { + "message": "warning", + "description": "The default label used for the Warning admonition (:::warning)" + }, + "theme.blog.sidebar.navAriaLabel": { + "message": "Blog recent posts navigation", + "description": "The ARIA label for recent posts in the blog sidebar" + }, + "theme.CodeBlock.copied": { + "message": "Copied", + "description": "The copied button label on code blocks" + }, + "theme.CodeBlock.copyButtonAriaLabel": { + "message": "Copy code to clipboard", + "description": "The ARIA label for copy code blocks button" + }, + "theme.CodeBlock.copy": { + "message": "Copy", + "description": "The copy button label on code blocks" + }, + "theme.CodeBlock.wordWrapToggle": { + "message": "Toggle word wrap", + "description": "The title attribute for toggle word wrapping button of code block lines" + }, + "theme.DocSidebarItem.expandCategoryAriaLabel": { + "message": "Expand sidebar category '{label}'", + "description": "The ARIA label to expand the sidebar category" + }, + "theme.DocSidebarItem.collapseCategoryAriaLabel": { + "message": "Collapse sidebar category '{label}'", + "description": "The ARIA label to collapse the sidebar category" + }, + "theme.NavBar.navAriaLabel": { + "message": "Main", + "description": "The ARIA label for the main navigation" + }, + "theme.NotFound.p1": { + "message": "We could not find what you were looking for.", + "description": "The first paragraph of the 404 page" + }, + "theme.NotFound.p2": { + "message": "Please contact the owner of the site that linked you to the original URL and let them know their link is broken.", + "description": "The 2nd paragraph of the 404 page" + }, + "theme.navbar.mobileLanguageDropdown.label": { + "message": "Languages", + "description": "The label for the mobile language switcher dropdown" + }, + "theme.TOCCollapsible.toggleButtonLabel": { + "message": "On this page", + "description": "The label used by the button on the collapsible TOC component" + }, + "theme.blog.post.readMore": { + "message": "Read More", + "description": "The label used in blog post item excerpts to link to full blog posts" + }, + "theme.blog.post.readMoreLabel": { + "message": "Read more about {title}", + "description": "The ARIA label for the link to full blog posts from excerpts" + }, + "theme.blog.post.readingTime.plurals": { + "message": "One min read|{readingTime} min read", + "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.breadcrumbs.home": { + "message": "Home page", + "description": "The ARIA label for the home page in the breadcrumbs" + }, + "theme.docs.sidebar.collapseButtonTitle": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.collapseButtonAriaLabel": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.navAriaLabel": { + "message": "Docs sidebar", + "description": "The ARIA label for the sidebar navigation" + }, + "theme.docs.sidebar.closeSidebarButtonAriaLabel": { + "message": "Close navigation bar", + "description": "The ARIA label for close button of mobile sidebar" + }, + "theme.docs.sidebar.expandButtonTitle": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.docs.sidebar.expandButtonAriaLabel": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": { + "message": "← Back to main menu", + "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)" + }, + "theme.docs.sidebar.toggleSidebarButtonAriaLabel": { + "message": "Toggle navigation bar", + "description": "The ARIA label for hamburger menu button of mobile navigation" + }, + "theme.SearchBar.seeAll": { + "message": "See all {count} results" + }, + "theme.SearchPage.documentsFound.plurals": { + "message": "One document found|{count} documents found", + "description": "Pluralized label for \"{count} documents found\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.SearchPage.existingResultsTitle": { + "message": "Search results for \"{query}\"", + "description": "The search page title for non-empty query" + }, + "theme.SearchPage.emptyResultsTitle": { + "message": "Search the documentation", + "description": "The search page title for empty query" + }, + "theme.SearchPage.inputPlaceholder": { + "message": "Type your search here", + "description": "The placeholder for search page input" + }, + "theme.SearchPage.inputLabel": { + "message": "Search", + "description": "The ARIA label for search page input" + }, + "theme.SearchPage.algoliaLabel": { + "message": "Search by Algolia", + "description": "The ARIA label for Algolia mention" + }, + "theme.SearchPage.noResultsText": { + "message": "No results were found", + "description": "The paragraph for empty search result" + }, + "theme.SearchPage.fetchingNewResults": { + "message": "Fetching new results...", + "description": "The paragraph for fetching new search results" + }, + "theme.SearchBar.label": { + "message": "Search", + "description": "The ARIA label and placeholder for search button" + }, + "theme.SearchModal.searchBox.resetButtonTitle": { + "message": "Clear the query", + "description": "The label and ARIA label for search box reset button" + }, + "theme.SearchModal.searchBox.cancelButtonText": { + "message": "Cancel", + "description": "The label and ARIA label for search box cancel button" + }, + "theme.SearchModal.startScreen.recentSearchesTitle": { + "message": "Recent", + "description": "The title for recent searches" + }, + "theme.SearchModal.startScreen.noRecentSearchesText": { + "message": "No recent searches", + "description": "The text when no recent searches" + }, + "theme.SearchModal.startScreen.saveRecentSearchButtonTitle": { + "message": "Save this search", + "description": "The label for save recent search button" + }, + "theme.SearchModal.startScreen.removeRecentSearchButtonTitle": { + "message": "Remove this search from history", + "description": "The label for remove recent search button" + }, + "theme.SearchModal.startScreen.favoriteSearchesTitle": { + "message": "Favorite", + "description": "The title for favorite searches" + }, + "theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle": { + "message": "Remove this search from favorites", + "description": "The label for remove favorite search button" + }, + "theme.SearchModal.errorScreen.titleText": { + "message": "Unable to fetch results", + "description": "The title for error screen of search modal" + }, + "theme.SearchModal.errorScreen.helpText": { + "message": "You might want to check your network connection.", + "description": "The help text for error screen of search modal" + }, + "theme.SearchModal.footer.selectText": { + "message": "to select", + "description": "The explanatory text of the action for the enter key" + }, + "theme.SearchModal.footer.selectKeyAriaLabel": { + "message": "Enter key", + "description": "The ARIA label for the Enter key button that makes the selection" + }, + "theme.SearchModal.footer.navigateText": { + "message": "to navigate", + "description": "The explanatory text of the action for the Arrow up and Arrow down key" + }, + "theme.SearchModal.footer.navigateUpKeyAriaLabel": { + "message": "Arrow up", + "description": "The ARIA label for the Arrow up key button that makes the navigation" + }, + "theme.SearchModal.footer.navigateDownKeyAriaLabel": { + "message": "Arrow down", + "description": "The ARIA label for the Arrow down key button that makes the navigation" + }, + "theme.SearchModal.footer.closeText": { + "message": "to close", + "description": "The explanatory text of the action for Escape key" + }, + "theme.SearchModal.footer.closeKeyAriaLabel": { + "message": "Escape key", + "description": "The ARIA label for the Escape key button that close the modal" + }, + "theme.SearchModal.footer.searchByText": { + "message": "Search by", + "description": "The text explain that the search is making by Algolia" + }, + "theme.SearchModal.noResultsScreen.noResultsText": { + "message": "No results for", + "description": "The text explains that there are no results for the following search" + }, + "theme.SearchModal.noResultsScreen.suggestedQueryText": { + "message": "Try searching for", + "description": "The text for the suggested query when no results are found for the following search" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsText": { + "message": "Believe this query should return results?", + "description": "The text for the question where the user thinks there are missing results" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsLinkText": { + "message": "Let us know.", + "description": "The text for the link to report missing results" + }, + "theme.SearchModal.placeholder": { + "message": "Search docs", + "description": "The placeholder of the input of the DocSearch pop-up modal" + }, + "theme.ErrorPageContent.tryAgain": { + "message": "Try again", + "description": "The label of the button to try again rendering when the React error boundary captures an error" + }, + "theme.common.skipToMainContent": { + "message": "Skip to main content", + "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation" + }, + "theme.tags.tagsPageTitle": { + "message": "Tags", + "description": "The title of the tag list page" + }, + "pages.download.description.hurricane": { + "message": "A plugin with various workarounds for Geyser players that modify the server in order to achieve their goal." + }, + "theme.blog.author.pageTitle": { + "message": "{authorName} - {nPosts}", + "description": "The title of the page for a blog author" + }, + "theme.blog.authorsList.pageTitle": { + "message": "Authors", + "description": "The title of the authors page" + }, + "theme.blog.authorsList.viewAll": { + "message": "View all authors", + "description": "The label of the link targeting the blog authors page" + }, + "theme.blog.author.noPosts": { + "message": "This author has not written any posts yet.", + "description": "The text for authors with 0 blog post" + }, + "theme.contentVisibility.unlistedBanner.title": { + "message": "Unlisted page", + "description": "The unlisted content banner title" + }, + "theme.contentVisibility.unlistedBanner.message": { + "message": "This page is unlisted. Search engines will not index it, and only users having a direct link can access it.", + "description": "The unlisted content banner message" + }, + "theme.contentVisibility.draftBanner.title": { + "message": "Draft page", + "description": "The draft content banner title" + }, + "theme.contentVisibility.draftBanner.message": { + "message": "This page is a draft. It will only be visible in dev and be excluded from the production build.", + "description": "The draft content banner message" + }, + "mdx.setup.host_provider": { + "message": "Host Provider" + }, + "mdx.setup.self_host": { + "message": "Self Host" + }, + "mdx.setup.paper_spigot": { + "message": "Paper / Spigot" + }, + "mdx.setup.modded_servers": { + "message": "Modded Servers" + }, + "mdx.setup.proxy_servers": { + "message": "Proxy Servers" + }, + "mdx.setup.viaproxy": { + "message": "ViaProxy" + }, + "mdx.setup.standalone": { + "message": "Standalone" + }, + "pages.download.description.offhandextension": { + "message": "An extension that allows Bedrock players to switch their offhand and mainhand item by emoting." + }, + "pages.download.description.rainbow": { + "message": "A Minecraft mod to generate Geyser item mappings and bedrock resourcepacks for use with Geyser's custom item API (v2)." + }, + "pages.download.description.hydraulic": { + "message": "A companion mod to Geyser which allows for Bedrock players to join modded Minecraft: Java Edition servers." + }, + "pages.download.description.thunder": { + "message": "A java application to convert simple Java Edition resource packs to Bedrock Edition ones." + }, + "pages.dumpviewer.extensions": { + "message": "Extensions" + }, + "pages.dumpviewer.extensions.noextensions": { + "message": "No extensions to show." + }, + "pages.dumpviewer.extensions.helptext": { + "message": "Click on an extension to view more information." + }, + "mdx.setup.fabric": { + "message": "Fabric" + }, + "mdx.setup.neoforge": { + "message": "NeoForge" + }, + "mdx.setup.installing_geyser": { + "message": "Installing Geyser" + }, + "mdx.setup.download_jar": { + "message": "Download {jarName}." + }, + "mdx.setup.place_jar": { + "message": "Place the {jarName} in the {jarDirectory} folder." + }, + "mdx.setup.restart_server": { + "message": "Restart the server." + }, + "mdx.setup.additional_steps": { + "message": "Additional Steps" + }, + "mdx.setup.connecting_on_bedrock": { + "message": "Connecting on Bedrock" + }, + "providers.config.templates.java_address": { + "message": "Set `address` in the `bedrock` section to the public address of the Java server." + }, + "providers.config.templates.custom_port_dedicated_ip": { + "message": "This host may only give out a separate port with a dedicated IP address." + }, + "providers.warnings.ovh_firewall_misconfig": { + "message": "To fix random `Unable to Connect` issues, see [here](/wiki/geyser/port-forwarding/#ovh-and-soyoustart)." + }, + "providers.config.templates.install_location.plugin_list": { + "message": "Install Geyser through the plugin or mod list provided by the host." + }, + "providers.config.templates.install_location.enable_bedrock_crossplay": { + "message": "Select the 'Enable Bedrock crossplay?' option when changing your server software to automatically install and configure Geyser and Floodgate." + }, + "providers.config.templates.info.geyser_installed_by_default": { + "message": "Geyser is installed and configured on all servers by default." + }, + "mdx.setup.checking_server_version": { + "message": "Checking your server version" + }, + "mdx.setup.restart_geyser": { + "message": "Restart Geyser." + }, + "mdx.setup.https_note": { + "message": "Unless signaling runs over {https}, Minecraft asks players whether they trust the server the first time they join." + }, + "mdx.setup.configuring_geyser": { + "message": "Configuring Geyser" + }, + "mdx.setup.open_config_simple": { + "message": "Now open the file {configLocation}. Find the part that starts with {bedrock}, and change the lines shown below." + }, + "mdx.setup.preconfigured": { + "message": "No changes needed. {name} automatically configures Geyser." + }, + "mdx.setup.transport_nethernet_simple": { + "message": "NetherNet is supported fully by 26.50+. If you'd like to also have working MOTD and player count for older versions, you will need to set up both NetherNet and Raknet." + }, + "mdx.setup.transport_both_compat": { + "message": "Also accepts RakNet, for additional compatibility: some Bedrock versions, such as 26.40, fetch the server's MOTD and player count over RakNet. This option needs a separate UDP port for NetherNet." + }, + "mdx.setup.placeholder_word": { + "message": "Replace this" + }, + "mdx.setup.replace_with_simple": { + "message": "With this" + }, + "mdx.setup.placeholder_java_port": { + "message": "The port of the Java server." + }, + "mdx.setup.placeholder_java_port_udp": { + "message": "A UDP port for NetherNet, other than {port}. This can be the Java server's port: the Java server only uses it over TCP, so Geyser can use it over UDP. Any other available UDP port works too." + }, + "mdx.setup.placeholder_second_available_port": { + "message": "An available UDP port for NetherNet, other than {port}. Open it for UDP." + }, + "mdx.setup.raknet_on_port": { + "message": "RakNet uses {port} over UDP, so that port has to be open for UDP as well." + }, + "mdx.setup.summary.nethernet_reported_generic": { + "message": "Reported to work with NetherNet" + }, + "mdx.setup.summary.supporter_configures": { + "message": "{name} configures Geyser for you automatically, including NetherNet." + }, + "mdx.setup.summary.updated": { + "message": "Instructions last updated on {date}" + }, + "mdx.setup.badge.gold": { + "message": "Gold supporter" + }, + "mdx.setup.badge.silver": { + "message": "Silver supporter" + }, + "mdx.setup.badge.bronze": { + "message": "Bronze supporter" + }, + "mdx.setup.unconfirmed_title": { + "message": "Not checked for NetherNet yet" + }, + "mdx.setup.warning_title": { + "message": "Warning" + }, + "mdx.setup.unconfirmed_reach_out_update": { + "message": "These instructions have not been checked for NetherNet yet. If Bedrock players can't join, reach out to {name} to get instructions on how to use Geyser, and let us know on {discord} so we can update this guide." + }, + "mdx.setup.try_not_listed": { + "message": "If your host cannot give you a separate port, follow the {notListed} instead. Players then join through {warden}, an external signaling service." + }, + "mdx.setup.try_not_listed.link": { + "message": "\"Not listed\" guide for using only the Java server's port" + }, + "mdx.setup.no_signaling": { + "message": "{name} supports neither built-in nor external signaling, so Bedrock players cannot connect over NetherNet." + }, + "mdx.setup.hosting_provider_article_short": { + "message": "Host's Geyser guide" + }, + "mdx.setup.hosting_provider_website_short": { + "message": "Website" + }, + "mdx.setup.hosting_provider_support_short": { + "message": "Support" + }, + "mdx.setup.hosting_provider_discord_short": { + "message": "Discord" + }, + "mdx.setup.not_listed.tab_allocated": { + "message": "I can allocate ports" + }, + "mdx.setup.not_listed.tab_java_only": { + "message": "I only have the Java server port" + }, + "components.provider.open_collaboration_group": { + "message": "Hosts that support Geyser's development" + }, + "components.provider.other_group": { + "message": "Other providers" + }, + "mdx.setup.connect.port_java": { + "message": "Your Java server's port" + }, + "mdx.setup.connect.port_config_step": { + "message": "The port you set in \"Configuring Geyser\"" + }, + "mdx.setup.connect.intro": { + "message": "In Minecraft: Bedrock Edition, go to Play, then Servers, and select Add Server. Fill it in like this:" + }, + "mdx.setup.connect.add_server": { + "message": "Add Server" + }, + "mdx.setup.connect.server_name": { + "message": "Server Name" + }, + "mdx.setup.connect.server_name_value": { + "message": "Anything you like" + }, + "mdx.setup.connect.server_address": { + "message": "Server Address" + }, + "mdx.setup.connect.server_address_value": { + "message": "Your Java server's address" + }, + "mdx.setup.connect.port": { + "message": "Port" + }, + "mdx.setup.transport_nethernet_tab": { + "message": "NetherNet" + }, + "mdx.setup.transport_both_tab": { + "message": "NetherNet and RakNet" + }, + "providers.ports.assign": { + "message": "Assign a port in your host's panel, open for both TCP and UDP." + }, + "providers.ports.allocated": { + "message": "Pick an available port from the ports allocated to your server, open for both TCP and UDP." + }, + "providers.ports.ask_host": { + "message": "Ask your host for a port that is open for both TCP and UDP." + }, + "pages.hosting.tier.gold": { + "message": "Gold supporters" + }, + "pages.hosting.tier.silver": { + "message": "Silver supporters" + }, + "pages.hosting.tier.bronze": { + "message": "Bronze supporters" + }, + "pages.hosting.card.website": { + "message": "Website" + }, + "pages.hosting.card.setup": { + "message": "Setup guide" + }, + "pages.hosting.title": { + "message": "Hosting Providers" + }, + "pages.hosting.subheading": { + "message": "Hosting providers that support the development of Geyser." + }, + "pages.hosting.intro": { + "message": "The hosts below support Geyser and related projects through {openCollaboration}. Their support helps fund work on Geyser, such as keeping up with major changes to Bedrock Edition, like the switch to NetherNet. All hosts listed below also configure Geyser automatically when installed, making using Geyser easier than ever. We'd like to thank them all for their support." + }, + "pages.hosting.empty": { + "message": "No hosting providers are listed yet." + }, + "pages.hosting.other.title": { + "message": "Using another host?" + }, + "pages.hosting.other.text": { + "message": "Hosts not being listed here does not mean Geyser won't run there. The {setupGuide} includes community collected notes for many other hosts, and general instructions for those not listed." + }, + "pages.hosting.other.setup_guide": { + "message": "setup guide" + }, + "pages.hosting.meta.title": { + "message": "Hosting Providers" + }, + "pages.hosting.meta.description": { + "message": "Hosting providers that support the development of Geyser through Open Collaboration." + }, + "pages.download.description.floodgatedatabases": { + "message": "Database extension jars for Floodgate local linking." + }, + "providers.ports.from_host": { + "message": "The Bedrock port your host shows you." + }, + "providers.config.templates.info.only_serves_region": { + "message": "This host only provides service in {region}." + }, + "mdx.setup.velocity": { + "message": "Velocity" + }, + "mdx.setup.bungeecord": { + "message": "BungeeCord" + }, + "providers.ports.new_port": { + "message": "Open a new port in your server panel, open for both TCP and UDP, or ask your host for one if the panel has no option for it." + }, + "mdx.setup.supported_versions": { + "message": "Supported versions" + }, + "mdx.setup.restart_velocity": { + "message": "Restart Velocity." + }, + "mdx.setup.restart_bungeecord": { + "message": "Restart BungeeCord." + }, + "mdx.setup.restart_viaproxy": { + "message": "Restart ViaProxy." + }, + "mdx.setup.fabric_dependency": { + "message": "If it is not installed already, download {fabricApi} and place it in the same folder." + }, + "mdx.setup.version_step_viaversion": { + "message": "If your server is not running {version}, you will need to install {viaVersion}. For more information, see {supportedVersions}." + }, + "mdx.setup.version_step_proxy": { + "message": "All servers on the network must accept {version} Java clients, as Geyser imitates one." + }, + "mdx.setup.proxy_install_only": { + "message": "Install Geyser only on the {proxy} server! You can install Floodgate on all servers for better skin support and network-wide Floodgate API availability for other plugins." + }, + "mdx.setup.modded_requirements": { + "message": "{jarName} runs only on a {version} server, and only works alongside server-side mods. Mods that players also need to install on their client will not work. See {supportedVersions} for more details." + }, + "mdx.setup.self_port_choice": { + "message": "Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP, so it cannot be the port of the {platform} server." + }, + "mdx.setup.self_port_choice_standalone": { + "message": "Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP." + }, + "mdx.setup.self_port_sharing": { + "message": "{important}: No other program can use the Geyser port, over either protocol. This includes programs that use UDP, such as voice chat mods or Query, and programs that use TCP, such as another server, a web map, or a website." + }, + "mdx.setup.self_port_sharing.important": { + "message": "Important" + }, + "mdx.setup.connect_local_title": { + "message": "Connecting from the same network" + }, + "mdx.setup.connect_local": { + "message": "On the same device as the server, connect with {localhost} or {loopback} as the address. Other devices in the same local network can use your local IPv4 address, which starts with {ten} or {oneNineTwo}." + }, + "mdx.setup.connect_lan": { + "message": "Alternatively, open Minecraft: Bedrock Edition and join the LAN server in the {friends} tab." + }, + "mdx.setup.connect_lan.friends": { + "message": "Friends" + }, + "mdx.setup.connect_remote_title": { + "message": "Connecting from a different network" + }, + "mdx.setup.connect_remote": { + "message": "To let players from outside your network join, you need to make the Geyser port reachable from the internet." + }, + "mdx.setup.connect_tcp_udp": { + "message": "The Geyser port has to be forwarded for both TCP and UDP. Before NetherNet, forwarding UDP was enough. Now, players use TCP to find your server and UDP to play on it, so without TCP your server will not show up. If you use the \"NetherNet and RakNet\" option, also forward the {webrtcPort} for UDP." + }, + "mdx.setup.connect_options": { + "message": "You have two options:" + }, + "mdx.setup.connect_port_forwarding": { + "message": "{portForwarding}: open the Geyser port (e.g. 19132) for both TCP and UDP in your router and in your firewall. Players then connect with your public IPv4 address and the port. For detailed steps, see {guide}." + }, + "mdx.setup.connect_port_forwarding.title": { + "message": "Port forwarding" + }, + "mdx.setup.connect_port_forwarding.guide": { + "message": "Port forwarding" + }, + "mdx.setup.connect_playit": { + "message": "{playit}: if you cannot open a port, or do not want to expose your home IP address, playit.gg can create a tunnel for you. See {guide}. That guide was written for RakNet. For NetherNet, see {status}. Ngrok does not work, since it does not support UDP." + }, + "mdx.setup.connect_playit.guide": { + "message": "playit.gg Setup" + }, + "mdx.setup.connect_playit.status": { + "message": "NetherNet support on playit.gg" + }, + "mdx.setup.https_step_title": { + "message": "Recommended: Set up HTTPS for signaling" + }, + "mdx.setup.https_step": { + "message": "Geyser's built-in signaling server uses plain HTTP by default, so Minecraft shows players a \"Trust on First Use?\" prompt the first time they join. To avoid this prompt, serve signaling over HTTPS, as explained in {httpsGuide}. Some external signaling services, such as {warden}, provide HTTPS as well." + }, + "mdx.setup.https_step.guide": { + "message": "HTTPS for NetherNet" + }, + "mdx.setup.floodgate_info": { + "message": "To allow Bedrock Edition players to join your server without a paid Java Edition account, you can use {floodgate}." + }, + "mdx.setup.viaproxy_not_plugin.title": { + "message": "ViaProxy is not a plugin or mod" + }, + "mdx.setup.viaproxy_not_plugin": { + "message": "ViaProxy is a standalone program that runs separately from your Minecraft server. Do not put the ViaProxy jar into your server's {plugins} or {mods} folder. To run Geyser as a plugin or mod on your server instead, pick your server software in the tabs above." + }, + "mdx.setup.viaproxy_setup": { + "message": "Set up {viaProxy}." + }, + "mdx.setup.viaproxy_accounts": { + "message": "If you use the ViaProxy GUI, you can use its account management to join online mode servers with Bedrock Edition. If you use the ViaProxy CLI and want Bedrock players to join your online mode server, install and set up {floodgate}." + }, + "mdx.setup.viaproxy_auth_type": { + "message": "ViaProxy manages the {authType} setting itself, so its value in the config is ignored." + }, + "mdx.setup.standalone_java": { + "message": "You need Java 21 or newer to run Geyser. To run Geyser Standalone on Android, see the end of this page." + }, + "mdx.setup.standalone_not_plugin": { + "message": "Geyser Standalone is not a plugin or mod. It is a separate Java program that runs alongside your Java Edition server." + }, + "mdx.setup.standalone_download": { + "message": "Download {standalone}." + }, + "mdx.setup.standalone_folder": { + "message": "Create a new folder for Geyser, and put the jar in it." + }, + "mdx.setup.standalone_start": { + "message": "Start Geyser Standalone:" + }, + "mdx.setup.standalone_gui": { + "message": "{gui} (recommended): double-click the jar file. Geyser creates all the files it needs." + }, + "mdx.setup.standalone_console": { + "message": "{console}: create a startup script, like the one you would use for a Paper server. See {startupScript} for what to put into it. Run it, and Geyser creates all the files it needs." + }, + "mdx.setup.standalone_console.console": { + "message": "Console" + }, + "mdx.setup.standalone_console.startup_script": { + "message": "Creating a Startup Script" + }, + "mdx.setup.standalone_remote_intro": { + "message": "To choose which Java Edition server Geyser Standalone sends players to, find the {java} section:" + }, + "mdx.setup.standalone_remote": { + "message": "Change {address} to the Java server's address, or leave it as it is if the server runs on the same machine as Geyser. Then change {port} to the Java server's port. Set {authType} to {floodgate} if you set up Floodgate on the Java server, otherwise to {online} for an online mode server or {offline} for an offline mode server. To use Floodgate with Geyser Standalone, see {floodgateSetup}." + }, + "mdx.setup.standalone_remote.floodgate_setup": { + "message": "Floodgate Setup" + }, + "mdx.setup.standalone_android_title": { + "message": "Running Geyser Standalone on Android" + }, + "mdx.setup.standalone_android_caution": { + "message": "Apps such as Termux can run Geyser on Android, but how well this works depends on how powerful your device is. Do so at your own risk." + }, + "mdx.setup.standalone_termux_install": { + "message": "Download and install {termux}." + }, + "mdx.setup.run_command": { + "message": "Run {command}." + }, + "mdx.setup.standalone_termux_script": { + "message": "Alternatively, there is an automated setup script for clean Termux installs. It might not work for everyone, so try it if the steps above do not work:" + } +} \ No newline at end of file diff --git a/i18n/cs/docusaurus-plugin-content-blog/options.json b/i18n/cs/docusaurus-plugin-content-blog/options.json new file mode 100644 index 0000000..9fa6586 --- /dev/null +++ b/i18n/cs/docusaurus-plugin-content-blog/options.json @@ -0,0 +1,10 @@ +{ + "description": { + "message": "Blog", + "description": "The description for the blog used in SEO" + }, + "sidebar.title": { + "message": "Recent posts", + "description": "The label for the left sidebar" + } +} \ No newline at end of file diff --git a/i18n/cs/docusaurus-plugin-content-docs/current.json b/i18n/cs/docusaurus-plugin-content-docs/current.json new file mode 100644 index 0000000..cb3914c --- /dev/null +++ b/i18n/cs/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,34 @@ +{ + "version.label": { + "message": "Next", + "description": "The label for version current" + }, + "sidebar.geyserSidebar.category.Setup": { + "message": "Setup", + "description": "The label for category Setup in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Common Issues": { + "message": "Common Issues", + "description": "The label for category Common Issues in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Configuring Geyser": { + "message": "Configuring Geyser", + "description": "The label for category Configuring Geyser in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.FAQ": { + "message": "FAQ", + "description": "The label for category FAQ in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Geyser API": { + "message": "Geyser API", + "description": "The label for category Geyser API in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.link.Hosting Providers": { + "message": "Hosting Providers", + "description": "The label for link Hosting Providers in sidebar geyserSidebar, linking to /hosting" + }, + "sidebar.geyserSidebar.category.Custom Content": { + "message": "Custom Content", + "description": "The label for category Custom Content in sidebar geyserSidebar" + } +} \ No newline at end of file diff --git a/i18n/cs/docusaurus-plugin-content-docs/current/geyser/commands.md b/i18n/cs/docusaurus-plugin-content-docs/current/geyser/commands.md new file mode 100644 index 0000000..0492482 --- /dev/null +++ b/i18n/cs/docusaurus-plugin-content-docs/current/geyser/commands.md @@ -0,0 +1,83 @@ +--- +title: Commands and Permissions +description: Commands and their associated permission nodes for Geyser. +crowdin_sync: true +crowdin_page_id: cd92ff4f-9105-46a2-8696-8b0e2f8b9d31 +--- + +# Commands and Permissions + +Geyser features many built-in commands that can be used by players or server owners. + +:::info + +When using BungeeCord and Velocity, you will need to use a permission plugin such as [LuckPerms](https://luckperms.net/) +on the proxy server to assign permissions to players. Assigning permissions on the backend servers will not work. + +::: + +## Geyser commands & their permissions {#geyser-commands--their-permissions} + +| Command | Permission | Description | +| :-----------------------------------: | :---------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | +| `geyser`
Geyser root command | `geyser.command` | The permission required to see/run any Geyser commands. | +| `geyser help`
`geyser ?` | `geyser.command.help` | Shows help for all registered commands. | +| `geyser advancements` | `geyser.command.advancements` | Open the Java advancements menu. | +| `geyser dump` | `geyser.command.dump` | Dumps Geyser debug information for bug reports. | +| `geyser list` | `geyser.command.list` | List all players connected through Geyser. | +| `geyser nethernet` | `geyser.command.nethernet` | Shows NetherNet signaling status and diagnostics, for use with external signaling. | +| `geyser offhand` | `geyser.command.offhand` | Puts an item in your offhand. | +| `geyser reload` | `geyser.command.reload` | Reloads the Geyser configurations. Kicks all players when used! | +| `geyser settings` | `geyser.command.settings` | Opens a settings menu allowing you to modify aspects of the world. | +| `geyser shutdown`
`geyser stop` | `geyser.command.shutdown` | Shuts down Geyser.
*This command only works on Standalone.* | +| `geyser statistics` | `geyser.command.statistics` | Open the Java statistics menu. | +| `geyser version` | `geyser.command.version` | Shows the current Geyser version and checks for updates. | +| `geyser tooltips` | `geyser.command.tooltips` | Toggle showing Advanced Tooltips (F3 + H on Java) | +| `geyser extensions` | `geyser.command.extensions` | Lists all currently loaded extensions. This command is only registered if any extensions are loaded. | +| `geyser ping` | `geyser.command.ping` | Shows the ping between the player and the Geyser instance. | +| `geyser options` | `geyser.command.options` | Opens the "pause screen additions" dialogue, if sent by the Java server | +| `geyser quickactions` | `geyser.command.quickactions` | Opens the "quick actions" dialogue, if sent by the Java server. | + +## Permissions for Geyser extensions {#extension-permissions} + +For the following, `` refers to the extensions' id. + +| Command | Permission | Description | +| :------------------------- | :---------------------------- | :------------------------------------------------------------------------ | +| ` help`
` ?` | `geyser.command.exthelp.` | Shows help for all commands registered by this extension. | + +## Other Permissions {#other-permissions} + +Besides commands, there are other permissions that are used to guard specific Geyser features. + +| Permission | Description | +| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `geyser.settings.server` | Allow players to use the [game settings menu](/img/wiki/game_menu.png). (Also requires player to have op.) | +| `geyser.settings.gamerules` | Defines whether a user can alter gamerules in the [game settings menu](/img/wiki/game_menu.png). (Also requires player to have op.) | +| `geyser.update` | Whether this player will receive Geyser update notifications upon joining. | + +## Permissions when using Geyser-Standalone/Geyser-ViaProxy {#standalone-viaproxy-permissions} + +Geyser-ViaProxy and Geyser-Standalone feature their own basic permission handler. To edit base permissions, +open the `permissions.yml` file and add or remove permissions that Geyser players should receive when joining. +See the file for more information. + +You can further customize permission handling by creating a [Geyser extension](/wiki/geyser/extensions/) that makes use of Geysers API +to deal with permission checking. + +## Permissions when using Geyser on platforms without permission handlers {#permissions-platforms-no-permission-handlers} + +The following affects Geyser-BungeeCord, Geyser-Velocity, and Geyser-Fabric. +These platforms unfortunately do not have built-in permission handlers. Because of that, you will need to grant permissions on those platforms +manually using permission handlers, such as [LuckPerms](https://luckperms.net/). Geyser's permission are listed above. For extension permissions, consult their documentation. + +Alternatively, you can use [LuckLink](https://github.com/onebeastchris/LuckLink), a third-party Geyser extension, to automatically register permissions using [LuckPerms](https://luckperms.net/). + +- Install [LuckPerms](https://luckperms.net/) on the platform where you've installed Geyser (BungeeCord/Velocity/Fabric). +- To allow Geyser to automatically register permission defaults, install the [LuckLink](https://github.com/onebeastchris/LuckLink) Geyser extension + by downloading the `LuckLink.jar` and adding it to Geyser's `extensions` folder. +- Restart the server, and permissions should be automatically registered. + +## Floodgate commands and permissions {#floodgate-commands-and-permissions} + +For Floodgate commands, see [here](/wiki/floodgate/commands/). diff --git a/i18n/cs/docusaurus-plugin-content-docs/current/geyser/playit-gg.md b/i18n/cs/docusaurus-plugin-content-docs/current/geyser/playit-gg.md new file mode 100644 index 0000000..7d20bd3 --- /dev/null +++ b/i18n/cs/docusaurus-plugin-content-docs/current/geyser/playit-gg.md @@ -0,0 +1,62 @@ +--- +title: playit.gg Setup +description: How to set up playit.gg to use Geyser without port forwarding. +crowdin_sync: true +crowdin_page_id: 3aee52d0-b943-4e37-8797-4a83ef55e42a +--- + +## Prerequisites {#prerequisites} + +:::info +You must be able to connect to your Geyser instance locally! +::: + +:::warning +The playit.gg Minecraft server plugin does not support UDP tunnels. You will need to use the program agent instead! +::: + +:::caution +This guide was written for RakNet, and does not cover NetherNet. For NetherNet, see [playit.gg's progress on NetherNet support](https://status.playit.gg/3/adding-nethernet-support). +::: + +## Setup {#setup} + +1. Head over to [playit.gg's website](https://playit.gg/) - download the program & run it. +2. The program will provide a claiming link. Visit that link, log in. + ![img](/img/wiki/playit-gg/playit_claim.png) +3. Confirm your agent. + ![img](/img/wiki/playit-gg/playit_claim_confirm.png) +4. Add the agent. + ![img](/img/wiki/playit-gg/playit_add_agent.png) +5. After the agent is created, create a tunnel. + ![img](/img/wiki/playit-gg/playit_add_tunnel.png) +6. Name your tunnel and click Next. + ![img](/img/wiki/playit-gg/playit_name_tunnel.png) +7. Select "Minecraft Bedrock" as the tunnel type and click Next. + ![img](/img/wiki/playit-gg/playit_tunnel_type.png) +8. Select the Free Network and click Next. + ![img](/img/wiki/playit-gg/playit_select_network.png) + **Do not change your Geyser port in `config.yml` unless you have a reason (for example, hosting another Geyser server on the same machine).** The Bedrock (Geyser) port in `config.yml` and the playit.gg ports are separate. playit.gg will forward its port to the default Geyser port and should work as-is. Changing it can cause errors. If you have changed your config port, set the Bedrock port back to the default `19132` and ensure `clone-remote-port` is `false`. +9. If the playit.gg agent and Geyser are running on the same device, leave the IP as `127.0.0.1` and set the port to whatever you configured in Geyser's config. + ![img](/img/wiki/playit-gg/playit_set_ipandport.png) +10. Select `proxy-protocol-v2` for the Proxy Protocol section and click Next. +11. In the Geyser config, under `advanced:` `bedrock:`, set `use-haproxy-protocol` to `true`. +12. Click Create Tunnel and wait for the tunnel to be created. + ![img](/img/wiki/playit-gg/playit_create_tunnel.png) +13. Copy your tunnel's port. For example, if your tunnel address is `visiting-phone.gl.at.ply.gg:6695`, then `6695` is the tunnel port. +14. In the Geyser config under `advanced:` `bedrock:`, set `broadcast-port` to your tunnel port (`6695` in the example). +15. Save your config. Start your Minecraft server and connect using your tunnel's IP and port. +16. If you join successfully, then you are done! Make sure to leave the playit.gg program running as closing it will close the tunnel. You also may want to ratelimit individual connections - use the "Per Connection Rate Limit" option to do so. + (If you failed to join, check out the [troubleshooting](#troubleshooting) section of the page.) + +## Troubleshooting {#troubleshooting} + +### I can't connect to my server! {#i-cant-connect-to-my-server} + +- *Try going to the Agents page, set your agent to IPv4 only, and change the region. You may need to switch regions a few times before you can connect.* +- *Are there errors in your minecraft server console?* +- *Unless you manually changed the "Local Port" on the playit.gg website, in Geyser config, ensure that the bedrock port is the default of `19132` and that `clone-remote-port` is `false`.* +- *If you changed the `bedrock-port` or set `clone-remote-port` to `true` and have a reason for doing so (e.g. hosting another Geyser server on the same machine), you'll have to tell playit.gg to use that port instead! See the last paragraph in step 8.* +- *Check that you're joining with playit.gg's IP and port from the "Allocation" tab.* +- *Make sure that you have the program agent open while trying to join.* +- *See [here](/wiki/geyser/fixing-unable-to-connect-to-world/) for general troubleshooting steps.* diff --git a/i18n/cs/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md b/i18n/cs/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md new file mode 100644 index 0000000..492774c --- /dev/null +++ b/i18n/cs/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md @@ -0,0 +1,208 @@ +--- +title: Port forwarding +description: Information on how to set up port forwarding required for Geyser. +crowdin_sync: true +crowdin_page_id: be7c5a22-1e8e-4ffe-8d13-7d763dd75886 +--- + +# Port forwarding {#port-forwarding} + +This page contains information on how to set up port forwarding required for Geyser to work when self-hosting. +There are also guides for specific configurations, such as Docker/Pterodactyl, or on specific VPS/KVM providers, such as OVH or Oracle Cloud. + +:::caution + +If you are using a Minecraft server hosting provider (e.g. Aternos, or Nodecraft), you should refer to the hosting provider setup on the [setup](/wiki/geyser/setup) page instead. + +::: + +:::info Ports that need to be opened +With NetherNet, the Geyser port (by default 19132) has to be open for **both TCP and UDP**: players find the server over TCP (signaling), and play on it over UDP. +If you use the "NetherNet and RakNet" option, also open the `webrtc-port` for UDP. +With external signaling, such as [Warden](https://warden.cloud), only UDP for WebRTC is needed. +::: + +## Port forwarding on Linux/Windows/macOS {#port-forwarding-on-linuxwindowsmacos} + +To allow others to play on your server, you will need to set up port forwarding on the device hosting Geyser. +Additionally, you will need to port forward the port on your router/modem (in other words, allow and route traffic on that port to the proper machine) if you want the server to be accessible outside your own home network. +Forward it for both TCP and UDP; many routers offer a "TCP/UDP" or "Both" option for this. +See [here](https://www.howtogeek.com/66214/how-to-forward-ports-on-your-router/) or [here](https://www.lifewire.com/how-to-port-forward-4163829) for helpful guides. +Do note: if you do not have a static IP address, your IP address may change over time. + +:::info + +Some ISPs (Internet Service Providers) block certain ports, or don't allow you to open ports (e.g. by using CGNAT, which doesn't allow you to open a port with a dynamic IP). +Other ISPs may require you to pay extra for a static IP address. +As an alternative to port forwarding, you can use [playit.gg](/wiki/geyser/playit-gg/) to create a tunnel. + +::: + +### Windows {#windows} + +To open a port on Windows, you will need to open the port through the Windows Firewall. There are multiple ways to do this: + +- `Powershell` (recommended) + + To open a port on TCP and UDP (in our example, port 19132), run the following commands in an administrator Powershell: + + ```powershell + New-NetFirewallRule -DisplayName "Geyser (TCP)" -Direction Inbound -Protocol TCP -LocalPort 19132 -Action Allow + New-NetFirewallRule -DisplayName "Geyser (UDP)" -Direction Inbound -Protocol UDP -LocalPort 19132 -Action Allow + ``` + + Running these commands creates two rules that allow TCP and UDP traffic on port 19132. + +- Windows Defender Firewall with Advanced Security (GUI) + 1. Search for "Windows Defender Firewall with Advanced Security" in the start menu, and open it. ([Image](/img/wiki/port-forwarding/windows-1.png)) + 2. Click on "Inbound Rules" in the left sidebar. ([Image](/img/wiki/port-forwarding/windows-2.png)) + 3. Click on "New Rule..." in the right sidebar. ([Image](/img/wiki/port-forwarding/windows-2.png)) + 4. Select "Port" as the rule type and click "Next". ([Example](/img/wiki/port-forwarding/windows-3.png)) + 5. Select "UDP" and "Specific local ports", and enter the port you want to open (in our example, 19132). Click "Next". ([Example](/img/wiki/port-forwarding/windows-4.png)) + 6. Select "Allow the connection" and click "Next". ([Example](/img/wiki/port-forwarding/windows-5.png)) + 7. Select the profiles you want to apply the rule to (e.g. "Domain", "Private", "Public"), and click "Next". ([Example](/img/wiki/port-forwarding/windows-6.png)) + 8. Enter a name for the rule (e.g. "Geyser (UDP)"), and click "Finish". ([Image](/img/wiki/port-forwarding/windows-7.png)) + 9. Repeat these steps, selecting "TCP" in step 5 and naming the rule e.g. "Geyser (TCP)". + +### Linux {#linux} + +Different Linux distributions, even different VPS providers ship and configure different firewalls. In the following examples, we will use `19132` as the port to open, but you should replace this with the port you are using for Geyser. + +- `ufw` is a simple firewall front-end for iptables that is commonly used on Ubuntu and Debian. To open a port on TCP and UDP, run the following commands: + ```bash + sudo ufw allow 19132/tcp + sudo ufw allow 19132/udp + ``` + Then, reload the firewall with `sudo ufw reload`, and see all open rules with `sudo ufw status`. + Further helpful guides: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server), [Baeldung](https://www.baeldung.com/linux/uncomplicated-firewall) + +- `firewalld` Add a port on TCP and UDP by running: + ```bash + sudo firewall-cmd --zone=public --permanent --add-port=19132/tcp + sudo firewall-cmd --zone=public --permanent --add-port=19132/udp + ``` + Then, reload the firewall with `sudo firewall-cmd --reload`, and see all open rules with `sudo firewall-cmd --list-all`. + Further helpful guides: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7) + +- `iptables` is a common firewall that is used on many Linux distributions. To open a port on TCP and UDP, run the following commands: + ```bash + sudo iptables -A INPUT -p tcp --dport 19132 -j ACCEPT + sudo iptables -A INPUT -p udp --dport 19132 -j ACCEPT + ``` + Then, save the firewall with `sudo iptables-save`, and see all open rules with `sudo iptables -L`. + Further helpful guides for iptables: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-iptables-on-ubuntu-14-04), [Ubuntu](https://help.ubuntu.com/community/IptablesHowTo) + +### macOS {#macos} + +You will need to disable `Block all incoming connections` in your Firewall settings, as that will block any connections and won't allow you to make exceptions. +To allow incoming connections, click `Allow` when getting [these prompts](/img/wiki/port-forwarding/macos_warning.png). +If you are still facing issues, see Apple's official guide [here](https://support.apple.com/guide/mac-help/MH11783) to open a port on macOS. + +## Using Docker or Pterodactyl {#using-docker-or-pterodactyl} + +In addition to port forwarding the port in your server's firewall (and, if applicable, your router/modem), you will need to assign the port in Docker/Pterodactyl. + +### Pterodactyl {#pterodactyl} + +Make sure to allocate the port(s) to the server in the Pterodactyl panel's `Network` tab, additionally to port forwarding the port(s). +See [here](https://pterodactyl.io/community/games/minecraft.html#allocations-in-the-panel) for more information. + +![Pterodactyl panel, Network section](/img/wiki/port-forwarding/pterodactyl-1.png) + +There are also different Geyser eggs for Pterodactyl, which can be found [here](https://github.com/GeyserMC/pterodactyl-stuff). + +:::caution + +If you are not able to allocate ports in the Pterodactyl panel, you will need to contact your server host to allocate one for you or try to use an existing port allocation. + +::: + +### Docker {#docker} + +For Geyser to work under Docker (e.g. using [Itzg's Docker image](https://github.com/itzg/docker-minecraft-server)), you will need to add the Geyser port on TCP and UDP to the docker-compose file. This is done by adding the following to the `ports` section: + +```yaml +ports: + - "25565:25565" + - "19132:19132" + - "19132:19132/udp" +``` + +Without a suffix, Docker exposes the port on TCP. The additional `/udp` suffix exposes it on UDP. +Alternatively, add the ports with the `-p 19132:19132 -p 19132:19132/udp` flags to the docker run command. + +## Issues with specific VPS/KVM providers {#issues-with-specific-vpskvm-providers} + +Some providers, such as OVH, Oracle Cloud, and SoYouStart, have a firewall that blocks the ports Geyser needs by default/in most cases. + +### OVH and SoYouStart {#ovh-and-soyoustart} + +OVH's GAME firewall filters traffic with rules made for specific games. The Minecraft Bedrock and Minecraft Pocket Edition rules currently only support RakNet, the protocol Bedrock used before NetherNet. +With NetherNet, players find the server over HTTP (TCP) and play over WebRTC (UDP), which these rules currently do not support. +For now, use the `Other` rule for the Geyser port(s) instead. + +:::caution + +If you do not have access to these firewall settings, but got linked to this page, please contact your server host and provide them with this link - they are likely using OVH internally. + +::: + +**To resolve it:** + +OVH: + +1. Navigate to `Network interfaces` +2. Click on the `...` button on the table for your IP -> then `...` and `Configure the GAME firewall` -> `Add rule` -> `Other protocol` +3. Add your Geyser port into `outgoing port`. If you use the "NetherNet and RakNet" option, add a rule for the `webrtc-port` as well. +4. If you use OVH's Edge Network Firewall, make sure it allows the Geyser port over both TCP and UDP. + +SoYouStart (subsidiary of OVH): + +1. Click the IP tab. +2. Click the gear at the right of the public IP address; select "Game mitigation". +3. Pick "Add a rule". +4. Select "Other" in the dropdown list and enter the Geyser port. If you use the "NetherNet and RakNet" option, add the `webrtc-port` as well. +5. Save and wait a few seconds for the changes to come into effect. + +### Oracle Cloud/OCI {#oracle-cloudoci} + +By default, Oracle Cloud will block all incoming traffic except for SSH and RDP. This must be resolved within Oracle Cloud itself and the Compute Instance running Geyser. + +The steps below assume that you are using the default ports for the Java server and Geyser, and should be adjusted accordingly. + +1. Find your Compute Instance in the OCI Console +2. Click on the instances Virtual Cloud Network (this will be under "Instance details") +3. On the left-hand side, select "Security Lists" +4. Select one of the security lists. By default only one security list will exist. It doesn't matter which security list we add the rules to. +5. Select "Add Ingress Rules" +6. Configure rules for Java (optional) + - Set "Source CIDR" to `0.0.0.0/0` + - Set "Destination Port Range" to `25565-25565` + - Select "Another Ingress Rule" +7. Configure rules for Geyser, once for TCP and once for UDP + - Set "Source CIDR" to `0.0.0.0/0` + - Set "Destination Port Range" to `19132-19132` + - Set "IP Protocol" to TCP + - Select "Another Ingress Rule", and repeat with "IP Protocol" set to UDP +8. Select "Add Ingress Rules" + +#### Oracle Linux {#oracle-linux} + +Run the following commands to allow Minecraft and Geyser through the OS firewall: + +```bash +sudo firewall-cmd --add-port=25565/tcp --permanent +sudo firewall-cmd --add-port=19132/tcp --permanent +sudo firewall-cmd --add-port=19132/udp --permanent +sudo firewall-cmd --reload +``` + +#### Ubuntu {#ubuntu} + +Run the following commands to allow Minecraft and Geyser through the OS firewall: + +```bash +sudo ufw allow 25565/tcp +sudo ufw allow 19132/tcp +sudo ufw allow 19132/udp +``` diff --git a/i18n/cs/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx b/i18n/cs/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx new file mode 100644 index 0000000..47391e7 --- /dev/null +++ b/i18n/cs/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx @@ -0,0 +1,47 @@ +--- +title: Supported versions +description: Information on the versions Geyser supports. +crowdin_sync: true +crowdin_page_id: f199ae24-f711-486d-8e42-3079be87e8cd +--- + +import { Versions } from '@site/src/components/Versions' +import DocCardList from '@theme/DocCardList'; + +# Currently supported versions \ {#currently-supported-versions} + +:::info +**Geyser currently supports Minecraft Bedrock and Minecraft Java **. +::: + +## Using Geyser with older Minecraft: Bedrock edition versions \ {#using-geyser-with-older-minecraft-bedrock-edition-versions} + +Older Bedrock versions are not supported. Minecraft: Bedrock Edition updates automatically on all platforms, so there are few users who would +want to use older versions. Further, older Bedrock versions do not have all features which Geyser support, which would lead to a sub-par experience. + +## Using Geyser on older Minecraft: Java edition servers \ {#using-geyser-on-older-minecraft-java-edition-servers} + +Geyser emulates a client, so a Java server must accept users using that version in order for Geyser to work. +This is possible thanks to [ViaVersion](https://viaversion.com/viaversion), which allows Java edition players with newer versions to join servers +that run older versions of the game. + +### Using Geyser-Spigot on a Spigot/Paper server running on 1.20.5 or above + +You can use Geyser-Spigot on servers that run on 1.20.5 or above. You will also need to run at least Java 21 or later to use Geyser. See [here](https://docs.papermc.io/misc/java-install) for more info on updating Java. Paper versions not supporting Java 21 can add `-DPaper.IgnoreJavaVersion=true` flag to the Java startup arguments to allow Paper to run on Java 21. + +In order for Bedrock players to chat (1.19.3+) or join (1.19.1/1.19.2), you need to disable chat signing. More information about that can be read on the [chat signing page](/wiki/geyser/secure-chat). + +### Using Geyser-Spigot on a Spigot/Paper server running on a version below 1.20.5 + +This is unfortunately not possible. You'll need to use a proxy such as Velocity or BungeeCord, or set up Geyser-Standalone separately with the [ViaVersion](https://viaversion.com/viaversion) plugin. Another alternative would be to install [ViaProxy](https://viaversion.com/viaproxy), which is a standalone ViaVersion proxy that +translates between different Minecraft: Java edition versions, and to install Geyser-ViaProxy on it. + +### Using Geyser on Fabric/NeoForge servers not on the latest Minecraft version \ {#using-geyser-on-fabric-neoforge-servers-not-on-the-latest-minecraft-version} + +Unfortunately, Geyser-Fabric and Geyser-NeoForge only support the latest version of Minecraft: Java edition. The recommended way to still use +Geyser with older versions would be to install [ViaProxy](https://viaversion.com/viaproxy), which is a standalone ViaVersion proxy that +translates between different Minecraft: Java edition versions, and to install Geyser-ViaProxy on it. This will also work with Floodgate auth. + +### Using Geyser-Velocity or Geyser-BungeeCord on a proxy + +Make sure you update your proxy software to the latest available version, and, if the backend servers are not on , also install the [ViaVersion](https://viaversion.com/viaversion) plugin on the backend servers. Velocity/BungeeCord support most Minecraft versions, so you can update them regardless of the backend server versions. diff --git a/i18n/cs/docusaurus-theme-classic/footer.json b/i18n/cs/docusaurus-theme-classic/footer.json new file mode 100644 index 0000000..1a69184 --- /dev/null +++ b/i18n/cs/docusaurus-theme-classic/footer.json @@ -0,0 +1,50 @@ +{ + "link.title.Wiki": { + "message": "Wiki", + "description": "The title of the footer links column with title=Wiki in the footer" + }, + "link.title.Downloads": { + "message": "Downloads", + "description": "The title of the footer links column with title=Downloads in the footer" + }, + "link.title.Community": { + "message": "Community", + "description": "The title of the footer links column with title=Community in the footer" + }, + "link.title.More": { + "message": "More", + "description": "The title of the footer links column with title=More in the footer" + }, + "link.item.label.REST APIs": { + "message": "REST APIs", + "description": "The label of footer link with label=REST APIs linking to wiki/api/api.geysermc.org/global-api" + }, + "link.item.label.Other": { + "message": "Other", + "description": "The label of footer link with label=Other linking to download?project=other-projects" + }, + "link.item.label.Blog": { + "message": "Blog", + "description": "The label of footer link with label=Blog linking to blog" + }, + "link.item.label.Donate": { + "message": "Donate", + "description": "The label of footer link with label=Donate linking to https://opencollective.com/geysermc" + }, + "link.item.label.Global Linking": { + "message": "Global Linking", + "description": "The label of footer link with label=Global Linking linking to https://link.geysermc.org/" + }, + "link.item.label.Privacy Policy": { + "message": "Privacy Policy", + "description": "The label of footer link with label=Privacy Policy linking to https://ziax.com/terms/privacy-policy/" + }, + "logo.alt": { + "message": "GeyserMC logo", + "description": "The alt text of footer logo" + }, + "copyright": { + "message": "Copyright © 2026 GeyserMC. Built with Docusaurus.
This website is not an official Minecraft website and is not associated with Mojang Studios or Microsoft. All product and company names are trademarks or registered trademarks of their respective holders. Use of these names does not imply any affiliation or endorsement by them.", + "description": "The footer copyright" + } +} \ No newline at end of file diff --git a/i18n/cs/docusaurus-theme-classic/navbar.json b/i18n/cs/docusaurus-theme-classic/navbar.json new file mode 100644 index 0000000..c4f41a5 --- /dev/null +++ b/i18n/cs/docusaurus-theme-classic/navbar.json @@ -0,0 +1,38 @@ +{ + "logo.alt": { + "message": "GeyserMC logo", + "description": "The alt text of navbar logo" + }, + "item.label.Wiki": { + "message": "Wiki", + "description": "Navbar item with label Wiki" + }, + "item.label.Blog": { + "message": "Blog", + "description": "Navbar item with label Blog" + }, + "item.label.Utilities": { + "message": "Utilities", + "description": "Navbar item with label Utilities" + }, + "item.label.Download": { + "message": "Download", + "description": "Navbar item with label Download" + }, + "item.label.REST APIs": { + "message": "REST APIs", + "description": "Navbar item with label REST APIs" + }, + "item.label.Other": { + "message": "Other", + "description": "Navbar item with label Other" + }, + "item.label.Dump Viewer": { + "message": "Dump Viewer", + "description": "Navbar item with label Dump Viewer" + }, + "item.label.Hosting": { + "message": "Hosting", + "description": "Navbar item with label Hosting" + } +} \ No newline at end of file diff --git a/i18n/de/code.json b/i18n/de/code.json new file mode 100644 index 0000000..7251b24 --- /dev/null +++ b/i18n/de/code.json @@ -0,0 +1,1023 @@ +{ + "pages.main.title": { + "message": "Revolutionize Your Minecraft Server" + }, + "pages.main.subtitle": { + "message": "Enable clients from Minecraft Bedrock Edition to join your Minecraft Java server" + }, + "components.homepage_features.1.line1": { + "message": "Geyser is a program that allows Minecraft: Bedrock Edition clients to join Minecraft: Java Edition servers, allowing for true crossplay between both editions of the game." + }, + "components.homepage_features.1.line2": { + "message": "The ultimate goal of this project is to allow Minecraft: Bedrock Edition users to join Minecraft: Java Edition servers as seamlessly as possible." + }, + "components.homepage_features.2": { + "message": "Geyser acts as a translator which sits between the Bedrock client and the Java server. It takes data from the Bedrock client and translates it into a format the Java server understands and vice versa. Geyser works with any modern Minecraft version and can be installed either as a plugin or ran as a standalone program." + }, + "components.homepage_features.3.line1": { + "message": "Geyser can be joined from Bedrock clients on Windows 10/11, iOS, Android, and even consoles. Geyser works with a wide array of hosting providers, but can also be used as its own standalone proxy to join any Minecraft server!" + }, + "components.homepage_features.3.line2": { + "message": "If you are a server owner, you can install our Floodgate plugin which allows Xbox Live authenticated Bedrock users to join without a Java Edition account!" + }, + "pages.download.title": { + "message": "Download" + }, + "pages.download.subheading": { + "message": "Download the latest versions of our various projects." + }, + "pages.download.description.geyser": { + "message": "A bridge/proxy allowing you to connect to Minecraft: Java Edition servers with Minecraft: Bedrock Edition." + }, + "pages.download.description.floodgate": { + "message": "Hybrid mode plugin to allow for connections from Geyser to join online mode servers." + }, + "pages.download.description.geyserconnect": { + "message": "A Geyser extension allowing players to connect to different Java or Geyser servers." + }, + "pages.download.description.thirdpartycosmetics": { + "message": "An extension that adds support for loading ears and other third party cosmetics on java players" + }, + "pages.dumpviewer.title": { + "message": "Dump Viewer" + }, + "pages.dumpviewer.subheading": { + "message": "View the breakdown of your Geyser dump." + }, + "pages.dumpviewer.enterdumpid": { + "message": "Enter Dump ID or URL below and click load." + }, + "pages.dumpviewer.button.load": { + "message": "Load" + }, + "pages.dumpviewer.versions": { + "message": "Versions" + }, + "pages.dumpviewer.versions.geyserver": { + "message": "Geyser Version" + }, + "pages.dumpviewer.versions.javaver": { + "message": "Java Version" + }, + "pages.dumpviewer.versions.os": { + "message": "Operating System" + }, + "pages.dumpviewer.geyserver": { + "message": "Geyser Version" + }, + "pages.dumpviewer.geyserver.build": { + "message": "Build" + }, + "pages.dumpviewer.geyserver.commit": { + "message": "Commit Hash" + }, + "pages.dumpviewer.geyserver.branch": { + "message": "Branch" + }, + "pages.dumpviewer.platform": { + "message": "Platform Info" + }, + "pages.dumpviewer.platform.id": { + "message": "Platform Identifier" + }, + "pages.dumpviewer.platform.name": { + "message": "Platform Name" + }, + "pages.dumpviewer.platform.version": { + "message": "Platform Version" + }, + "pages.dumpviewer.platform.apiver": { + "message": "Platform API Version" + }, + "pages.dumpviewer.platform.onlinemode": { + "message": "Online Mode" + }, + "pages.dumpviewer.sysinfo": { + "message": "System Info" + }, + "pages.dumpviewer.cpucount": { + "message": "CPU Count" + }, + "pages.dumpviewer.cpuname": { + "message": "CPU Name" + }, + "pages.dumpviewer.ram": { + "message": "RAM" + }, + "pages.dumpviewer.javaname": { + "message": "Java Name" + }, + "pages.dumpviewer.javavendor": { + "message": "Java Vendor" + }, + "pages.dumpviewer.dockercheck": { + "message": "Uses Docker?" + }, + "pages.dumpviewer.plugins": { + "message": "Plugins" + }, + "pages.dumpviewer.plugins.noplugins": { + "message": "No plugins to show." + }, + "pages.dumpviewer.plugins.helptext": { + "message": "Click on a plugin to view more information." + }, + "pages.dumpviewer.config": { + "message": "Config" + }, + "pages.dumpviewer.viewsource": { + "message": "View dump source" + }, + "theme.ErrorPageContent.title": { + "message": "This page crashed.", + "description": "The title of the fallback page when the page crashed" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "Scroll back to top", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.archive.title": { + "message": "Archive", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "Archive", + "description": "The page & hero description of the blog archive page" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "Blog list page navigation", + "description": "The ARIA label for the blog pagination" + }, + "theme.blog.paginator.newerEntries": { + "message": "Newer Entries", + "description": "The label used to navigate to the newer blog posts page (previous page)" + }, + "theme.blog.paginator.olderEntries": { + "message": "Older Entries", + "description": "The label used to navigate to the older blog posts page (next page)" + }, + "theme.blog.post.paginator.navAriaLabel": { + "message": "Blog post page navigation", + "description": "The ARIA label for the blog posts pagination" + }, + "theme.blog.post.paginator.newerPost": { + "message": "Newer Post", + "description": "The blog post button label to navigate to the newer/previous post" + }, + "theme.blog.post.paginator.olderPost": { + "message": "Older Post", + "description": "The blog post button label to navigate to the older/next post" + }, + "theme.blog.post.plurals": { + "message": "One post|{count} posts", + "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.blog.tagTitle": { + "message": "{nPosts} tagged with \"{tagName}\"", + "description": "The title of the page for a blog tag" + }, + "theme.tags.tagsPageLink": { + "message": "View All Tags", + "description": "The label of the link targeting the tag list page" + }, + "theme.colorToggle.ariaLabel": { + "message": "Switch between dark and light mode (currently {mode})", + "description": "The ARIA label for the navbar color mode toggle" + }, + "theme.colorToggle.ariaLabel.mode.dark": { + "message": "dark mode", + "description": "The name for the dark color mode" + }, + "theme.colorToggle.ariaLabel.mode.light": { + "message": "light mode", + "description": "The name for the light color mode" + }, + "theme.docs.DocCard.categoryDescription.plurals": { + "message": "1 item|{count} items", + "description": "The default description for a category card in the generated index about how many items this category includes" + }, + "theme.docs.breadcrumbs.navAriaLabel": { + "message": "Breadcrumbs", + "description": "The ARIA label for the breadcrumbs" + }, + "theme.docs.paginator.navAriaLabel": { + "message": "Docs pages", + "description": "The ARIA label for the docs pagination" + }, + "theme.docs.paginator.previous": { + "message": "Previous", + "description": "The label used to navigate to the previous doc" + }, + "theme.docs.paginator.next": { + "message": "Next", + "description": "The label used to navigate to the next doc" + }, + "theme.docs.tagDocListPageTitle.nDocsTagged": { + "message": "One doc tagged|{count} docs tagged", + "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.tagDocListPageTitle": { + "message": "{nDocsTagged} with \"{tagName}\"", + "description": "The title of the page for a docs tag" + }, + "theme.docs.versionBadge.label": { + "message": "Version: {versionLabel}" + }, + "theme.docs.versions.unreleasedVersionLabel": { + "message": "This is unreleased documentation for {siteTitle} {versionLabel} version.", + "description": "The label used to tell the user that he's browsing an unreleased doc version" + }, + "theme.docs.versions.unmaintainedVersionLabel": { + "message": "This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.", + "description": "The label used to tell the user that he's browsing an unmaintained doc version" + }, + "theme.docs.versions.latestVersionSuggestionLabel": { + "message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).", + "description": "The label used to tell the user to check the latest version" + }, + "theme.docs.versions.latestVersionLinkLabel": { + "message": "latest version", + "description": "The label used for the latest version suggestion link label" + }, + "theme.common.editThisPage": { + "message": "Edit this page", + "description": "The link label to edit the current page" + }, + "theme.common.headingLinkTitle": { + "message": "Direct link to {heading}", + "description": "Title for link to heading" + }, + "theme.lastUpdated.atDate": { + "message": " on {date}", + "description": "The words used to describe on which date a page has been last updated" + }, + "theme.lastUpdated.byUser": { + "message": " by {user}", + "description": "The words used to describe by who the page has been last updated" + }, + "theme.lastUpdated.lastUpdatedAtBy": { + "message": "Last updated{atDate}{byUser}", + "description": "The sentence used to display when a page has been last updated, and by who" + }, + "theme.NotFound.title": { + "message": "Page Not Found", + "description": "The title of the 404 page" + }, + "theme.navbar.mobileVersionsDropdown.label": { + "message": "Versions", + "description": "The label for the navbar versions dropdown on mobile view" + }, + "theme.tags.tagsListLabel": { + "message": "Tags:", + "description": "The label alongside a tag list" + }, + "theme.AnnouncementBar.closeButtonAriaLabel": { + "message": "Close", + "description": "The ARIA label for close button of announcement bar" + }, + "theme.admonition.caution": { + "message": "caution", + "description": "The default label used for the Caution admonition (:::caution)" + }, + "theme.admonition.danger": { + "message": "danger", + "description": "The default label used for the Danger admonition (:::danger)" + }, + "theme.admonition.info": { + "message": "info", + "description": "The default label used for the Info admonition (:::info)" + }, + "theme.admonition.note": { + "message": "note", + "description": "The default label used for the Note admonition (:::note)" + }, + "theme.admonition.tip": { + "message": "tip", + "description": "The default label used for the Tip admonition (:::tip)" + }, + "theme.admonition.warning": { + "message": "warning", + "description": "The default label used for the Warning admonition (:::warning)" + }, + "theme.blog.sidebar.navAriaLabel": { + "message": "Blog recent posts navigation", + "description": "The ARIA label for recent posts in the blog sidebar" + }, + "theme.CodeBlock.copied": { + "message": "Copied", + "description": "The copied button label on code blocks" + }, + "theme.CodeBlock.copyButtonAriaLabel": { + "message": "Copy code to clipboard", + "description": "The ARIA label for copy code blocks button" + }, + "theme.CodeBlock.copy": { + "message": "Copy", + "description": "The copy button label on code blocks" + }, + "theme.CodeBlock.wordWrapToggle": { + "message": "Toggle word wrap", + "description": "The title attribute for toggle word wrapping button of code block lines" + }, + "theme.DocSidebarItem.expandCategoryAriaLabel": { + "message": "Expand sidebar category '{label}'", + "description": "The ARIA label to expand the sidebar category" + }, + "theme.DocSidebarItem.collapseCategoryAriaLabel": { + "message": "Collapse sidebar category '{label}'", + "description": "The ARIA label to collapse the sidebar category" + }, + "theme.NavBar.navAriaLabel": { + "message": "Main", + "description": "The ARIA label for the main navigation" + }, + "theme.NotFound.p1": { + "message": "We could not find what you were looking for.", + "description": "The first paragraph of the 404 page" + }, + "theme.NotFound.p2": { + "message": "Please contact the owner of the site that linked you to the original URL and let them know their link is broken.", + "description": "The 2nd paragraph of the 404 page" + }, + "theme.navbar.mobileLanguageDropdown.label": { + "message": "Languages", + "description": "The label for the mobile language switcher dropdown" + }, + "theme.TOCCollapsible.toggleButtonLabel": { + "message": "On this page", + "description": "The label used by the button on the collapsible TOC component" + }, + "theme.blog.post.readMore": { + "message": "Read More", + "description": "The label used in blog post item excerpts to link to full blog posts" + }, + "theme.blog.post.readMoreLabel": { + "message": "Read more about {title}", + "description": "The ARIA label for the link to full blog posts from excerpts" + }, + "theme.blog.post.readingTime.plurals": { + "message": "One min read|{readingTime} min read", + "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.breadcrumbs.home": { + "message": "Home page", + "description": "The ARIA label for the home page in the breadcrumbs" + }, + "theme.docs.sidebar.collapseButtonTitle": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.collapseButtonAriaLabel": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.navAriaLabel": { + "message": "Docs sidebar", + "description": "The ARIA label for the sidebar navigation" + }, + "theme.docs.sidebar.closeSidebarButtonAriaLabel": { + "message": "Close navigation bar", + "description": "The ARIA label for close button of mobile sidebar" + }, + "theme.docs.sidebar.expandButtonTitle": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.docs.sidebar.expandButtonAriaLabel": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": { + "message": "← Back to main menu", + "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)" + }, + "theme.docs.sidebar.toggleSidebarButtonAriaLabel": { + "message": "Toggle navigation bar", + "description": "The ARIA label for hamburger menu button of mobile navigation" + }, + "theme.SearchBar.seeAll": { + "message": "See all {count} results" + }, + "theme.SearchPage.documentsFound.plurals": { + "message": "One document found|{count} documents found", + "description": "Pluralized label for \"{count} documents found\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.SearchPage.existingResultsTitle": { + "message": "Search results for \"{query}\"", + "description": "The search page title for non-empty query" + }, + "theme.SearchPage.emptyResultsTitle": { + "message": "Search the documentation", + "description": "The search page title for empty query" + }, + "theme.SearchPage.inputPlaceholder": { + "message": "Type your search here", + "description": "The placeholder for search page input" + }, + "theme.SearchPage.inputLabel": { + "message": "Search", + "description": "The ARIA label for search page input" + }, + "theme.SearchPage.algoliaLabel": { + "message": "Search by Algolia", + "description": "The ARIA label for Algolia mention" + }, + "theme.SearchPage.noResultsText": { + "message": "No results were found", + "description": "The paragraph for empty search result" + }, + "theme.SearchPage.fetchingNewResults": { + "message": "Fetching new results...", + "description": "The paragraph for fetching new search results" + }, + "theme.SearchBar.label": { + "message": "Search", + "description": "The ARIA label and placeholder for search button" + }, + "theme.SearchModal.searchBox.resetButtonTitle": { + "message": "Clear the query", + "description": "The label and ARIA label for search box reset button" + }, + "theme.SearchModal.searchBox.cancelButtonText": { + "message": "Cancel", + "description": "The label and ARIA label for search box cancel button" + }, + "theme.SearchModal.startScreen.recentSearchesTitle": { + "message": "Recent", + "description": "The title for recent searches" + }, + "theme.SearchModal.startScreen.noRecentSearchesText": { + "message": "No recent searches", + "description": "The text when no recent searches" + }, + "theme.SearchModal.startScreen.saveRecentSearchButtonTitle": { + "message": "Save this search", + "description": "The label for save recent search button" + }, + "theme.SearchModal.startScreen.removeRecentSearchButtonTitle": { + "message": "Remove this search from history", + "description": "The label for remove recent search button" + }, + "theme.SearchModal.startScreen.favoriteSearchesTitle": { + "message": "Favorite", + "description": "The title for favorite searches" + }, + "theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle": { + "message": "Remove this search from favorites", + "description": "The label for remove favorite search button" + }, + "theme.SearchModal.errorScreen.titleText": { + "message": "Unable to fetch results", + "description": "The title for error screen of search modal" + }, + "theme.SearchModal.errorScreen.helpText": { + "message": "You might want to check your network connection.", + "description": "The help text for error screen of search modal" + }, + "theme.SearchModal.footer.selectText": { + "message": "to select", + "description": "The explanatory text of the action for the enter key" + }, + "theme.SearchModal.footer.selectKeyAriaLabel": { + "message": "Enter key", + "description": "The ARIA label for the Enter key button that makes the selection" + }, + "theme.SearchModal.footer.navigateText": { + "message": "to navigate", + "description": "The explanatory text of the action for the Arrow up and Arrow down key" + }, + "theme.SearchModal.footer.navigateUpKeyAriaLabel": { + "message": "Arrow up", + "description": "The ARIA label for the Arrow up key button that makes the navigation" + }, + "theme.SearchModal.footer.navigateDownKeyAriaLabel": { + "message": "Arrow down", + "description": "The ARIA label for the Arrow down key button that makes the navigation" + }, + "theme.SearchModal.footer.closeText": { + "message": "to close", + "description": "The explanatory text of the action for Escape key" + }, + "theme.SearchModal.footer.closeKeyAriaLabel": { + "message": "Escape key", + "description": "The ARIA label for the Escape key button that close the modal" + }, + "theme.SearchModal.footer.searchByText": { + "message": "Search by", + "description": "The text explain that the search is making by Algolia" + }, + "theme.SearchModal.noResultsScreen.noResultsText": { + "message": "No results for", + "description": "The text explains that there are no results for the following search" + }, + "theme.SearchModal.noResultsScreen.suggestedQueryText": { + "message": "Try searching for", + "description": "The text for the suggested query when no results are found for the following search" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsText": { + "message": "Believe this query should return results?", + "description": "The text for the question where the user thinks there are missing results" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsLinkText": { + "message": "Let us know.", + "description": "The text for the link to report missing results" + }, + "theme.SearchModal.placeholder": { + "message": "Search docs", + "description": "The placeholder of the input of the DocSearch pop-up modal" + }, + "theme.ErrorPageContent.tryAgain": { + "message": "Try again", + "description": "The label of the button to try again rendering when the React error boundary captures an error" + }, + "theme.common.skipToMainContent": { + "message": "Skip to main content", + "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation" + }, + "theme.tags.tagsPageTitle": { + "message": "Tags", + "description": "The title of the tag list page" + }, + "pages.download.description.hurricane": { + "message": "A plugin with various workarounds for Geyser players that modify the server in order to achieve their goal." + }, + "theme.blog.author.pageTitle": { + "message": "{authorName} - {nPosts}", + "description": "The title of the page for a blog author" + }, + "theme.blog.authorsList.pageTitle": { + "message": "Authors", + "description": "The title of the authors page" + }, + "theme.blog.authorsList.viewAll": { + "message": "View all authors", + "description": "The label of the link targeting the blog authors page" + }, + "theme.blog.author.noPosts": { + "message": "This author has not written any posts yet.", + "description": "The text for authors with 0 blog post" + }, + "theme.contentVisibility.unlistedBanner.title": { + "message": "Unlisted page", + "description": "The unlisted content banner title" + }, + "theme.contentVisibility.unlistedBanner.message": { + "message": "This page is unlisted. Search engines will not index it, and only users having a direct link can access it.", + "description": "The unlisted content banner message" + }, + "theme.contentVisibility.draftBanner.title": { + "message": "Draft page", + "description": "The draft content banner title" + }, + "theme.contentVisibility.draftBanner.message": { + "message": "This page is a draft. It will only be visible in dev and be excluded from the production build.", + "description": "The draft content banner message" + }, + "mdx.setup.host_provider": { + "message": "Host Provider" + }, + "mdx.setup.self_host": { + "message": "Self Host" + }, + "mdx.setup.paper_spigot": { + "message": "Paper / Spigot" + }, + "mdx.setup.modded_servers": { + "message": "Modded Servers" + }, + "mdx.setup.proxy_servers": { + "message": "Proxy Servers" + }, + "mdx.setup.viaproxy": { + "message": "ViaProxy" + }, + "mdx.setup.standalone": { + "message": "Standalone" + }, + "pages.download.description.offhandextension": { + "message": "An extension that allows Bedrock players to switch their offhand and mainhand item by emoting." + }, + "pages.download.description.rainbow": { + "message": "A Minecraft mod to generate Geyser item mappings and bedrock resourcepacks for use with Geyser's custom item API (v2)." + }, + "pages.download.description.hydraulic": { + "message": "A companion mod to Geyser which allows for Bedrock players to join modded Minecraft: Java Edition servers." + }, + "pages.download.description.thunder": { + "message": "A java application to convert simple Java Edition resource packs to Bedrock Edition ones." + }, + "pages.dumpviewer.extensions": { + "message": "Extensions" + }, + "pages.dumpviewer.extensions.noextensions": { + "message": "No extensions to show." + }, + "pages.dumpviewer.extensions.helptext": { + "message": "Click on an extension to view more information." + }, + "mdx.setup.fabric": { + "message": "Fabric" + }, + "mdx.setup.neoforge": { + "message": "NeoForge" + }, + "mdx.setup.installing_geyser": { + "message": "Installing Geyser" + }, + "mdx.setup.download_jar": { + "message": "Download {jarName}." + }, + "mdx.setup.place_jar": { + "message": "Place the {jarName} in the {jarDirectory} folder." + }, + "mdx.setup.restart_server": { + "message": "Restart the server." + }, + "mdx.setup.additional_steps": { + "message": "Additional Steps" + }, + "mdx.setup.connecting_on_bedrock": { + "message": "Connecting on Bedrock" + }, + "providers.config.templates.java_address": { + "message": "Set `address` in the `bedrock` section to the public address of the Java server." + }, + "providers.config.templates.custom_port_dedicated_ip": { + "message": "This host may only give out a separate port with a dedicated IP address." + }, + "providers.warnings.ovh_firewall_misconfig": { + "message": "To fix random `Unable to Connect` issues, see [here](/wiki/geyser/port-forwarding/#ovh-and-soyoustart)." + }, + "providers.config.templates.install_location.plugin_list": { + "message": "Install Geyser through the plugin or mod list provided by the host." + }, + "providers.config.templates.install_location.enable_bedrock_crossplay": { + "message": "Select the 'Enable Bedrock crossplay?' option when changing your server software to automatically install and configure Geyser and Floodgate." + }, + "providers.config.templates.info.geyser_installed_by_default": { + "message": "Geyser is installed and configured on all servers by default." + }, + "mdx.setup.checking_server_version": { + "message": "Checking your server version" + }, + "mdx.setup.restart_geyser": { + "message": "Restart Geyser." + }, + "mdx.setup.https_note": { + "message": "Unless signaling runs over {https}, Minecraft asks players whether they trust the server the first time they join." + }, + "mdx.setup.configuring_geyser": { + "message": "Configuring Geyser" + }, + "mdx.setup.open_config_simple": { + "message": "Now open the file {configLocation}. Find the part that starts with {bedrock}, and change the lines shown below." + }, + "mdx.setup.preconfigured": { + "message": "No changes needed. {name} automatically configures Geyser." + }, + "mdx.setup.transport_nethernet_simple": { + "message": "NetherNet is supported fully by 26.50+. If you'd like to also have working MOTD and player count for older versions, you will need to set up both NetherNet and Raknet." + }, + "mdx.setup.transport_both_compat": { + "message": "Also accepts RakNet, for additional compatibility: some Bedrock versions, such as 26.40, fetch the server's MOTD and player count over RakNet. This option needs a separate UDP port for NetherNet." + }, + "mdx.setup.placeholder_word": { + "message": "Replace this" + }, + "mdx.setup.replace_with_simple": { + "message": "With this" + }, + "mdx.setup.placeholder_java_port": { + "message": "The port of the Java server." + }, + "mdx.setup.placeholder_java_port_udp": { + "message": "A UDP port for NetherNet, other than {port}. This can be the Java server's port: the Java server only uses it over TCP, so Geyser can use it over UDP. Any other available UDP port works too." + }, + "mdx.setup.placeholder_second_available_port": { + "message": "An available UDP port for NetherNet, other than {port}. Open it for UDP." + }, + "mdx.setup.raknet_on_port": { + "message": "RakNet uses {port} over UDP, so that port has to be open for UDP as well." + }, + "mdx.setup.summary.nethernet_reported_generic": { + "message": "Reported to work with NetherNet" + }, + "mdx.setup.summary.supporter_configures": { + "message": "{name} configures Geyser for you automatically, including NetherNet." + }, + "mdx.setup.summary.updated": { + "message": "Instructions last updated on {date}" + }, + "mdx.setup.badge.gold": { + "message": "Gold supporter" + }, + "mdx.setup.badge.silver": { + "message": "Silver supporter" + }, + "mdx.setup.badge.bronze": { + "message": "Bronze supporter" + }, + "mdx.setup.unconfirmed_title": { + "message": "Not checked for NetherNet yet" + }, + "mdx.setup.warning_title": { + "message": "Warning" + }, + "mdx.setup.unconfirmed_reach_out_update": { + "message": "These instructions have not been checked for NetherNet yet. If Bedrock players can't join, reach out to {name} to get instructions on how to use Geyser, and let us know on {discord} so we can update this guide." + }, + "mdx.setup.try_not_listed": { + "message": "If your host cannot give you a separate port, follow the {notListed} instead. Players then join through {warden}, an external signaling service." + }, + "mdx.setup.try_not_listed.link": { + "message": "\"Not listed\" guide for using only the Java server's port" + }, + "mdx.setup.no_signaling": { + "message": "{name} supports neither built-in nor external signaling, so Bedrock players cannot connect over NetherNet." + }, + "mdx.setup.hosting_provider_article_short": { + "message": "Host's Geyser guide" + }, + "mdx.setup.hosting_provider_website_short": { + "message": "Website" + }, + "mdx.setup.hosting_provider_support_short": { + "message": "Support" + }, + "mdx.setup.hosting_provider_discord_short": { + "message": "Discord" + }, + "mdx.setup.not_listed.tab_allocated": { + "message": "I can allocate ports" + }, + "mdx.setup.not_listed.tab_java_only": { + "message": "I only have the Java server port" + }, + "components.provider.open_collaboration_group": { + "message": "Hosts that support Geyser's development" + }, + "components.provider.other_group": { + "message": "Other providers" + }, + "mdx.setup.connect.port_java": { + "message": "Your Java server's port" + }, + "mdx.setup.connect.port_config_step": { + "message": "The port you set in \"Configuring Geyser\"" + }, + "mdx.setup.connect.intro": { + "message": "In Minecraft: Bedrock Edition, go to Play, then Servers, and select Add Server. Fill it in like this:" + }, + "mdx.setup.connect.add_server": { + "message": "Add Server" + }, + "mdx.setup.connect.server_name": { + "message": "Server Name" + }, + "mdx.setup.connect.server_name_value": { + "message": "Anything you like" + }, + "mdx.setup.connect.server_address": { + "message": "Server Address" + }, + "mdx.setup.connect.server_address_value": { + "message": "Your Java server's address" + }, + "mdx.setup.connect.port": { + "message": "Port" + }, + "mdx.setup.transport_nethernet_tab": { + "message": "NetherNet" + }, + "mdx.setup.transport_both_tab": { + "message": "NetherNet and RakNet" + }, + "providers.ports.assign": { + "message": "Assign a port in your host's panel, open for both TCP and UDP." + }, + "providers.ports.allocated": { + "message": "Pick an available port from the ports allocated to your server, open for both TCP and UDP." + }, + "providers.ports.ask_host": { + "message": "Ask your host for a port that is open for both TCP and UDP." + }, + "pages.hosting.tier.gold": { + "message": "Gold supporters" + }, + "pages.hosting.tier.silver": { + "message": "Silver supporters" + }, + "pages.hosting.tier.bronze": { + "message": "Bronze supporters" + }, + "pages.hosting.card.website": { + "message": "Website" + }, + "pages.hosting.card.setup": { + "message": "Setup guide" + }, + "pages.hosting.title": { + "message": "Hosting Providers" + }, + "pages.hosting.subheading": { + "message": "Hosting providers that support the development of Geyser." + }, + "pages.hosting.intro": { + "message": "The hosts below support Geyser and related projects through {openCollaboration}. Their support helps fund work on Geyser, such as keeping up with major changes to Bedrock Edition, like the switch to NetherNet. All hosts listed below also configure Geyser automatically when installed, making using Geyser easier than ever. We'd like to thank them all for their support." + }, + "pages.hosting.empty": { + "message": "No hosting providers are listed yet." + }, + "pages.hosting.other.title": { + "message": "Using another host?" + }, + "pages.hosting.other.text": { + "message": "Hosts not being listed here does not mean Geyser won't run there. The {setupGuide} includes community collected notes for many other hosts, and general instructions for those not listed." + }, + "pages.hosting.other.setup_guide": { + "message": "setup guide" + }, + "pages.hosting.meta.title": { + "message": "Hosting Providers" + }, + "pages.hosting.meta.description": { + "message": "Hosting providers that support the development of Geyser through Open Collaboration." + }, + "pages.download.description.floodgatedatabases": { + "message": "Database extension jars for Floodgate local linking." + }, + "providers.ports.from_host": { + "message": "The Bedrock port your host shows you." + }, + "providers.config.templates.info.only_serves_region": { + "message": "This host only provides service in {region}." + }, + "mdx.setup.velocity": { + "message": "Velocity" + }, + "mdx.setup.bungeecord": { + "message": "BungeeCord" + }, + "providers.ports.new_port": { + "message": "Open a new port in your server panel, open for both TCP and UDP, or ask your host for one if the panel has no option for it." + }, + "mdx.setup.supported_versions": { + "message": "Supported versions" + }, + "mdx.setup.restart_velocity": { + "message": "Restart Velocity." + }, + "mdx.setup.restart_bungeecord": { + "message": "Restart BungeeCord." + }, + "mdx.setup.restart_viaproxy": { + "message": "Restart ViaProxy." + }, + "mdx.setup.fabric_dependency": { + "message": "If it is not installed already, download {fabricApi} and place it in the same folder." + }, + "mdx.setup.version_step_viaversion": { + "message": "If your server is not running {version}, you will need to install {viaVersion}. For more information, see {supportedVersions}." + }, + "mdx.setup.version_step_proxy": { + "message": "All servers on the network must accept {version} Java clients, as Geyser imitates one." + }, + "mdx.setup.proxy_install_only": { + "message": "Install Geyser only on the {proxy} server! You can install Floodgate on all servers for better skin support and network-wide Floodgate API availability for other plugins." + }, + "mdx.setup.modded_requirements": { + "message": "{jarName} runs only on a {version} server, and only works alongside server-side mods. Mods that players also need to install on their client will not work. See {supportedVersions} for more details." + }, + "mdx.setup.self_port_choice": { + "message": "Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP, so it cannot be the port of the {platform} server." + }, + "mdx.setup.self_port_choice_standalone": { + "message": "Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP." + }, + "mdx.setup.self_port_sharing": { + "message": "{important}: No other program can use the Geyser port, over either protocol. This includes programs that use UDP, such as voice chat mods or Query, and programs that use TCP, such as another server, a web map, or a website." + }, + "mdx.setup.self_port_sharing.important": { + "message": "Important" + }, + "mdx.setup.connect_local_title": { + "message": "Connecting from the same network" + }, + "mdx.setup.connect_local": { + "message": "On the same device as the server, connect with {localhost} or {loopback} as the address. Other devices in the same local network can use your local IPv4 address, which starts with {ten} or {oneNineTwo}." + }, + "mdx.setup.connect_lan": { + "message": "Alternatively, open Minecraft: Bedrock Edition and join the LAN server in the {friends} tab." + }, + "mdx.setup.connect_lan.friends": { + "message": "Friends" + }, + "mdx.setup.connect_remote_title": { + "message": "Connecting from a different network" + }, + "mdx.setup.connect_remote": { + "message": "To let players from outside your network join, you need to make the Geyser port reachable from the internet." + }, + "mdx.setup.connect_tcp_udp": { + "message": "The Geyser port has to be forwarded for both TCP and UDP. Before NetherNet, forwarding UDP was enough. Now, players use TCP to find your server and UDP to play on it, so without TCP your server will not show up. If you use the \"NetherNet and RakNet\" option, also forward the {webrtcPort} for UDP." + }, + "mdx.setup.connect_options": { + "message": "You have two options:" + }, + "mdx.setup.connect_port_forwarding": { + "message": "{portForwarding}: open the Geyser port (e.g. 19132) for both TCP and UDP in your router and in your firewall. Players then connect with your public IPv4 address and the port. For detailed steps, see {guide}." + }, + "mdx.setup.connect_port_forwarding.title": { + "message": "Port forwarding" + }, + "mdx.setup.connect_port_forwarding.guide": { + "message": "Port forwarding" + }, + "mdx.setup.connect_playit": { + "message": "{playit}: if you cannot open a port, or do not want to expose your home IP address, playit.gg can create a tunnel for you. See {guide}. That guide was written for RakNet. For NetherNet, see {status}. Ngrok does not work, since it does not support UDP." + }, + "mdx.setup.connect_playit.guide": { + "message": "playit.gg Setup" + }, + "mdx.setup.connect_playit.status": { + "message": "NetherNet support on playit.gg" + }, + "mdx.setup.https_step_title": { + "message": "Recommended: Set up HTTPS for signaling" + }, + "mdx.setup.https_step": { + "message": "Geyser's built-in signaling server uses plain HTTP by default, so Minecraft shows players a \"Trust on First Use?\" prompt the first time they join. To avoid this prompt, serve signaling over HTTPS, as explained in {httpsGuide}. Some external signaling services, such as {warden}, provide HTTPS as well." + }, + "mdx.setup.https_step.guide": { + "message": "HTTPS for NetherNet" + }, + "mdx.setup.floodgate_info": { + "message": "To allow Bedrock Edition players to join your server without a paid Java Edition account, you can use {floodgate}." + }, + "mdx.setup.viaproxy_not_plugin.title": { + "message": "ViaProxy is not a plugin or mod" + }, + "mdx.setup.viaproxy_not_plugin": { + "message": "ViaProxy is a standalone program that runs separately from your Minecraft server. Do not put the ViaProxy jar into your server's {plugins} or {mods} folder. To run Geyser as a plugin or mod on your server instead, pick your server software in the tabs above." + }, + "mdx.setup.viaproxy_setup": { + "message": "Set up {viaProxy}." + }, + "mdx.setup.viaproxy_accounts": { + "message": "If you use the ViaProxy GUI, you can use its account management to join online mode servers with Bedrock Edition. If you use the ViaProxy CLI and want Bedrock players to join your online mode server, install and set up {floodgate}." + }, + "mdx.setup.viaproxy_auth_type": { + "message": "ViaProxy manages the {authType} setting itself, so its value in the config is ignored." + }, + "mdx.setup.standalone_java": { + "message": "You need Java 21 or newer to run Geyser. To run Geyser Standalone on Android, see the end of this page." + }, + "mdx.setup.standalone_not_plugin": { + "message": "Geyser Standalone is not a plugin or mod. It is a separate Java program that runs alongside your Java Edition server." + }, + "mdx.setup.standalone_download": { + "message": "Download {standalone}." + }, + "mdx.setup.standalone_folder": { + "message": "Create a new folder for Geyser, and put the jar in it." + }, + "mdx.setup.standalone_start": { + "message": "Start Geyser Standalone:" + }, + "mdx.setup.standalone_gui": { + "message": "{gui} (recommended): double-click the jar file. Geyser creates all the files it needs." + }, + "mdx.setup.standalone_console": { + "message": "{console}: create a startup script, like the one you would use for a Paper server. See {startupScript} for what to put into it. Run it, and Geyser creates all the files it needs." + }, + "mdx.setup.standalone_console.console": { + "message": "Console" + }, + "mdx.setup.standalone_console.startup_script": { + "message": "Creating a Startup Script" + }, + "mdx.setup.standalone_remote_intro": { + "message": "To choose which Java Edition server Geyser Standalone sends players to, find the {java} section:" + }, + "mdx.setup.standalone_remote": { + "message": "Change {address} to the Java server's address, or leave it as it is if the server runs on the same machine as Geyser. Then change {port} to the Java server's port. Set {authType} to {floodgate} if you set up Floodgate on the Java server, otherwise to {online} for an online mode server or {offline} for an offline mode server. To use Floodgate with Geyser Standalone, see {floodgateSetup}." + }, + "mdx.setup.standalone_remote.floodgate_setup": { + "message": "Floodgate Setup" + }, + "mdx.setup.standalone_android_title": { + "message": "Running Geyser Standalone on Android" + }, + "mdx.setup.standalone_android_caution": { + "message": "Apps such as Termux can run Geyser on Android, but how well this works depends on how powerful your device is. Do so at your own risk." + }, + "mdx.setup.standalone_termux_install": { + "message": "Download and install {termux}." + }, + "mdx.setup.run_command": { + "message": "Run {command}." + }, + "mdx.setup.standalone_termux_script": { + "message": "Alternatively, there is an automated setup script for clean Termux installs. It might not work for everyone, so try it if the steps above do not work:" + } +} \ No newline at end of file diff --git a/i18n/de/docusaurus-plugin-content-blog/options.json b/i18n/de/docusaurus-plugin-content-blog/options.json new file mode 100644 index 0000000..9fa6586 --- /dev/null +++ b/i18n/de/docusaurus-plugin-content-blog/options.json @@ -0,0 +1,10 @@ +{ + "description": { + "message": "Blog", + "description": "The description for the blog used in SEO" + }, + "sidebar.title": { + "message": "Recent posts", + "description": "The label for the left sidebar" + } +} \ No newline at end of file diff --git a/i18n/de/docusaurus-plugin-content-docs/current.json b/i18n/de/docusaurus-plugin-content-docs/current.json new file mode 100644 index 0000000..d1ebec4 --- /dev/null +++ b/i18n/de/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,34 @@ +{ + "version.label": { + "message": "Next", + "description": "The label for version current" + }, + "sidebar.geyserSidebar.category.Setup": { + "message": "Einrichtung", + "description": "The label for category Setup in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Common Issues": { + "message": "Common Issues", + "description": "The label for category Common Issues in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Configuring Geyser": { + "message": "Configuring Geyser", + "description": "The label for category Configuring Geyser in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.FAQ": { + "message": "FAQ", + "description": "The label for category FAQ in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Geyser API": { + "message": "Geyser API", + "description": "The label for category Geyser API in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.link.Hosting Providers": { + "message": "Hosting Providers", + "description": "The label for link Hosting Providers in sidebar geyserSidebar, linking to /hosting" + }, + "sidebar.geyserSidebar.category.Custom Content": { + "message": "Custom Content", + "description": "The label for category Custom Content in sidebar geyserSidebar" + } +} \ No newline at end of file diff --git a/i18n/de/docusaurus-plugin-content-docs/current/geyser/commands.md b/i18n/de/docusaurus-plugin-content-docs/current/geyser/commands.md new file mode 100644 index 0000000..0492482 --- /dev/null +++ b/i18n/de/docusaurus-plugin-content-docs/current/geyser/commands.md @@ -0,0 +1,83 @@ +--- +title: Commands and Permissions +description: Commands and their associated permission nodes for Geyser. +crowdin_sync: true +crowdin_page_id: cd92ff4f-9105-46a2-8696-8b0e2f8b9d31 +--- + +# Commands and Permissions + +Geyser features many built-in commands that can be used by players or server owners. + +:::info + +When using BungeeCord and Velocity, you will need to use a permission plugin such as [LuckPerms](https://luckperms.net/) +on the proxy server to assign permissions to players. Assigning permissions on the backend servers will not work. + +::: + +## Geyser commands & their permissions {#geyser-commands--their-permissions} + +| Command | Permission | Description | +| :-----------------------------------: | :---------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | +| `geyser`
Geyser root command | `geyser.command` | The permission required to see/run any Geyser commands. | +| `geyser help`
`geyser ?` | `geyser.command.help` | Shows help for all registered commands. | +| `geyser advancements` | `geyser.command.advancements` | Open the Java advancements menu. | +| `geyser dump` | `geyser.command.dump` | Dumps Geyser debug information for bug reports. | +| `geyser list` | `geyser.command.list` | List all players connected through Geyser. | +| `geyser nethernet` | `geyser.command.nethernet` | Shows NetherNet signaling status and diagnostics, for use with external signaling. | +| `geyser offhand` | `geyser.command.offhand` | Puts an item in your offhand. | +| `geyser reload` | `geyser.command.reload` | Reloads the Geyser configurations. Kicks all players when used! | +| `geyser settings` | `geyser.command.settings` | Opens a settings menu allowing you to modify aspects of the world. | +| `geyser shutdown`
`geyser stop` | `geyser.command.shutdown` | Shuts down Geyser.
*This command only works on Standalone.* | +| `geyser statistics` | `geyser.command.statistics` | Open the Java statistics menu. | +| `geyser version` | `geyser.command.version` | Shows the current Geyser version and checks for updates. | +| `geyser tooltips` | `geyser.command.tooltips` | Toggle showing Advanced Tooltips (F3 + H on Java) | +| `geyser extensions` | `geyser.command.extensions` | Lists all currently loaded extensions. This command is only registered if any extensions are loaded. | +| `geyser ping` | `geyser.command.ping` | Shows the ping between the player and the Geyser instance. | +| `geyser options` | `geyser.command.options` | Opens the "pause screen additions" dialogue, if sent by the Java server | +| `geyser quickactions` | `geyser.command.quickactions` | Opens the "quick actions" dialogue, if sent by the Java server. | + +## Permissions for Geyser extensions {#extension-permissions} + +For the following, `` refers to the extensions' id. + +| Command | Permission | Description | +| :------------------------- | :---------------------------- | :------------------------------------------------------------------------ | +| ` help`
` ?` | `geyser.command.exthelp.` | Shows help for all commands registered by this extension. | + +## Other Permissions {#other-permissions} + +Besides commands, there are other permissions that are used to guard specific Geyser features. + +| Permission | Description | +| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `geyser.settings.server` | Allow players to use the [game settings menu](/img/wiki/game_menu.png). (Also requires player to have op.) | +| `geyser.settings.gamerules` | Defines whether a user can alter gamerules in the [game settings menu](/img/wiki/game_menu.png). (Also requires player to have op.) | +| `geyser.update` | Whether this player will receive Geyser update notifications upon joining. | + +## Permissions when using Geyser-Standalone/Geyser-ViaProxy {#standalone-viaproxy-permissions} + +Geyser-ViaProxy and Geyser-Standalone feature their own basic permission handler. To edit base permissions, +open the `permissions.yml` file and add or remove permissions that Geyser players should receive when joining. +See the file for more information. + +You can further customize permission handling by creating a [Geyser extension](/wiki/geyser/extensions/) that makes use of Geysers API +to deal with permission checking. + +## Permissions when using Geyser on platforms without permission handlers {#permissions-platforms-no-permission-handlers} + +The following affects Geyser-BungeeCord, Geyser-Velocity, and Geyser-Fabric. +These platforms unfortunately do not have built-in permission handlers. Because of that, you will need to grant permissions on those platforms +manually using permission handlers, such as [LuckPerms](https://luckperms.net/). Geyser's permission are listed above. For extension permissions, consult their documentation. + +Alternatively, you can use [LuckLink](https://github.com/onebeastchris/LuckLink), a third-party Geyser extension, to automatically register permissions using [LuckPerms](https://luckperms.net/). + +- Install [LuckPerms](https://luckperms.net/) on the platform where you've installed Geyser (BungeeCord/Velocity/Fabric). +- To allow Geyser to automatically register permission defaults, install the [LuckLink](https://github.com/onebeastchris/LuckLink) Geyser extension + by downloading the `LuckLink.jar` and adding it to Geyser's `extensions` folder. +- Restart the server, and permissions should be automatically registered. + +## Floodgate commands and permissions {#floodgate-commands-and-permissions} + +For Floodgate commands, see [here](/wiki/floodgate/commands/). diff --git a/i18n/de/docusaurus-plugin-content-docs/current/geyser/playit-gg.md b/i18n/de/docusaurus-plugin-content-docs/current/geyser/playit-gg.md new file mode 100644 index 0000000..7d20bd3 --- /dev/null +++ b/i18n/de/docusaurus-plugin-content-docs/current/geyser/playit-gg.md @@ -0,0 +1,62 @@ +--- +title: playit.gg Setup +description: How to set up playit.gg to use Geyser without port forwarding. +crowdin_sync: true +crowdin_page_id: 3aee52d0-b943-4e37-8797-4a83ef55e42a +--- + +## Prerequisites {#prerequisites} + +:::info +You must be able to connect to your Geyser instance locally! +::: + +:::warning +The playit.gg Minecraft server plugin does not support UDP tunnels. You will need to use the program agent instead! +::: + +:::caution +This guide was written for RakNet, and does not cover NetherNet. For NetherNet, see [playit.gg's progress on NetherNet support](https://status.playit.gg/3/adding-nethernet-support). +::: + +## Setup {#setup} + +1. Head over to [playit.gg's website](https://playit.gg/) - download the program & run it. +2. The program will provide a claiming link. Visit that link, log in. + ![img](/img/wiki/playit-gg/playit_claim.png) +3. Confirm your agent. + ![img](/img/wiki/playit-gg/playit_claim_confirm.png) +4. Add the agent. + ![img](/img/wiki/playit-gg/playit_add_agent.png) +5. After the agent is created, create a tunnel. + ![img](/img/wiki/playit-gg/playit_add_tunnel.png) +6. Name your tunnel and click Next. + ![img](/img/wiki/playit-gg/playit_name_tunnel.png) +7. Select "Minecraft Bedrock" as the tunnel type and click Next. + ![img](/img/wiki/playit-gg/playit_tunnel_type.png) +8. Select the Free Network and click Next. + ![img](/img/wiki/playit-gg/playit_select_network.png) + **Do not change your Geyser port in `config.yml` unless you have a reason (for example, hosting another Geyser server on the same machine).** The Bedrock (Geyser) port in `config.yml` and the playit.gg ports are separate. playit.gg will forward its port to the default Geyser port and should work as-is. Changing it can cause errors. If you have changed your config port, set the Bedrock port back to the default `19132` and ensure `clone-remote-port` is `false`. +9. If the playit.gg agent and Geyser are running on the same device, leave the IP as `127.0.0.1` and set the port to whatever you configured in Geyser's config. + ![img](/img/wiki/playit-gg/playit_set_ipandport.png) +10. Select `proxy-protocol-v2` for the Proxy Protocol section and click Next. +11. In the Geyser config, under `advanced:` `bedrock:`, set `use-haproxy-protocol` to `true`. +12. Click Create Tunnel and wait for the tunnel to be created. + ![img](/img/wiki/playit-gg/playit_create_tunnel.png) +13. Copy your tunnel's port. For example, if your tunnel address is `visiting-phone.gl.at.ply.gg:6695`, then `6695` is the tunnel port. +14. In the Geyser config under `advanced:` `bedrock:`, set `broadcast-port` to your tunnel port (`6695` in the example). +15. Save your config. Start your Minecraft server and connect using your tunnel's IP and port. +16. If you join successfully, then you are done! Make sure to leave the playit.gg program running as closing it will close the tunnel. You also may want to ratelimit individual connections - use the "Per Connection Rate Limit" option to do so. + (If you failed to join, check out the [troubleshooting](#troubleshooting) section of the page.) + +## Troubleshooting {#troubleshooting} + +### I can't connect to my server! {#i-cant-connect-to-my-server} + +- *Try going to the Agents page, set your agent to IPv4 only, and change the region. You may need to switch regions a few times before you can connect.* +- *Are there errors in your minecraft server console?* +- *Unless you manually changed the "Local Port" on the playit.gg website, in Geyser config, ensure that the bedrock port is the default of `19132` and that `clone-remote-port` is `false`.* +- *If you changed the `bedrock-port` or set `clone-remote-port` to `true` and have a reason for doing so (e.g. hosting another Geyser server on the same machine), you'll have to tell playit.gg to use that port instead! See the last paragraph in step 8.* +- *Check that you're joining with playit.gg's IP and port from the "Allocation" tab.* +- *Make sure that you have the program agent open while trying to join.* +- *See [here](/wiki/geyser/fixing-unable-to-connect-to-world/) for general troubleshooting steps.* diff --git a/i18n/de/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md b/i18n/de/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md new file mode 100644 index 0000000..492774c --- /dev/null +++ b/i18n/de/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md @@ -0,0 +1,208 @@ +--- +title: Port forwarding +description: Information on how to set up port forwarding required for Geyser. +crowdin_sync: true +crowdin_page_id: be7c5a22-1e8e-4ffe-8d13-7d763dd75886 +--- + +# Port forwarding {#port-forwarding} + +This page contains information on how to set up port forwarding required for Geyser to work when self-hosting. +There are also guides for specific configurations, such as Docker/Pterodactyl, or on specific VPS/KVM providers, such as OVH or Oracle Cloud. + +:::caution + +If you are using a Minecraft server hosting provider (e.g. Aternos, or Nodecraft), you should refer to the hosting provider setup on the [setup](/wiki/geyser/setup) page instead. + +::: + +:::info Ports that need to be opened +With NetherNet, the Geyser port (by default 19132) has to be open for **both TCP and UDP**: players find the server over TCP (signaling), and play on it over UDP. +If you use the "NetherNet and RakNet" option, also open the `webrtc-port` for UDP. +With external signaling, such as [Warden](https://warden.cloud), only UDP for WebRTC is needed. +::: + +## Port forwarding on Linux/Windows/macOS {#port-forwarding-on-linuxwindowsmacos} + +To allow others to play on your server, you will need to set up port forwarding on the device hosting Geyser. +Additionally, you will need to port forward the port on your router/modem (in other words, allow and route traffic on that port to the proper machine) if you want the server to be accessible outside your own home network. +Forward it for both TCP and UDP; many routers offer a "TCP/UDP" or "Both" option for this. +See [here](https://www.howtogeek.com/66214/how-to-forward-ports-on-your-router/) or [here](https://www.lifewire.com/how-to-port-forward-4163829) for helpful guides. +Do note: if you do not have a static IP address, your IP address may change over time. + +:::info + +Some ISPs (Internet Service Providers) block certain ports, or don't allow you to open ports (e.g. by using CGNAT, which doesn't allow you to open a port with a dynamic IP). +Other ISPs may require you to pay extra for a static IP address. +As an alternative to port forwarding, you can use [playit.gg](/wiki/geyser/playit-gg/) to create a tunnel. + +::: + +### Windows {#windows} + +To open a port on Windows, you will need to open the port through the Windows Firewall. There are multiple ways to do this: + +- `Powershell` (recommended) + + To open a port on TCP and UDP (in our example, port 19132), run the following commands in an administrator Powershell: + + ```powershell + New-NetFirewallRule -DisplayName "Geyser (TCP)" -Direction Inbound -Protocol TCP -LocalPort 19132 -Action Allow + New-NetFirewallRule -DisplayName "Geyser (UDP)" -Direction Inbound -Protocol UDP -LocalPort 19132 -Action Allow + ``` + + Running these commands creates two rules that allow TCP and UDP traffic on port 19132. + +- Windows Defender Firewall with Advanced Security (GUI) + 1. Search for "Windows Defender Firewall with Advanced Security" in the start menu, and open it. ([Image](/img/wiki/port-forwarding/windows-1.png)) + 2. Click on "Inbound Rules" in the left sidebar. ([Image](/img/wiki/port-forwarding/windows-2.png)) + 3. Click on "New Rule..." in the right sidebar. ([Image](/img/wiki/port-forwarding/windows-2.png)) + 4. Select "Port" as the rule type and click "Next". ([Example](/img/wiki/port-forwarding/windows-3.png)) + 5. Select "UDP" and "Specific local ports", and enter the port you want to open (in our example, 19132). Click "Next". ([Example](/img/wiki/port-forwarding/windows-4.png)) + 6. Select "Allow the connection" and click "Next". ([Example](/img/wiki/port-forwarding/windows-5.png)) + 7. Select the profiles you want to apply the rule to (e.g. "Domain", "Private", "Public"), and click "Next". ([Example](/img/wiki/port-forwarding/windows-6.png)) + 8. Enter a name for the rule (e.g. "Geyser (UDP)"), and click "Finish". ([Image](/img/wiki/port-forwarding/windows-7.png)) + 9. Repeat these steps, selecting "TCP" in step 5 and naming the rule e.g. "Geyser (TCP)". + +### Linux {#linux} + +Different Linux distributions, even different VPS providers ship and configure different firewalls. In the following examples, we will use `19132` as the port to open, but you should replace this with the port you are using for Geyser. + +- `ufw` is a simple firewall front-end for iptables that is commonly used on Ubuntu and Debian. To open a port on TCP and UDP, run the following commands: + ```bash + sudo ufw allow 19132/tcp + sudo ufw allow 19132/udp + ``` + Then, reload the firewall with `sudo ufw reload`, and see all open rules with `sudo ufw status`. + Further helpful guides: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server), [Baeldung](https://www.baeldung.com/linux/uncomplicated-firewall) + +- `firewalld` Add a port on TCP and UDP by running: + ```bash + sudo firewall-cmd --zone=public --permanent --add-port=19132/tcp + sudo firewall-cmd --zone=public --permanent --add-port=19132/udp + ``` + Then, reload the firewall with `sudo firewall-cmd --reload`, and see all open rules with `sudo firewall-cmd --list-all`. + Further helpful guides: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7) + +- `iptables` is a common firewall that is used on many Linux distributions. To open a port on TCP and UDP, run the following commands: + ```bash + sudo iptables -A INPUT -p tcp --dport 19132 -j ACCEPT + sudo iptables -A INPUT -p udp --dport 19132 -j ACCEPT + ``` + Then, save the firewall with `sudo iptables-save`, and see all open rules with `sudo iptables -L`. + Further helpful guides for iptables: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-iptables-on-ubuntu-14-04), [Ubuntu](https://help.ubuntu.com/community/IptablesHowTo) + +### macOS {#macos} + +You will need to disable `Block all incoming connections` in your Firewall settings, as that will block any connections and won't allow you to make exceptions. +To allow incoming connections, click `Allow` when getting [these prompts](/img/wiki/port-forwarding/macos_warning.png). +If you are still facing issues, see Apple's official guide [here](https://support.apple.com/guide/mac-help/MH11783) to open a port on macOS. + +## Using Docker or Pterodactyl {#using-docker-or-pterodactyl} + +In addition to port forwarding the port in your server's firewall (and, if applicable, your router/modem), you will need to assign the port in Docker/Pterodactyl. + +### Pterodactyl {#pterodactyl} + +Make sure to allocate the port(s) to the server in the Pterodactyl panel's `Network` tab, additionally to port forwarding the port(s). +See [here](https://pterodactyl.io/community/games/minecraft.html#allocations-in-the-panel) for more information. + +![Pterodactyl panel, Network section](/img/wiki/port-forwarding/pterodactyl-1.png) + +There are also different Geyser eggs for Pterodactyl, which can be found [here](https://github.com/GeyserMC/pterodactyl-stuff). + +:::caution + +If you are not able to allocate ports in the Pterodactyl panel, you will need to contact your server host to allocate one for you or try to use an existing port allocation. + +::: + +### Docker {#docker} + +For Geyser to work under Docker (e.g. using [Itzg's Docker image](https://github.com/itzg/docker-minecraft-server)), you will need to add the Geyser port on TCP and UDP to the docker-compose file. This is done by adding the following to the `ports` section: + +```yaml +ports: + - "25565:25565" + - "19132:19132" + - "19132:19132/udp" +``` + +Without a suffix, Docker exposes the port on TCP. The additional `/udp` suffix exposes it on UDP. +Alternatively, add the ports with the `-p 19132:19132 -p 19132:19132/udp` flags to the docker run command. + +## Issues with specific VPS/KVM providers {#issues-with-specific-vpskvm-providers} + +Some providers, such as OVH, Oracle Cloud, and SoYouStart, have a firewall that blocks the ports Geyser needs by default/in most cases. + +### OVH and SoYouStart {#ovh-and-soyoustart} + +OVH's GAME firewall filters traffic with rules made for specific games. The Minecraft Bedrock and Minecraft Pocket Edition rules currently only support RakNet, the protocol Bedrock used before NetherNet. +With NetherNet, players find the server over HTTP (TCP) and play over WebRTC (UDP), which these rules currently do not support. +For now, use the `Other` rule for the Geyser port(s) instead. + +:::caution + +If you do not have access to these firewall settings, but got linked to this page, please contact your server host and provide them with this link - they are likely using OVH internally. + +::: + +**To resolve it:** + +OVH: + +1. Navigate to `Network interfaces` +2. Click on the `...` button on the table for your IP -> then `...` and `Configure the GAME firewall` -> `Add rule` -> `Other protocol` +3. Add your Geyser port into `outgoing port`. If you use the "NetherNet and RakNet" option, add a rule for the `webrtc-port` as well. +4. If you use OVH's Edge Network Firewall, make sure it allows the Geyser port over both TCP and UDP. + +SoYouStart (subsidiary of OVH): + +1. Click the IP tab. +2. Click the gear at the right of the public IP address; select "Game mitigation". +3. Pick "Add a rule". +4. Select "Other" in the dropdown list and enter the Geyser port. If you use the "NetherNet and RakNet" option, add the `webrtc-port` as well. +5. Save and wait a few seconds for the changes to come into effect. + +### Oracle Cloud/OCI {#oracle-cloudoci} + +By default, Oracle Cloud will block all incoming traffic except for SSH and RDP. This must be resolved within Oracle Cloud itself and the Compute Instance running Geyser. + +The steps below assume that you are using the default ports for the Java server and Geyser, and should be adjusted accordingly. + +1. Find your Compute Instance in the OCI Console +2. Click on the instances Virtual Cloud Network (this will be under "Instance details") +3. On the left-hand side, select "Security Lists" +4. Select one of the security lists. By default only one security list will exist. It doesn't matter which security list we add the rules to. +5. Select "Add Ingress Rules" +6. Configure rules for Java (optional) + - Set "Source CIDR" to `0.0.0.0/0` + - Set "Destination Port Range" to `25565-25565` + - Select "Another Ingress Rule" +7. Configure rules for Geyser, once for TCP and once for UDP + - Set "Source CIDR" to `0.0.0.0/0` + - Set "Destination Port Range" to `19132-19132` + - Set "IP Protocol" to TCP + - Select "Another Ingress Rule", and repeat with "IP Protocol" set to UDP +8. Select "Add Ingress Rules" + +#### Oracle Linux {#oracle-linux} + +Run the following commands to allow Minecraft and Geyser through the OS firewall: + +```bash +sudo firewall-cmd --add-port=25565/tcp --permanent +sudo firewall-cmd --add-port=19132/tcp --permanent +sudo firewall-cmd --add-port=19132/udp --permanent +sudo firewall-cmd --reload +``` + +#### Ubuntu {#ubuntu} + +Run the following commands to allow Minecraft and Geyser through the OS firewall: + +```bash +sudo ufw allow 25565/tcp +sudo ufw allow 19132/tcp +sudo ufw allow 19132/udp +``` diff --git a/i18n/de/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx b/i18n/de/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx new file mode 100644 index 0000000..47391e7 --- /dev/null +++ b/i18n/de/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx @@ -0,0 +1,47 @@ +--- +title: Supported versions +description: Information on the versions Geyser supports. +crowdin_sync: true +crowdin_page_id: f199ae24-f711-486d-8e42-3079be87e8cd +--- + +import { Versions } from '@site/src/components/Versions' +import DocCardList from '@theme/DocCardList'; + +# Currently supported versions \ {#currently-supported-versions} + +:::info +**Geyser currently supports Minecraft Bedrock and Minecraft Java **. +::: + +## Using Geyser with older Minecraft: Bedrock edition versions \ {#using-geyser-with-older-minecraft-bedrock-edition-versions} + +Older Bedrock versions are not supported. Minecraft: Bedrock Edition updates automatically on all platforms, so there are few users who would +want to use older versions. Further, older Bedrock versions do not have all features which Geyser support, which would lead to a sub-par experience. + +## Using Geyser on older Minecraft: Java edition servers \ {#using-geyser-on-older-minecraft-java-edition-servers} + +Geyser emulates a client, so a Java server must accept users using that version in order for Geyser to work. +This is possible thanks to [ViaVersion](https://viaversion.com/viaversion), which allows Java edition players with newer versions to join servers +that run older versions of the game. + +### Using Geyser-Spigot on a Spigot/Paper server running on 1.20.5 or above + +You can use Geyser-Spigot on servers that run on 1.20.5 or above. You will also need to run at least Java 21 or later to use Geyser. See [here](https://docs.papermc.io/misc/java-install) for more info on updating Java. Paper versions not supporting Java 21 can add `-DPaper.IgnoreJavaVersion=true` flag to the Java startup arguments to allow Paper to run on Java 21. + +In order for Bedrock players to chat (1.19.3+) or join (1.19.1/1.19.2), you need to disable chat signing. More information about that can be read on the [chat signing page](/wiki/geyser/secure-chat). + +### Using Geyser-Spigot on a Spigot/Paper server running on a version below 1.20.5 + +This is unfortunately not possible. You'll need to use a proxy such as Velocity or BungeeCord, or set up Geyser-Standalone separately with the [ViaVersion](https://viaversion.com/viaversion) plugin. Another alternative would be to install [ViaProxy](https://viaversion.com/viaproxy), which is a standalone ViaVersion proxy that +translates between different Minecraft: Java edition versions, and to install Geyser-ViaProxy on it. + +### Using Geyser on Fabric/NeoForge servers not on the latest Minecraft version \ {#using-geyser-on-fabric-neoforge-servers-not-on-the-latest-minecraft-version} + +Unfortunately, Geyser-Fabric and Geyser-NeoForge only support the latest version of Minecraft: Java edition. The recommended way to still use +Geyser with older versions would be to install [ViaProxy](https://viaversion.com/viaproxy), which is a standalone ViaVersion proxy that +translates between different Minecraft: Java edition versions, and to install Geyser-ViaProxy on it. This will also work with Floodgate auth. + +### Using Geyser-Velocity or Geyser-BungeeCord on a proxy + +Make sure you update your proxy software to the latest available version, and, if the backend servers are not on , also install the [ViaVersion](https://viaversion.com/viaversion) plugin on the backend servers. Velocity/BungeeCord support most Minecraft versions, so you can update them regardless of the backend server versions. diff --git a/i18n/de/docusaurus-theme-classic/footer.json b/i18n/de/docusaurus-theme-classic/footer.json new file mode 100644 index 0000000..1a69184 --- /dev/null +++ b/i18n/de/docusaurus-theme-classic/footer.json @@ -0,0 +1,50 @@ +{ + "link.title.Wiki": { + "message": "Wiki", + "description": "The title of the footer links column with title=Wiki in the footer" + }, + "link.title.Downloads": { + "message": "Downloads", + "description": "The title of the footer links column with title=Downloads in the footer" + }, + "link.title.Community": { + "message": "Community", + "description": "The title of the footer links column with title=Community in the footer" + }, + "link.title.More": { + "message": "More", + "description": "The title of the footer links column with title=More in the footer" + }, + "link.item.label.REST APIs": { + "message": "REST APIs", + "description": "The label of footer link with label=REST APIs linking to wiki/api/api.geysermc.org/global-api" + }, + "link.item.label.Other": { + "message": "Other", + "description": "The label of footer link with label=Other linking to download?project=other-projects" + }, + "link.item.label.Blog": { + "message": "Blog", + "description": "The label of footer link with label=Blog linking to blog" + }, + "link.item.label.Donate": { + "message": "Donate", + "description": "The label of footer link with label=Donate linking to https://opencollective.com/geysermc" + }, + "link.item.label.Global Linking": { + "message": "Global Linking", + "description": "The label of footer link with label=Global Linking linking to https://link.geysermc.org/" + }, + "link.item.label.Privacy Policy": { + "message": "Privacy Policy", + "description": "The label of footer link with label=Privacy Policy linking to https://ziax.com/terms/privacy-policy/" + }, + "logo.alt": { + "message": "GeyserMC logo", + "description": "The alt text of footer logo" + }, + "copyright": { + "message": "Copyright © 2026 GeyserMC. Built with Docusaurus.
This website is not an official Minecraft website and is not associated with Mojang Studios or Microsoft. All product and company names are trademarks or registered trademarks of their respective holders. Use of these names does not imply any affiliation or endorsement by them.", + "description": "The footer copyright" + } +} \ No newline at end of file diff --git a/i18n/de/docusaurus-theme-classic/navbar.json b/i18n/de/docusaurus-theme-classic/navbar.json new file mode 100644 index 0000000..c4f41a5 --- /dev/null +++ b/i18n/de/docusaurus-theme-classic/navbar.json @@ -0,0 +1,38 @@ +{ + "logo.alt": { + "message": "GeyserMC logo", + "description": "The alt text of navbar logo" + }, + "item.label.Wiki": { + "message": "Wiki", + "description": "Navbar item with label Wiki" + }, + "item.label.Blog": { + "message": "Blog", + "description": "Navbar item with label Blog" + }, + "item.label.Utilities": { + "message": "Utilities", + "description": "Navbar item with label Utilities" + }, + "item.label.Download": { + "message": "Download", + "description": "Navbar item with label Download" + }, + "item.label.REST APIs": { + "message": "REST APIs", + "description": "Navbar item with label REST APIs" + }, + "item.label.Other": { + "message": "Other", + "description": "Navbar item with label Other" + }, + "item.label.Dump Viewer": { + "message": "Dump Viewer", + "description": "Navbar item with label Dump Viewer" + }, + "item.label.Hosting": { + "message": "Hosting", + "description": "Navbar item with label Hosting" + } +} \ No newline at end of file diff --git a/i18n/en/code.json b/i18n/en/code.json index 0c13e94..ffe41cf 100644 --- a/i18n/en/code.json +++ b/i18n/en/code.json @@ -1,238 +1,4 @@ { - "components.provider.instructions": { - "message": "Provider Instructions" - }, - "components.provider.select": { - "message": "Select a provider to see specific installation instructions" - }, - "providers.templates.default": { - "message": "Enable `clone-remote-port` (or manually set `bedrock port` to the Java port), and connect with the Java IP and port." - }, - "providers.templates.ip_and_port": { - "message": "Enable `clone-remote-port` (or manually set `bedrock port` to the Java port) and change `bedrock address` from `0.0.0.0` to your Java server's IP. Connect with the Java IP and port." - }, - "providers.templates.forwarding_option": { - "message": "Offers a working port forwarding option." - }, - "providers.templates.java_ip": { - "message": "Change `bedrock address` from `0.0.0.0` to your Java server's IP." - }, - "providers.provider.apex_hosting.description": { - "message": "Full auto installation. Go to the Customizations tab in the panel and select 'Enabled' under the 'Geyser Auto Installer' option. Then, restart and connect to your server with your Java IP and port. See [Apex's article](https://apexminecrafthosting.com/geysermc/) for more details." - }, - "providers.provider.aternos.description": { - "message": "Install Geyser in the Aternos plugin list and connect to your server with your Java IP and port. See [Aternos's article](https://support.aternos.org/hc/en-us/articles/360051047631) for more details. Do note: Aternos automatically installs the latest version of the plugin, but does not auto update it. To update Geyser on Aternos, simply reinstall the plugin (no need to uninstall the plugin/deleting the plugin files)." - }, - "providers.provider.birdflop.description": { - "message": "Open an allocation in the networks tab. If you have a dedicated IP, you can open a ticket to request allocation of the default Bedrock port (19132). Update the config to use the allocated port and restart the server." - }, - "providers.provider.cloud_nord.description": { - "message": "Go to their [Crossplay Server](https://cloudnord.net/minecraftcrossplay-server-hosting/) hosting section and order your server. Instructions on how to join are provided." - }, - "providers.provider.creeperhost.description": { - "message": "Has a toggle within the control panel to automatically enable Geyser. May not be enabled by default, so you may need to toggle it and restart the server." - }, - "providers.provider.cubes_hosting.description": { - "message": "Install Geyser using the plugin manager. Then restart the server and Geyser will run on an additional port - you can check it in the server console. Geyser-Standalone can be set up through a support ticket." - }, - "providers.provider.exaroton.description": { - "message": "Install Geyser in the exaroton plugin list and connect to your server with your Java IP and port. See [exaroton's article](https://support.exaroton.com/hc/en-us/articles/360019857918-Geyser) for more details." - }, - "providers.provider.ggservers.description": { - "message": "Can be installed to any server from their auto plugin setups. No further configuration needed." - }, - "providers.provider.lilypad.description": { - "message": "Tick the 'Enable Bedrock crossplay?' option when changing your server software to automatically install and configure Geyser + Floodgate. For more details, navigate to [lilypad.gg/bedrock](https://lilypad.gg/bedrock)." - }, - "providers.provider.mcprohosting.description": { - "message": "Click 'Enable Bedrock Support' on the server dashboard and follow the steps. For manual installation: Add 'Destination Port' `19132` with 'Protocol UDP' to the port forward mapping and connect to the given source port." - }, - "providers.provider.minefort.description": { - "message": "On the server dashboard under 'Connect Support', make sure 'Allow Bedrock' is enabled. Then connect via `play.minefort.com` and join using `/server [servername]`, or connect via `[servername].minefort.com`." - }, - "providers.provider.minehut.description": { - "message": "Connect via `bedrock.minehut.com` and do `/join [servername]`, or connect directly via `[servername].bedrock.minehut.gg`." - }, - "providers.provider.omgserv.description": { - "message": "Select Geyser in the [Install Menu](https://i.imgur.com/Gewpsrq.png), it will be automatically installed. You can enable floodgate in the [server properties on the dashboard](https://i.imgur.com/jg5mzNj.png)." - }, - "providers.provider.piglinhost.description": { - "message": "Order from the [cross-platform servers page](https://piglinhost.com/minecraft-java-hosting.html). Alternatively, contact their support by creating a [support ticket](https://billing.piglinhost.com/submitticket.php?step=2&deptid=5) or via discord for installation and configuration help." - }, - "providers.provider.playhosting.description": { - "message": "Tick the 'Enable Bedrock crossplay?' option when changing your server software to automatically install and configure Geyser + Floodgate. For more details, navigate to [help.play.hosting/minecraft/crossplay](https://help.play.hosting/minecraft/crossplay)." - }, - "providers.provider.pufferfish_host.description": { - "message": "Geyser is installed and configured on all servers by default." - }, - "providers.provider.server.pro.description": { - "message": "Different instructions for different plans: On VPS, select Geyser in the [Service Type Menu](https://i.imgur.com/loSNmvu.png), Floodgate can be enabled on the dashboard configuration. For manual installation: Using a Premium or Free plan, use the same port as your Java server for the Bedrock port in the configuration file and connect that; for the Free plan, also enable the `clone-remote-port` option. If you are using a PRO or a VPS plan, you can use any port, which can be opened on the Firewall tab." - }, - "providers.provider.serverprism.description": { - "message": "Order a [Minecraft server](https://serverprism.com/minecraft-server-hosting) on any plugin-compatible runtime (Paper, Spigot, Purpur, etc.), then install Geyser from the panel's plugin installer. Connect with the same IP and port as your Java server." - }, - "providers.provider.snakecraft_hosting.description": { - "message": "Select 'Paper + Geyser with Floodgate' under the Jar Type at checkout to install the Geyser plugin. Players will Connect with the same IP and port as you would on Java." - }, - "providers.provider.srkhost.description": { - "message": "You can enable Geyser on the version changer page. Geyser will run on the given port by the host." - }, - "providers.provider.virtual_gladiators.description": { - "message": "Find the plugin in the control panel under the 'VG Recommended' category and restart your server. IP and port are the same as Java." - }, - "providers.provider.wisehosting.description": { - "message": "Both auto and manual installation available. Find the GeyserMC presets from the `Addons` tab in the Game Panel. There, click `Install` and restart your server. See [Crossplay FAQ](https://wisehosting.com/help/how-to-install-geysermc-to-your-minecraft-server) for additional details." - }, - "providers.provider.zaphosting.description": { - "message": "Find the plugin in the control panel and restart your server. IP and port are the same as Java." - }, - "providers.provider.365hosts.description": { - "message": "Go to their [Minecraft: Crossplay](https://www.365hosts.com/gaming/crossplayminecraft) hosting section and order your server. Instructions on how to join are provided." - }, - "providers.provider.aquatis.description": { - "message": "Need to open a support ticket to get a UDP port, then use that as the `bedrock port`." - }, - "providers.provider.bisecthosting.description": { - "message": "Go to the Network tab and copy an available port not in use by other mods. In Geyser's config, under the bedrock section, on the port: line, edit the value to the port you copied. See Bisect's [article](https://www.bisecthosting.com/clients/index.php?rp=/knowledgebase/193/How-to-install-Geyser-and-Floodgate-on-a-Minecraft-Java-server.html) for full instructions. If you still cannot connect after following these instructions, contact Bisect Support, as they reportedly have UDP disabled on some nodes." - }, - "providers.provider.bloomhost.description": { - "message": "See [Bloom's documentation](https://docs.bloom.host/multiplatform/geysermc) for setup instructions." - }, - "providers.provider.craft-hosting.description": { - "message": "Set the Bedrock port to the Java server's port and connect with that port; note that this provider appears to only provide service in Russia." - }, - "providers.provider.dedicatedmc.description": { - "message": "Check [DedicatedMC's documentation](https://docs.dedicatedmc.io/plugins-mods/how-to-install-geysermc/) for specific instructions." - }, - "providers.provider.elfidc.description": { - "message": "When placing an order, choose Paper/Spigot + Geyser, which will automatically install the Geyser plugin. Connect with the Java server's IP and port. Note: This provider only provides service in China." - }, - "providers.provider.fadehost.description": { - "message": "Set the Bedrock port to the Java server's port and connect with that port. Alternatively, buy a dedicated IP address to support a different port." - }, - "providers.provider.fakaheda.description": { - "message": "Set the `bedrock port` in the config to the Java server's port or use one of the available ports allocated to your server, and connect with that port." - }, - "providers.provider.falixnodes.description": { - "message": "Enable `clone-remote-port` (or manually set `bedrock port` to the Java port), and connect with the Java IP and port." - }, - "providers.provider.ferox_hosting.description": { - "message": "Open a port yourself in their panel and check out the [knowledgebase article](https://feroxhosting.nl/kb/) for how to install and configure Geyser." - }, - "providers.provider.fusion_hosting.description": { - "message": "Get Geyser as a plugin. Use the same port as your Java server for the Bedrock port in your config (either by setting it yourself, or enabling “clone-remote-port”) and connect with the same IP and port as you would on Java or create a port in the Network tab on the panel & use this for Geyser." - }, - "providers.provider.gportal.description": { - "message": "You have to adjust the port according to your query port. Scheme: Query port: xxx65. The ports from xxx66 to xxx70 are available. For example, if your query port is 12365, then Geyser can only run under the port range 12366-12370. Furthermore, you have to change the 'Bedrock' 'address' in the Geyser config to your IP address. You can find it above your query port. Don't forget to delete the # in front of `address'." - }, - "providers.provider.heavynode.description": { - "message": "Open a port yourself in the networking section of the control panel. Port `19132` is only available with a dedicated IP (contact support), otherwise you will need to use a randomly assigned port. To resolve further connection issues for servers located in Canada and the UK, contact their support with the info found [here](https://wiki.geysermc.org/geyser/port-forwarding/#ovh-and-soyoustart)." - }, - "providers.provider.hicoria.description": { - "message": "Use one of the available ports allocated for your server for the Bedrock port in your config and connect with that port." - }, - "providers.provider.hosterfy.description": { - "message": "Use the same port as your Java server for the Bedrock port in your config (either by setting it yourself, or enabling `clone-remote-port`) and connect with the same IP and port as you would on Java. You can also ask for a new port." - }, - "providers.provider.hostez.description": { - "message": "Geyser plugin supported with self-install or installed on request with its own port." - }, - "providers.provider.hosting-minecraft.description": { - "message": "Create a new port and use that port in the config. If you have a plan from the 'Boost' category, you will need to open a [support ticket](https://my.hosting-minecraft.pro/submitticket.php) to get a port with UDP protocol enabled." - }, - "providers.provider.humbleservers.description": { - "message": "Set the Bedrock port to the Java server's port, or to one of the two extra ports, and connect with that port. If the subdomain doesn't work, use your regular numbered IP address." - }, - "providers.provider.kaashosting.description": { - "message": "Automatic and manual installation supported. Go to the `Plugin Installer` tab, search for Geyser and click `Install Automatically`. Connect with the Java IP and port. See [KaasHosting's article](https://www.kaashosting.nl/help/nl/minecraft/hoe-maak-ik-mijn-minecraft-server-crossplay-met-geysermc) for more details." - }, - "providers.provider.kekshost.description": { - "message": "Use the default bedrock port (19132) and the server ip to connect on Bedrock edition. No changes to the Geyser config are needed. You can also ask for a new port and use it instead." - }, - "providers.provider.kinetic_hosting.description": { - "message": "Open a port in the Network and Ports page, and set that port as the `bedrock port` in the Geyser config. Alternatively, use the Java server's port by enabling the `clone-remote-port` option in the config. Connect with the same IP as on Java, and the port that you have chosen. For more info see the hosts [support article](https://www.kinetichosting.net/articles/minecraft-java/plugins/geyser)." - }, - "providers.provider.mcpehost.ru.description": { - "message": "Create an additional port in the server settings and enable UDP protocol, then use that as the `bedrock port` in the config. Connect with the Java IP and that new port." - }, - "providers.provider.meloncube.description": { - "message": "Contact the support for a UDP port to use for Geyser. Set that port as the `bedrock port`, and connect with it." - }, - "providers.provider.netbela.description": { - "message": "Install Geyser with the dedicated Plugin installer. Use the same port as your Java server in your config. Connect with the same address and port as your Java server." - }, - "providers.provider.nfoservers.description": { - "message": "Set `bedrock address` to the server IP in the Geyser config file. As an alternative, you can run Geyser standalone separately on an Unmanaged VDS." - }, - "providers.provider.nitrado.description": { - "message": "Get Geyser as a plugin. Add 4 to the Port of the Java server. See [here](https://wiki.nitrado.net/en/How_to_install_GeyserMC_and_Floodgate) for specific instructions." - }, - "providers.provider.nodecraft.description": { - "message": "Use the default server port and `0.0.0.0` or your server IP as the host address." - }, - "providers.provider.nolimithost.description": { - "message": "Check [NolimitHost's documentation](https://nolimithost.cc/docs/minecraft/geyser) for specific instructions." - }, - "providers.provider.pebblehost.description": { - "message": "Enable `clone-remote-port` (or manually set `bedrock port` to the Java port), and connect with the Java IP and port. See [this video](https://youtu.be/v9lC80UBZF4) for a PebbleHost-specific tutorial." - }, - "providers.provider.pubcs.description": { - "message": "Set the Bedrock port to the Java server's port and connect with that port, or upgrade to a plan that includes dedicated IP address to support a different port." - }, - "providers.provider.revivenode.description": { - "message": "Set `bedrock port` to the Java server's port (either by setting it yourself, or enabling `clone-remote-port`). You can also create a secondary port in the `network tab` and use that. To fix random `Unable to Connect` issues, see [here](https://wiki.geysermc.org/geyser/port-forwarding/#ovh-and-soyoustart)." - }, - "providers.provider.shockbyte.description": { - "message": "The port will be automatically set after you download Geyser and restart the server. Connect with the same IP and port as on Java. For Geyser Standalone installation instructions, see [here](https://shockbyte.com/billing/knowledgebase/173/Introduction-to-GeyserMCorDragonProxy-How-GeyserMC-Works.html)." - }, - "providers.provider.skynode.pro.description": { - "message": "Go to 'Server Details', add a new port, and set the `bedrock port` in your config to that port. Connect with it and the Java server's address." - }, - "providers.provider.stipe.description": { - "message": "Set the Bedrock port to the Java server's port and connect with that port; note that this provider only provides service in Australia." - }, - "providers.provider.syntexhosting.description": { - "message": "Set the Bedrock port to the Java server's port and connect with that port, or request a (free) additional port." - }, - "providers.provider.the_minecraft hosting.description": { - "message": "Try using `19132` as the Bedrock port, if that does not work, use the same Java server's port for the `bedrock port` in your config and connect with that port and the Java server's IP." - }, - "providers.provider.volthosting.description": { - "message": "Enable clone-remote-port (or manually set bedrock port to the Java port), and connect with the Java IP and port. Alternatively, request an additional port, or buy a dedicated IP address. If you continue to have issues, please [contact VoltHosting support](https://volthosting.co.uk/contact.html) for further assistance." - }, - "providers.provider.vultam.description": { - "message": "Set the `bedrock port` to the Java server's port, or request an additional port. The additional port can be `19132` if you buy a dedicated IP." - }, - "providers.provider.winternode.description": { - "message": "Set the Bedrock port to the Java server's port and connect with that port. Alternatively, request an additional port, or buy a dedicated IP address." - }, - "providers.provider.witherhosting.description": { - "message": "Either use the Java server's port, or create a port in the ports manager on the panel and use that for Bedrock. Refer to the hosts [support article](https://my.witherhosting.com/kb/how-to-install-and-use-geysermc-java) for further info." - }, - "providers.provider.myarena.description": { - "message": "Does seem to be working, but the Java version is too old in order for Geyser to run properly." - }, - "providers.provider.nicraft.description": { - "message": "Does not provide Bedrock support, and are affected by a [firewall configuration issue](https://wiki.geysermc.org/geyser/port-forwarding/#ovh-and-soyoustart), which prohibits most players from joining." - }, - "providers.provider.dawn.description": { - "message": "Their proxy network does not support UDP. Therefore, Geyser is not supported. As an alternative, set up a paper server with e.g. playit.gg instead of port forwarding." - }, - "providers.provider.freemcserver_net.description": { - "message": "Install Geyser from the Plugins tab, then connect to your server using your Java IP and port." - }, - "providers.provider.ultraservers.description": { - "message": "Select 'Paper + Geyser' under the Change version tab. You can connect to your server using the same IP and port as you would on Java. Existing servers can use the Plugins/Minecraft mods tab to install Geyser. See [Crossplay](https://docs.ultraservers.com/minecraft/plugins-mods/crossplay-on-java-and-bedrock) for more information." - }, - "providers.provider.bedrockhost.description": { - "message": "Easiest solution is: Go to hosting panel > install new engine > Ready-made solutions and select Geyser. This will install Paper & Geyser-Spigot - no setup needed, just connect with your Java IP and port. See [BedrockHost's article](https://bedrockhost.pl/w/geyser-czyli-serwer-minecraft-java-i-bedrock-w-jednym) for more details or for custom setup instructions (available in Polish)." - }, - "providers.provider.simplegamehosting.description": { - "message": "Contact live chat support to open a port and check out the [help center guide](https://help.simplegamehosting.com/how-to-enable-crossplay-with-geyser-on-your-minecraft-server/) for how to install and configure Geyser on your server." - }, - "providers.provider.axenthost.description": { - "message": "For a quick installation, navigate to your server Variants tab and select GeyserMC. The server will be automatically reinstalled with Geyser-Spigot alongside a Paper server. For a manual install using any other variant such as Paper, you will need to upload the GeyserMC jar to your server and set the the clone-remote-port option to true. See AxentHost's [guide](https://axenthost.com/knowledgebase/categories/minecraft/create-a-crossplay-server-with-geyser/) to see all the steps." - }, "pages.main.title": { "message": "Revolutionize Your Minecraft Server" }, @@ -267,14 +33,11 @@ "message": "Hybrid mode plugin to allow for connections from Geyser to join online mode servers." }, "pages.download.description.geyserconnect": { - "message": "A plugin to allow for Geyser players to connect to your server without needing to use a proxy." + "message": "A Geyser extension allowing players to connect to different Java or Geyser servers." }, "pages.download.description.thirdpartycosmetics": { "message": "An extension that adds support for loading ears and other third party cosmetics on java players" }, - "pages.download.description.emoteoffhand": { - "message": "An extension that allows Bedrock players to switch their offhand and mainhand item by emoting." - }, "pages.dumpviewer.title": { "message": "Dump Viewer" }, @@ -775,20 +538,6 @@ "message": "Tags", "description": "The title of the tag list page" }, - "theme.unlistedContent.title": { - "message": "Unlisted page", - "description": "The unlisted content banner title" - }, - "theme.unlistedContent.message": { - "message": "This page is unlisted. Search engines will not index it, and only users having a direct link can access it.", - "description": "The unlisted content banner message" - }, - "providers.provider.not_listed.description": { - "message": "If your hosting provider is not listed, try enabling the `clone-remote-port` option in the config. Then, restart the server, and try connecting with the same IP and port as on Java Edition.
If this does not work, ask your server hosting provider for a UDP port, and use that. For VPS/KVM servers please follow the self-hosting steps." - }, - "providers.provider.wasabihosting.description": { - "message": "Install Geyser with the plugin installer. Use the same port as your Java server in the Geyser config. Connect with the same address and port as your Java server." - }, "pages.download.description.hurricane": { "message": "A plugin with various workarounds for Geyser players that modify the server in order to achieve their goal." }, @@ -824,29 +573,26 @@ "message": "This page is a draft. It will only be visible in dev and be excluded from the production build.", "description": "The draft content banner message" }, - "providers.provider.arth_hosting.description": { - "message": "Geyser is installed and configured on all servers by default. You can disable it in the 'Manage Plugins' menu." + "mdx.setup.host_provider": { + "message": "Host Provider" }, - "providers.provider.mcserverhost.description": { - "message": "Under the server configuration, select 'Crossplay' to automatically install Geyser and Floodgate. Join with the connection address. To update Geyser and Floodgate, replace the plugin jars in the server manager and restart the server." + "mdx.setup.self_host": { + "message": "Self Host" }, - "providers.provider.vemox_hosting.description": { - "message": "Full automatic installation. Go to one of the panel options and select the option to enable GeyserMC. Then, restart and connect to your server using your Java IP and port." + "mdx.setup.paper_spigot": { + "message": "Paper / Spigot" }, - "providers.provider.mcforfree.de.description": { - "message": "Create an extra port in the game panel, then change the `port` in the `bedrock` section to the newly created port. To connect on Bedrock edition, use the Java server's IP and the port you've created. It may take a few minutes for the port to become active." + "mdx.setup.modded_servers": { + "message": "Modded Servers" }, - "providers.provider.modrinth.description": { - "message": "Check [Modrinth's documentation](https://support.modrinth.com/en/articles/10986613-adding-geyser-to-your-server) for specific instructions." + "mdx.setup.proxy_servers": { + "message": "Proxy Servers" }, - "providers.provider.orionnodes.description": { - "message": "Open a port yourself from the network page in the game panel, use that port in the bedrock section of the Geyser config." + "mdx.setup.viaproxy": { + "message": "ViaProxy" }, - "providers.provider.papernodes.description": { - "message": "Enable clone-remote-port (or manually set the Bedrock port to the Java port), and connect with the Java IP and port. Alternatively, you can contact the host to request an additional port or a dedicated IP." - }, - "providers.provider.wepwawet.description": { - "message": "Add a new port in the Network tab. Use this new port as the bedrock port." + "mdx.setup.standalone": { + "message": "Standalone" }, "pages.download.description.offhandextension": { "message": "An extension that allows Bedrock players to switch their offhand and mainhand item by emoting." @@ -868,5 +614,509 @@ }, "pages.dumpviewer.extensions.helptext": { "message": "Click on an extension to view more information." + }, + "mdx.setup.fabric": { + "message": "Fabric" + }, + "mdx.setup.neoforge": { + "message": "NeoForge" + }, + "mdx.setup.installing_geyser": { + "message": "Installing Geyser" + }, + "mdx.setup.download_jar": { + "message": "Download {jarName}." + }, + "mdx.setup.place_jar": { + "message": "Place the {jarName} in the {jarDirectory} folder." + }, + "mdx.setup.restart_server": { + "message": "Restart the server." + }, + "mdx.setup.additional_steps": { + "message": "Additional Steps" + }, + "mdx.setup.connecting_on_bedrock": { + "message": "Connecting on Bedrock" + }, + "providers.config.templates.java_address": { + "message": "Set `address` in the `bedrock` section to the public address of the Java server." + }, + "providers.config.templates.custom_port_dedicated_ip": { + "message": "This host may only give out a separate port with a dedicated IP address." + }, + "providers.warnings.ovh_firewall_misconfig": { + "message": "To fix random `Unable to Connect` issues, see [here](/wiki/geyser/port-forwarding/#ovh-and-soyoustart)." + }, + "providers.config.templates.install_location.plugin_list": { + "message": "Install Geyser through the plugin or mod list provided by the host." + }, + "providers.config.templates.install_location.enable_bedrock_crossplay": { + "message": "Select the 'Enable Bedrock crossplay?' option when changing your server software to automatically install and configure Geyser and Floodgate." + }, + "providers.config.templates.info.geyser_installed_by_default": { + "message": "Geyser is installed and configured on all servers by default." + }, + "providers.provider.apex_hosting.install": { + "message": "Go to the Customizations tab in the panel and select 'Enabled' under the 'Geyser Auto Installer' option." + }, + "providers.provider.aternos.info": { + "message": "Aternos automatically installs the latest version of Geyser and Floodgate, but does not auto update it. To update, reinstall the plugin (no need to uninstall Geyser/deleting the plugin files)." + }, + "providers.provider.creeperhost.install": { + "message": "Enable Geyser in the control panel." + }, + "providers.provider.cubes_hosting.info": { + "message": "Geyser-Standalone can be set up through a support ticket." + }, + "providers.provider.minefort.additional_step": { + "message": "Go to the server dashboard under 'Connect Support', and enable the 'Allow Bedrock' option." + }, + "providers.provider.minefort.connect_instructions": { + "message": "Connect via `play.minefort.com` and join using `/server [servername]`, or connect directly via `[servername].minefort.com`." + }, + "providers.provider.minehut.connect_instructions": { + "message": "Connect via `bedrock.minehut.com` and do `/join [servername]`, or connect directly via `[servername].bedrock.minehut.gg`." + }, + "providers.provider.omgserv.install": { + "message": "Select Geyser in the Install Menu to install it automatically. You can enable Floodgate in the server properties on the dashboard." + }, + "providers.provider.config.other": { + "message": "If you did not order the server from the [cross-platform servers page](https://piglinhost.com/minecraft-java-hosting.html), contact the support for help with Geyser setup." + }, + "providers.provider.srkhost.enable": { + "message": "Enable Geyser on the version changer page." + }, + "providers.provider.wisehosting.install": { + "message": "Install the GeyserMC preset from the `Addons` tab in the Game Panel, then restart your server." + }, + "providers.provider.elfidc.custom": { + "message": "When placing an order, choose Paper/Spigot + Geyser, which will automatically install the Geyser plugin." + }, + "providers.provider.hostez.config.other": { + "message": "Different ports can be set in the Allocations tab. Premium products with a dedicated IP can use the default port (19132)." + }, + "providers.provider.nfoservers.info": { + "message": "You can also run Geyser-Standalone separately on an Unmanaged VDS." + }, + "mdx.setup.checking_server_version": { + "message": "Checking your server version" + }, + "mdx.setup.restart_geyser": { + "message": "Restart Geyser." + }, + "mdx.setup.https_note": { + "message": "Unless signaling runs over {https}, Minecraft asks players whether they trust the server the first time they join." + }, + "mdx.setup.configuring_geyser": { + "message": "Configuring Geyser" + }, + "mdx.setup.open_config_simple": { + "message": "Now open the file {configLocation}. Find the part that starts with {bedrock}, and change the lines shown below." + }, + "mdx.setup.preconfigured": { + "message": "No changes needed. {name} automatically configures Geyser." + }, + "mdx.setup.transport_nethernet_simple": { + "message": "NetherNet is supported fully by 26.50+. If you'd like to also have working MOTD and player count for older versions, you will need to set up both NetherNet and Raknet." + }, + "mdx.setup.transport_both_compat": { + "message": "Also accepts RakNet, for additional compatibility: some Bedrock versions, such as 26.40, fetch the server's MOTD and player count over RakNet. This option needs a separate UDP port for NetherNet." + }, + "mdx.setup.placeholder_word": { + "message": "Replace this" + }, + "mdx.setup.replace_with_simple": { + "message": "With this" + }, + "mdx.setup.placeholder_java_port": { + "message": "The port of the Java server." + }, + "mdx.setup.placeholder_java_port_udp": { + "message": "A UDP port for NetherNet, other than {port}. This can be the Java server's port: the Java server only uses it over TCP, so Geyser can use it over UDP. Any other available UDP port works too." + }, + "mdx.setup.placeholder_second_available_port": { + "message": "An available UDP port for NetherNet, other than {port}. Open it for UDP." + }, + "mdx.setup.raknet_on_port": { + "message": "RakNet uses {port} over UDP, so that port has to be open for UDP as well." + }, + "mdx.setup.summary.nethernet_reported_generic": { + "message": "Reported to work with NetherNet" + }, + "mdx.setup.summary.supporter_configures": { + "message": "{name} configures Geyser for you automatically, including NetherNet." + }, + "mdx.setup.summary.updated": { + "message": "Instructions last updated on {date}" + }, + "mdx.setup.badge.gold": { + "message": "Gold supporter" + }, + "mdx.setup.badge.silver": { + "message": "Silver supporter" + }, + "mdx.setup.badge.bronze": { + "message": "Bronze supporter" + }, + "mdx.setup.unconfirmed_title": { + "message": "Not checked for NetherNet yet" + }, + "mdx.setup.warning_title": { + "message": "Warning" + }, + "mdx.setup.unconfirmed_reach_out_update": { + "message": "These instructions have not been checked for NetherNet yet. If Bedrock players can't join, reach out to {name} to get instructions on how to use Geyser, and let us know on {discord} so we can update this guide." + }, + "mdx.setup.try_not_listed": { + "message": "If your host cannot give you a separate port, follow the {notListed} instead. Players then join through {warden}, an external signaling service." + }, + "mdx.setup.try_not_listed.link": { + "message": "\"Not listed\" guide for using only the Java server's port" + }, + "mdx.setup.no_signaling": { + "message": "{name} supports neither built-in nor external signaling, so Bedrock players cannot connect over NetherNet." + }, + "mdx.setup.hosting_provider_article_short": { + "message": "Host's Geyser guide" + }, + "mdx.setup.hosting_provider_website_short": { + "message": "Website" + }, + "mdx.setup.hosting_provider_support_short": { + "message": "Support" + }, + "mdx.setup.hosting_provider_discord_short": { + "message": "Discord" + }, + "providers.provider.not_listed.allocate_port": { + "message": "Allocate a port in your server panel, open for both TCP and UDP." + }, + "providers.provider.not_listed.info": { + "message": "For VPS/KVM servers, please follow the self-hosting steps." + }, + "mdx.setup.not_listed.tab_allocated": { + "message": "I can allocate ports" + }, + "mdx.setup.not_listed.tab_java_only": { + "message": "I only have the Java server port" + }, + "providers.provider.not_listed.java_only_connect": { + "message": "Players do not connect with the Java server's address. After Geyser starts, it shows the address and port to use in the console, provided by the external signaling service ({warden} by default). Share these with your players." + }, + "components.provider.open_collaboration_group": { + "message": "Hosts that support Geyser's development" + }, + "components.provider.other_group": { + "message": "Other providers" + }, + "mdx.setup.connect.port_java": { + "message": "Your Java server's port" + }, + "mdx.setup.connect.port_config_step": { + "message": "The port you set in \"Configuring Geyser\"" + }, + "mdx.setup.connect.intro": { + "message": "In Minecraft: Bedrock Edition, go to Play, then Servers, and select Add Server. Fill it in like this:" + }, + "mdx.setup.connect.add_server": { + "message": "Add Server" + }, + "mdx.setup.connect.server_name": { + "message": "Server Name" + }, + "mdx.setup.connect.server_name_value": { + "message": "Anything you like" + }, + "mdx.setup.connect.server_address": { + "message": "Server Address" + }, + "mdx.setup.connect.server_address_value": { + "message": "Your Java server's address" + }, + "mdx.setup.connect.port": { + "message": "Port" + }, + "mdx.setup.transport_nethernet_tab": { + "message": "NetherNet" + }, + "mdx.setup.transport_both_tab": { + "message": "NetherNet and RakNet" + }, + "providers.ports.assign": { + "message": "Assign a port in your host's panel, open for both TCP and UDP." + }, + "providers.ports.allocated": { + "message": "Pick an available port from the ports allocated to your server, open for both TCP and UDP." + }, + "providers.ports.ask_host": { + "message": "Ask your host for a port that is open for both TCP and UDP." + }, + "providers.provider.bisecthosting.warn": { + "message": "If you cannot connect after following these instructions, contact Bisect Support, as they reportedly have UDP disabled on some nodes." + }, + "providers.provider.cloud_nord.description": { + "message": "Servers from the [Crossplay Server](https://cloudnord.net/minecraftcrossplay-server-hosting/) hosting section do not need further configuration." + }, + "providers.provider.gportal.description": { + "message": "Pick a port based on your query port. Scheme: Query port: xxx65. The ports from xxx66 to xxx70 are available. For example, if your query port is 12365, then Geyser can only run under the port range 12366-12370." + }, + "providers.provider.hostez.config.port": { + "message": "Add 1 to the port you were assigned (e.g. 25565 -> 25566)." + }, + "providers.provider.nicraft.description": { + "message": "Nicraft does not provide Bedrock support, and is affected by a [firewall configuration issue](/wiki/geyser/port-forwarding/#ovh-and-soyoustart), which prohibits most players from joining." + }, + "providers.provider.nitrado.config.port": { + "message": "Add 4 to the port of the Java server." + }, + "providers.provider.vemox_hosting.install": { + "message": "Open the panel options and select the option to enable GeyserMC." + }, + "pages.hosting.tier.gold": { + "message": "Gold supporters" + }, + "pages.hosting.tier.silver": { + "message": "Silver supporters" + }, + "pages.hosting.tier.bronze": { + "message": "Bronze supporters" + }, + "pages.hosting.card.website": { + "message": "Website" + }, + "pages.hosting.card.setup": { + "message": "Setup guide" + }, + "pages.hosting.title": { + "message": "Hosting Providers" + }, + "pages.hosting.subheading": { + "message": "Hosting providers that support the development of Geyser." + }, + "pages.hosting.intro": { + "message": "The hosts below support Geyser and related projects through {openCollaboration}. Their support helps fund work on Geyser, such as keeping up with major changes to Bedrock Edition, like the switch to NetherNet. All hosts listed below also configure Geyser automatically when installed, making using Geyser easier than ever. We'd like to thank them all for their support." + }, + "pages.hosting.empty": { + "message": "No hosting providers are listed yet." + }, + "pages.hosting.other.title": { + "message": "Using another host?" + }, + "pages.hosting.other.text": { + "message": "Hosts not being listed here does not mean Geyser won't run there. The {setupGuide} includes community collected notes for many other hosts, and general instructions for those not listed." + }, + "pages.hosting.other.setup_guide": { + "message": "setup guide" + }, + "pages.hosting.meta.title": { + "message": "Hosting Providers" + }, + "pages.hosting.meta.description": { + "message": "Hosting providers that support the development of Geyser through Open Collaboration." + }, + "pages.download.description.floodgatedatabases": { + "message": "Database extension jars for Floodgate local linking." + }, + "providers.ports.from_host": { + "message": "The Bedrock port your host shows you." + }, + "providers.config.templates.info.only_serves_region": { + "message": "This host only provides service in {region}." + }, + "providers.provider.axenthost.install": { + "message": "Select GeyserMC in the Variants tab. This reinstalls the server with Paper and Geyser." + }, + "providers.provider.bedrockhost.install": { + "message": "In the hosting panel, go to install new engine > Ready-made solutions and select Geyser. This installs Paper and Geyser." + }, + "providers.provider.consulhosting.install": { + "message": "Install GeyserMC from the Software section of your server panel." + }, + "providers.provider.cubes_hosting.port": { + "message": "The port shown in the server console." + }, + "providers.provider.mcserverhost.install": { + "message": "In the Software tab of the server panel, turn on 'Bedrock crossplay' and restart the server." + }, + "providers.provider.minehost.install": { + "message": "In the Software tab of the server panel, turn on 'Minecraft Bedrock support' and restart the server." + }, + "providers.provider.myarena.description": { + "message": "Does seem to be working, but the Java version is too old in order for Geyser to run properly." + }, + "providers.provider.ultraservers.install": { + "message": "Select 'Paper + Geyser' in the Change version tab. On existing servers, install Geyser from the Plugins/Minecraft mods tab instead." + }, + "providers.provider.server.pro.config.plans": { + "message": "Only PRO and VPS plans can open additional ports, in the Firewall tab. On other plans, follow the \"Not listed\" guide for using only the Java server's port." + }, + "mdx.setup.velocity": { + "message": "Velocity" + }, + "mdx.setup.bungeecord": { + "message": "BungeeCord" + }, + "providers.ports.new_port": { + "message": "Open a new port in your server panel, open for both TCP and UDP, or ask your host for one if the panel has no option for it." + }, + "mdx.setup.supported_versions": { + "message": "Supported versions" + }, + "mdx.setup.restart_velocity": { + "message": "Restart Velocity." + }, + "mdx.setup.restart_bungeecord": { + "message": "Restart BungeeCord." + }, + "mdx.setup.restart_viaproxy": { + "message": "Restart ViaProxy." + }, + "mdx.setup.fabric_dependency": { + "message": "If it is not installed already, download {fabricApi} and place it in the same folder." + }, + "mdx.setup.version_step_viaversion": { + "message": "If your server is not running {version}, you will need to install {viaVersion}. For more information, see {supportedVersions}." + }, + "mdx.setup.version_step_proxy": { + "message": "All servers on the network must accept {version} Java clients, as Geyser imitates one." + }, + "mdx.setup.proxy_install_only": { + "message": "Install Geyser only on the {proxy} server! You can install Floodgate on all servers for better skin support and network-wide Floodgate API availability for other plugins." + }, + "mdx.setup.modded_requirements": { + "message": "{jarName} runs only on a {version} server, and only works alongside server-side mods. Mods that players also need to install on their client will not work. See {supportedVersions} for more details." + }, + "mdx.setup.self_port_choice": { + "message": "Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP, so it cannot be the port of the {platform} server." + }, + "mdx.setup.self_port_choice_standalone": { + "message": "Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP." + }, + "mdx.setup.self_port_sharing": { + "message": "{important}: No other program can use the Geyser port, over either protocol. This includes programs that use UDP, such as voice chat mods or Query, and programs that use TCP, such as another server, a web map, or a website." + }, + "mdx.setup.self_port_sharing.important": { + "message": "Important" + }, + "mdx.setup.connect_local_title": { + "message": "Connecting from the same network" + }, + "mdx.setup.connect_local": { + "message": "On the same device as the server, connect with {localhost} or {loopback} as the address. Other devices in the same local network can use your local IPv4 address, which starts with {ten} or {oneNineTwo}." + }, + "mdx.setup.connect_lan": { + "message": "Alternatively, open Minecraft: Bedrock Edition and join the LAN server in the {friends} tab." + }, + "mdx.setup.connect_lan.friends": { + "message": "Friends" + }, + "mdx.setup.connect_remote_title": { + "message": "Connecting from a different network" + }, + "mdx.setup.connect_remote": { + "message": "To let players from outside your network join, you need to make the Geyser port reachable from the internet." + }, + "mdx.setup.connect_tcp_udp": { + "message": "The Geyser port has to be forwarded for both TCP and UDP. Before NetherNet, forwarding UDP was enough. Now, players use TCP to find your server and UDP to play on it, so without TCP your server will not show up. If you use the \"NetherNet and RakNet\" option, also forward the {webrtcPort} for UDP." + }, + "mdx.setup.connect_options": { + "message": "You have two options:" + }, + "mdx.setup.connect_port_forwarding": { + "message": "{portForwarding}: open the Geyser port (e.g. 19132) for both TCP and UDP in your router and in your firewall. Players then connect with your public IPv4 address and the port. For detailed steps, see {guide}." + }, + "mdx.setup.connect_port_forwarding.title": { + "message": "Port forwarding" + }, + "mdx.setup.connect_port_forwarding.guide": { + "message": "Port forwarding" + }, + "mdx.setup.connect_playit": { + "message": "{playit}: if you cannot open a port, or do not want to expose your home IP address, playit.gg can create a tunnel for you. See {guide}. That guide was written for RakNet. For NetherNet, see {status}. Ngrok does not work, since it does not support UDP." + }, + "mdx.setup.connect_playit.guide": { + "message": "playit.gg Setup" + }, + "mdx.setup.connect_playit.status": { + "message": "NetherNet support on playit.gg" + }, + "mdx.setup.https_step_title": { + "message": "Recommended: Set up HTTPS for signaling" + }, + "mdx.setup.https_step": { + "message": "Geyser's built-in signaling server uses plain HTTP by default, so Minecraft shows players a \"Trust on First Use?\" prompt the first time they join. To avoid this prompt, serve signaling over HTTPS, as explained in {httpsGuide}. Some external signaling services, such as {warden}, provide HTTPS as well." + }, + "mdx.setup.https_step.guide": { + "message": "HTTPS for NetherNet" + }, + "mdx.setup.floodgate_info": { + "message": "To allow Bedrock Edition players to join your server without a paid Java Edition account, you can use {floodgate}." + }, + "mdx.setup.viaproxy_not_plugin.title": { + "message": "ViaProxy is not a plugin or mod" + }, + "mdx.setup.viaproxy_not_plugin": { + "message": "ViaProxy is a standalone program that runs separately from your Minecraft server. Do not put the ViaProxy jar into your server's {plugins} or {mods} folder. To run Geyser as a plugin or mod on your server instead, pick your server software in the tabs above." + }, + "mdx.setup.viaproxy_setup": { + "message": "Set up {viaProxy}." + }, + "mdx.setup.viaproxy_accounts": { + "message": "If you use the ViaProxy GUI, you can use its account management to join online mode servers with Bedrock Edition. If you use the ViaProxy CLI and want Bedrock players to join your online mode server, install and set up {floodgate}." + }, + "mdx.setup.viaproxy_auth_type": { + "message": "ViaProxy manages the {authType} setting itself, so its value in the config is ignored." + }, + "mdx.setup.standalone_java": { + "message": "You need Java 21 or newer to run Geyser. To run Geyser Standalone on Android, see the end of this page." + }, + "mdx.setup.standalone_not_plugin": { + "message": "Geyser Standalone is not a plugin or mod. It is a separate Java program that runs alongside your Java Edition server." + }, + "mdx.setup.standalone_download": { + "message": "Download {standalone}." + }, + "mdx.setup.standalone_folder": { + "message": "Create a new folder for Geyser, and put the jar in it." + }, + "mdx.setup.standalone_start": { + "message": "Start Geyser Standalone:" + }, + "mdx.setup.standalone_gui": { + "message": "{gui} (recommended): double-click the jar file. Geyser creates all the files it needs." + }, + "mdx.setup.standalone_console": { + "message": "{console}: create a startup script, like the one you would use for a Paper server. See {startupScript} for what to put into it. Run it, and Geyser creates all the files it needs." + }, + "mdx.setup.standalone_console.console": { + "message": "Console" + }, + "mdx.setup.standalone_console.startup_script": { + "message": "Creating a Startup Script" + }, + "mdx.setup.standalone_remote_intro": { + "message": "To choose which Java Edition server Geyser Standalone sends players to, find the {java} section:" + }, + "mdx.setup.standalone_remote": { + "message": "Change {address} to the Java server's address, or leave it as it is if the server runs on the same machine as Geyser. Then change {port} to the Java server's port. Set {authType} to {floodgate} if you set up Floodgate on the Java server, otherwise to {online} for an online mode server or {offline} for an offline mode server. To use Floodgate with Geyser Standalone, see {floodgateSetup}." + }, + "mdx.setup.standalone_remote.floodgate_setup": { + "message": "Floodgate Setup" + }, + "mdx.setup.standalone_android_title": { + "message": "Running Geyser Standalone on Android" + }, + "mdx.setup.standalone_android_caution": { + "message": "Apps such as Termux can run Geyser on Android, but how well this works depends on how powerful your device is. Do so at your own risk." + }, + "mdx.setup.standalone_termux_install": { + "message": "Download and install {termux}." + }, + "mdx.setup.run_command": { + "message": "Run {command}." + }, + "mdx.setup.standalone_termux_script": { + "message": "Alternatively, there is an automated setup script for clean Termux installs. It might not work for everyone, so try it if the steps above do not work:" } } diff --git a/i18n/en/docusaurus-plugin-content-docs/current.json b/i18n/en/docusaurus-plugin-content-docs/current.json index 3c4bdd1..afc3821 100644 --- a/i18n/en/docusaurus-plugin-content-docs/current.json +++ b/i18n/en/docusaurus-plugin-content-docs/current.json @@ -183,8 +183,12 @@ "message": "Geyser API", "description": "The label for category Geyser API in sidebar geyserSidebar" }, - "sidebar.geyserSidebar.category.Custom Resource Packs": { - "message": "Custom Resource Packs", - "description": "The label for category Custom Resource Packs in sidebar geyserSidebar" + "sidebar.geyserSidebar.link.Hosting Providers": { + "message": "Hosting Providers", + "description": "The label for link Hosting Providers in sidebar geyserSidebar, linking to /hosting" + }, + "sidebar.geyserSidebar.category.Custom Content": { + "message": "Custom Content", + "description": "The label for category Custom Content in sidebar geyserSidebar" } } diff --git a/i18n/en/docusaurus-theme-classic/navbar.json b/i18n/en/docusaurus-theme-classic/navbar.json index cf5978f..d7b2c46 100644 --- a/i18n/en/docusaurus-theme-classic/navbar.json +++ b/i18n/en/docusaurus-theme-classic/navbar.json @@ -42,5 +42,9 @@ "item.label.Dump Viewer": { "message": "Dump Viewer", "description": "Navbar item with label Dump Viewer" + }, + "item.label.Hosting": { + "message": "Hosting", + "description": "Navbar item with label Hosting" } } diff --git a/i18n/fr/code.json b/i18n/fr/code.json new file mode 100644 index 0000000..7251b24 --- /dev/null +++ b/i18n/fr/code.json @@ -0,0 +1,1023 @@ +{ + "pages.main.title": { + "message": "Revolutionize Your Minecraft Server" + }, + "pages.main.subtitle": { + "message": "Enable clients from Minecraft Bedrock Edition to join your Minecraft Java server" + }, + "components.homepage_features.1.line1": { + "message": "Geyser is a program that allows Minecraft: Bedrock Edition clients to join Minecraft: Java Edition servers, allowing for true crossplay between both editions of the game." + }, + "components.homepage_features.1.line2": { + "message": "The ultimate goal of this project is to allow Minecraft: Bedrock Edition users to join Minecraft: Java Edition servers as seamlessly as possible." + }, + "components.homepage_features.2": { + "message": "Geyser acts as a translator which sits between the Bedrock client and the Java server. It takes data from the Bedrock client and translates it into a format the Java server understands and vice versa. Geyser works with any modern Minecraft version and can be installed either as a plugin or ran as a standalone program." + }, + "components.homepage_features.3.line1": { + "message": "Geyser can be joined from Bedrock clients on Windows 10/11, iOS, Android, and even consoles. Geyser works with a wide array of hosting providers, but can also be used as its own standalone proxy to join any Minecraft server!" + }, + "components.homepage_features.3.line2": { + "message": "If you are a server owner, you can install our Floodgate plugin which allows Xbox Live authenticated Bedrock users to join without a Java Edition account!" + }, + "pages.download.title": { + "message": "Download" + }, + "pages.download.subheading": { + "message": "Download the latest versions of our various projects." + }, + "pages.download.description.geyser": { + "message": "A bridge/proxy allowing you to connect to Minecraft: Java Edition servers with Minecraft: Bedrock Edition." + }, + "pages.download.description.floodgate": { + "message": "Hybrid mode plugin to allow for connections from Geyser to join online mode servers." + }, + "pages.download.description.geyserconnect": { + "message": "A Geyser extension allowing players to connect to different Java or Geyser servers." + }, + "pages.download.description.thirdpartycosmetics": { + "message": "An extension that adds support for loading ears and other third party cosmetics on java players" + }, + "pages.dumpviewer.title": { + "message": "Dump Viewer" + }, + "pages.dumpviewer.subheading": { + "message": "View the breakdown of your Geyser dump." + }, + "pages.dumpviewer.enterdumpid": { + "message": "Enter Dump ID or URL below and click load." + }, + "pages.dumpviewer.button.load": { + "message": "Load" + }, + "pages.dumpviewer.versions": { + "message": "Versions" + }, + "pages.dumpviewer.versions.geyserver": { + "message": "Geyser Version" + }, + "pages.dumpviewer.versions.javaver": { + "message": "Java Version" + }, + "pages.dumpviewer.versions.os": { + "message": "Operating System" + }, + "pages.dumpviewer.geyserver": { + "message": "Geyser Version" + }, + "pages.dumpviewer.geyserver.build": { + "message": "Build" + }, + "pages.dumpviewer.geyserver.commit": { + "message": "Commit Hash" + }, + "pages.dumpviewer.geyserver.branch": { + "message": "Branch" + }, + "pages.dumpviewer.platform": { + "message": "Platform Info" + }, + "pages.dumpviewer.platform.id": { + "message": "Platform Identifier" + }, + "pages.dumpviewer.platform.name": { + "message": "Platform Name" + }, + "pages.dumpviewer.platform.version": { + "message": "Platform Version" + }, + "pages.dumpviewer.platform.apiver": { + "message": "Platform API Version" + }, + "pages.dumpviewer.platform.onlinemode": { + "message": "Online Mode" + }, + "pages.dumpviewer.sysinfo": { + "message": "System Info" + }, + "pages.dumpviewer.cpucount": { + "message": "CPU Count" + }, + "pages.dumpviewer.cpuname": { + "message": "CPU Name" + }, + "pages.dumpviewer.ram": { + "message": "RAM" + }, + "pages.dumpviewer.javaname": { + "message": "Java Name" + }, + "pages.dumpviewer.javavendor": { + "message": "Java Vendor" + }, + "pages.dumpviewer.dockercheck": { + "message": "Uses Docker?" + }, + "pages.dumpviewer.plugins": { + "message": "Plugins" + }, + "pages.dumpviewer.plugins.noplugins": { + "message": "No plugins to show." + }, + "pages.dumpviewer.plugins.helptext": { + "message": "Click on a plugin to view more information." + }, + "pages.dumpviewer.config": { + "message": "Config" + }, + "pages.dumpviewer.viewsource": { + "message": "View dump source" + }, + "theme.ErrorPageContent.title": { + "message": "This page crashed.", + "description": "The title of the fallback page when the page crashed" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "Scroll back to top", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.archive.title": { + "message": "Archive", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "Archive", + "description": "The page & hero description of the blog archive page" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "Blog list page navigation", + "description": "The ARIA label for the blog pagination" + }, + "theme.blog.paginator.newerEntries": { + "message": "Newer Entries", + "description": "The label used to navigate to the newer blog posts page (previous page)" + }, + "theme.blog.paginator.olderEntries": { + "message": "Older Entries", + "description": "The label used to navigate to the older blog posts page (next page)" + }, + "theme.blog.post.paginator.navAriaLabel": { + "message": "Blog post page navigation", + "description": "The ARIA label for the blog posts pagination" + }, + "theme.blog.post.paginator.newerPost": { + "message": "Newer Post", + "description": "The blog post button label to navigate to the newer/previous post" + }, + "theme.blog.post.paginator.olderPost": { + "message": "Older Post", + "description": "The blog post button label to navigate to the older/next post" + }, + "theme.blog.post.plurals": { + "message": "One post|{count} posts", + "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.blog.tagTitle": { + "message": "{nPosts} tagged with \"{tagName}\"", + "description": "The title of the page for a blog tag" + }, + "theme.tags.tagsPageLink": { + "message": "View All Tags", + "description": "The label of the link targeting the tag list page" + }, + "theme.colorToggle.ariaLabel": { + "message": "Switch between dark and light mode (currently {mode})", + "description": "The ARIA label for the navbar color mode toggle" + }, + "theme.colorToggle.ariaLabel.mode.dark": { + "message": "dark mode", + "description": "The name for the dark color mode" + }, + "theme.colorToggle.ariaLabel.mode.light": { + "message": "light mode", + "description": "The name for the light color mode" + }, + "theme.docs.DocCard.categoryDescription.plurals": { + "message": "1 item|{count} items", + "description": "The default description for a category card in the generated index about how many items this category includes" + }, + "theme.docs.breadcrumbs.navAriaLabel": { + "message": "Breadcrumbs", + "description": "The ARIA label for the breadcrumbs" + }, + "theme.docs.paginator.navAriaLabel": { + "message": "Docs pages", + "description": "The ARIA label for the docs pagination" + }, + "theme.docs.paginator.previous": { + "message": "Previous", + "description": "The label used to navigate to the previous doc" + }, + "theme.docs.paginator.next": { + "message": "Next", + "description": "The label used to navigate to the next doc" + }, + "theme.docs.tagDocListPageTitle.nDocsTagged": { + "message": "One doc tagged|{count} docs tagged", + "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.tagDocListPageTitle": { + "message": "{nDocsTagged} with \"{tagName}\"", + "description": "The title of the page for a docs tag" + }, + "theme.docs.versionBadge.label": { + "message": "Version: {versionLabel}" + }, + "theme.docs.versions.unreleasedVersionLabel": { + "message": "This is unreleased documentation for {siteTitle} {versionLabel} version.", + "description": "The label used to tell the user that he's browsing an unreleased doc version" + }, + "theme.docs.versions.unmaintainedVersionLabel": { + "message": "This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.", + "description": "The label used to tell the user that he's browsing an unmaintained doc version" + }, + "theme.docs.versions.latestVersionSuggestionLabel": { + "message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).", + "description": "The label used to tell the user to check the latest version" + }, + "theme.docs.versions.latestVersionLinkLabel": { + "message": "latest version", + "description": "The label used for the latest version suggestion link label" + }, + "theme.common.editThisPage": { + "message": "Edit this page", + "description": "The link label to edit the current page" + }, + "theme.common.headingLinkTitle": { + "message": "Direct link to {heading}", + "description": "Title for link to heading" + }, + "theme.lastUpdated.atDate": { + "message": " on {date}", + "description": "The words used to describe on which date a page has been last updated" + }, + "theme.lastUpdated.byUser": { + "message": " by {user}", + "description": "The words used to describe by who the page has been last updated" + }, + "theme.lastUpdated.lastUpdatedAtBy": { + "message": "Last updated{atDate}{byUser}", + "description": "The sentence used to display when a page has been last updated, and by who" + }, + "theme.NotFound.title": { + "message": "Page Not Found", + "description": "The title of the 404 page" + }, + "theme.navbar.mobileVersionsDropdown.label": { + "message": "Versions", + "description": "The label for the navbar versions dropdown on mobile view" + }, + "theme.tags.tagsListLabel": { + "message": "Tags:", + "description": "The label alongside a tag list" + }, + "theme.AnnouncementBar.closeButtonAriaLabel": { + "message": "Close", + "description": "The ARIA label for close button of announcement bar" + }, + "theme.admonition.caution": { + "message": "caution", + "description": "The default label used for the Caution admonition (:::caution)" + }, + "theme.admonition.danger": { + "message": "danger", + "description": "The default label used for the Danger admonition (:::danger)" + }, + "theme.admonition.info": { + "message": "info", + "description": "The default label used for the Info admonition (:::info)" + }, + "theme.admonition.note": { + "message": "note", + "description": "The default label used for the Note admonition (:::note)" + }, + "theme.admonition.tip": { + "message": "tip", + "description": "The default label used for the Tip admonition (:::tip)" + }, + "theme.admonition.warning": { + "message": "warning", + "description": "The default label used for the Warning admonition (:::warning)" + }, + "theme.blog.sidebar.navAriaLabel": { + "message": "Blog recent posts navigation", + "description": "The ARIA label for recent posts in the blog sidebar" + }, + "theme.CodeBlock.copied": { + "message": "Copied", + "description": "The copied button label on code blocks" + }, + "theme.CodeBlock.copyButtonAriaLabel": { + "message": "Copy code to clipboard", + "description": "The ARIA label for copy code blocks button" + }, + "theme.CodeBlock.copy": { + "message": "Copy", + "description": "The copy button label on code blocks" + }, + "theme.CodeBlock.wordWrapToggle": { + "message": "Toggle word wrap", + "description": "The title attribute for toggle word wrapping button of code block lines" + }, + "theme.DocSidebarItem.expandCategoryAriaLabel": { + "message": "Expand sidebar category '{label}'", + "description": "The ARIA label to expand the sidebar category" + }, + "theme.DocSidebarItem.collapseCategoryAriaLabel": { + "message": "Collapse sidebar category '{label}'", + "description": "The ARIA label to collapse the sidebar category" + }, + "theme.NavBar.navAriaLabel": { + "message": "Main", + "description": "The ARIA label for the main navigation" + }, + "theme.NotFound.p1": { + "message": "We could not find what you were looking for.", + "description": "The first paragraph of the 404 page" + }, + "theme.NotFound.p2": { + "message": "Please contact the owner of the site that linked you to the original URL and let them know their link is broken.", + "description": "The 2nd paragraph of the 404 page" + }, + "theme.navbar.mobileLanguageDropdown.label": { + "message": "Languages", + "description": "The label for the mobile language switcher dropdown" + }, + "theme.TOCCollapsible.toggleButtonLabel": { + "message": "On this page", + "description": "The label used by the button on the collapsible TOC component" + }, + "theme.blog.post.readMore": { + "message": "Read More", + "description": "The label used in blog post item excerpts to link to full blog posts" + }, + "theme.blog.post.readMoreLabel": { + "message": "Read more about {title}", + "description": "The ARIA label for the link to full blog posts from excerpts" + }, + "theme.blog.post.readingTime.plurals": { + "message": "One min read|{readingTime} min read", + "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.breadcrumbs.home": { + "message": "Home page", + "description": "The ARIA label for the home page in the breadcrumbs" + }, + "theme.docs.sidebar.collapseButtonTitle": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.collapseButtonAriaLabel": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.navAriaLabel": { + "message": "Docs sidebar", + "description": "The ARIA label for the sidebar navigation" + }, + "theme.docs.sidebar.closeSidebarButtonAriaLabel": { + "message": "Close navigation bar", + "description": "The ARIA label for close button of mobile sidebar" + }, + "theme.docs.sidebar.expandButtonTitle": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.docs.sidebar.expandButtonAriaLabel": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": { + "message": "← Back to main menu", + "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)" + }, + "theme.docs.sidebar.toggleSidebarButtonAriaLabel": { + "message": "Toggle navigation bar", + "description": "The ARIA label for hamburger menu button of mobile navigation" + }, + "theme.SearchBar.seeAll": { + "message": "See all {count} results" + }, + "theme.SearchPage.documentsFound.plurals": { + "message": "One document found|{count} documents found", + "description": "Pluralized label for \"{count} documents found\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.SearchPage.existingResultsTitle": { + "message": "Search results for \"{query}\"", + "description": "The search page title for non-empty query" + }, + "theme.SearchPage.emptyResultsTitle": { + "message": "Search the documentation", + "description": "The search page title for empty query" + }, + "theme.SearchPage.inputPlaceholder": { + "message": "Type your search here", + "description": "The placeholder for search page input" + }, + "theme.SearchPage.inputLabel": { + "message": "Search", + "description": "The ARIA label for search page input" + }, + "theme.SearchPage.algoliaLabel": { + "message": "Search by Algolia", + "description": "The ARIA label for Algolia mention" + }, + "theme.SearchPage.noResultsText": { + "message": "No results were found", + "description": "The paragraph for empty search result" + }, + "theme.SearchPage.fetchingNewResults": { + "message": "Fetching new results...", + "description": "The paragraph for fetching new search results" + }, + "theme.SearchBar.label": { + "message": "Search", + "description": "The ARIA label and placeholder for search button" + }, + "theme.SearchModal.searchBox.resetButtonTitle": { + "message": "Clear the query", + "description": "The label and ARIA label for search box reset button" + }, + "theme.SearchModal.searchBox.cancelButtonText": { + "message": "Cancel", + "description": "The label and ARIA label for search box cancel button" + }, + "theme.SearchModal.startScreen.recentSearchesTitle": { + "message": "Recent", + "description": "The title for recent searches" + }, + "theme.SearchModal.startScreen.noRecentSearchesText": { + "message": "No recent searches", + "description": "The text when no recent searches" + }, + "theme.SearchModal.startScreen.saveRecentSearchButtonTitle": { + "message": "Save this search", + "description": "The label for save recent search button" + }, + "theme.SearchModal.startScreen.removeRecentSearchButtonTitle": { + "message": "Remove this search from history", + "description": "The label for remove recent search button" + }, + "theme.SearchModal.startScreen.favoriteSearchesTitle": { + "message": "Favorite", + "description": "The title for favorite searches" + }, + "theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle": { + "message": "Remove this search from favorites", + "description": "The label for remove favorite search button" + }, + "theme.SearchModal.errorScreen.titleText": { + "message": "Unable to fetch results", + "description": "The title for error screen of search modal" + }, + "theme.SearchModal.errorScreen.helpText": { + "message": "You might want to check your network connection.", + "description": "The help text for error screen of search modal" + }, + "theme.SearchModal.footer.selectText": { + "message": "to select", + "description": "The explanatory text of the action for the enter key" + }, + "theme.SearchModal.footer.selectKeyAriaLabel": { + "message": "Enter key", + "description": "The ARIA label for the Enter key button that makes the selection" + }, + "theme.SearchModal.footer.navigateText": { + "message": "to navigate", + "description": "The explanatory text of the action for the Arrow up and Arrow down key" + }, + "theme.SearchModal.footer.navigateUpKeyAriaLabel": { + "message": "Arrow up", + "description": "The ARIA label for the Arrow up key button that makes the navigation" + }, + "theme.SearchModal.footer.navigateDownKeyAriaLabel": { + "message": "Arrow down", + "description": "The ARIA label for the Arrow down key button that makes the navigation" + }, + "theme.SearchModal.footer.closeText": { + "message": "to close", + "description": "The explanatory text of the action for Escape key" + }, + "theme.SearchModal.footer.closeKeyAriaLabel": { + "message": "Escape key", + "description": "The ARIA label for the Escape key button that close the modal" + }, + "theme.SearchModal.footer.searchByText": { + "message": "Search by", + "description": "The text explain that the search is making by Algolia" + }, + "theme.SearchModal.noResultsScreen.noResultsText": { + "message": "No results for", + "description": "The text explains that there are no results for the following search" + }, + "theme.SearchModal.noResultsScreen.suggestedQueryText": { + "message": "Try searching for", + "description": "The text for the suggested query when no results are found for the following search" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsText": { + "message": "Believe this query should return results?", + "description": "The text for the question where the user thinks there are missing results" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsLinkText": { + "message": "Let us know.", + "description": "The text for the link to report missing results" + }, + "theme.SearchModal.placeholder": { + "message": "Search docs", + "description": "The placeholder of the input of the DocSearch pop-up modal" + }, + "theme.ErrorPageContent.tryAgain": { + "message": "Try again", + "description": "The label of the button to try again rendering when the React error boundary captures an error" + }, + "theme.common.skipToMainContent": { + "message": "Skip to main content", + "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation" + }, + "theme.tags.tagsPageTitle": { + "message": "Tags", + "description": "The title of the tag list page" + }, + "pages.download.description.hurricane": { + "message": "A plugin with various workarounds for Geyser players that modify the server in order to achieve their goal." + }, + "theme.blog.author.pageTitle": { + "message": "{authorName} - {nPosts}", + "description": "The title of the page for a blog author" + }, + "theme.blog.authorsList.pageTitle": { + "message": "Authors", + "description": "The title of the authors page" + }, + "theme.blog.authorsList.viewAll": { + "message": "View all authors", + "description": "The label of the link targeting the blog authors page" + }, + "theme.blog.author.noPosts": { + "message": "This author has not written any posts yet.", + "description": "The text for authors with 0 blog post" + }, + "theme.contentVisibility.unlistedBanner.title": { + "message": "Unlisted page", + "description": "The unlisted content banner title" + }, + "theme.contentVisibility.unlistedBanner.message": { + "message": "This page is unlisted. Search engines will not index it, and only users having a direct link can access it.", + "description": "The unlisted content banner message" + }, + "theme.contentVisibility.draftBanner.title": { + "message": "Draft page", + "description": "The draft content banner title" + }, + "theme.contentVisibility.draftBanner.message": { + "message": "This page is a draft. It will only be visible in dev and be excluded from the production build.", + "description": "The draft content banner message" + }, + "mdx.setup.host_provider": { + "message": "Host Provider" + }, + "mdx.setup.self_host": { + "message": "Self Host" + }, + "mdx.setup.paper_spigot": { + "message": "Paper / Spigot" + }, + "mdx.setup.modded_servers": { + "message": "Modded Servers" + }, + "mdx.setup.proxy_servers": { + "message": "Proxy Servers" + }, + "mdx.setup.viaproxy": { + "message": "ViaProxy" + }, + "mdx.setup.standalone": { + "message": "Standalone" + }, + "pages.download.description.offhandextension": { + "message": "An extension that allows Bedrock players to switch their offhand and mainhand item by emoting." + }, + "pages.download.description.rainbow": { + "message": "A Minecraft mod to generate Geyser item mappings and bedrock resourcepacks for use with Geyser's custom item API (v2)." + }, + "pages.download.description.hydraulic": { + "message": "A companion mod to Geyser which allows for Bedrock players to join modded Minecraft: Java Edition servers." + }, + "pages.download.description.thunder": { + "message": "A java application to convert simple Java Edition resource packs to Bedrock Edition ones." + }, + "pages.dumpviewer.extensions": { + "message": "Extensions" + }, + "pages.dumpviewer.extensions.noextensions": { + "message": "No extensions to show." + }, + "pages.dumpviewer.extensions.helptext": { + "message": "Click on an extension to view more information." + }, + "mdx.setup.fabric": { + "message": "Fabric" + }, + "mdx.setup.neoforge": { + "message": "NeoForge" + }, + "mdx.setup.installing_geyser": { + "message": "Installing Geyser" + }, + "mdx.setup.download_jar": { + "message": "Download {jarName}." + }, + "mdx.setup.place_jar": { + "message": "Place the {jarName} in the {jarDirectory} folder." + }, + "mdx.setup.restart_server": { + "message": "Restart the server." + }, + "mdx.setup.additional_steps": { + "message": "Additional Steps" + }, + "mdx.setup.connecting_on_bedrock": { + "message": "Connecting on Bedrock" + }, + "providers.config.templates.java_address": { + "message": "Set `address` in the `bedrock` section to the public address of the Java server." + }, + "providers.config.templates.custom_port_dedicated_ip": { + "message": "This host may only give out a separate port with a dedicated IP address." + }, + "providers.warnings.ovh_firewall_misconfig": { + "message": "To fix random `Unable to Connect` issues, see [here](/wiki/geyser/port-forwarding/#ovh-and-soyoustart)." + }, + "providers.config.templates.install_location.plugin_list": { + "message": "Install Geyser through the plugin or mod list provided by the host." + }, + "providers.config.templates.install_location.enable_bedrock_crossplay": { + "message": "Select the 'Enable Bedrock crossplay?' option when changing your server software to automatically install and configure Geyser and Floodgate." + }, + "providers.config.templates.info.geyser_installed_by_default": { + "message": "Geyser is installed and configured on all servers by default." + }, + "mdx.setup.checking_server_version": { + "message": "Checking your server version" + }, + "mdx.setup.restart_geyser": { + "message": "Restart Geyser." + }, + "mdx.setup.https_note": { + "message": "Unless signaling runs over {https}, Minecraft asks players whether they trust the server the first time they join." + }, + "mdx.setup.configuring_geyser": { + "message": "Configuring Geyser" + }, + "mdx.setup.open_config_simple": { + "message": "Now open the file {configLocation}. Find the part that starts with {bedrock}, and change the lines shown below." + }, + "mdx.setup.preconfigured": { + "message": "No changes needed. {name} automatically configures Geyser." + }, + "mdx.setup.transport_nethernet_simple": { + "message": "NetherNet is supported fully by 26.50+. If you'd like to also have working MOTD and player count for older versions, you will need to set up both NetherNet and Raknet." + }, + "mdx.setup.transport_both_compat": { + "message": "Also accepts RakNet, for additional compatibility: some Bedrock versions, such as 26.40, fetch the server's MOTD and player count over RakNet. This option needs a separate UDP port for NetherNet." + }, + "mdx.setup.placeholder_word": { + "message": "Replace this" + }, + "mdx.setup.replace_with_simple": { + "message": "With this" + }, + "mdx.setup.placeholder_java_port": { + "message": "The port of the Java server." + }, + "mdx.setup.placeholder_java_port_udp": { + "message": "A UDP port for NetherNet, other than {port}. This can be the Java server's port: the Java server only uses it over TCP, so Geyser can use it over UDP. Any other available UDP port works too." + }, + "mdx.setup.placeholder_second_available_port": { + "message": "An available UDP port for NetherNet, other than {port}. Open it for UDP." + }, + "mdx.setup.raknet_on_port": { + "message": "RakNet uses {port} over UDP, so that port has to be open for UDP as well." + }, + "mdx.setup.summary.nethernet_reported_generic": { + "message": "Reported to work with NetherNet" + }, + "mdx.setup.summary.supporter_configures": { + "message": "{name} configures Geyser for you automatically, including NetherNet." + }, + "mdx.setup.summary.updated": { + "message": "Instructions last updated on {date}" + }, + "mdx.setup.badge.gold": { + "message": "Gold supporter" + }, + "mdx.setup.badge.silver": { + "message": "Silver supporter" + }, + "mdx.setup.badge.bronze": { + "message": "Bronze supporter" + }, + "mdx.setup.unconfirmed_title": { + "message": "Not checked for NetherNet yet" + }, + "mdx.setup.warning_title": { + "message": "Warning" + }, + "mdx.setup.unconfirmed_reach_out_update": { + "message": "These instructions have not been checked for NetherNet yet. If Bedrock players can't join, reach out to {name} to get instructions on how to use Geyser, and let us know on {discord} so we can update this guide." + }, + "mdx.setup.try_not_listed": { + "message": "If your host cannot give you a separate port, follow the {notListed} instead. Players then join through {warden}, an external signaling service." + }, + "mdx.setup.try_not_listed.link": { + "message": "\"Not listed\" guide for using only the Java server's port" + }, + "mdx.setup.no_signaling": { + "message": "{name} supports neither built-in nor external signaling, so Bedrock players cannot connect over NetherNet." + }, + "mdx.setup.hosting_provider_article_short": { + "message": "Host's Geyser guide" + }, + "mdx.setup.hosting_provider_website_short": { + "message": "Website" + }, + "mdx.setup.hosting_provider_support_short": { + "message": "Support" + }, + "mdx.setup.hosting_provider_discord_short": { + "message": "Discord" + }, + "mdx.setup.not_listed.tab_allocated": { + "message": "I can allocate ports" + }, + "mdx.setup.not_listed.tab_java_only": { + "message": "I only have the Java server port" + }, + "components.provider.open_collaboration_group": { + "message": "Hosts that support Geyser's development" + }, + "components.provider.other_group": { + "message": "Other providers" + }, + "mdx.setup.connect.port_java": { + "message": "Your Java server's port" + }, + "mdx.setup.connect.port_config_step": { + "message": "The port you set in \"Configuring Geyser\"" + }, + "mdx.setup.connect.intro": { + "message": "In Minecraft: Bedrock Edition, go to Play, then Servers, and select Add Server. Fill it in like this:" + }, + "mdx.setup.connect.add_server": { + "message": "Add Server" + }, + "mdx.setup.connect.server_name": { + "message": "Server Name" + }, + "mdx.setup.connect.server_name_value": { + "message": "Anything you like" + }, + "mdx.setup.connect.server_address": { + "message": "Server Address" + }, + "mdx.setup.connect.server_address_value": { + "message": "Your Java server's address" + }, + "mdx.setup.connect.port": { + "message": "Port" + }, + "mdx.setup.transport_nethernet_tab": { + "message": "NetherNet" + }, + "mdx.setup.transport_both_tab": { + "message": "NetherNet and RakNet" + }, + "providers.ports.assign": { + "message": "Assign a port in your host's panel, open for both TCP and UDP." + }, + "providers.ports.allocated": { + "message": "Pick an available port from the ports allocated to your server, open for both TCP and UDP." + }, + "providers.ports.ask_host": { + "message": "Ask your host for a port that is open for both TCP and UDP." + }, + "pages.hosting.tier.gold": { + "message": "Gold supporters" + }, + "pages.hosting.tier.silver": { + "message": "Silver supporters" + }, + "pages.hosting.tier.bronze": { + "message": "Bronze supporters" + }, + "pages.hosting.card.website": { + "message": "Website" + }, + "pages.hosting.card.setup": { + "message": "Setup guide" + }, + "pages.hosting.title": { + "message": "Hosting Providers" + }, + "pages.hosting.subheading": { + "message": "Hosting providers that support the development of Geyser." + }, + "pages.hosting.intro": { + "message": "The hosts below support Geyser and related projects through {openCollaboration}. Their support helps fund work on Geyser, such as keeping up with major changes to Bedrock Edition, like the switch to NetherNet. All hosts listed below also configure Geyser automatically when installed, making using Geyser easier than ever. We'd like to thank them all for their support." + }, + "pages.hosting.empty": { + "message": "No hosting providers are listed yet." + }, + "pages.hosting.other.title": { + "message": "Using another host?" + }, + "pages.hosting.other.text": { + "message": "Hosts not being listed here does not mean Geyser won't run there. The {setupGuide} includes community collected notes for many other hosts, and general instructions for those not listed." + }, + "pages.hosting.other.setup_guide": { + "message": "setup guide" + }, + "pages.hosting.meta.title": { + "message": "Hosting Providers" + }, + "pages.hosting.meta.description": { + "message": "Hosting providers that support the development of Geyser through Open Collaboration." + }, + "pages.download.description.floodgatedatabases": { + "message": "Database extension jars for Floodgate local linking." + }, + "providers.ports.from_host": { + "message": "The Bedrock port your host shows you." + }, + "providers.config.templates.info.only_serves_region": { + "message": "This host only provides service in {region}." + }, + "mdx.setup.velocity": { + "message": "Velocity" + }, + "mdx.setup.bungeecord": { + "message": "BungeeCord" + }, + "providers.ports.new_port": { + "message": "Open a new port in your server panel, open for both TCP and UDP, or ask your host for one if the panel has no option for it." + }, + "mdx.setup.supported_versions": { + "message": "Supported versions" + }, + "mdx.setup.restart_velocity": { + "message": "Restart Velocity." + }, + "mdx.setup.restart_bungeecord": { + "message": "Restart BungeeCord." + }, + "mdx.setup.restart_viaproxy": { + "message": "Restart ViaProxy." + }, + "mdx.setup.fabric_dependency": { + "message": "If it is not installed already, download {fabricApi} and place it in the same folder." + }, + "mdx.setup.version_step_viaversion": { + "message": "If your server is not running {version}, you will need to install {viaVersion}. For more information, see {supportedVersions}." + }, + "mdx.setup.version_step_proxy": { + "message": "All servers on the network must accept {version} Java clients, as Geyser imitates one." + }, + "mdx.setup.proxy_install_only": { + "message": "Install Geyser only on the {proxy} server! You can install Floodgate on all servers for better skin support and network-wide Floodgate API availability for other plugins." + }, + "mdx.setup.modded_requirements": { + "message": "{jarName} runs only on a {version} server, and only works alongside server-side mods. Mods that players also need to install on their client will not work. See {supportedVersions} for more details." + }, + "mdx.setup.self_port_choice": { + "message": "Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP, so it cannot be the port of the {platform} server." + }, + "mdx.setup.self_port_choice_standalone": { + "message": "Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP." + }, + "mdx.setup.self_port_sharing": { + "message": "{important}: No other program can use the Geyser port, over either protocol. This includes programs that use UDP, such as voice chat mods or Query, and programs that use TCP, such as another server, a web map, or a website." + }, + "mdx.setup.self_port_sharing.important": { + "message": "Important" + }, + "mdx.setup.connect_local_title": { + "message": "Connecting from the same network" + }, + "mdx.setup.connect_local": { + "message": "On the same device as the server, connect with {localhost} or {loopback} as the address. Other devices in the same local network can use your local IPv4 address, which starts with {ten} or {oneNineTwo}." + }, + "mdx.setup.connect_lan": { + "message": "Alternatively, open Minecraft: Bedrock Edition and join the LAN server in the {friends} tab." + }, + "mdx.setup.connect_lan.friends": { + "message": "Friends" + }, + "mdx.setup.connect_remote_title": { + "message": "Connecting from a different network" + }, + "mdx.setup.connect_remote": { + "message": "To let players from outside your network join, you need to make the Geyser port reachable from the internet." + }, + "mdx.setup.connect_tcp_udp": { + "message": "The Geyser port has to be forwarded for both TCP and UDP. Before NetherNet, forwarding UDP was enough. Now, players use TCP to find your server and UDP to play on it, so without TCP your server will not show up. If you use the \"NetherNet and RakNet\" option, also forward the {webrtcPort} for UDP." + }, + "mdx.setup.connect_options": { + "message": "You have two options:" + }, + "mdx.setup.connect_port_forwarding": { + "message": "{portForwarding}: open the Geyser port (e.g. 19132) for both TCP and UDP in your router and in your firewall. Players then connect with your public IPv4 address and the port. For detailed steps, see {guide}." + }, + "mdx.setup.connect_port_forwarding.title": { + "message": "Port forwarding" + }, + "mdx.setup.connect_port_forwarding.guide": { + "message": "Port forwarding" + }, + "mdx.setup.connect_playit": { + "message": "{playit}: if you cannot open a port, or do not want to expose your home IP address, playit.gg can create a tunnel for you. See {guide}. That guide was written for RakNet. For NetherNet, see {status}. Ngrok does not work, since it does not support UDP." + }, + "mdx.setup.connect_playit.guide": { + "message": "playit.gg Setup" + }, + "mdx.setup.connect_playit.status": { + "message": "NetherNet support on playit.gg" + }, + "mdx.setup.https_step_title": { + "message": "Recommended: Set up HTTPS for signaling" + }, + "mdx.setup.https_step": { + "message": "Geyser's built-in signaling server uses plain HTTP by default, so Minecraft shows players a \"Trust on First Use?\" prompt the first time they join. To avoid this prompt, serve signaling over HTTPS, as explained in {httpsGuide}. Some external signaling services, such as {warden}, provide HTTPS as well." + }, + "mdx.setup.https_step.guide": { + "message": "HTTPS for NetherNet" + }, + "mdx.setup.floodgate_info": { + "message": "To allow Bedrock Edition players to join your server without a paid Java Edition account, you can use {floodgate}." + }, + "mdx.setup.viaproxy_not_plugin.title": { + "message": "ViaProxy is not a plugin or mod" + }, + "mdx.setup.viaproxy_not_plugin": { + "message": "ViaProxy is a standalone program that runs separately from your Minecraft server. Do not put the ViaProxy jar into your server's {plugins} or {mods} folder. To run Geyser as a plugin or mod on your server instead, pick your server software in the tabs above." + }, + "mdx.setup.viaproxy_setup": { + "message": "Set up {viaProxy}." + }, + "mdx.setup.viaproxy_accounts": { + "message": "If you use the ViaProxy GUI, you can use its account management to join online mode servers with Bedrock Edition. If you use the ViaProxy CLI and want Bedrock players to join your online mode server, install and set up {floodgate}." + }, + "mdx.setup.viaproxy_auth_type": { + "message": "ViaProxy manages the {authType} setting itself, so its value in the config is ignored." + }, + "mdx.setup.standalone_java": { + "message": "You need Java 21 or newer to run Geyser. To run Geyser Standalone on Android, see the end of this page." + }, + "mdx.setup.standalone_not_plugin": { + "message": "Geyser Standalone is not a plugin or mod. It is a separate Java program that runs alongside your Java Edition server." + }, + "mdx.setup.standalone_download": { + "message": "Download {standalone}." + }, + "mdx.setup.standalone_folder": { + "message": "Create a new folder for Geyser, and put the jar in it." + }, + "mdx.setup.standalone_start": { + "message": "Start Geyser Standalone:" + }, + "mdx.setup.standalone_gui": { + "message": "{gui} (recommended): double-click the jar file. Geyser creates all the files it needs." + }, + "mdx.setup.standalone_console": { + "message": "{console}: create a startup script, like the one you would use for a Paper server. See {startupScript} for what to put into it. Run it, and Geyser creates all the files it needs." + }, + "mdx.setup.standalone_console.console": { + "message": "Console" + }, + "mdx.setup.standalone_console.startup_script": { + "message": "Creating a Startup Script" + }, + "mdx.setup.standalone_remote_intro": { + "message": "To choose which Java Edition server Geyser Standalone sends players to, find the {java} section:" + }, + "mdx.setup.standalone_remote": { + "message": "Change {address} to the Java server's address, or leave it as it is if the server runs on the same machine as Geyser. Then change {port} to the Java server's port. Set {authType} to {floodgate} if you set up Floodgate on the Java server, otherwise to {online} for an online mode server or {offline} for an offline mode server. To use Floodgate with Geyser Standalone, see {floodgateSetup}." + }, + "mdx.setup.standalone_remote.floodgate_setup": { + "message": "Floodgate Setup" + }, + "mdx.setup.standalone_android_title": { + "message": "Running Geyser Standalone on Android" + }, + "mdx.setup.standalone_android_caution": { + "message": "Apps such as Termux can run Geyser on Android, but how well this works depends on how powerful your device is. Do so at your own risk." + }, + "mdx.setup.standalone_termux_install": { + "message": "Download and install {termux}." + }, + "mdx.setup.run_command": { + "message": "Run {command}." + }, + "mdx.setup.standalone_termux_script": { + "message": "Alternatively, there is an automated setup script for clean Termux installs. It might not work for everyone, so try it if the steps above do not work:" + } +} \ No newline at end of file diff --git a/i18n/fr/docusaurus-plugin-content-blog/options.json b/i18n/fr/docusaurus-plugin-content-blog/options.json new file mode 100644 index 0000000..9fa6586 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-blog/options.json @@ -0,0 +1,10 @@ +{ + "description": { + "message": "Blog", + "description": "The description for the blog used in SEO" + }, + "sidebar.title": { + "message": "Recent posts", + "description": "The label for the left sidebar" + } +} \ No newline at end of file diff --git a/i18n/fr/docusaurus-plugin-content-docs/current.json b/i18n/fr/docusaurus-plugin-content-docs/current.json new file mode 100644 index 0000000..cb3914c --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,34 @@ +{ + "version.label": { + "message": "Next", + "description": "The label for version current" + }, + "sidebar.geyserSidebar.category.Setup": { + "message": "Setup", + "description": "The label for category Setup in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Common Issues": { + "message": "Common Issues", + "description": "The label for category Common Issues in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Configuring Geyser": { + "message": "Configuring Geyser", + "description": "The label for category Configuring Geyser in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.FAQ": { + "message": "FAQ", + "description": "The label for category FAQ in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Geyser API": { + "message": "Geyser API", + "description": "The label for category Geyser API in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.link.Hosting Providers": { + "message": "Hosting Providers", + "description": "The label for link Hosting Providers in sidebar geyserSidebar, linking to /hosting" + }, + "sidebar.geyserSidebar.category.Custom Content": { + "message": "Custom Content", + "description": "The label for category Custom Content in sidebar geyserSidebar" + } +} \ No newline at end of file diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/geyser/commands.md b/i18n/fr/docusaurus-plugin-content-docs/current/geyser/commands.md new file mode 100644 index 0000000..0492482 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/geyser/commands.md @@ -0,0 +1,83 @@ +--- +title: Commands and Permissions +description: Commands and their associated permission nodes for Geyser. +crowdin_sync: true +crowdin_page_id: cd92ff4f-9105-46a2-8696-8b0e2f8b9d31 +--- + +# Commands and Permissions + +Geyser features many built-in commands that can be used by players or server owners. + +:::info + +When using BungeeCord and Velocity, you will need to use a permission plugin such as [LuckPerms](https://luckperms.net/) +on the proxy server to assign permissions to players. Assigning permissions on the backend servers will not work. + +::: + +## Geyser commands & their permissions {#geyser-commands--their-permissions} + +| Command | Permission | Description | +| :-----------------------------------: | :---------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | +| `geyser`
Geyser root command | `geyser.command` | The permission required to see/run any Geyser commands. | +| `geyser help`
`geyser ?` | `geyser.command.help` | Shows help for all registered commands. | +| `geyser advancements` | `geyser.command.advancements` | Open the Java advancements menu. | +| `geyser dump` | `geyser.command.dump` | Dumps Geyser debug information for bug reports. | +| `geyser list` | `geyser.command.list` | List all players connected through Geyser. | +| `geyser nethernet` | `geyser.command.nethernet` | Shows NetherNet signaling status and diagnostics, for use with external signaling. | +| `geyser offhand` | `geyser.command.offhand` | Puts an item in your offhand. | +| `geyser reload` | `geyser.command.reload` | Reloads the Geyser configurations. Kicks all players when used! | +| `geyser settings` | `geyser.command.settings` | Opens a settings menu allowing you to modify aspects of the world. | +| `geyser shutdown`
`geyser stop` | `geyser.command.shutdown` | Shuts down Geyser.
*This command only works on Standalone.* | +| `geyser statistics` | `geyser.command.statistics` | Open the Java statistics menu. | +| `geyser version` | `geyser.command.version` | Shows the current Geyser version and checks for updates. | +| `geyser tooltips` | `geyser.command.tooltips` | Toggle showing Advanced Tooltips (F3 + H on Java) | +| `geyser extensions` | `geyser.command.extensions` | Lists all currently loaded extensions. This command is only registered if any extensions are loaded. | +| `geyser ping` | `geyser.command.ping` | Shows the ping between the player and the Geyser instance. | +| `geyser options` | `geyser.command.options` | Opens the "pause screen additions" dialogue, if sent by the Java server | +| `geyser quickactions` | `geyser.command.quickactions` | Opens the "quick actions" dialogue, if sent by the Java server. | + +## Permissions for Geyser extensions {#extension-permissions} + +For the following, `` refers to the extensions' id. + +| Command | Permission | Description | +| :------------------------- | :---------------------------- | :------------------------------------------------------------------------ | +| ` help`
` ?` | `geyser.command.exthelp.` | Shows help for all commands registered by this extension. | + +## Other Permissions {#other-permissions} + +Besides commands, there are other permissions that are used to guard specific Geyser features. + +| Permission | Description | +| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `geyser.settings.server` | Allow players to use the [game settings menu](/img/wiki/game_menu.png). (Also requires player to have op.) | +| `geyser.settings.gamerules` | Defines whether a user can alter gamerules in the [game settings menu](/img/wiki/game_menu.png). (Also requires player to have op.) | +| `geyser.update` | Whether this player will receive Geyser update notifications upon joining. | + +## Permissions when using Geyser-Standalone/Geyser-ViaProxy {#standalone-viaproxy-permissions} + +Geyser-ViaProxy and Geyser-Standalone feature their own basic permission handler. To edit base permissions, +open the `permissions.yml` file and add or remove permissions that Geyser players should receive when joining. +See the file for more information. + +You can further customize permission handling by creating a [Geyser extension](/wiki/geyser/extensions/) that makes use of Geysers API +to deal with permission checking. + +## Permissions when using Geyser on platforms without permission handlers {#permissions-platforms-no-permission-handlers} + +The following affects Geyser-BungeeCord, Geyser-Velocity, and Geyser-Fabric. +These platforms unfortunately do not have built-in permission handlers. Because of that, you will need to grant permissions on those platforms +manually using permission handlers, such as [LuckPerms](https://luckperms.net/). Geyser's permission are listed above. For extension permissions, consult their documentation. + +Alternatively, you can use [LuckLink](https://github.com/onebeastchris/LuckLink), a third-party Geyser extension, to automatically register permissions using [LuckPerms](https://luckperms.net/). + +- Install [LuckPerms](https://luckperms.net/) on the platform where you've installed Geyser (BungeeCord/Velocity/Fabric). +- To allow Geyser to automatically register permission defaults, install the [LuckLink](https://github.com/onebeastchris/LuckLink) Geyser extension + by downloading the `LuckLink.jar` and adding it to Geyser's `extensions` folder. +- Restart the server, and permissions should be automatically registered. + +## Floodgate commands and permissions {#floodgate-commands-and-permissions} + +For Floodgate commands, see [here](/wiki/floodgate/commands/). diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/geyser/playit-gg.md b/i18n/fr/docusaurus-plugin-content-docs/current/geyser/playit-gg.md new file mode 100644 index 0000000..7d20bd3 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/geyser/playit-gg.md @@ -0,0 +1,62 @@ +--- +title: playit.gg Setup +description: How to set up playit.gg to use Geyser without port forwarding. +crowdin_sync: true +crowdin_page_id: 3aee52d0-b943-4e37-8797-4a83ef55e42a +--- + +## Prerequisites {#prerequisites} + +:::info +You must be able to connect to your Geyser instance locally! +::: + +:::warning +The playit.gg Minecraft server plugin does not support UDP tunnels. You will need to use the program agent instead! +::: + +:::caution +This guide was written for RakNet, and does not cover NetherNet. For NetherNet, see [playit.gg's progress on NetherNet support](https://status.playit.gg/3/adding-nethernet-support). +::: + +## Setup {#setup} + +1. Head over to [playit.gg's website](https://playit.gg/) - download the program & run it. +2. The program will provide a claiming link. Visit that link, log in. + ![img](/img/wiki/playit-gg/playit_claim.png) +3. Confirm your agent. + ![img](/img/wiki/playit-gg/playit_claim_confirm.png) +4. Add the agent. + ![img](/img/wiki/playit-gg/playit_add_agent.png) +5. After the agent is created, create a tunnel. + ![img](/img/wiki/playit-gg/playit_add_tunnel.png) +6. Name your tunnel and click Next. + ![img](/img/wiki/playit-gg/playit_name_tunnel.png) +7. Select "Minecraft Bedrock" as the tunnel type and click Next. + ![img](/img/wiki/playit-gg/playit_tunnel_type.png) +8. Select the Free Network and click Next. + ![img](/img/wiki/playit-gg/playit_select_network.png) + **Do not change your Geyser port in `config.yml` unless you have a reason (for example, hosting another Geyser server on the same machine).** The Bedrock (Geyser) port in `config.yml` and the playit.gg ports are separate. playit.gg will forward its port to the default Geyser port and should work as-is. Changing it can cause errors. If you have changed your config port, set the Bedrock port back to the default `19132` and ensure `clone-remote-port` is `false`. +9. If the playit.gg agent and Geyser are running on the same device, leave the IP as `127.0.0.1` and set the port to whatever you configured in Geyser's config. + ![img](/img/wiki/playit-gg/playit_set_ipandport.png) +10. Select `proxy-protocol-v2` for the Proxy Protocol section and click Next. +11. In the Geyser config, under `advanced:` `bedrock:`, set `use-haproxy-protocol` to `true`. +12. Click Create Tunnel and wait for the tunnel to be created. + ![img](/img/wiki/playit-gg/playit_create_tunnel.png) +13. Copy your tunnel's port. For example, if your tunnel address is `visiting-phone.gl.at.ply.gg:6695`, then `6695` is the tunnel port. +14. In the Geyser config under `advanced:` `bedrock:`, set `broadcast-port` to your tunnel port (`6695` in the example). +15. Save your config. Start your Minecraft server and connect using your tunnel's IP and port. +16. If you join successfully, then you are done! Make sure to leave the playit.gg program running as closing it will close the tunnel. You also may want to ratelimit individual connections - use the "Per Connection Rate Limit" option to do so. + (If you failed to join, check out the [troubleshooting](#troubleshooting) section of the page.) + +## Troubleshooting {#troubleshooting} + +### I can't connect to my server! {#i-cant-connect-to-my-server} + +- *Try going to the Agents page, set your agent to IPv4 only, and change the region. You may need to switch regions a few times before you can connect.* +- *Are there errors in your minecraft server console?* +- *Unless you manually changed the "Local Port" on the playit.gg website, in Geyser config, ensure that the bedrock port is the default of `19132` and that `clone-remote-port` is `false`.* +- *If you changed the `bedrock-port` or set `clone-remote-port` to `true` and have a reason for doing so (e.g. hosting another Geyser server on the same machine), you'll have to tell playit.gg to use that port instead! See the last paragraph in step 8.* +- *Check that you're joining with playit.gg's IP and port from the "Allocation" tab.* +- *Make sure that you have the program agent open while trying to join.* +- *See [here](/wiki/geyser/fixing-unable-to-connect-to-world/) for general troubleshooting steps.* diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md b/i18n/fr/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md new file mode 100644 index 0000000..492774c --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md @@ -0,0 +1,208 @@ +--- +title: Port forwarding +description: Information on how to set up port forwarding required for Geyser. +crowdin_sync: true +crowdin_page_id: be7c5a22-1e8e-4ffe-8d13-7d763dd75886 +--- + +# Port forwarding {#port-forwarding} + +This page contains information on how to set up port forwarding required for Geyser to work when self-hosting. +There are also guides for specific configurations, such as Docker/Pterodactyl, or on specific VPS/KVM providers, such as OVH or Oracle Cloud. + +:::caution + +If you are using a Minecraft server hosting provider (e.g. Aternos, or Nodecraft), you should refer to the hosting provider setup on the [setup](/wiki/geyser/setup) page instead. + +::: + +:::info Ports that need to be opened +With NetherNet, the Geyser port (by default 19132) has to be open for **both TCP and UDP**: players find the server over TCP (signaling), and play on it over UDP. +If you use the "NetherNet and RakNet" option, also open the `webrtc-port` for UDP. +With external signaling, such as [Warden](https://warden.cloud), only UDP for WebRTC is needed. +::: + +## Port forwarding on Linux/Windows/macOS {#port-forwarding-on-linuxwindowsmacos} + +To allow others to play on your server, you will need to set up port forwarding on the device hosting Geyser. +Additionally, you will need to port forward the port on your router/modem (in other words, allow and route traffic on that port to the proper machine) if you want the server to be accessible outside your own home network. +Forward it for both TCP and UDP; many routers offer a "TCP/UDP" or "Both" option for this. +See [here](https://www.howtogeek.com/66214/how-to-forward-ports-on-your-router/) or [here](https://www.lifewire.com/how-to-port-forward-4163829) for helpful guides. +Do note: if you do not have a static IP address, your IP address may change over time. + +:::info + +Some ISPs (Internet Service Providers) block certain ports, or don't allow you to open ports (e.g. by using CGNAT, which doesn't allow you to open a port with a dynamic IP). +Other ISPs may require you to pay extra for a static IP address. +As an alternative to port forwarding, you can use [playit.gg](/wiki/geyser/playit-gg/) to create a tunnel. + +::: + +### Windows {#windows} + +To open a port on Windows, you will need to open the port through the Windows Firewall. There are multiple ways to do this: + +- `Powershell` (recommended) + + To open a port on TCP and UDP (in our example, port 19132), run the following commands in an administrator Powershell: + + ```powershell + New-NetFirewallRule -DisplayName "Geyser (TCP)" -Direction Inbound -Protocol TCP -LocalPort 19132 -Action Allow + New-NetFirewallRule -DisplayName "Geyser (UDP)" -Direction Inbound -Protocol UDP -LocalPort 19132 -Action Allow + ``` + + Running these commands creates two rules that allow TCP and UDP traffic on port 19132. + +- Windows Defender Firewall with Advanced Security (GUI) + 1. Search for "Windows Defender Firewall with Advanced Security" in the start menu, and open it. ([Image](/img/wiki/port-forwarding/windows-1.png)) + 2. Click on "Inbound Rules" in the left sidebar. ([Image](/img/wiki/port-forwarding/windows-2.png)) + 3. Click on "New Rule..." in the right sidebar. ([Image](/img/wiki/port-forwarding/windows-2.png)) + 4. Select "Port" as the rule type and click "Next". ([Example](/img/wiki/port-forwarding/windows-3.png)) + 5. Select "UDP" and "Specific local ports", and enter the port you want to open (in our example, 19132). Click "Next". ([Example](/img/wiki/port-forwarding/windows-4.png)) + 6. Select "Allow the connection" and click "Next". ([Example](/img/wiki/port-forwarding/windows-5.png)) + 7. Select the profiles you want to apply the rule to (e.g. "Domain", "Private", "Public"), and click "Next". ([Example](/img/wiki/port-forwarding/windows-6.png)) + 8. Enter a name for the rule (e.g. "Geyser (UDP)"), and click "Finish". ([Image](/img/wiki/port-forwarding/windows-7.png)) + 9. Repeat these steps, selecting "TCP" in step 5 and naming the rule e.g. "Geyser (TCP)". + +### Linux {#linux} + +Different Linux distributions, even different VPS providers ship and configure different firewalls. In the following examples, we will use `19132` as the port to open, but you should replace this with the port you are using for Geyser. + +- `ufw` is a simple firewall front-end for iptables that is commonly used on Ubuntu and Debian. To open a port on TCP and UDP, run the following commands: + ```bash + sudo ufw allow 19132/tcp + sudo ufw allow 19132/udp + ``` + Then, reload the firewall with `sudo ufw reload`, and see all open rules with `sudo ufw status`. + Further helpful guides: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server), [Baeldung](https://www.baeldung.com/linux/uncomplicated-firewall) + +- `firewalld` Add a port on TCP and UDP by running: + ```bash + sudo firewall-cmd --zone=public --permanent --add-port=19132/tcp + sudo firewall-cmd --zone=public --permanent --add-port=19132/udp + ``` + Then, reload the firewall with `sudo firewall-cmd --reload`, and see all open rules with `sudo firewall-cmd --list-all`. + Further helpful guides: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7) + +- `iptables` is a common firewall that is used on many Linux distributions. To open a port on TCP and UDP, run the following commands: + ```bash + sudo iptables -A INPUT -p tcp --dport 19132 -j ACCEPT + sudo iptables -A INPUT -p udp --dport 19132 -j ACCEPT + ``` + Then, save the firewall with `sudo iptables-save`, and see all open rules with `sudo iptables -L`. + Further helpful guides for iptables: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-iptables-on-ubuntu-14-04), [Ubuntu](https://help.ubuntu.com/community/IptablesHowTo) + +### macOS {#macos} + +You will need to disable `Block all incoming connections` in your Firewall settings, as that will block any connections and won't allow you to make exceptions. +To allow incoming connections, click `Allow` when getting [these prompts](/img/wiki/port-forwarding/macos_warning.png). +If you are still facing issues, see Apple's official guide [here](https://support.apple.com/guide/mac-help/MH11783) to open a port on macOS. + +## Using Docker or Pterodactyl {#using-docker-or-pterodactyl} + +In addition to port forwarding the port in your server's firewall (and, if applicable, your router/modem), you will need to assign the port in Docker/Pterodactyl. + +### Pterodactyl {#pterodactyl} + +Make sure to allocate the port(s) to the server in the Pterodactyl panel's `Network` tab, additionally to port forwarding the port(s). +See [here](https://pterodactyl.io/community/games/minecraft.html#allocations-in-the-panel) for more information. + +![Pterodactyl panel, Network section](/img/wiki/port-forwarding/pterodactyl-1.png) + +There are also different Geyser eggs for Pterodactyl, which can be found [here](https://github.com/GeyserMC/pterodactyl-stuff). + +:::caution + +If you are not able to allocate ports in the Pterodactyl panel, you will need to contact your server host to allocate one for you or try to use an existing port allocation. + +::: + +### Docker {#docker} + +For Geyser to work under Docker (e.g. using [Itzg's Docker image](https://github.com/itzg/docker-minecraft-server)), you will need to add the Geyser port on TCP and UDP to the docker-compose file. This is done by adding the following to the `ports` section: + +```yaml +ports: + - "25565:25565" + - "19132:19132" + - "19132:19132/udp" +``` + +Without a suffix, Docker exposes the port on TCP. The additional `/udp` suffix exposes it on UDP. +Alternatively, add the ports with the `-p 19132:19132 -p 19132:19132/udp` flags to the docker run command. + +## Issues with specific VPS/KVM providers {#issues-with-specific-vpskvm-providers} + +Some providers, such as OVH, Oracle Cloud, and SoYouStart, have a firewall that blocks the ports Geyser needs by default/in most cases. + +### OVH and SoYouStart {#ovh-and-soyoustart} + +OVH's GAME firewall filters traffic with rules made for specific games. The Minecraft Bedrock and Minecraft Pocket Edition rules currently only support RakNet, the protocol Bedrock used before NetherNet. +With NetherNet, players find the server over HTTP (TCP) and play over WebRTC (UDP), which these rules currently do not support. +For now, use the `Other` rule for the Geyser port(s) instead. + +:::caution + +If you do not have access to these firewall settings, but got linked to this page, please contact your server host and provide them with this link - they are likely using OVH internally. + +::: + +**To resolve it:** + +OVH: + +1. Navigate to `Network interfaces` +2. Click on the `...` button on the table for your IP -> then `...` and `Configure the GAME firewall` -> `Add rule` -> `Other protocol` +3. Add your Geyser port into `outgoing port`. If you use the "NetherNet and RakNet" option, add a rule for the `webrtc-port` as well. +4. If you use OVH's Edge Network Firewall, make sure it allows the Geyser port over both TCP and UDP. + +SoYouStart (subsidiary of OVH): + +1. Click the IP tab. +2. Click the gear at the right of the public IP address; select "Game mitigation". +3. Pick "Add a rule". +4. Select "Other" in the dropdown list and enter the Geyser port. If you use the "NetherNet and RakNet" option, add the `webrtc-port` as well. +5. Save and wait a few seconds for the changes to come into effect. + +### Oracle Cloud/OCI {#oracle-cloudoci} + +By default, Oracle Cloud will block all incoming traffic except for SSH and RDP. This must be resolved within Oracle Cloud itself and the Compute Instance running Geyser. + +The steps below assume that you are using the default ports for the Java server and Geyser, and should be adjusted accordingly. + +1. Find your Compute Instance in the OCI Console +2. Click on the instances Virtual Cloud Network (this will be under "Instance details") +3. On the left-hand side, select "Security Lists" +4. Select one of the security lists. By default only one security list will exist. It doesn't matter which security list we add the rules to. +5. Select "Add Ingress Rules" +6. Configure rules for Java (optional) + - Set "Source CIDR" to `0.0.0.0/0` + - Set "Destination Port Range" to `25565-25565` + - Select "Another Ingress Rule" +7. Configure rules for Geyser, once for TCP and once for UDP + - Set "Source CIDR" to `0.0.0.0/0` + - Set "Destination Port Range" to `19132-19132` + - Set "IP Protocol" to TCP + - Select "Another Ingress Rule", and repeat with "IP Protocol" set to UDP +8. Select "Add Ingress Rules" + +#### Oracle Linux {#oracle-linux} + +Run the following commands to allow Minecraft and Geyser through the OS firewall: + +```bash +sudo firewall-cmd --add-port=25565/tcp --permanent +sudo firewall-cmd --add-port=19132/tcp --permanent +sudo firewall-cmd --add-port=19132/udp --permanent +sudo firewall-cmd --reload +``` + +#### Ubuntu {#ubuntu} + +Run the following commands to allow Minecraft and Geyser through the OS firewall: + +```bash +sudo ufw allow 25565/tcp +sudo ufw allow 19132/tcp +sudo ufw allow 19132/udp +``` diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx new file mode 100644 index 0000000..47391e7 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx @@ -0,0 +1,47 @@ +--- +title: Supported versions +description: Information on the versions Geyser supports. +crowdin_sync: true +crowdin_page_id: f199ae24-f711-486d-8e42-3079be87e8cd +--- + +import { Versions } from '@site/src/components/Versions' +import DocCardList from '@theme/DocCardList'; + +# Currently supported versions \ {#currently-supported-versions} + +:::info +**Geyser currently supports Minecraft Bedrock and Minecraft Java **. +::: + +## Using Geyser with older Minecraft: Bedrock edition versions \ {#using-geyser-with-older-minecraft-bedrock-edition-versions} + +Older Bedrock versions are not supported. Minecraft: Bedrock Edition updates automatically on all platforms, so there are few users who would +want to use older versions. Further, older Bedrock versions do not have all features which Geyser support, which would lead to a sub-par experience. + +## Using Geyser on older Minecraft: Java edition servers \ {#using-geyser-on-older-minecraft-java-edition-servers} + +Geyser emulates a client, so a Java server must accept users using that version in order for Geyser to work. +This is possible thanks to [ViaVersion](https://viaversion.com/viaversion), which allows Java edition players with newer versions to join servers +that run older versions of the game. + +### Using Geyser-Spigot on a Spigot/Paper server running on 1.20.5 or above + +You can use Geyser-Spigot on servers that run on 1.20.5 or above. You will also need to run at least Java 21 or later to use Geyser. See [here](https://docs.papermc.io/misc/java-install) for more info on updating Java. Paper versions not supporting Java 21 can add `-DPaper.IgnoreJavaVersion=true` flag to the Java startup arguments to allow Paper to run on Java 21. + +In order for Bedrock players to chat (1.19.3+) or join (1.19.1/1.19.2), you need to disable chat signing. More information about that can be read on the [chat signing page](/wiki/geyser/secure-chat). + +### Using Geyser-Spigot on a Spigot/Paper server running on a version below 1.20.5 + +This is unfortunately not possible. You'll need to use a proxy such as Velocity or BungeeCord, or set up Geyser-Standalone separately with the [ViaVersion](https://viaversion.com/viaversion) plugin. Another alternative would be to install [ViaProxy](https://viaversion.com/viaproxy), which is a standalone ViaVersion proxy that +translates between different Minecraft: Java edition versions, and to install Geyser-ViaProxy on it. + +### Using Geyser on Fabric/NeoForge servers not on the latest Minecraft version \ {#using-geyser-on-fabric-neoforge-servers-not-on-the-latest-minecraft-version} + +Unfortunately, Geyser-Fabric and Geyser-NeoForge only support the latest version of Minecraft: Java edition. The recommended way to still use +Geyser with older versions would be to install [ViaProxy](https://viaversion.com/viaproxy), which is a standalone ViaVersion proxy that +translates between different Minecraft: Java edition versions, and to install Geyser-ViaProxy on it. This will also work with Floodgate auth. + +### Using Geyser-Velocity or Geyser-BungeeCord on a proxy + +Make sure you update your proxy software to the latest available version, and, if the backend servers are not on , also install the [ViaVersion](https://viaversion.com/viaversion) plugin on the backend servers. Velocity/BungeeCord support most Minecraft versions, so you can update them regardless of the backend server versions. diff --git a/i18n/fr/docusaurus-theme-classic/footer.json b/i18n/fr/docusaurus-theme-classic/footer.json new file mode 100644 index 0000000..1a69184 --- /dev/null +++ b/i18n/fr/docusaurus-theme-classic/footer.json @@ -0,0 +1,50 @@ +{ + "link.title.Wiki": { + "message": "Wiki", + "description": "The title of the footer links column with title=Wiki in the footer" + }, + "link.title.Downloads": { + "message": "Downloads", + "description": "The title of the footer links column with title=Downloads in the footer" + }, + "link.title.Community": { + "message": "Community", + "description": "The title of the footer links column with title=Community in the footer" + }, + "link.title.More": { + "message": "More", + "description": "The title of the footer links column with title=More in the footer" + }, + "link.item.label.REST APIs": { + "message": "REST APIs", + "description": "The label of footer link with label=REST APIs linking to wiki/api/api.geysermc.org/global-api" + }, + "link.item.label.Other": { + "message": "Other", + "description": "The label of footer link with label=Other linking to download?project=other-projects" + }, + "link.item.label.Blog": { + "message": "Blog", + "description": "The label of footer link with label=Blog linking to blog" + }, + "link.item.label.Donate": { + "message": "Donate", + "description": "The label of footer link with label=Donate linking to https://opencollective.com/geysermc" + }, + "link.item.label.Global Linking": { + "message": "Global Linking", + "description": "The label of footer link with label=Global Linking linking to https://link.geysermc.org/" + }, + "link.item.label.Privacy Policy": { + "message": "Privacy Policy", + "description": "The label of footer link with label=Privacy Policy linking to https://ziax.com/terms/privacy-policy/" + }, + "logo.alt": { + "message": "GeyserMC logo", + "description": "The alt text of footer logo" + }, + "copyright": { + "message": "Copyright © 2026 GeyserMC. Built with Docusaurus.
This website is not an official Minecraft website and is not associated with Mojang Studios or Microsoft. All product and company names are trademarks or registered trademarks of their respective holders. Use of these names does not imply any affiliation or endorsement by them.", + "description": "The footer copyright" + } +} \ No newline at end of file diff --git a/i18n/fr/docusaurus-theme-classic/navbar.json b/i18n/fr/docusaurus-theme-classic/navbar.json new file mode 100644 index 0000000..c4f41a5 --- /dev/null +++ b/i18n/fr/docusaurus-theme-classic/navbar.json @@ -0,0 +1,38 @@ +{ + "logo.alt": { + "message": "GeyserMC logo", + "description": "The alt text of navbar logo" + }, + "item.label.Wiki": { + "message": "Wiki", + "description": "Navbar item with label Wiki" + }, + "item.label.Blog": { + "message": "Blog", + "description": "Navbar item with label Blog" + }, + "item.label.Utilities": { + "message": "Utilities", + "description": "Navbar item with label Utilities" + }, + "item.label.Download": { + "message": "Download", + "description": "Navbar item with label Download" + }, + "item.label.REST APIs": { + "message": "REST APIs", + "description": "Navbar item with label REST APIs" + }, + "item.label.Other": { + "message": "Other", + "description": "Navbar item with label Other" + }, + "item.label.Dump Viewer": { + "message": "Dump Viewer", + "description": "Navbar item with label Dump Viewer" + }, + "item.label.Hosting": { + "message": "Hosting", + "description": "Navbar item with label Hosting" + } +} \ No newline at end of file diff --git a/i18n/it/code.json b/i18n/it/code.json new file mode 100644 index 0000000..7251b24 --- /dev/null +++ b/i18n/it/code.json @@ -0,0 +1,1023 @@ +{ + "pages.main.title": { + "message": "Revolutionize Your Minecraft Server" + }, + "pages.main.subtitle": { + "message": "Enable clients from Minecraft Bedrock Edition to join your Minecraft Java server" + }, + "components.homepage_features.1.line1": { + "message": "Geyser is a program that allows Minecraft: Bedrock Edition clients to join Minecraft: Java Edition servers, allowing for true crossplay between both editions of the game." + }, + "components.homepage_features.1.line2": { + "message": "The ultimate goal of this project is to allow Minecraft: Bedrock Edition users to join Minecraft: Java Edition servers as seamlessly as possible." + }, + "components.homepage_features.2": { + "message": "Geyser acts as a translator which sits between the Bedrock client and the Java server. It takes data from the Bedrock client and translates it into a format the Java server understands and vice versa. Geyser works with any modern Minecraft version and can be installed either as a plugin or ran as a standalone program." + }, + "components.homepage_features.3.line1": { + "message": "Geyser can be joined from Bedrock clients on Windows 10/11, iOS, Android, and even consoles. Geyser works with a wide array of hosting providers, but can also be used as its own standalone proxy to join any Minecraft server!" + }, + "components.homepage_features.3.line2": { + "message": "If you are a server owner, you can install our Floodgate plugin which allows Xbox Live authenticated Bedrock users to join without a Java Edition account!" + }, + "pages.download.title": { + "message": "Download" + }, + "pages.download.subheading": { + "message": "Download the latest versions of our various projects." + }, + "pages.download.description.geyser": { + "message": "A bridge/proxy allowing you to connect to Minecraft: Java Edition servers with Minecraft: Bedrock Edition." + }, + "pages.download.description.floodgate": { + "message": "Hybrid mode plugin to allow for connections from Geyser to join online mode servers." + }, + "pages.download.description.geyserconnect": { + "message": "A Geyser extension allowing players to connect to different Java or Geyser servers." + }, + "pages.download.description.thirdpartycosmetics": { + "message": "An extension that adds support for loading ears and other third party cosmetics on java players" + }, + "pages.dumpviewer.title": { + "message": "Dump Viewer" + }, + "pages.dumpviewer.subheading": { + "message": "View the breakdown of your Geyser dump." + }, + "pages.dumpviewer.enterdumpid": { + "message": "Enter Dump ID or URL below and click load." + }, + "pages.dumpviewer.button.load": { + "message": "Load" + }, + "pages.dumpviewer.versions": { + "message": "Versions" + }, + "pages.dumpviewer.versions.geyserver": { + "message": "Geyser Version" + }, + "pages.dumpviewer.versions.javaver": { + "message": "Java Version" + }, + "pages.dumpviewer.versions.os": { + "message": "Operating System" + }, + "pages.dumpviewer.geyserver": { + "message": "Geyser Version" + }, + "pages.dumpviewer.geyserver.build": { + "message": "Build" + }, + "pages.dumpviewer.geyserver.commit": { + "message": "Commit Hash" + }, + "pages.dumpviewer.geyserver.branch": { + "message": "Branch" + }, + "pages.dumpviewer.platform": { + "message": "Platform Info" + }, + "pages.dumpviewer.platform.id": { + "message": "Platform Identifier" + }, + "pages.dumpviewer.platform.name": { + "message": "Platform Name" + }, + "pages.dumpviewer.platform.version": { + "message": "Platform Version" + }, + "pages.dumpviewer.platform.apiver": { + "message": "Platform API Version" + }, + "pages.dumpviewer.platform.onlinemode": { + "message": "Online Mode" + }, + "pages.dumpviewer.sysinfo": { + "message": "System Info" + }, + "pages.dumpviewer.cpucount": { + "message": "CPU Count" + }, + "pages.dumpviewer.cpuname": { + "message": "CPU Name" + }, + "pages.dumpviewer.ram": { + "message": "RAM" + }, + "pages.dumpviewer.javaname": { + "message": "Java Name" + }, + "pages.dumpviewer.javavendor": { + "message": "Java Vendor" + }, + "pages.dumpviewer.dockercheck": { + "message": "Uses Docker?" + }, + "pages.dumpviewer.plugins": { + "message": "Plugins" + }, + "pages.dumpviewer.plugins.noplugins": { + "message": "No plugins to show." + }, + "pages.dumpviewer.plugins.helptext": { + "message": "Click on a plugin to view more information." + }, + "pages.dumpviewer.config": { + "message": "Config" + }, + "pages.dumpviewer.viewsource": { + "message": "View dump source" + }, + "theme.ErrorPageContent.title": { + "message": "This page crashed.", + "description": "The title of the fallback page when the page crashed" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "Scroll back to top", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.archive.title": { + "message": "Archive", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "Archive", + "description": "The page & hero description of the blog archive page" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "Blog list page navigation", + "description": "The ARIA label for the blog pagination" + }, + "theme.blog.paginator.newerEntries": { + "message": "Newer Entries", + "description": "The label used to navigate to the newer blog posts page (previous page)" + }, + "theme.blog.paginator.olderEntries": { + "message": "Older Entries", + "description": "The label used to navigate to the older blog posts page (next page)" + }, + "theme.blog.post.paginator.navAriaLabel": { + "message": "Blog post page navigation", + "description": "The ARIA label for the blog posts pagination" + }, + "theme.blog.post.paginator.newerPost": { + "message": "Newer Post", + "description": "The blog post button label to navigate to the newer/previous post" + }, + "theme.blog.post.paginator.olderPost": { + "message": "Older Post", + "description": "The blog post button label to navigate to the older/next post" + }, + "theme.blog.post.plurals": { + "message": "One post|{count} posts", + "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.blog.tagTitle": { + "message": "{nPosts} tagged with \"{tagName}\"", + "description": "The title of the page for a blog tag" + }, + "theme.tags.tagsPageLink": { + "message": "View All Tags", + "description": "The label of the link targeting the tag list page" + }, + "theme.colorToggle.ariaLabel": { + "message": "Switch between dark and light mode (currently {mode})", + "description": "The ARIA label for the navbar color mode toggle" + }, + "theme.colorToggle.ariaLabel.mode.dark": { + "message": "dark mode", + "description": "The name for the dark color mode" + }, + "theme.colorToggle.ariaLabel.mode.light": { + "message": "light mode", + "description": "The name for the light color mode" + }, + "theme.docs.DocCard.categoryDescription.plurals": { + "message": "1 item|{count} items", + "description": "The default description for a category card in the generated index about how many items this category includes" + }, + "theme.docs.breadcrumbs.navAriaLabel": { + "message": "Breadcrumbs", + "description": "The ARIA label for the breadcrumbs" + }, + "theme.docs.paginator.navAriaLabel": { + "message": "Docs pages", + "description": "The ARIA label for the docs pagination" + }, + "theme.docs.paginator.previous": { + "message": "Previous", + "description": "The label used to navigate to the previous doc" + }, + "theme.docs.paginator.next": { + "message": "Next", + "description": "The label used to navigate to the next doc" + }, + "theme.docs.tagDocListPageTitle.nDocsTagged": { + "message": "One doc tagged|{count} docs tagged", + "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.tagDocListPageTitle": { + "message": "{nDocsTagged} with \"{tagName}\"", + "description": "The title of the page for a docs tag" + }, + "theme.docs.versionBadge.label": { + "message": "Version: {versionLabel}" + }, + "theme.docs.versions.unreleasedVersionLabel": { + "message": "This is unreleased documentation for {siteTitle} {versionLabel} version.", + "description": "The label used to tell the user that he's browsing an unreleased doc version" + }, + "theme.docs.versions.unmaintainedVersionLabel": { + "message": "This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.", + "description": "The label used to tell the user that he's browsing an unmaintained doc version" + }, + "theme.docs.versions.latestVersionSuggestionLabel": { + "message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).", + "description": "The label used to tell the user to check the latest version" + }, + "theme.docs.versions.latestVersionLinkLabel": { + "message": "latest version", + "description": "The label used for the latest version suggestion link label" + }, + "theme.common.editThisPage": { + "message": "Edit this page", + "description": "The link label to edit the current page" + }, + "theme.common.headingLinkTitle": { + "message": "Direct link to {heading}", + "description": "Title for link to heading" + }, + "theme.lastUpdated.atDate": { + "message": " on {date}", + "description": "The words used to describe on which date a page has been last updated" + }, + "theme.lastUpdated.byUser": { + "message": " by {user}", + "description": "The words used to describe by who the page has been last updated" + }, + "theme.lastUpdated.lastUpdatedAtBy": { + "message": "Last updated{atDate}{byUser}", + "description": "The sentence used to display when a page has been last updated, and by who" + }, + "theme.NotFound.title": { + "message": "Page Not Found", + "description": "The title of the 404 page" + }, + "theme.navbar.mobileVersionsDropdown.label": { + "message": "Versions", + "description": "The label for the navbar versions dropdown on mobile view" + }, + "theme.tags.tagsListLabel": { + "message": "Tags:", + "description": "The label alongside a tag list" + }, + "theme.AnnouncementBar.closeButtonAriaLabel": { + "message": "Close", + "description": "The ARIA label for close button of announcement bar" + }, + "theme.admonition.caution": { + "message": "caution", + "description": "The default label used for the Caution admonition (:::caution)" + }, + "theme.admonition.danger": { + "message": "danger", + "description": "The default label used for the Danger admonition (:::danger)" + }, + "theme.admonition.info": { + "message": "info", + "description": "The default label used for the Info admonition (:::info)" + }, + "theme.admonition.note": { + "message": "note", + "description": "The default label used for the Note admonition (:::note)" + }, + "theme.admonition.tip": { + "message": "tip", + "description": "The default label used for the Tip admonition (:::tip)" + }, + "theme.admonition.warning": { + "message": "warning", + "description": "The default label used for the Warning admonition (:::warning)" + }, + "theme.blog.sidebar.navAriaLabel": { + "message": "Blog recent posts navigation", + "description": "The ARIA label for recent posts in the blog sidebar" + }, + "theme.CodeBlock.copied": { + "message": "Copied", + "description": "The copied button label on code blocks" + }, + "theme.CodeBlock.copyButtonAriaLabel": { + "message": "Copy code to clipboard", + "description": "The ARIA label for copy code blocks button" + }, + "theme.CodeBlock.copy": { + "message": "Copy", + "description": "The copy button label on code blocks" + }, + "theme.CodeBlock.wordWrapToggle": { + "message": "Toggle word wrap", + "description": "The title attribute for toggle word wrapping button of code block lines" + }, + "theme.DocSidebarItem.expandCategoryAriaLabel": { + "message": "Expand sidebar category '{label}'", + "description": "The ARIA label to expand the sidebar category" + }, + "theme.DocSidebarItem.collapseCategoryAriaLabel": { + "message": "Collapse sidebar category '{label}'", + "description": "The ARIA label to collapse the sidebar category" + }, + "theme.NavBar.navAriaLabel": { + "message": "Main", + "description": "The ARIA label for the main navigation" + }, + "theme.NotFound.p1": { + "message": "We could not find what you were looking for.", + "description": "The first paragraph of the 404 page" + }, + "theme.NotFound.p2": { + "message": "Please contact the owner of the site that linked you to the original URL and let them know their link is broken.", + "description": "The 2nd paragraph of the 404 page" + }, + "theme.navbar.mobileLanguageDropdown.label": { + "message": "Languages", + "description": "The label for the mobile language switcher dropdown" + }, + "theme.TOCCollapsible.toggleButtonLabel": { + "message": "On this page", + "description": "The label used by the button on the collapsible TOC component" + }, + "theme.blog.post.readMore": { + "message": "Read More", + "description": "The label used in blog post item excerpts to link to full blog posts" + }, + "theme.blog.post.readMoreLabel": { + "message": "Read more about {title}", + "description": "The ARIA label for the link to full blog posts from excerpts" + }, + "theme.blog.post.readingTime.plurals": { + "message": "One min read|{readingTime} min read", + "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.breadcrumbs.home": { + "message": "Home page", + "description": "The ARIA label for the home page in the breadcrumbs" + }, + "theme.docs.sidebar.collapseButtonTitle": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.collapseButtonAriaLabel": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.navAriaLabel": { + "message": "Docs sidebar", + "description": "The ARIA label for the sidebar navigation" + }, + "theme.docs.sidebar.closeSidebarButtonAriaLabel": { + "message": "Close navigation bar", + "description": "The ARIA label for close button of mobile sidebar" + }, + "theme.docs.sidebar.expandButtonTitle": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.docs.sidebar.expandButtonAriaLabel": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": { + "message": "← Back to main menu", + "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)" + }, + "theme.docs.sidebar.toggleSidebarButtonAriaLabel": { + "message": "Toggle navigation bar", + "description": "The ARIA label for hamburger menu button of mobile navigation" + }, + "theme.SearchBar.seeAll": { + "message": "See all {count} results" + }, + "theme.SearchPage.documentsFound.plurals": { + "message": "One document found|{count} documents found", + "description": "Pluralized label for \"{count} documents found\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.SearchPage.existingResultsTitle": { + "message": "Search results for \"{query}\"", + "description": "The search page title for non-empty query" + }, + "theme.SearchPage.emptyResultsTitle": { + "message": "Search the documentation", + "description": "The search page title for empty query" + }, + "theme.SearchPage.inputPlaceholder": { + "message": "Type your search here", + "description": "The placeholder for search page input" + }, + "theme.SearchPage.inputLabel": { + "message": "Search", + "description": "The ARIA label for search page input" + }, + "theme.SearchPage.algoliaLabel": { + "message": "Search by Algolia", + "description": "The ARIA label for Algolia mention" + }, + "theme.SearchPage.noResultsText": { + "message": "No results were found", + "description": "The paragraph for empty search result" + }, + "theme.SearchPage.fetchingNewResults": { + "message": "Fetching new results...", + "description": "The paragraph for fetching new search results" + }, + "theme.SearchBar.label": { + "message": "Search", + "description": "The ARIA label and placeholder for search button" + }, + "theme.SearchModal.searchBox.resetButtonTitle": { + "message": "Clear the query", + "description": "The label and ARIA label for search box reset button" + }, + "theme.SearchModal.searchBox.cancelButtonText": { + "message": "Cancel", + "description": "The label and ARIA label for search box cancel button" + }, + "theme.SearchModal.startScreen.recentSearchesTitle": { + "message": "Recent", + "description": "The title for recent searches" + }, + "theme.SearchModal.startScreen.noRecentSearchesText": { + "message": "No recent searches", + "description": "The text when no recent searches" + }, + "theme.SearchModal.startScreen.saveRecentSearchButtonTitle": { + "message": "Save this search", + "description": "The label for save recent search button" + }, + "theme.SearchModal.startScreen.removeRecentSearchButtonTitle": { + "message": "Remove this search from history", + "description": "The label for remove recent search button" + }, + "theme.SearchModal.startScreen.favoriteSearchesTitle": { + "message": "Favorite", + "description": "The title for favorite searches" + }, + "theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle": { + "message": "Remove this search from favorites", + "description": "The label for remove favorite search button" + }, + "theme.SearchModal.errorScreen.titleText": { + "message": "Unable to fetch results", + "description": "The title for error screen of search modal" + }, + "theme.SearchModal.errorScreen.helpText": { + "message": "You might want to check your network connection.", + "description": "The help text for error screen of search modal" + }, + "theme.SearchModal.footer.selectText": { + "message": "to select", + "description": "The explanatory text of the action for the enter key" + }, + "theme.SearchModal.footer.selectKeyAriaLabel": { + "message": "Enter key", + "description": "The ARIA label for the Enter key button that makes the selection" + }, + "theme.SearchModal.footer.navigateText": { + "message": "to navigate", + "description": "The explanatory text of the action for the Arrow up and Arrow down key" + }, + "theme.SearchModal.footer.navigateUpKeyAriaLabel": { + "message": "Arrow up", + "description": "The ARIA label for the Arrow up key button that makes the navigation" + }, + "theme.SearchModal.footer.navigateDownKeyAriaLabel": { + "message": "Arrow down", + "description": "The ARIA label for the Arrow down key button that makes the navigation" + }, + "theme.SearchModal.footer.closeText": { + "message": "to close", + "description": "The explanatory text of the action for Escape key" + }, + "theme.SearchModal.footer.closeKeyAriaLabel": { + "message": "Escape key", + "description": "The ARIA label for the Escape key button that close the modal" + }, + "theme.SearchModal.footer.searchByText": { + "message": "Search by", + "description": "The text explain that the search is making by Algolia" + }, + "theme.SearchModal.noResultsScreen.noResultsText": { + "message": "No results for", + "description": "The text explains that there are no results for the following search" + }, + "theme.SearchModal.noResultsScreen.suggestedQueryText": { + "message": "Try searching for", + "description": "The text for the suggested query when no results are found for the following search" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsText": { + "message": "Believe this query should return results?", + "description": "The text for the question where the user thinks there are missing results" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsLinkText": { + "message": "Let us know.", + "description": "The text for the link to report missing results" + }, + "theme.SearchModal.placeholder": { + "message": "Search docs", + "description": "The placeholder of the input of the DocSearch pop-up modal" + }, + "theme.ErrorPageContent.tryAgain": { + "message": "Try again", + "description": "The label of the button to try again rendering when the React error boundary captures an error" + }, + "theme.common.skipToMainContent": { + "message": "Skip to main content", + "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation" + }, + "theme.tags.tagsPageTitle": { + "message": "Tags", + "description": "The title of the tag list page" + }, + "pages.download.description.hurricane": { + "message": "A plugin with various workarounds for Geyser players that modify the server in order to achieve their goal." + }, + "theme.blog.author.pageTitle": { + "message": "{authorName} - {nPosts}", + "description": "The title of the page for a blog author" + }, + "theme.blog.authorsList.pageTitle": { + "message": "Authors", + "description": "The title of the authors page" + }, + "theme.blog.authorsList.viewAll": { + "message": "View all authors", + "description": "The label of the link targeting the blog authors page" + }, + "theme.blog.author.noPosts": { + "message": "This author has not written any posts yet.", + "description": "The text for authors with 0 blog post" + }, + "theme.contentVisibility.unlistedBanner.title": { + "message": "Unlisted page", + "description": "The unlisted content banner title" + }, + "theme.contentVisibility.unlistedBanner.message": { + "message": "This page is unlisted. Search engines will not index it, and only users having a direct link can access it.", + "description": "The unlisted content banner message" + }, + "theme.contentVisibility.draftBanner.title": { + "message": "Draft page", + "description": "The draft content banner title" + }, + "theme.contentVisibility.draftBanner.message": { + "message": "This page is a draft. It will only be visible in dev and be excluded from the production build.", + "description": "The draft content banner message" + }, + "mdx.setup.host_provider": { + "message": "Host Provider" + }, + "mdx.setup.self_host": { + "message": "Self Host" + }, + "mdx.setup.paper_spigot": { + "message": "Paper / Spigot" + }, + "mdx.setup.modded_servers": { + "message": "Modded Servers" + }, + "mdx.setup.proxy_servers": { + "message": "Proxy Servers" + }, + "mdx.setup.viaproxy": { + "message": "ViaProxy" + }, + "mdx.setup.standalone": { + "message": "Standalone" + }, + "pages.download.description.offhandextension": { + "message": "An extension that allows Bedrock players to switch their offhand and mainhand item by emoting." + }, + "pages.download.description.rainbow": { + "message": "A Minecraft mod to generate Geyser item mappings and bedrock resourcepacks for use with Geyser's custom item API (v2)." + }, + "pages.download.description.hydraulic": { + "message": "A companion mod to Geyser which allows for Bedrock players to join modded Minecraft: Java Edition servers." + }, + "pages.download.description.thunder": { + "message": "A java application to convert simple Java Edition resource packs to Bedrock Edition ones." + }, + "pages.dumpviewer.extensions": { + "message": "Extensions" + }, + "pages.dumpviewer.extensions.noextensions": { + "message": "No extensions to show." + }, + "pages.dumpviewer.extensions.helptext": { + "message": "Click on an extension to view more information." + }, + "mdx.setup.fabric": { + "message": "Fabric" + }, + "mdx.setup.neoforge": { + "message": "NeoForge" + }, + "mdx.setup.installing_geyser": { + "message": "Installing Geyser" + }, + "mdx.setup.download_jar": { + "message": "Download {jarName}." + }, + "mdx.setup.place_jar": { + "message": "Place the {jarName} in the {jarDirectory} folder." + }, + "mdx.setup.restart_server": { + "message": "Restart the server." + }, + "mdx.setup.additional_steps": { + "message": "Additional Steps" + }, + "mdx.setup.connecting_on_bedrock": { + "message": "Connecting on Bedrock" + }, + "providers.config.templates.java_address": { + "message": "Set `address` in the `bedrock` section to the public address of the Java server." + }, + "providers.config.templates.custom_port_dedicated_ip": { + "message": "This host may only give out a separate port with a dedicated IP address." + }, + "providers.warnings.ovh_firewall_misconfig": { + "message": "To fix random `Unable to Connect` issues, see [here](/wiki/geyser/port-forwarding/#ovh-and-soyoustart)." + }, + "providers.config.templates.install_location.plugin_list": { + "message": "Install Geyser through the plugin or mod list provided by the host." + }, + "providers.config.templates.install_location.enable_bedrock_crossplay": { + "message": "Select the 'Enable Bedrock crossplay?' option when changing your server software to automatically install and configure Geyser and Floodgate." + }, + "providers.config.templates.info.geyser_installed_by_default": { + "message": "Geyser is installed and configured on all servers by default." + }, + "mdx.setup.checking_server_version": { + "message": "Checking your server version" + }, + "mdx.setup.restart_geyser": { + "message": "Restart Geyser." + }, + "mdx.setup.https_note": { + "message": "Unless signaling runs over {https}, Minecraft asks players whether they trust the server the first time they join." + }, + "mdx.setup.configuring_geyser": { + "message": "Configuring Geyser" + }, + "mdx.setup.open_config_simple": { + "message": "Now open the file {configLocation}. Find the part that starts with {bedrock}, and change the lines shown below." + }, + "mdx.setup.preconfigured": { + "message": "No changes needed. {name} automatically configures Geyser." + }, + "mdx.setup.transport_nethernet_simple": { + "message": "NetherNet is supported fully by 26.50+. If you'd like to also have working MOTD and player count for older versions, you will need to set up both NetherNet and Raknet." + }, + "mdx.setup.transport_both_compat": { + "message": "Also accepts RakNet, for additional compatibility: some Bedrock versions, such as 26.40, fetch the server's MOTD and player count over RakNet. This option needs a separate UDP port for NetherNet." + }, + "mdx.setup.placeholder_word": { + "message": "Replace this" + }, + "mdx.setup.replace_with_simple": { + "message": "With this" + }, + "mdx.setup.placeholder_java_port": { + "message": "The port of the Java server." + }, + "mdx.setup.placeholder_java_port_udp": { + "message": "A UDP port for NetherNet, other than {port}. This can be the Java server's port: the Java server only uses it over TCP, so Geyser can use it over UDP. Any other available UDP port works too." + }, + "mdx.setup.placeholder_second_available_port": { + "message": "An available UDP port for NetherNet, other than {port}. Open it for UDP." + }, + "mdx.setup.raknet_on_port": { + "message": "RakNet uses {port} over UDP, so that port has to be open for UDP as well." + }, + "mdx.setup.summary.nethernet_reported_generic": { + "message": "Reported to work with NetherNet" + }, + "mdx.setup.summary.supporter_configures": { + "message": "{name} configures Geyser for you automatically, including NetherNet." + }, + "mdx.setup.summary.updated": { + "message": "Instructions last updated on {date}" + }, + "mdx.setup.badge.gold": { + "message": "Gold supporter" + }, + "mdx.setup.badge.silver": { + "message": "Silver supporter" + }, + "mdx.setup.badge.bronze": { + "message": "Bronze supporter" + }, + "mdx.setup.unconfirmed_title": { + "message": "Not checked for NetherNet yet" + }, + "mdx.setup.warning_title": { + "message": "Warning" + }, + "mdx.setup.unconfirmed_reach_out_update": { + "message": "These instructions have not been checked for NetherNet yet. If Bedrock players can't join, reach out to {name} to get instructions on how to use Geyser, and let us know on {discord} so we can update this guide." + }, + "mdx.setup.try_not_listed": { + "message": "If your host cannot give you a separate port, follow the {notListed} instead. Players then join through {warden}, an external signaling service." + }, + "mdx.setup.try_not_listed.link": { + "message": "\"Not listed\" guide for using only the Java server's port" + }, + "mdx.setup.no_signaling": { + "message": "{name} supports neither built-in nor external signaling, so Bedrock players cannot connect over NetherNet." + }, + "mdx.setup.hosting_provider_article_short": { + "message": "Host's Geyser guide" + }, + "mdx.setup.hosting_provider_website_short": { + "message": "Website" + }, + "mdx.setup.hosting_provider_support_short": { + "message": "Support" + }, + "mdx.setup.hosting_provider_discord_short": { + "message": "Discord" + }, + "mdx.setup.not_listed.tab_allocated": { + "message": "I can allocate ports" + }, + "mdx.setup.not_listed.tab_java_only": { + "message": "I only have the Java server port" + }, + "components.provider.open_collaboration_group": { + "message": "Hosts that support Geyser's development" + }, + "components.provider.other_group": { + "message": "Other providers" + }, + "mdx.setup.connect.port_java": { + "message": "Your Java server's port" + }, + "mdx.setup.connect.port_config_step": { + "message": "The port you set in \"Configuring Geyser\"" + }, + "mdx.setup.connect.intro": { + "message": "In Minecraft: Bedrock Edition, go to Play, then Servers, and select Add Server. Fill it in like this:" + }, + "mdx.setup.connect.add_server": { + "message": "Add Server" + }, + "mdx.setup.connect.server_name": { + "message": "Server Name" + }, + "mdx.setup.connect.server_name_value": { + "message": "Anything you like" + }, + "mdx.setup.connect.server_address": { + "message": "Server Address" + }, + "mdx.setup.connect.server_address_value": { + "message": "Your Java server's address" + }, + "mdx.setup.connect.port": { + "message": "Port" + }, + "mdx.setup.transport_nethernet_tab": { + "message": "NetherNet" + }, + "mdx.setup.transport_both_tab": { + "message": "NetherNet and RakNet" + }, + "providers.ports.assign": { + "message": "Assign a port in your host's panel, open for both TCP and UDP." + }, + "providers.ports.allocated": { + "message": "Pick an available port from the ports allocated to your server, open for both TCP and UDP." + }, + "providers.ports.ask_host": { + "message": "Ask your host for a port that is open for both TCP and UDP." + }, + "pages.hosting.tier.gold": { + "message": "Gold supporters" + }, + "pages.hosting.tier.silver": { + "message": "Silver supporters" + }, + "pages.hosting.tier.bronze": { + "message": "Bronze supporters" + }, + "pages.hosting.card.website": { + "message": "Website" + }, + "pages.hosting.card.setup": { + "message": "Setup guide" + }, + "pages.hosting.title": { + "message": "Hosting Providers" + }, + "pages.hosting.subheading": { + "message": "Hosting providers that support the development of Geyser." + }, + "pages.hosting.intro": { + "message": "The hosts below support Geyser and related projects through {openCollaboration}. Their support helps fund work on Geyser, such as keeping up with major changes to Bedrock Edition, like the switch to NetherNet. All hosts listed below also configure Geyser automatically when installed, making using Geyser easier than ever. We'd like to thank them all for their support." + }, + "pages.hosting.empty": { + "message": "No hosting providers are listed yet." + }, + "pages.hosting.other.title": { + "message": "Using another host?" + }, + "pages.hosting.other.text": { + "message": "Hosts not being listed here does not mean Geyser won't run there. The {setupGuide} includes community collected notes for many other hosts, and general instructions for those not listed." + }, + "pages.hosting.other.setup_guide": { + "message": "setup guide" + }, + "pages.hosting.meta.title": { + "message": "Hosting Providers" + }, + "pages.hosting.meta.description": { + "message": "Hosting providers that support the development of Geyser through Open Collaboration." + }, + "pages.download.description.floodgatedatabases": { + "message": "Database extension jars for Floodgate local linking." + }, + "providers.ports.from_host": { + "message": "The Bedrock port your host shows you." + }, + "providers.config.templates.info.only_serves_region": { + "message": "This host only provides service in {region}." + }, + "mdx.setup.velocity": { + "message": "Velocity" + }, + "mdx.setup.bungeecord": { + "message": "BungeeCord" + }, + "providers.ports.new_port": { + "message": "Open a new port in your server panel, open for both TCP and UDP, or ask your host for one if the panel has no option for it." + }, + "mdx.setup.supported_versions": { + "message": "Supported versions" + }, + "mdx.setup.restart_velocity": { + "message": "Restart Velocity." + }, + "mdx.setup.restart_bungeecord": { + "message": "Restart BungeeCord." + }, + "mdx.setup.restart_viaproxy": { + "message": "Restart ViaProxy." + }, + "mdx.setup.fabric_dependency": { + "message": "If it is not installed already, download {fabricApi} and place it in the same folder." + }, + "mdx.setup.version_step_viaversion": { + "message": "If your server is not running {version}, you will need to install {viaVersion}. For more information, see {supportedVersions}." + }, + "mdx.setup.version_step_proxy": { + "message": "All servers on the network must accept {version} Java clients, as Geyser imitates one." + }, + "mdx.setup.proxy_install_only": { + "message": "Install Geyser only on the {proxy} server! You can install Floodgate on all servers for better skin support and network-wide Floodgate API availability for other plugins." + }, + "mdx.setup.modded_requirements": { + "message": "{jarName} runs only on a {version} server, and only works alongside server-side mods. Mods that players also need to install on their client will not work. See {supportedVersions} for more details." + }, + "mdx.setup.self_port_choice": { + "message": "Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP, so it cannot be the port of the {platform} server." + }, + "mdx.setup.self_port_choice_standalone": { + "message": "Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP." + }, + "mdx.setup.self_port_sharing": { + "message": "{important}: No other program can use the Geyser port, over either protocol. This includes programs that use UDP, such as voice chat mods or Query, and programs that use TCP, such as another server, a web map, or a website." + }, + "mdx.setup.self_port_sharing.important": { + "message": "Important" + }, + "mdx.setup.connect_local_title": { + "message": "Connecting from the same network" + }, + "mdx.setup.connect_local": { + "message": "On the same device as the server, connect with {localhost} or {loopback} as the address. Other devices in the same local network can use your local IPv4 address, which starts with {ten} or {oneNineTwo}." + }, + "mdx.setup.connect_lan": { + "message": "Alternatively, open Minecraft: Bedrock Edition and join the LAN server in the {friends} tab." + }, + "mdx.setup.connect_lan.friends": { + "message": "Friends" + }, + "mdx.setup.connect_remote_title": { + "message": "Connecting from a different network" + }, + "mdx.setup.connect_remote": { + "message": "To let players from outside your network join, you need to make the Geyser port reachable from the internet." + }, + "mdx.setup.connect_tcp_udp": { + "message": "The Geyser port has to be forwarded for both TCP and UDP. Before NetherNet, forwarding UDP was enough. Now, players use TCP to find your server and UDP to play on it, so without TCP your server will not show up. If you use the \"NetherNet and RakNet\" option, also forward the {webrtcPort} for UDP." + }, + "mdx.setup.connect_options": { + "message": "You have two options:" + }, + "mdx.setup.connect_port_forwarding": { + "message": "{portForwarding}: open the Geyser port (e.g. 19132) for both TCP and UDP in your router and in your firewall. Players then connect with your public IPv4 address and the port. For detailed steps, see {guide}." + }, + "mdx.setup.connect_port_forwarding.title": { + "message": "Port forwarding" + }, + "mdx.setup.connect_port_forwarding.guide": { + "message": "Port forwarding" + }, + "mdx.setup.connect_playit": { + "message": "{playit}: if you cannot open a port, or do not want to expose your home IP address, playit.gg can create a tunnel for you. See {guide}. That guide was written for RakNet. For NetherNet, see {status}. Ngrok does not work, since it does not support UDP." + }, + "mdx.setup.connect_playit.guide": { + "message": "playit.gg Setup" + }, + "mdx.setup.connect_playit.status": { + "message": "NetherNet support on playit.gg" + }, + "mdx.setup.https_step_title": { + "message": "Recommended: Set up HTTPS for signaling" + }, + "mdx.setup.https_step": { + "message": "Geyser's built-in signaling server uses plain HTTP by default, so Minecraft shows players a \"Trust on First Use?\" prompt the first time they join. To avoid this prompt, serve signaling over HTTPS, as explained in {httpsGuide}. Some external signaling services, such as {warden}, provide HTTPS as well." + }, + "mdx.setup.https_step.guide": { + "message": "HTTPS for NetherNet" + }, + "mdx.setup.floodgate_info": { + "message": "To allow Bedrock Edition players to join your server without a paid Java Edition account, you can use {floodgate}." + }, + "mdx.setup.viaproxy_not_plugin.title": { + "message": "ViaProxy is not a plugin or mod" + }, + "mdx.setup.viaproxy_not_plugin": { + "message": "ViaProxy is a standalone program that runs separately from your Minecraft server. Do not put the ViaProxy jar into your server's {plugins} or {mods} folder. To run Geyser as a plugin or mod on your server instead, pick your server software in the tabs above." + }, + "mdx.setup.viaproxy_setup": { + "message": "Set up {viaProxy}." + }, + "mdx.setup.viaproxy_accounts": { + "message": "If you use the ViaProxy GUI, you can use its account management to join online mode servers with Bedrock Edition. If you use the ViaProxy CLI and want Bedrock players to join your online mode server, install and set up {floodgate}." + }, + "mdx.setup.viaproxy_auth_type": { + "message": "ViaProxy manages the {authType} setting itself, so its value in the config is ignored." + }, + "mdx.setup.standalone_java": { + "message": "You need Java 21 or newer to run Geyser. To run Geyser Standalone on Android, see the end of this page." + }, + "mdx.setup.standalone_not_plugin": { + "message": "Geyser Standalone is not a plugin or mod. It is a separate Java program that runs alongside your Java Edition server." + }, + "mdx.setup.standalone_download": { + "message": "Download {standalone}." + }, + "mdx.setup.standalone_folder": { + "message": "Create a new folder for Geyser, and put the jar in it." + }, + "mdx.setup.standalone_start": { + "message": "Start Geyser Standalone:" + }, + "mdx.setup.standalone_gui": { + "message": "{gui} (recommended): double-click the jar file. Geyser creates all the files it needs." + }, + "mdx.setup.standalone_console": { + "message": "{console}: create a startup script, like the one you would use for a Paper server. See {startupScript} for what to put into it. Run it, and Geyser creates all the files it needs." + }, + "mdx.setup.standalone_console.console": { + "message": "Console" + }, + "mdx.setup.standalone_console.startup_script": { + "message": "Creating a Startup Script" + }, + "mdx.setup.standalone_remote_intro": { + "message": "To choose which Java Edition server Geyser Standalone sends players to, find the {java} section:" + }, + "mdx.setup.standalone_remote": { + "message": "Change {address} to the Java server's address, or leave it as it is if the server runs on the same machine as Geyser. Then change {port} to the Java server's port. Set {authType} to {floodgate} if you set up Floodgate on the Java server, otherwise to {online} for an online mode server or {offline} for an offline mode server. To use Floodgate with Geyser Standalone, see {floodgateSetup}." + }, + "mdx.setup.standalone_remote.floodgate_setup": { + "message": "Floodgate Setup" + }, + "mdx.setup.standalone_android_title": { + "message": "Running Geyser Standalone on Android" + }, + "mdx.setup.standalone_android_caution": { + "message": "Apps such as Termux can run Geyser on Android, but how well this works depends on how powerful your device is. Do so at your own risk." + }, + "mdx.setup.standalone_termux_install": { + "message": "Download and install {termux}." + }, + "mdx.setup.run_command": { + "message": "Run {command}." + }, + "mdx.setup.standalone_termux_script": { + "message": "Alternatively, there is an automated setup script for clean Termux installs. It might not work for everyone, so try it if the steps above do not work:" + } +} \ No newline at end of file diff --git a/i18n/it/docusaurus-plugin-content-blog/options.json b/i18n/it/docusaurus-plugin-content-blog/options.json new file mode 100644 index 0000000..9fa6586 --- /dev/null +++ b/i18n/it/docusaurus-plugin-content-blog/options.json @@ -0,0 +1,10 @@ +{ + "description": { + "message": "Blog", + "description": "The description for the blog used in SEO" + }, + "sidebar.title": { + "message": "Recent posts", + "description": "The label for the left sidebar" + } +} \ No newline at end of file diff --git a/i18n/it/docusaurus-plugin-content-docs/current.json b/i18n/it/docusaurus-plugin-content-docs/current.json new file mode 100644 index 0000000..cb3914c --- /dev/null +++ b/i18n/it/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,34 @@ +{ + "version.label": { + "message": "Next", + "description": "The label for version current" + }, + "sidebar.geyserSidebar.category.Setup": { + "message": "Setup", + "description": "The label for category Setup in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Common Issues": { + "message": "Common Issues", + "description": "The label for category Common Issues in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Configuring Geyser": { + "message": "Configuring Geyser", + "description": "The label for category Configuring Geyser in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.FAQ": { + "message": "FAQ", + "description": "The label for category FAQ in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Geyser API": { + "message": "Geyser API", + "description": "The label for category Geyser API in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.link.Hosting Providers": { + "message": "Hosting Providers", + "description": "The label for link Hosting Providers in sidebar geyserSidebar, linking to /hosting" + }, + "sidebar.geyserSidebar.category.Custom Content": { + "message": "Custom Content", + "description": "The label for category Custom Content in sidebar geyserSidebar" + } +} \ No newline at end of file diff --git a/i18n/it/docusaurus-plugin-content-docs/current/geyser/commands.md b/i18n/it/docusaurus-plugin-content-docs/current/geyser/commands.md new file mode 100644 index 0000000..0492482 --- /dev/null +++ b/i18n/it/docusaurus-plugin-content-docs/current/geyser/commands.md @@ -0,0 +1,83 @@ +--- +title: Commands and Permissions +description: Commands and their associated permission nodes for Geyser. +crowdin_sync: true +crowdin_page_id: cd92ff4f-9105-46a2-8696-8b0e2f8b9d31 +--- + +# Commands and Permissions + +Geyser features many built-in commands that can be used by players or server owners. + +:::info + +When using BungeeCord and Velocity, you will need to use a permission plugin such as [LuckPerms](https://luckperms.net/) +on the proxy server to assign permissions to players. Assigning permissions on the backend servers will not work. + +::: + +## Geyser commands & their permissions {#geyser-commands--their-permissions} + +| Command | Permission | Description | +| :-----------------------------------: | :---------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | +| `geyser`
Geyser root command | `geyser.command` | The permission required to see/run any Geyser commands. | +| `geyser help`
`geyser ?` | `geyser.command.help` | Shows help for all registered commands. | +| `geyser advancements` | `geyser.command.advancements` | Open the Java advancements menu. | +| `geyser dump` | `geyser.command.dump` | Dumps Geyser debug information for bug reports. | +| `geyser list` | `geyser.command.list` | List all players connected through Geyser. | +| `geyser nethernet` | `geyser.command.nethernet` | Shows NetherNet signaling status and diagnostics, for use with external signaling. | +| `geyser offhand` | `geyser.command.offhand` | Puts an item in your offhand. | +| `geyser reload` | `geyser.command.reload` | Reloads the Geyser configurations. Kicks all players when used! | +| `geyser settings` | `geyser.command.settings` | Opens a settings menu allowing you to modify aspects of the world. | +| `geyser shutdown`
`geyser stop` | `geyser.command.shutdown` | Shuts down Geyser.
*This command only works on Standalone.* | +| `geyser statistics` | `geyser.command.statistics` | Open the Java statistics menu. | +| `geyser version` | `geyser.command.version` | Shows the current Geyser version and checks for updates. | +| `geyser tooltips` | `geyser.command.tooltips` | Toggle showing Advanced Tooltips (F3 + H on Java) | +| `geyser extensions` | `geyser.command.extensions` | Lists all currently loaded extensions. This command is only registered if any extensions are loaded. | +| `geyser ping` | `geyser.command.ping` | Shows the ping between the player and the Geyser instance. | +| `geyser options` | `geyser.command.options` | Opens the "pause screen additions" dialogue, if sent by the Java server | +| `geyser quickactions` | `geyser.command.quickactions` | Opens the "quick actions" dialogue, if sent by the Java server. | + +## Permissions for Geyser extensions {#extension-permissions} + +For the following, `` refers to the extensions' id. + +| Command | Permission | Description | +| :------------------------- | :---------------------------- | :------------------------------------------------------------------------ | +| ` help`
` ?` | `geyser.command.exthelp.` | Shows help for all commands registered by this extension. | + +## Other Permissions {#other-permissions} + +Besides commands, there are other permissions that are used to guard specific Geyser features. + +| Permission | Description | +| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `geyser.settings.server` | Allow players to use the [game settings menu](/img/wiki/game_menu.png). (Also requires player to have op.) | +| `geyser.settings.gamerules` | Defines whether a user can alter gamerules in the [game settings menu](/img/wiki/game_menu.png). (Also requires player to have op.) | +| `geyser.update` | Whether this player will receive Geyser update notifications upon joining. | + +## Permissions when using Geyser-Standalone/Geyser-ViaProxy {#standalone-viaproxy-permissions} + +Geyser-ViaProxy and Geyser-Standalone feature their own basic permission handler. To edit base permissions, +open the `permissions.yml` file and add or remove permissions that Geyser players should receive when joining. +See the file for more information. + +You can further customize permission handling by creating a [Geyser extension](/wiki/geyser/extensions/) that makes use of Geysers API +to deal with permission checking. + +## Permissions when using Geyser on platforms without permission handlers {#permissions-platforms-no-permission-handlers} + +The following affects Geyser-BungeeCord, Geyser-Velocity, and Geyser-Fabric. +These platforms unfortunately do not have built-in permission handlers. Because of that, you will need to grant permissions on those platforms +manually using permission handlers, such as [LuckPerms](https://luckperms.net/). Geyser's permission are listed above. For extension permissions, consult their documentation. + +Alternatively, you can use [LuckLink](https://github.com/onebeastchris/LuckLink), a third-party Geyser extension, to automatically register permissions using [LuckPerms](https://luckperms.net/). + +- Install [LuckPerms](https://luckperms.net/) on the platform where you've installed Geyser (BungeeCord/Velocity/Fabric). +- To allow Geyser to automatically register permission defaults, install the [LuckLink](https://github.com/onebeastchris/LuckLink) Geyser extension + by downloading the `LuckLink.jar` and adding it to Geyser's `extensions` folder. +- Restart the server, and permissions should be automatically registered. + +## Floodgate commands and permissions {#floodgate-commands-and-permissions} + +For Floodgate commands, see [here](/wiki/floodgate/commands/). diff --git a/i18n/it/docusaurus-plugin-content-docs/current/geyser/playit-gg.md b/i18n/it/docusaurus-plugin-content-docs/current/geyser/playit-gg.md new file mode 100644 index 0000000..7d20bd3 --- /dev/null +++ b/i18n/it/docusaurus-plugin-content-docs/current/geyser/playit-gg.md @@ -0,0 +1,62 @@ +--- +title: playit.gg Setup +description: How to set up playit.gg to use Geyser without port forwarding. +crowdin_sync: true +crowdin_page_id: 3aee52d0-b943-4e37-8797-4a83ef55e42a +--- + +## Prerequisites {#prerequisites} + +:::info +You must be able to connect to your Geyser instance locally! +::: + +:::warning +The playit.gg Minecraft server plugin does not support UDP tunnels. You will need to use the program agent instead! +::: + +:::caution +This guide was written for RakNet, and does not cover NetherNet. For NetherNet, see [playit.gg's progress on NetherNet support](https://status.playit.gg/3/adding-nethernet-support). +::: + +## Setup {#setup} + +1. Head over to [playit.gg's website](https://playit.gg/) - download the program & run it. +2. The program will provide a claiming link. Visit that link, log in. + ![img](/img/wiki/playit-gg/playit_claim.png) +3. Confirm your agent. + ![img](/img/wiki/playit-gg/playit_claim_confirm.png) +4. Add the agent. + ![img](/img/wiki/playit-gg/playit_add_agent.png) +5. After the agent is created, create a tunnel. + ![img](/img/wiki/playit-gg/playit_add_tunnel.png) +6. Name your tunnel and click Next. + ![img](/img/wiki/playit-gg/playit_name_tunnel.png) +7. Select "Minecraft Bedrock" as the tunnel type and click Next. + ![img](/img/wiki/playit-gg/playit_tunnel_type.png) +8. Select the Free Network and click Next. + ![img](/img/wiki/playit-gg/playit_select_network.png) + **Do not change your Geyser port in `config.yml` unless you have a reason (for example, hosting another Geyser server on the same machine).** The Bedrock (Geyser) port in `config.yml` and the playit.gg ports are separate. playit.gg will forward its port to the default Geyser port and should work as-is. Changing it can cause errors. If you have changed your config port, set the Bedrock port back to the default `19132` and ensure `clone-remote-port` is `false`. +9. If the playit.gg agent and Geyser are running on the same device, leave the IP as `127.0.0.1` and set the port to whatever you configured in Geyser's config. + ![img](/img/wiki/playit-gg/playit_set_ipandport.png) +10. Select `proxy-protocol-v2` for the Proxy Protocol section and click Next. +11. In the Geyser config, under `advanced:` `bedrock:`, set `use-haproxy-protocol` to `true`. +12. Click Create Tunnel and wait for the tunnel to be created. + ![img](/img/wiki/playit-gg/playit_create_tunnel.png) +13. Copy your tunnel's port. For example, if your tunnel address is `visiting-phone.gl.at.ply.gg:6695`, then `6695` is the tunnel port. +14. In the Geyser config under `advanced:` `bedrock:`, set `broadcast-port` to your tunnel port (`6695` in the example). +15. Save your config. Start your Minecraft server and connect using your tunnel's IP and port. +16. If you join successfully, then you are done! Make sure to leave the playit.gg program running as closing it will close the tunnel. You also may want to ratelimit individual connections - use the "Per Connection Rate Limit" option to do so. + (If you failed to join, check out the [troubleshooting](#troubleshooting) section of the page.) + +## Troubleshooting {#troubleshooting} + +### I can't connect to my server! {#i-cant-connect-to-my-server} + +- *Try going to the Agents page, set your agent to IPv4 only, and change the region. You may need to switch regions a few times before you can connect.* +- *Are there errors in your minecraft server console?* +- *Unless you manually changed the "Local Port" on the playit.gg website, in Geyser config, ensure that the bedrock port is the default of `19132` and that `clone-remote-port` is `false`.* +- *If you changed the `bedrock-port` or set `clone-remote-port` to `true` and have a reason for doing so (e.g. hosting another Geyser server on the same machine), you'll have to tell playit.gg to use that port instead! See the last paragraph in step 8.* +- *Check that you're joining with playit.gg's IP and port from the "Allocation" tab.* +- *Make sure that you have the program agent open while trying to join.* +- *See [here](/wiki/geyser/fixing-unable-to-connect-to-world/) for general troubleshooting steps.* diff --git a/i18n/it/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md b/i18n/it/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md new file mode 100644 index 0000000..492774c --- /dev/null +++ b/i18n/it/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md @@ -0,0 +1,208 @@ +--- +title: Port forwarding +description: Information on how to set up port forwarding required for Geyser. +crowdin_sync: true +crowdin_page_id: be7c5a22-1e8e-4ffe-8d13-7d763dd75886 +--- + +# Port forwarding {#port-forwarding} + +This page contains information on how to set up port forwarding required for Geyser to work when self-hosting. +There are also guides for specific configurations, such as Docker/Pterodactyl, or on specific VPS/KVM providers, such as OVH or Oracle Cloud. + +:::caution + +If you are using a Minecraft server hosting provider (e.g. Aternos, or Nodecraft), you should refer to the hosting provider setup on the [setup](/wiki/geyser/setup) page instead. + +::: + +:::info Ports that need to be opened +With NetherNet, the Geyser port (by default 19132) has to be open for **both TCP and UDP**: players find the server over TCP (signaling), and play on it over UDP. +If you use the "NetherNet and RakNet" option, also open the `webrtc-port` for UDP. +With external signaling, such as [Warden](https://warden.cloud), only UDP for WebRTC is needed. +::: + +## Port forwarding on Linux/Windows/macOS {#port-forwarding-on-linuxwindowsmacos} + +To allow others to play on your server, you will need to set up port forwarding on the device hosting Geyser. +Additionally, you will need to port forward the port on your router/modem (in other words, allow and route traffic on that port to the proper machine) if you want the server to be accessible outside your own home network. +Forward it for both TCP and UDP; many routers offer a "TCP/UDP" or "Both" option for this. +See [here](https://www.howtogeek.com/66214/how-to-forward-ports-on-your-router/) or [here](https://www.lifewire.com/how-to-port-forward-4163829) for helpful guides. +Do note: if you do not have a static IP address, your IP address may change over time. + +:::info + +Some ISPs (Internet Service Providers) block certain ports, or don't allow you to open ports (e.g. by using CGNAT, which doesn't allow you to open a port with a dynamic IP). +Other ISPs may require you to pay extra for a static IP address. +As an alternative to port forwarding, you can use [playit.gg](/wiki/geyser/playit-gg/) to create a tunnel. + +::: + +### Windows {#windows} + +To open a port on Windows, you will need to open the port through the Windows Firewall. There are multiple ways to do this: + +- `Powershell` (recommended) + + To open a port on TCP and UDP (in our example, port 19132), run the following commands in an administrator Powershell: + + ```powershell + New-NetFirewallRule -DisplayName "Geyser (TCP)" -Direction Inbound -Protocol TCP -LocalPort 19132 -Action Allow + New-NetFirewallRule -DisplayName "Geyser (UDP)" -Direction Inbound -Protocol UDP -LocalPort 19132 -Action Allow + ``` + + Running these commands creates two rules that allow TCP and UDP traffic on port 19132. + +- Windows Defender Firewall with Advanced Security (GUI) + 1. Search for "Windows Defender Firewall with Advanced Security" in the start menu, and open it. ([Image](/img/wiki/port-forwarding/windows-1.png)) + 2. Click on "Inbound Rules" in the left sidebar. ([Image](/img/wiki/port-forwarding/windows-2.png)) + 3. Click on "New Rule..." in the right sidebar. ([Image](/img/wiki/port-forwarding/windows-2.png)) + 4. Select "Port" as the rule type and click "Next". ([Example](/img/wiki/port-forwarding/windows-3.png)) + 5. Select "UDP" and "Specific local ports", and enter the port you want to open (in our example, 19132). Click "Next". ([Example](/img/wiki/port-forwarding/windows-4.png)) + 6. Select "Allow the connection" and click "Next". ([Example](/img/wiki/port-forwarding/windows-5.png)) + 7. Select the profiles you want to apply the rule to (e.g. "Domain", "Private", "Public"), and click "Next". ([Example](/img/wiki/port-forwarding/windows-6.png)) + 8. Enter a name for the rule (e.g. "Geyser (UDP)"), and click "Finish". ([Image](/img/wiki/port-forwarding/windows-7.png)) + 9. Repeat these steps, selecting "TCP" in step 5 and naming the rule e.g. "Geyser (TCP)". + +### Linux {#linux} + +Different Linux distributions, even different VPS providers ship and configure different firewalls. In the following examples, we will use `19132` as the port to open, but you should replace this with the port you are using for Geyser. + +- `ufw` is a simple firewall front-end for iptables that is commonly used on Ubuntu and Debian. To open a port on TCP and UDP, run the following commands: + ```bash + sudo ufw allow 19132/tcp + sudo ufw allow 19132/udp + ``` + Then, reload the firewall with `sudo ufw reload`, and see all open rules with `sudo ufw status`. + Further helpful guides: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server), [Baeldung](https://www.baeldung.com/linux/uncomplicated-firewall) + +- `firewalld` Add a port on TCP and UDP by running: + ```bash + sudo firewall-cmd --zone=public --permanent --add-port=19132/tcp + sudo firewall-cmd --zone=public --permanent --add-port=19132/udp + ``` + Then, reload the firewall with `sudo firewall-cmd --reload`, and see all open rules with `sudo firewall-cmd --list-all`. + Further helpful guides: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7) + +- `iptables` is a common firewall that is used on many Linux distributions. To open a port on TCP and UDP, run the following commands: + ```bash + sudo iptables -A INPUT -p tcp --dport 19132 -j ACCEPT + sudo iptables -A INPUT -p udp --dport 19132 -j ACCEPT + ``` + Then, save the firewall with `sudo iptables-save`, and see all open rules with `sudo iptables -L`. + Further helpful guides for iptables: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-iptables-on-ubuntu-14-04), [Ubuntu](https://help.ubuntu.com/community/IptablesHowTo) + +### macOS {#macos} + +You will need to disable `Block all incoming connections` in your Firewall settings, as that will block any connections and won't allow you to make exceptions. +To allow incoming connections, click `Allow` when getting [these prompts](/img/wiki/port-forwarding/macos_warning.png). +If you are still facing issues, see Apple's official guide [here](https://support.apple.com/guide/mac-help/MH11783) to open a port on macOS. + +## Using Docker or Pterodactyl {#using-docker-or-pterodactyl} + +In addition to port forwarding the port in your server's firewall (and, if applicable, your router/modem), you will need to assign the port in Docker/Pterodactyl. + +### Pterodactyl {#pterodactyl} + +Make sure to allocate the port(s) to the server in the Pterodactyl panel's `Network` tab, additionally to port forwarding the port(s). +See [here](https://pterodactyl.io/community/games/minecraft.html#allocations-in-the-panel) for more information. + +![Pterodactyl panel, Network section](/img/wiki/port-forwarding/pterodactyl-1.png) + +There are also different Geyser eggs for Pterodactyl, which can be found [here](https://github.com/GeyserMC/pterodactyl-stuff). + +:::caution + +If you are not able to allocate ports in the Pterodactyl panel, you will need to contact your server host to allocate one for you or try to use an existing port allocation. + +::: + +### Docker {#docker} + +For Geyser to work under Docker (e.g. using [Itzg's Docker image](https://github.com/itzg/docker-minecraft-server)), you will need to add the Geyser port on TCP and UDP to the docker-compose file. This is done by adding the following to the `ports` section: + +```yaml +ports: + - "25565:25565" + - "19132:19132" + - "19132:19132/udp" +``` + +Without a suffix, Docker exposes the port on TCP. The additional `/udp` suffix exposes it on UDP. +Alternatively, add the ports with the `-p 19132:19132 -p 19132:19132/udp` flags to the docker run command. + +## Issues with specific VPS/KVM providers {#issues-with-specific-vpskvm-providers} + +Some providers, such as OVH, Oracle Cloud, and SoYouStart, have a firewall that blocks the ports Geyser needs by default/in most cases. + +### OVH and SoYouStart {#ovh-and-soyoustart} + +OVH's GAME firewall filters traffic with rules made for specific games. The Minecraft Bedrock and Minecraft Pocket Edition rules currently only support RakNet, the protocol Bedrock used before NetherNet. +With NetherNet, players find the server over HTTP (TCP) and play over WebRTC (UDP), which these rules currently do not support. +For now, use the `Other` rule for the Geyser port(s) instead. + +:::caution + +If you do not have access to these firewall settings, but got linked to this page, please contact your server host and provide them with this link - they are likely using OVH internally. + +::: + +**To resolve it:** + +OVH: + +1. Navigate to `Network interfaces` +2. Click on the `...` button on the table for your IP -> then `...` and `Configure the GAME firewall` -> `Add rule` -> `Other protocol` +3. Add your Geyser port into `outgoing port`. If you use the "NetherNet and RakNet" option, add a rule for the `webrtc-port` as well. +4. If you use OVH's Edge Network Firewall, make sure it allows the Geyser port over both TCP and UDP. + +SoYouStart (subsidiary of OVH): + +1. Click the IP tab. +2. Click the gear at the right of the public IP address; select "Game mitigation". +3. Pick "Add a rule". +4. Select "Other" in the dropdown list and enter the Geyser port. If you use the "NetherNet and RakNet" option, add the `webrtc-port` as well. +5. Save and wait a few seconds for the changes to come into effect. + +### Oracle Cloud/OCI {#oracle-cloudoci} + +By default, Oracle Cloud will block all incoming traffic except for SSH and RDP. This must be resolved within Oracle Cloud itself and the Compute Instance running Geyser. + +The steps below assume that you are using the default ports for the Java server and Geyser, and should be adjusted accordingly. + +1. Find your Compute Instance in the OCI Console +2. Click on the instances Virtual Cloud Network (this will be under "Instance details") +3. On the left-hand side, select "Security Lists" +4. Select one of the security lists. By default only one security list will exist. It doesn't matter which security list we add the rules to. +5. Select "Add Ingress Rules" +6. Configure rules for Java (optional) + - Set "Source CIDR" to `0.0.0.0/0` + - Set "Destination Port Range" to `25565-25565` + - Select "Another Ingress Rule" +7. Configure rules for Geyser, once for TCP and once for UDP + - Set "Source CIDR" to `0.0.0.0/0` + - Set "Destination Port Range" to `19132-19132` + - Set "IP Protocol" to TCP + - Select "Another Ingress Rule", and repeat with "IP Protocol" set to UDP +8. Select "Add Ingress Rules" + +#### Oracle Linux {#oracle-linux} + +Run the following commands to allow Minecraft and Geyser through the OS firewall: + +```bash +sudo firewall-cmd --add-port=25565/tcp --permanent +sudo firewall-cmd --add-port=19132/tcp --permanent +sudo firewall-cmd --add-port=19132/udp --permanent +sudo firewall-cmd --reload +``` + +#### Ubuntu {#ubuntu} + +Run the following commands to allow Minecraft and Geyser through the OS firewall: + +```bash +sudo ufw allow 25565/tcp +sudo ufw allow 19132/tcp +sudo ufw allow 19132/udp +``` diff --git a/i18n/it/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx b/i18n/it/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx new file mode 100644 index 0000000..47391e7 --- /dev/null +++ b/i18n/it/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx @@ -0,0 +1,47 @@ +--- +title: Supported versions +description: Information on the versions Geyser supports. +crowdin_sync: true +crowdin_page_id: f199ae24-f711-486d-8e42-3079be87e8cd +--- + +import { Versions } from '@site/src/components/Versions' +import DocCardList from '@theme/DocCardList'; + +# Currently supported versions \ {#currently-supported-versions} + +:::info +**Geyser currently supports Minecraft Bedrock and Minecraft Java **. +::: + +## Using Geyser with older Minecraft: Bedrock edition versions \ {#using-geyser-with-older-minecraft-bedrock-edition-versions} + +Older Bedrock versions are not supported. Minecraft: Bedrock Edition updates automatically on all platforms, so there are few users who would +want to use older versions. Further, older Bedrock versions do not have all features which Geyser support, which would lead to a sub-par experience. + +## Using Geyser on older Minecraft: Java edition servers \ {#using-geyser-on-older-minecraft-java-edition-servers} + +Geyser emulates a client, so a Java server must accept users using that version in order for Geyser to work. +This is possible thanks to [ViaVersion](https://viaversion.com/viaversion), which allows Java edition players with newer versions to join servers +that run older versions of the game. + +### Using Geyser-Spigot on a Spigot/Paper server running on 1.20.5 or above + +You can use Geyser-Spigot on servers that run on 1.20.5 or above. You will also need to run at least Java 21 or later to use Geyser. See [here](https://docs.papermc.io/misc/java-install) for more info on updating Java. Paper versions not supporting Java 21 can add `-DPaper.IgnoreJavaVersion=true` flag to the Java startup arguments to allow Paper to run on Java 21. + +In order for Bedrock players to chat (1.19.3+) or join (1.19.1/1.19.2), you need to disable chat signing. More information about that can be read on the [chat signing page](/wiki/geyser/secure-chat). + +### Using Geyser-Spigot on a Spigot/Paper server running on a version below 1.20.5 + +This is unfortunately not possible. You'll need to use a proxy such as Velocity or BungeeCord, or set up Geyser-Standalone separately with the [ViaVersion](https://viaversion.com/viaversion) plugin. Another alternative would be to install [ViaProxy](https://viaversion.com/viaproxy), which is a standalone ViaVersion proxy that +translates between different Minecraft: Java edition versions, and to install Geyser-ViaProxy on it. + +### Using Geyser on Fabric/NeoForge servers not on the latest Minecraft version \ {#using-geyser-on-fabric-neoforge-servers-not-on-the-latest-minecraft-version} + +Unfortunately, Geyser-Fabric and Geyser-NeoForge only support the latest version of Minecraft: Java edition. The recommended way to still use +Geyser with older versions would be to install [ViaProxy](https://viaversion.com/viaproxy), which is a standalone ViaVersion proxy that +translates between different Minecraft: Java edition versions, and to install Geyser-ViaProxy on it. This will also work with Floodgate auth. + +### Using Geyser-Velocity or Geyser-BungeeCord on a proxy + +Make sure you update your proxy software to the latest available version, and, if the backend servers are not on , also install the [ViaVersion](https://viaversion.com/viaversion) plugin on the backend servers. Velocity/BungeeCord support most Minecraft versions, so you can update them regardless of the backend server versions. diff --git a/i18n/it/docusaurus-theme-classic/footer.json b/i18n/it/docusaurus-theme-classic/footer.json new file mode 100644 index 0000000..1a69184 --- /dev/null +++ b/i18n/it/docusaurus-theme-classic/footer.json @@ -0,0 +1,50 @@ +{ + "link.title.Wiki": { + "message": "Wiki", + "description": "The title of the footer links column with title=Wiki in the footer" + }, + "link.title.Downloads": { + "message": "Downloads", + "description": "The title of the footer links column with title=Downloads in the footer" + }, + "link.title.Community": { + "message": "Community", + "description": "The title of the footer links column with title=Community in the footer" + }, + "link.title.More": { + "message": "More", + "description": "The title of the footer links column with title=More in the footer" + }, + "link.item.label.REST APIs": { + "message": "REST APIs", + "description": "The label of footer link with label=REST APIs linking to wiki/api/api.geysermc.org/global-api" + }, + "link.item.label.Other": { + "message": "Other", + "description": "The label of footer link with label=Other linking to download?project=other-projects" + }, + "link.item.label.Blog": { + "message": "Blog", + "description": "The label of footer link with label=Blog linking to blog" + }, + "link.item.label.Donate": { + "message": "Donate", + "description": "The label of footer link with label=Donate linking to https://opencollective.com/geysermc" + }, + "link.item.label.Global Linking": { + "message": "Global Linking", + "description": "The label of footer link with label=Global Linking linking to https://link.geysermc.org/" + }, + "link.item.label.Privacy Policy": { + "message": "Privacy Policy", + "description": "The label of footer link with label=Privacy Policy linking to https://ziax.com/terms/privacy-policy/" + }, + "logo.alt": { + "message": "GeyserMC logo", + "description": "The alt text of footer logo" + }, + "copyright": { + "message": "Copyright © 2026 GeyserMC. Built with Docusaurus.
This website is not an official Minecraft website and is not associated with Mojang Studios or Microsoft. All product and company names are trademarks or registered trademarks of their respective holders. Use of these names does not imply any affiliation or endorsement by them.", + "description": "The footer copyright" + } +} \ No newline at end of file diff --git a/i18n/it/docusaurus-theme-classic/navbar.json b/i18n/it/docusaurus-theme-classic/navbar.json new file mode 100644 index 0000000..c4f41a5 --- /dev/null +++ b/i18n/it/docusaurus-theme-classic/navbar.json @@ -0,0 +1,38 @@ +{ + "logo.alt": { + "message": "GeyserMC logo", + "description": "The alt text of navbar logo" + }, + "item.label.Wiki": { + "message": "Wiki", + "description": "Navbar item with label Wiki" + }, + "item.label.Blog": { + "message": "Blog", + "description": "Navbar item with label Blog" + }, + "item.label.Utilities": { + "message": "Utilities", + "description": "Navbar item with label Utilities" + }, + "item.label.Download": { + "message": "Download", + "description": "Navbar item with label Download" + }, + "item.label.REST APIs": { + "message": "REST APIs", + "description": "Navbar item with label REST APIs" + }, + "item.label.Other": { + "message": "Other", + "description": "Navbar item with label Other" + }, + "item.label.Dump Viewer": { + "message": "Dump Viewer", + "description": "Navbar item with label Dump Viewer" + }, + "item.label.Hosting": { + "message": "Hosting", + "description": "Navbar item with label Hosting" + } +} \ No newline at end of file diff --git a/i18n/ja/code.json b/i18n/ja/code.json new file mode 100644 index 0000000..7251b24 --- /dev/null +++ b/i18n/ja/code.json @@ -0,0 +1,1023 @@ +{ + "pages.main.title": { + "message": "Revolutionize Your Minecraft Server" + }, + "pages.main.subtitle": { + "message": "Enable clients from Minecraft Bedrock Edition to join your Minecraft Java server" + }, + "components.homepage_features.1.line1": { + "message": "Geyser is a program that allows Minecraft: Bedrock Edition clients to join Minecraft: Java Edition servers, allowing for true crossplay between both editions of the game." + }, + "components.homepage_features.1.line2": { + "message": "The ultimate goal of this project is to allow Minecraft: Bedrock Edition users to join Minecraft: Java Edition servers as seamlessly as possible." + }, + "components.homepage_features.2": { + "message": "Geyser acts as a translator which sits between the Bedrock client and the Java server. It takes data from the Bedrock client and translates it into a format the Java server understands and vice versa. Geyser works with any modern Minecraft version and can be installed either as a plugin or ran as a standalone program." + }, + "components.homepage_features.3.line1": { + "message": "Geyser can be joined from Bedrock clients on Windows 10/11, iOS, Android, and even consoles. Geyser works with a wide array of hosting providers, but can also be used as its own standalone proxy to join any Minecraft server!" + }, + "components.homepage_features.3.line2": { + "message": "If you are a server owner, you can install our Floodgate plugin which allows Xbox Live authenticated Bedrock users to join without a Java Edition account!" + }, + "pages.download.title": { + "message": "Download" + }, + "pages.download.subheading": { + "message": "Download the latest versions of our various projects." + }, + "pages.download.description.geyser": { + "message": "A bridge/proxy allowing you to connect to Minecraft: Java Edition servers with Minecraft: Bedrock Edition." + }, + "pages.download.description.floodgate": { + "message": "Hybrid mode plugin to allow for connections from Geyser to join online mode servers." + }, + "pages.download.description.geyserconnect": { + "message": "A Geyser extension allowing players to connect to different Java or Geyser servers." + }, + "pages.download.description.thirdpartycosmetics": { + "message": "An extension that adds support for loading ears and other third party cosmetics on java players" + }, + "pages.dumpviewer.title": { + "message": "Dump Viewer" + }, + "pages.dumpviewer.subheading": { + "message": "View the breakdown of your Geyser dump." + }, + "pages.dumpviewer.enterdumpid": { + "message": "Enter Dump ID or URL below and click load." + }, + "pages.dumpviewer.button.load": { + "message": "Load" + }, + "pages.dumpviewer.versions": { + "message": "Versions" + }, + "pages.dumpviewer.versions.geyserver": { + "message": "Geyser Version" + }, + "pages.dumpviewer.versions.javaver": { + "message": "Java Version" + }, + "pages.dumpviewer.versions.os": { + "message": "Operating System" + }, + "pages.dumpviewer.geyserver": { + "message": "Geyser Version" + }, + "pages.dumpviewer.geyserver.build": { + "message": "Build" + }, + "pages.dumpviewer.geyserver.commit": { + "message": "Commit Hash" + }, + "pages.dumpviewer.geyserver.branch": { + "message": "Branch" + }, + "pages.dumpviewer.platform": { + "message": "Platform Info" + }, + "pages.dumpviewer.platform.id": { + "message": "Platform Identifier" + }, + "pages.dumpviewer.platform.name": { + "message": "Platform Name" + }, + "pages.dumpviewer.platform.version": { + "message": "Platform Version" + }, + "pages.dumpviewer.platform.apiver": { + "message": "Platform API Version" + }, + "pages.dumpviewer.platform.onlinemode": { + "message": "Online Mode" + }, + "pages.dumpviewer.sysinfo": { + "message": "System Info" + }, + "pages.dumpviewer.cpucount": { + "message": "CPU Count" + }, + "pages.dumpviewer.cpuname": { + "message": "CPU Name" + }, + "pages.dumpviewer.ram": { + "message": "RAM" + }, + "pages.dumpviewer.javaname": { + "message": "Java Name" + }, + "pages.dumpviewer.javavendor": { + "message": "Java Vendor" + }, + "pages.dumpviewer.dockercheck": { + "message": "Uses Docker?" + }, + "pages.dumpviewer.plugins": { + "message": "Plugins" + }, + "pages.dumpviewer.plugins.noplugins": { + "message": "No plugins to show." + }, + "pages.dumpviewer.plugins.helptext": { + "message": "Click on a plugin to view more information." + }, + "pages.dumpviewer.config": { + "message": "Config" + }, + "pages.dumpviewer.viewsource": { + "message": "View dump source" + }, + "theme.ErrorPageContent.title": { + "message": "This page crashed.", + "description": "The title of the fallback page when the page crashed" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "Scroll back to top", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.archive.title": { + "message": "Archive", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "Archive", + "description": "The page & hero description of the blog archive page" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "Blog list page navigation", + "description": "The ARIA label for the blog pagination" + }, + "theme.blog.paginator.newerEntries": { + "message": "Newer Entries", + "description": "The label used to navigate to the newer blog posts page (previous page)" + }, + "theme.blog.paginator.olderEntries": { + "message": "Older Entries", + "description": "The label used to navigate to the older blog posts page (next page)" + }, + "theme.blog.post.paginator.navAriaLabel": { + "message": "Blog post page navigation", + "description": "The ARIA label for the blog posts pagination" + }, + "theme.blog.post.paginator.newerPost": { + "message": "Newer Post", + "description": "The blog post button label to navigate to the newer/previous post" + }, + "theme.blog.post.paginator.olderPost": { + "message": "Older Post", + "description": "The blog post button label to navigate to the older/next post" + }, + "theme.blog.post.plurals": { + "message": "One post|{count} posts", + "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.blog.tagTitle": { + "message": "{nPosts} tagged with \"{tagName}\"", + "description": "The title of the page for a blog tag" + }, + "theme.tags.tagsPageLink": { + "message": "View All Tags", + "description": "The label of the link targeting the tag list page" + }, + "theme.colorToggle.ariaLabel": { + "message": "Switch between dark and light mode (currently {mode})", + "description": "The ARIA label for the navbar color mode toggle" + }, + "theme.colorToggle.ariaLabel.mode.dark": { + "message": "dark mode", + "description": "The name for the dark color mode" + }, + "theme.colorToggle.ariaLabel.mode.light": { + "message": "light mode", + "description": "The name for the light color mode" + }, + "theme.docs.DocCard.categoryDescription.plurals": { + "message": "1 item|{count} items", + "description": "The default description for a category card in the generated index about how many items this category includes" + }, + "theme.docs.breadcrumbs.navAriaLabel": { + "message": "Breadcrumbs", + "description": "The ARIA label for the breadcrumbs" + }, + "theme.docs.paginator.navAriaLabel": { + "message": "Docs pages", + "description": "The ARIA label for the docs pagination" + }, + "theme.docs.paginator.previous": { + "message": "Previous", + "description": "The label used to navigate to the previous doc" + }, + "theme.docs.paginator.next": { + "message": "Next", + "description": "The label used to navigate to the next doc" + }, + "theme.docs.tagDocListPageTitle.nDocsTagged": { + "message": "One doc tagged|{count} docs tagged", + "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.tagDocListPageTitle": { + "message": "{nDocsTagged} with \"{tagName}\"", + "description": "The title of the page for a docs tag" + }, + "theme.docs.versionBadge.label": { + "message": "Version: {versionLabel}" + }, + "theme.docs.versions.unreleasedVersionLabel": { + "message": "This is unreleased documentation for {siteTitle} {versionLabel} version.", + "description": "The label used to tell the user that he's browsing an unreleased doc version" + }, + "theme.docs.versions.unmaintainedVersionLabel": { + "message": "This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.", + "description": "The label used to tell the user that he's browsing an unmaintained doc version" + }, + "theme.docs.versions.latestVersionSuggestionLabel": { + "message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).", + "description": "The label used to tell the user to check the latest version" + }, + "theme.docs.versions.latestVersionLinkLabel": { + "message": "latest version", + "description": "The label used for the latest version suggestion link label" + }, + "theme.common.editThisPage": { + "message": "Edit this page", + "description": "The link label to edit the current page" + }, + "theme.common.headingLinkTitle": { + "message": "Direct link to {heading}", + "description": "Title for link to heading" + }, + "theme.lastUpdated.atDate": { + "message": " on {date}", + "description": "The words used to describe on which date a page has been last updated" + }, + "theme.lastUpdated.byUser": { + "message": " by {user}", + "description": "The words used to describe by who the page has been last updated" + }, + "theme.lastUpdated.lastUpdatedAtBy": { + "message": "Last updated{atDate}{byUser}", + "description": "The sentence used to display when a page has been last updated, and by who" + }, + "theme.NotFound.title": { + "message": "Page Not Found", + "description": "The title of the 404 page" + }, + "theme.navbar.mobileVersionsDropdown.label": { + "message": "Versions", + "description": "The label for the navbar versions dropdown on mobile view" + }, + "theme.tags.tagsListLabel": { + "message": "Tags:", + "description": "The label alongside a tag list" + }, + "theme.AnnouncementBar.closeButtonAriaLabel": { + "message": "Close", + "description": "The ARIA label for close button of announcement bar" + }, + "theme.admonition.caution": { + "message": "caution", + "description": "The default label used for the Caution admonition (:::caution)" + }, + "theme.admonition.danger": { + "message": "danger", + "description": "The default label used for the Danger admonition (:::danger)" + }, + "theme.admonition.info": { + "message": "info", + "description": "The default label used for the Info admonition (:::info)" + }, + "theme.admonition.note": { + "message": "note", + "description": "The default label used for the Note admonition (:::note)" + }, + "theme.admonition.tip": { + "message": "tip", + "description": "The default label used for the Tip admonition (:::tip)" + }, + "theme.admonition.warning": { + "message": "warning", + "description": "The default label used for the Warning admonition (:::warning)" + }, + "theme.blog.sidebar.navAriaLabel": { + "message": "Blog recent posts navigation", + "description": "The ARIA label for recent posts in the blog sidebar" + }, + "theme.CodeBlock.copied": { + "message": "Copied", + "description": "The copied button label on code blocks" + }, + "theme.CodeBlock.copyButtonAriaLabel": { + "message": "Copy code to clipboard", + "description": "The ARIA label for copy code blocks button" + }, + "theme.CodeBlock.copy": { + "message": "Copy", + "description": "The copy button label on code blocks" + }, + "theme.CodeBlock.wordWrapToggle": { + "message": "Toggle word wrap", + "description": "The title attribute for toggle word wrapping button of code block lines" + }, + "theme.DocSidebarItem.expandCategoryAriaLabel": { + "message": "Expand sidebar category '{label}'", + "description": "The ARIA label to expand the sidebar category" + }, + "theme.DocSidebarItem.collapseCategoryAriaLabel": { + "message": "Collapse sidebar category '{label}'", + "description": "The ARIA label to collapse the sidebar category" + }, + "theme.NavBar.navAriaLabel": { + "message": "Main", + "description": "The ARIA label for the main navigation" + }, + "theme.NotFound.p1": { + "message": "We could not find what you were looking for.", + "description": "The first paragraph of the 404 page" + }, + "theme.NotFound.p2": { + "message": "Please contact the owner of the site that linked you to the original URL and let them know their link is broken.", + "description": "The 2nd paragraph of the 404 page" + }, + "theme.navbar.mobileLanguageDropdown.label": { + "message": "Languages", + "description": "The label for the mobile language switcher dropdown" + }, + "theme.TOCCollapsible.toggleButtonLabel": { + "message": "On this page", + "description": "The label used by the button on the collapsible TOC component" + }, + "theme.blog.post.readMore": { + "message": "Read More", + "description": "The label used in blog post item excerpts to link to full blog posts" + }, + "theme.blog.post.readMoreLabel": { + "message": "Read more about {title}", + "description": "The ARIA label for the link to full blog posts from excerpts" + }, + "theme.blog.post.readingTime.plurals": { + "message": "One min read|{readingTime} min read", + "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.breadcrumbs.home": { + "message": "Home page", + "description": "The ARIA label for the home page in the breadcrumbs" + }, + "theme.docs.sidebar.collapseButtonTitle": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.collapseButtonAriaLabel": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.navAriaLabel": { + "message": "Docs sidebar", + "description": "The ARIA label for the sidebar navigation" + }, + "theme.docs.sidebar.closeSidebarButtonAriaLabel": { + "message": "Close navigation bar", + "description": "The ARIA label for close button of mobile sidebar" + }, + "theme.docs.sidebar.expandButtonTitle": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.docs.sidebar.expandButtonAriaLabel": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": { + "message": "← Back to main menu", + "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)" + }, + "theme.docs.sidebar.toggleSidebarButtonAriaLabel": { + "message": "Toggle navigation bar", + "description": "The ARIA label for hamburger menu button of mobile navigation" + }, + "theme.SearchBar.seeAll": { + "message": "See all {count} results" + }, + "theme.SearchPage.documentsFound.plurals": { + "message": "One document found|{count} documents found", + "description": "Pluralized label for \"{count} documents found\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.SearchPage.existingResultsTitle": { + "message": "Search results for \"{query}\"", + "description": "The search page title for non-empty query" + }, + "theme.SearchPage.emptyResultsTitle": { + "message": "Search the documentation", + "description": "The search page title for empty query" + }, + "theme.SearchPage.inputPlaceholder": { + "message": "Type your search here", + "description": "The placeholder for search page input" + }, + "theme.SearchPage.inputLabel": { + "message": "Search", + "description": "The ARIA label for search page input" + }, + "theme.SearchPage.algoliaLabel": { + "message": "Search by Algolia", + "description": "The ARIA label for Algolia mention" + }, + "theme.SearchPage.noResultsText": { + "message": "No results were found", + "description": "The paragraph for empty search result" + }, + "theme.SearchPage.fetchingNewResults": { + "message": "Fetching new results...", + "description": "The paragraph for fetching new search results" + }, + "theme.SearchBar.label": { + "message": "Search", + "description": "The ARIA label and placeholder for search button" + }, + "theme.SearchModal.searchBox.resetButtonTitle": { + "message": "Clear the query", + "description": "The label and ARIA label for search box reset button" + }, + "theme.SearchModal.searchBox.cancelButtonText": { + "message": "Cancel", + "description": "The label and ARIA label for search box cancel button" + }, + "theme.SearchModal.startScreen.recentSearchesTitle": { + "message": "Recent", + "description": "The title for recent searches" + }, + "theme.SearchModal.startScreen.noRecentSearchesText": { + "message": "No recent searches", + "description": "The text when no recent searches" + }, + "theme.SearchModal.startScreen.saveRecentSearchButtonTitle": { + "message": "Save this search", + "description": "The label for save recent search button" + }, + "theme.SearchModal.startScreen.removeRecentSearchButtonTitle": { + "message": "Remove this search from history", + "description": "The label for remove recent search button" + }, + "theme.SearchModal.startScreen.favoriteSearchesTitle": { + "message": "Favorite", + "description": "The title for favorite searches" + }, + "theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle": { + "message": "Remove this search from favorites", + "description": "The label for remove favorite search button" + }, + "theme.SearchModal.errorScreen.titleText": { + "message": "Unable to fetch results", + "description": "The title for error screen of search modal" + }, + "theme.SearchModal.errorScreen.helpText": { + "message": "You might want to check your network connection.", + "description": "The help text for error screen of search modal" + }, + "theme.SearchModal.footer.selectText": { + "message": "to select", + "description": "The explanatory text of the action for the enter key" + }, + "theme.SearchModal.footer.selectKeyAriaLabel": { + "message": "Enter key", + "description": "The ARIA label for the Enter key button that makes the selection" + }, + "theme.SearchModal.footer.navigateText": { + "message": "to navigate", + "description": "The explanatory text of the action for the Arrow up and Arrow down key" + }, + "theme.SearchModal.footer.navigateUpKeyAriaLabel": { + "message": "Arrow up", + "description": "The ARIA label for the Arrow up key button that makes the navigation" + }, + "theme.SearchModal.footer.navigateDownKeyAriaLabel": { + "message": "Arrow down", + "description": "The ARIA label for the Arrow down key button that makes the navigation" + }, + "theme.SearchModal.footer.closeText": { + "message": "to close", + "description": "The explanatory text of the action for Escape key" + }, + "theme.SearchModal.footer.closeKeyAriaLabel": { + "message": "Escape key", + "description": "The ARIA label for the Escape key button that close the modal" + }, + "theme.SearchModal.footer.searchByText": { + "message": "Search by", + "description": "The text explain that the search is making by Algolia" + }, + "theme.SearchModal.noResultsScreen.noResultsText": { + "message": "No results for", + "description": "The text explains that there are no results for the following search" + }, + "theme.SearchModal.noResultsScreen.suggestedQueryText": { + "message": "Try searching for", + "description": "The text for the suggested query when no results are found for the following search" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsText": { + "message": "Believe this query should return results?", + "description": "The text for the question where the user thinks there are missing results" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsLinkText": { + "message": "Let us know.", + "description": "The text for the link to report missing results" + }, + "theme.SearchModal.placeholder": { + "message": "Search docs", + "description": "The placeholder of the input of the DocSearch pop-up modal" + }, + "theme.ErrorPageContent.tryAgain": { + "message": "Try again", + "description": "The label of the button to try again rendering when the React error boundary captures an error" + }, + "theme.common.skipToMainContent": { + "message": "Skip to main content", + "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation" + }, + "theme.tags.tagsPageTitle": { + "message": "Tags", + "description": "The title of the tag list page" + }, + "pages.download.description.hurricane": { + "message": "A plugin with various workarounds for Geyser players that modify the server in order to achieve their goal." + }, + "theme.blog.author.pageTitle": { + "message": "{authorName} - {nPosts}", + "description": "The title of the page for a blog author" + }, + "theme.blog.authorsList.pageTitle": { + "message": "Authors", + "description": "The title of the authors page" + }, + "theme.blog.authorsList.viewAll": { + "message": "View all authors", + "description": "The label of the link targeting the blog authors page" + }, + "theme.blog.author.noPosts": { + "message": "This author has not written any posts yet.", + "description": "The text for authors with 0 blog post" + }, + "theme.contentVisibility.unlistedBanner.title": { + "message": "Unlisted page", + "description": "The unlisted content banner title" + }, + "theme.contentVisibility.unlistedBanner.message": { + "message": "This page is unlisted. Search engines will not index it, and only users having a direct link can access it.", + "description": "The unlisted content banner message" + }, + "theme.contentVisibility.draftBanner.title": { + "message": "Draft page", + "description": "The draft content banner title" + }, + "theme.contentVisibility.draftBanner.message": { + "message": "This page is a draft. It will only be visible in dev and be excluded from the production build.", + "description": "The draft content banner message" + }, + "mdx.setup.host_provider": { + "message": "Host Provider" + }, + "mdx.setup.self_host": { + "message": "Self Host" + }, + "mdx.setup.paper_spigot": { + "message": "Paper / Spigot" + }, + "mdx.setup.modded_servers": { + "message": "Modded Servers" + }, + "mdx.setup.proxy_servers": { + "message": "Proxy Servers" + }, + "mdx.setup.viaproxy": { + "message": "ViaProxy" + }, + "mdx.setup.standalone": { + "message": "Standalone" + }, + "pages.download.description.offhandextension": { + "message": "An extension that allows Bedrock players to switch their offhand and mainhand item by emoting." + }, + "pages.download.description.rainbow": { + "message": "A Minecraft mod to generate Geyser item mappings and bedrock resourcepacks for use with Geyser's custom item API (v2)." + }, + "pages.download.description.hydraulic": { + "message": "A companion mod to Geyser which allows for Bedrock players to join modded Minecraft: Java Edition servers." + }, + "pages.download.description.thunder": { + "message": "A java application to convert simple Java Edition resource packs to Bedrock Edition ones." + }, + "pages.dumpviewer.extensions": { + "message": "Extensions" + }, + "pages.dumpviewer.extensions.noextensions": { + "message": "No extensions to show." + }, + "pages.dumpviewer.extensions.helptext": { + "message": "Click on an extension to view more information." + }, + "mdx.setup.fabric": { + "message": "Fabric" + }, + "mdx.setup.neoforge": { + "message": "NeoForge" + }, + "mdx.setup.installing_geyser": { + "message": "Installing Geyser" + }, + "mdx.setup.download_jar": { + "message": "Download {jarName}." + }, + "mdx.setup.place_jar": { + "message": "Place the {jarName} in the {jarDirectory} folder." + }, + "mdx.setup.restart_server": { + "message": "Restart the server." + }, + "mdx.setup.additional_steps": { + "message": "Additional Steps" + }, + "mdx.setup.connecting_on_bedrock": { + "message": "Connecting on Bedrock" + }, + "providers.config.templates.java_address": { + "message": "Set `address` in the `bedrock` section to the public address of the Java server." + }, + "providers.config.templates.custom_port_dedicated_ip": { + "message": "This host may only give out a separate port with a dedicated IP address." + }, + "providers.warnings.ovh_firewall_misconfig": { + "message": "To fix random `Unable to Connect` issues, see [here](/wiki/geyser/port-forwarding/#ovh-and-soyoustart)." + }, + "providers.config.templates.install_location.plugin_list": { + "message": "Install Geyser through the plugin or mod list provided by the host." + }, + "providers.config.templates.install_location.enable_bedrock_crossplay": { + "message": "Select the 'Enable Bedrock crossplay?' option when changing your server software to automatically install and configure Geyser and Floodgate." + }, + "providers.config.templates.info.geyser_installed_by_default": { + "message": "Geyser is installed and configured on all servers by default." + }, + "mdx.setup.checking_server_version": { + "message": "Checking your server version" + }, + "mdx.setup.restart_geyser": { + "message": "Restart Geyser." + }, + "mdx.setup.https_note": { + "message": "Unless signaling runs over {https}, Minecraft asks players whether they trust the server the first time they join." + }, + "mdx.setup.configuring_geyser": { + "message": "Configuring Geyser" + }, + "mdx.setup.open_config_simple": { + "message": "Now open the file {configLocation}. Find the part that starts with {bedrock}, and change the lines shown below." + }, + "mdx.setup.preconfigured": { + "message": "No changes needed. {name} automatically configures Geyser." + }, + "mdx.setup.transport_nethernet_simple": { + "message": "NetherNet is supported fully by 26.50+. If you'd like to also have working MOTD and player count for older versions, you will need to set up both NetherNet and Raknet." + }, + "mdx.setup.transport_both_compat": { + "message": "Also accepts RakNet, for additional compatibility: some Bedrock versions, such as 26.40, fetch the server's MOTD and player count over RakNet. This option needs a separate UDP port for NetherNet." + }, + "mdx.setup.placeholder_word": { + "message": "Replace this" + }, + "mdx.setup.replace_with_simple": { + "message": "With this" + }, + "mdx.setup.placeholder_java_port": { + "message": "The port of the Java server." + }, + "mdx.setup.placeholder_java_port_udp": { + "message": "A UDP port for NetherNet, other than {port}. This can be the Java server's port: the Java server only uses it over TCP, so Geyser can use it over UDP. Any other available UDP port works too." + }, + "mdx.setup.placeholder_second_available_port": { + "message": "An available UDP port for NetherNet, other than {port}. Open it for UDP." + }, + "mdx.setup.raknet_on_port": { + "message": "RakNet uses {port} over UDP, so that port has to be open for UDP as well." + }, + "mdx.setup.summary.nethernet_reported_generic": { + "message": "Reported to work with NetherNet" + }, + "mdx.setup.summary.supporter_configures": { + "message": "{name} configures Geyser for you automatically, including NetherNet." + }, + "mdx.setup.summary.updated": { + "message": "Instructions last updated on {date}" + }, + "mdx.setup.badge.gold": { + "message": "Gold supporter" + }, + "mdx.setup.badge.silver": { + "message": "Silver supporter" + }, + "mdx.setup.badge.bronze": { + "message": "Bronze supporter" + }, + "mdx.setup.unconfirmed_title": { + "message": "Not checked for NetherNet yet" + }, + "mdx.setup.warning_title": { + "message": "Warning" + }, + "mdx.setup.unconfirmed_reach_out_update": { + "message": "These instructions have not been checked for NetherNet yet. If Bedrock players can't join, reach out to {name} to get instructions on how to use Geyser, and let us know on {discord} so we can update this guide." + }, + "mdx.setup.try_not_listed": { + "message": "If your host cannot give you a separate port, follow the {notListed} instead. Players then join through {warden}, an external signaling service." + }, + "mdx.setup.try_not_listed.link": { + "message": "\"Not listed\" guide for using only the Java server's port" + }, + "mdx.setup.no_signaling": { + "message": "{name} supports neither built-in nor external signaling, so Bedrock players cannot connect over NetherNet." + }, + "mdx.setup.hosting_provider_article_short": { + "message": "Host's Geyser guide" + }, + "mdx.setup.hosting_provider_website_short": { + "message": "Website" + }, + "mdx.setup.hosting_provider_support_short": { + "message": "Support" + }, + "mdx.setup.hosting_provider_discord_short": { + "message": "Discord" + }, + "mdx.setup.not_listed.tab_allocated": { + "message": "I can allocate ports" + }, + "mdx.setup.not_listed.tab_java_only": { + "message": "I only have the Java server port" + }, + "components.provider.open_collaboration_group": { + "message": "Hosts that support Geyser's development" + }, + "components.provider.other_group": { + "message": "Other providers" + }, + "mdx.setup.connect.port_java": { + "message": "Your Java server's port" + }, + "mdx.setup.connect.port_config_step": { + "message": "The port you set in \"Configuring Geyser\"" + }, + "mdx.setup.connect.intro": { + "message": "In Minecraft: Bedrock Edition, go to Play, then Servers, and select Add Server. Fill it in like this:" + }, + "mdx.setup.connect.add_server": { + "message": "Add Server" + }, + "mdx.setup.connect.server_name": { + "message": "Server Name" + }, + "mdx.setup.connect.server_name_value": { + "message": "Anything you like" + }, + "mdx.setup.connect.server_address": { + "message": "Server Address" + }, + "mdx.setup.connect.server_address_value": { + "message": "Your Java server's address" + }, + "mdx.setup.connect.port": { + "message": "Port" + }, + "mdx.setup.transport_nethernet_tab": { + "message": "NetherNet" + }, + "mdx.setup.transport_both_tab": { + "message": "NetherNet and RakNet" + }, + "providers.ports.assign": { + "message": "Assign a port in your host's panel, open for both TCP and UDP." + }, + "providers.ports.allocated": { + "message": "Pick an available port from the ports allocated to your server, open for both TCP and UDP." + }, + "providers.ports.ask_host": { + "message": "Ask your host for a port that is open for both TCP and UDP." + }, + "pages.hosting.tier.gold": { + "message": "Gold supporters" + }, + "pages.hosting.tier.silver": { + "message": "Silver supporters" + }, + "pages.hosting.tier.bronze": { + "message": "Bronze supporters" + }, + "pages.hosting.card.website": { + "message": "Website" + }, + "pages.hosting.card.setup": { + "message": "Setup guide" + }, + "pages.hosting.title": { + "message": "Hosting Providers" + }, + "pages.hosting.subheading": { + "message": "Hosting providers that support the development of Geyser." + }, + "pages.hosting.intro": { + "message": "The hosts below support Geyser and related projects through {openCollaboration}. Their support helps fund work on Geyser, such as keeping up with major changes to Bedrock Edition, like the switch to NetherNet. All hosts listed below also configure Geyser automatically when installed, making using Geyser easier than ever. We'd like to thank them all for their support." + }, + "pages.hosting.empty": { + "message": "No hosting providers are listed yet." + }, + "pages.hosting.other.title": { + "message": "Using another host?" + }, + "pages.hosting.other.text": { + "message": "Hosts not being listed here does not mean Geyser won't run there. The {setupGuide} includes community collected notes for many other hosts, and general instructions for those not listed." + }, + "pages.hosting.other.setup_guide": { + "message": "setup guide" + }, + "pages.hosting.meta.title": { + "message": "Hosting Providers" + }, + "pages.hosting.meta.description": { + "message": "Hosting providers that support the development of Geyser through Open Collaboration." + }, + "pages.download.description.floodgatedatabases": { + "message": "Database extension jars for Floodgate local linking." + }, + "providers.ports.from_host": { + "message": "The Bedrock port your host shows you." + }, + "providers.config.templates.info.only_serves_region": { + "message": "This host only provides service in {region}." + }, + "mdx.setup.velocity": { + "message": "Velocity" + }, + "mdx.setup.bungeecord": { + "message": "BungeeCord" + }, + "providers.ports.new_port": { + "message": "Open a new port in your server panel, open for both TCP and UDP, or ask your host for one if the panel has no option for it." + }, + "mdx.setup.supported_versions": { + "message": "Supported versions" + }, + "mdx.setup.restart_velocity": { + "message": "Restart Velocity." + }, + "mdx.setup.restart_bungeecord": { + "message": "Restart BungeeCord." + }, + "mdx.setup.restart_viaproxy": { + "message": "Restart ViaProxy." + }, + "mdx.setup.fabric_dependency": { + "message": "If it is not installed already, download {fabricApi} and place it in the same folder." + }, + "mdx.setup.version_step_viaversion": { + "message": "If your server is not running {version}, you will need to install {viaVersion}. For more information, see {supportedVersions}." + }, + "mdx.setup.version_step_proxy": { + "message": "All servers on the network must accept {version} Java clients, as Geyser imitates one." + }, + "mdx.setup.proxy_install_only": { + "message": "Install Geyser only on the {proxy} server! You can install Floodgate on all servers for better skin support and network-wide Floodgate API availability for other plugins." + }, + "mdx.setup.modded_requirements": { + "message": "{jarName} runs only on a {version} server, and only works alongside server-side mods. Mods that players also need to install on their client will not work. See {supportedVersions} for more details." + }, + "mdx.setup.self_port_choice": { + "message": "Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP, so it cannot be the port of the {platform} server." + }, + "mdx.setup.self_port_choice_standalone": { + "message": "Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP." + }, + "mdx.setup.self_port_sharing": { + "message": "{important}: No other program can use the Geyser port, over either protocol. This includes programs that use UDP, such as voice chat mods or Query, and programs that use TCP, such as another server, a web map, or a website." + }, + "mdx.setup.self_port_sharing.important": { + "message": "Important" + }, + "mdx.setup.connect_local_title": { + "message": "Connecting from the same network" + }, + "mdx.setup.connect_local": { + "message": "On the same device as the server, connect with {localhost} or {loopback} as the address. Other devices in the same local network can use your local IPv4 address, which starts with {ten} or {oneNineTwo}." + }, + "mdx.setup.connect_lan": { + "message": "Alternatively, open Minecraft: Bedrock Edition and join the LAN server in the {friends} tab." + }, + "mdx.setup.connect_lan.friends": { + "message": "Friends" + }, + "mdx.setup.connect_remote_title": { + "message": "Connecting from a different network" + }, + "mdx.setup.connect_remote": { + "message": "To let players from outside your network join, you need to make the Geyser port reachable from the internet." + }, + "mdx.setup.connect_tcp_udp": { + "message": "The Geyser port has to be forwarded for both TCP and UDP. Before NetherNet, forwarding UDP was enough. Now, players use TCP to find your server and UDP to play on it, so without TCP your server will not show up. If you use the \"NetherNet and RakNet\" option, also forward the {webrtcPort} for UDP." + }, + "mdx.setup.connect_options": { + "message": "You have two options:" + }, + "mdx.setup.connect_port_forwarding": { + "message": "{portForwarding}: open the Geyser port (e.g. 19132) for both TCP and UDP in your router and in your firewall. Players then connect with your public IPv4 address and the port. For detailed steps, see {guide}." + }, + "mdx.setup.connect_port_forwarding.title": { + "message": "Port forwarding" + }, + "mdx.setup.connect_port_forwarding.guide": { + "message": "Port forwarding" + }, + "mdx.setup.connect_playit": { + "message": "{playit}: if you cannot open a port, or do not want to expose your home IP address, playit.gg can create a tunnel for you. See {guide}. That guide was written for RakNet. For NetherNet, see {status}. Ngrok does not work, since it does not support UDP." + }, + "mdx.setup.connect_playit.guide": { + "message": "playit.gg Setup" + }, + "mdx.setup.connect_playit.status": { + "message": "NetherNet support on playit.gg" + }, + "mdx.setup.https_step_title": { + "message": "Recommended: Set up HTTPS for signaling" + }, + "mdx.setup.https_step": { + "message": "Geyser's built-in signaling server uses plain HTTP by default, so Minecraft shows players a \"Trust on First Use?\" prompt the first time they join. To avoid this prompt, serve signaling over HTTPS, as explained in {httpsGuide}. Some external signaling services, such as {warden}, provide HTTPS as well." + }, + "mdx.setup.https_step.guide": { + "message": "HTTPS for NetherNet" + }, + "mdx.setup.floodgate_info": { + "message": "To allow Bedrock Edition players to join your server without a paid Java Edition account, you can use {floodgate}." + }, + "mdx.setup.viaproxy_not_plugin.title": { + "message": "ViaProxy is not a plugin or mod" + }, + "mdx.setup.viaproxy_not_plugin": { + "message": "ViaProxy is a standalone program that runs separately from your Minecraft server. Do not put the ViaProxy jar into your server's {plugins} or {mods} folder. To run Geyser as a plugin or mod on your server instead, pick your server software in the tabs above." + }, + "mdx.setup.viaproxy_setup": { + "message": "Set up {viaProxy}." + }, + "mdx.setup.viaproxy_accounts": { + "message": "If you use the ViaProxy GUI, you can use its account management to join online mode servers with Bedrock Edition. If you use the ViaProxy CLI and want Bedrock players to join your online mode server, install and set up {floodgate}." + }, + "mdx.setup.viaproxy_auth_type": { + "message": "ViaProxy manages the {authType} setting itself, so its value in the config is ignored." + }, + "mdx.setup.standalone_java": { + "message": "You need Java 21 or newer to run Geyser. To run Geyser Standalone on Android, see the end of this page." + }, + "mdx.setup.standalone_not_plugin": { + "message": "Geyser Standalone is not a plugin or mod. It is a separate Java program that runs alongside your Java Edition server." + }, + "mdx.setup.standalone_download": { + "message": "Download {standalone}." + }, + "mdx.setup.standalone_folder": { + "message": "Create a new folder for Geyser, and put the jar in it." + }, + "mdx.setup.standalone_start": { + "message": "Start Geyser Standalone:" + }, + "mdx.setup.standalone_gui": { + "message": "{gui} (recommended): double-click the jar file. Geyser creates all the files it needs." + }, + "mdx.setup.standalone_console": { + "message": "{console}: create a startup script, like the one you would use for a Paper server. See {startupScript} for what to put into it. Run it, and Geyser creates all the files it needs." + }, + "mdx.setup.standalone_console.console": { + "message": "Console" + }, + "mdx.setup.standalone_console.startup_script": { + "message": "Creating a Startup Script" + }, + "mdx.setup.standalone_remote_intro": { + "message": "To choose which Java Edition server Geyser Standalone sends players to, find the {java} section:" + }, + "mdx.setup.standalone_remote": { + "message": "Change {address} to the Java server's address, or leave it as it is if the server runs on the same machine as Geyser. Then change {port} to the Java server's port. Set {authType} to {floodgate} if you set up Floodgate on the Java server, otherwise to {online} for an online mode server or {offline} for an offline mode server. To use Floodgate with Geyser Standalone, see {floodgateSetup}." + }, + "mdx.setup.standalone_remote.floodgate_setup": { + "message": "Floodgate Setup" + }, + "mdx.setup.standalone_android_title": { + "message": "Running Geyser Standalone on Android" + }, + "mdx.setup.standalone_android_caution": { + "message": "Apps such as Termux can run Geyser on Android, but how well this works depends on how powerful your device is. Do so at your own risk." + }, + "mdx.setup.standalone_termux_install": { + "message": "Download and install {termux}." + }, + "mdx.setup.run_command": { + "message": "Run {command}." + }, + "mdx.setup.standalone_termux_script": { + "message": "Alternatively, there is an automated setup script for clean Termux installs. It might not work for everyone, so try it if the steps above do not work:" + } +} \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-blog/options.json b/i18n/ja/docusaurus-plugin-content-blog/options.json new file mode 100644 index 0000000..9fa6586 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-blog/options.json @@ -0,0 +1,10 @@ +{ + "description": { + "message": "Blog", + "description": "The description for the blog used in SEO" + }, + "sidebar.title": { + "message": "Recent posts", + "description": "The label for the left sidebar" + } +} \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current.json b/i18n/ja/docusaurus-plugin-content-docs/current.json new file mode 100644 index 0000000..cb3914c --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,34 @@ +{ + "version.label": { + "message": "Next", + "description": "The label for version current" + }, + "sidebar.geyserSidebar.category.Setup": { + "message": "Setup", + "description": "The label for category Setup in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Common Issues": { + "message": "Common Issues", + "description": "The label for category Common Issues in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Configuring Geyser": { + "message": "Configuring Geyser", + "description": "The label for category Configuring Geyser in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.FAQ": { + "message": "FAQ", + "description": "The label for category FAQ in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Geyser API": { + "message": "Geyser API", + "description": "The label for category Geyser API in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.link.Hosting Providers": { + "message": "Hosting Providers", + "description": "The label for link Hosting Providers in sidebar geyserSidebar, linking to /hosting" + }, + "sidebar.geyserSidebar.category.Custom Content": { + "message": "Custom Content", + "description": "The label for category Custom Content in sidebar geyserSidebar" + } +} \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/geyser/commands.md b/i18n/ja/docusaurus-plugin-content-docs/current/geyser/commands.md new file mode 100644 index 0000000..0492482 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/geyser/commands.md @@ -0,0 +1,83 @@ +--- +title: Commands and Permissions +description: Commands and their associated permission nodes for Geyser. +crowdin_sync: true +crowdin_page_id: cd92ff4f-9105-46a2-8696-8b0e2f8b9d31 +--- + +# Commands and Permissions + +Geyser features many built-in commands that can be used by players or server owners. + +:::info + +When using BungeeCord and Velocity, you will need to use a permission plugin such as [LuckPerms](https://luckperms.net/) +on the proxy server to assign permissions to players. Assigning permissions on the backend servers will not work. + +::: + +## Geyser commands & their permissions {#geyser-commands--their-permissions} + +| Command | Permission | Description | +| :-----------------------------------: | :---------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | +| `geyser`
Geyser root command | `geyser.command` | The permission required to see/run any Geyser commands. | +| `geyser help`
`geyser ?` | `geyser.command.help` | Shows help for all registered commands. | +| `geyser advancements` | `geyser.command.advancements` | Open the Java advancements menu. | +| `geyser dump` | `geyser.command.dump` | Dumps Geyser debug information for bug reports. | +| `geyser list` | `geyser.command.list` | List all players connected through Geyser. | +| `geyser nethernet` | `geyser.command.nethernet` | Shows NetherNet signaling status and diagnostics, for use with external signaling. | +| `geyser offhand` | `geyser.command.offhand` | Puts an item in your offhand. | +| `geyser reload` | `geyser.command.reload` | Reloads the Geyser configurations. Kicks all players when used! | +| `geyser settings` | `geyser.command.settings` | Opens a settings menu allowing you to modify aspects of the world. | +| `geyser shutdown`
`geyser stop` | `geyser.command.shutdown` | Shuts down Geyser.
*This command only works on Standalone.* | +| `geyser statistics` | `geyser.command.statistics` | Open the Java statistics menu. | +| `geyser version` | `geyser.command.version` | Shows the current Geyser version and checks for updates. | +| `geyser tooltips` | `geyser.command.tooltips` | Toggle showing Advanced Tooltips (F3 + H on Java) | +| `geyser extensions` | `geyser.command.extensions` | Lists all currently loaded extensions. This command is only registered if any extensions are loaded. | +| `geyser ping` | `geyser.command.ping` | Shows the ping between the player and the Geyser instance. | +| `geyser options` | `geyser.command.options` | Opens the "pause screen additions" dialogue, if sent by the Java server | +| `geyser quickactions` | `geyser.command.quickactions` | Opens the "quick actions" dialogue, if sent by the Java server. | + +## Permissions for Geyser extensions {#extension-permissions} + +For the following, `` refers to the extensions' id. + +| Command | Permission | Description | +| :------------------------- | :---------------------------- | :------------------------------------------------------------------------ | +| ` help`
` ?` | `geyser.command.exthelp.` | Shows help for all commands registered by this extension. | + +## Other Permissions {#other-permissions} + +Besides commands, there are other permissions that are used to guard specific Geyser features. + +| Permission | Description | +| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `geyser.settings.server` | Allow players to use the [game settings menu](/img/wiki/game_menu.png). (Also requires player to have op.) | +| `geyser.settings.gamerules` | Defines whether a user can alter gamerules in the [game settings menu](/img/wiki/game_menu.png). (Also requires player to have op.) | +| `geyser.update` | Whether this player will receive Geyser update notifications upon joining. | + +## Permissions when using Geyser-Standalone/Geyser-ViaProxy {#standalone-viaproxy-permissions} + +Geyser-ViaProxy and Geyser-Standalone feature their own basic permission handler. To edit base permissions, +open the `permissions.yml` file and add or remove permissions that Geyser players should receive when joining. +See the file for more information. + +You can further customize permission handling by creating a [Geyser extension](/wiki/geyser/extensions/) that makes use of Geysers API +to deal with permission checking. + +## Permissions when using Geyser on platforms without permission handlers {#permissions-platforms-no-permission-handlers} + +The following affects Geyser-BungeeCord, Geyser-Velocity, and Geyser-Fabric. +These platforms unfortunately do not have built-in permission handlers. Because of that, you will need to grant permissions on those platforms +manually using permission handlers, such as [LuckPerms](https://luckperms.net/). Geyser's permission are listed above. For extension permissions, consult their documentation. + +Alternatively, you can use [LuckLink](https://github.com/onebeastchris/LuckLink), a third-party Geyser extension, to automatically register permissions using [LuckPerms](https://luckperms.net/). + +- Install [LuckPerms](https://luckperms.net/) on the platform where you've installed Geyser (BungeeCord/Velocity/Fabric). +- To allow Geyser to automatically register permission defaults, install the [LuckLink](https://github.com/onebeastchris/LuckLink) Geyser extension + by downloading the `LuckLink.jar` and adding it to Geyser's `extensions` folder. +- Restart the server, and permissions should be automatically registered. + +## Floodgate commands and permissions {#floodgate-commands-and-permissions} + +For Floodgate commands, see [here](/wiki/floodgate/commands/). diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/geyser/playit-gg.md b/i18n/ja/docusaurus-plugin-content-docs/current/geyser/playit-gg.md new file mode 100644 index 0000000..7d20bd3 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/geyser/playit-gg.md @@ -0,0 +1,62 @@ +--- +title: playit.gg Setup +description: How to set up playit.gg to use Geyser without port forwarding. +crowdin_sync: true +crowdin_page_id: 3aee52d0-b943-4e37-8797-4a83ef55e42a +--- + +## Prerequisites {#prerequisites} + +:::info +You must be able to connect to your Geyser instance locally! +::: + +:::warning +The playit.gg Minecraft server plugin does not support UDP tunnels. You will need to use the program agent instead! +::: + +:::caution +This guide was written for RakNet, and does not cover NetherNet. For NetherNet, see [playit.gg's progress on NetherNet support](https://status.playit.gg/3/adding-nethernet-support). +::: + +## Setup {#setup} + +1. Head over to [playit.gg's website](https://playit.gg/) - download the program & run it. +2. The program will provide a claiming link. Visit that link, log in. + ![img](/img/wiki/playit-gg/playit_claim.png) +3. Confirm your agent. + ![img](/img/wiki/playit-gg/playit_claim_confirm.png) +4. Add the agent. + ![img](/img/wiki/playit-gg/playit_add_agent.png) +5. After the agent is created, create a tunnel. + ![img](/img/wiki/playit-gg/playit_add_tunnel.png) +6. Name your tunnel and click Next. + ![img](/img/wiki/playit-gg/playit_name_tunnel.png) +7. Select "Minecraft Bedrock" as the tunnel type and click Next. + ![img](/img/wiki/playit-gg/playit_tunnel_type.png) +8. Select the Free Network and click Next. + ![img](/img/wiki/playit-gg/playit_select_network.png) + **Do not change your Geyser port in `config.yml` unless you have a reason (for example, hosting another Geyser server on the same machine).** The Bedrock (Geyser) port in `config.yml` and the playit.gg ports are separate. playit.gg will forward its port to the default Geyser port and should work as-is. Changing it can cause errors. If you have changed your config port, set the Bedrock port back to the default `19132` and ensure `clone-remote-port` is `false`. +9. If the playit.gg agent and Geyser are running on the same device, leave the IP as `127.0.0.1` and set the port to whatever you configured in Geyser's config. + ![img](/img/wiki/playit-gg/playit_set_ipandport.png) +10. Select `proxy-protocol-v2` for the Proxy Protocol section and click Next. +11. In the Geyser config, under `advanced:` `bedrock:`, set `use-haproxy-protocol` to `true`. +12. Click Create Tunnel and wait for the tunnel to be created. + ![img](/img/wiki/playit-gg/playit_create_tunnel.png) +13. Copy your tunnel's port. For example, if your tunnel address is `visiting-phone.gl.at.ply.gg:6695`, then `6695` is the tunnel port. +14. In the Geyser config under `advanced:` `bedrock:`, set `broadcast-port` to your tunnel port (`6695` in the example). +15. Save your config. Start your Minecraft server and connect using your tunnel's IP and port. +16. If you join successfully, then you are done! Make sure to leave the playit.gg program running as closing it will close the tunnel. You also may want to ratelimit individual connections - use the "Per Connection Rate Limit" option to do so. + (If you failed to join, check out the [troubleshooting](#troubleshooting) section of the page.) + +## Troubleshooting {#troubleshooting} + +### I can't connect to my server! {#i-cant-connect-to-my-server} + +- *Try going to the Agents page, set your agent to IPv4 only, and change the region. You may need to switch regions a few times before you can connect.* +- *Are there errors in your minecraft server console?* +- *Unless you manually changed the "Local Port" on the playit.gg website, in Geyser config, ensure that the bedrock port is the default of `19132` and that `clone-remote-port` is `false`.* +- *If you changed the `bedrock-port` or set `clone-remote-port` to `true` and have a reason for doing so (e.g. hosting another Geyser server on the same machine), you'll have to tell playit.gg to use that port instead! See the last paragraph in step 8.* +- *Check that you're joining with playit.gg's IP and port from the "Allocation" tab.* +- *Make sure that you have the program agent open while trying to join.* +- *See [here](/wiki/geyser/fixing-unable-to-connect-to-world/) for general troubleshooting steps.* diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md b/i18n/ja/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md new file mode 100644 index 0000000..492774c --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md @@ -0,0 +1,208 @@ +--- +title: Port forwarding +description: Information on how to set up port forwarding required for Geyser. +crowdin_sync: true +crowdin_page_id: be7c5a22-1e8e-4ffe-8d13-7d763dd75886 +--- + +# Port forwarding {#port-forwarding} + +This page contains information on how to set up port forwarding required for Geyser to work when self-hosting. +There are also guides for specific configurations, such as Docker/Pterodactyl, or on specific VPS/KVM providers, such as OVH or Oracle Cloud. + +:::caution + +If you are using a Minecraft server hosting provider (e.g. Aternos, or Nodecraft), you should refer to the hosting provider setup on the [setup](/wiki/geyser/setup) page instead. + +::: + +:::info Ports that need to be opened +With NetherNet, the Geyser port (by default 19132) has to be open for **both TCP and UDP**: players find the server over TCP (signaling), and play on it over UDP. +If you use the "NetherNet and RakNet" option, also open the `webrtc-port` for UDP. +With external signaling, such as [Warden](https://warden.cloud), only UDP for WebRTC is needed. +::: + +## Port forwarding on Linux/Windows/macOS {#port-forwarding-on-linuxwindowsmacos} + +To allow others to play on your server, you will need to set up port forwarding on the device hosting Geyser. +Additionally, you will need to port forward the port on your router/modem (in other words, allow and route traffic on that port to the proper machine) if you want the server to be accessible outside your own home network. +Forward it for both TCP and UDP; many routers offer a "TCP/UDP" or "Both" option for this. +See [here](https://www.howtogeek.com/66214/how-to-forward-ports-on-your-router/) or [here](https://www.lifewire.com/how-to-port-forward-4163829) for helpful guides. +Do note: if you do not have a static IP address, your IP address may change over time. + +:::info + +Some ISPs (Internet Service Providers) block certain ports, or don't allow you to open ports (e.g. by using CGNAT, which doesn't allow you to open a port with a dynamic IP). +Other ISPs may require you to pay extra for a static IP address. +As an alternative to port forwarding, you can use [playit.gg](/wiki/geyser/playit-gg/) to create a tunnel. + +::: + +### Windows {#windows} + +To open a port on Windows, you will need to open the port through the Windows Firewall. There are multiple ways to do this: + +- `Powershell` (recommended) + + To open a port on TCP and UDP (in our example, port 19132), run the following commands in an administrator Powershell: + + ```powershell + New-NetFirewallRule -DisplayName "Geyser (TCP)" -Direction Inbound -Protocol TCP -LocalPort 19132 -Action Allow + New-NetFirewallRule -DisplayName "Geyser (UDP)" -Direction Inbound -Protocol UDP -LocalPort 19132 -Action Allow + ``` + + Running these commands creates two rules that allow TCP and UDP traffic on port 19132. + +- Windows Defender Firewall with Advanced Security (GUI) + 1. Search for "Windows Defender Firewall with Advanced Security" in the start menu, and open it. ([Image](/img/wiki/port-forwarding/windows-1.png)) + 2. Click on "Inbound Rules" in the left sidebar. ([Image](/img/wiki/port-forwarding/windows-2.png)) + 3. Click on "New Rule..." in the right sidebar. ([Image](/img/wiki/port-forwarding/windows-2.png)) + 4. Select "Port" as the rule type and click "Next". ([Example](/img/wiki/port-forwarding/windows-3.png)) + 5. Select "UDP" and "Specific local ports", and enter the port you want to open (in our example, 19132). Click "Next". ([Example](/img/wiki/port-forwarding/windows-4.png)) + 6. Select "Allow the connection" and click "Next". ([Example](/img/wiki/port-forwarding/windows-5.png)) + 7. Select the profiles you want to apply the rule to (e.g. "Domain", "Private", "Public"), and click "Next". ([Example](/img/wiki/port-forwarding/windows-6.png)) + 8. Enter a name for the rule (e.g. "Geyser (UDP)"), and click "Finish". ([Image](/img/wiki/port-forwarding/windows-7.png)) + 9. Repeat these steps, selecting "TCP" in step 5 and naming the rule e.g. "Geyser (TCP)". + +### Linux {#linux} + +Different Linux distributions, even different VPS providers ship and configure different firewalls. In the following examples, we will use `19132` as the port to open, but you should replace this with the port you are using for Geyser. + +- `ufw` is a simple firewall front-end for iptables that is commonly used on Ubuntu and Debian. To open a port on TCP and UDP, run the following commands: + ```bash + sudo ufw allow 19132/tcp + sudo ufw allow 19132/udp + ``` + Then, reload the firewall with `sudo ufw reload`, and see all open rules with `sudo ufw status`. + Further helpful guides: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server), [Baeldung](https://www.baeldung.com/linux/uncomplicated-firewall) + +- `firewalld` Add a port on TCP and UDP by running: + ```bash + sudo firewall-cmd --zone=public --permanent --add-port=19132/tcp + sudo firewall-cmd --zone=public --permanent --add-port=19132/udp + ``` + Then, reload the firewall with `sudo firewall-cmd --reload`, and see all open rules with `sudo firewall-cmd --list-all`. + Further helpful guides: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7) + +- `iptables` is a common firewall that is used on many Linux distributions. To open a port on TCP and UDP, run the following commands: + ```bash + sudo iptables -A INPUT -p tcp --dport 19132 -j ACCEPT + sudo iptables -A INPUT -p udp --dport 19132 -j ACCEPT + ``` + Then, save the firewall with `sudo iptables-save`, and see all open rules with `sudo iptables -L`. + Further helpful guides for iptables: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-iptables-on-ubuntu-14-04), [Ubuntu](https://help.ubuntu.com/community/IptablesHowTo) + +### macOS {#macos} + +You will need to disable `Block all incoming connections` in your Firewall settings, as that will block any connections and won't allow you to make exceptions. +To allow incoming connections, click `Allow` when getting [these prompts](/img/wiki/port-forwarding/macos_warning.png). +If you are still facing issues, see Apple's official guide [here](https://support.apple.com/guide/mac-help/MH11783) to open a port on macOS. + +## Using Docker or Pterodactyl {#using-docker-or-pterodactyl} + +In addition to port forwarding the port in your server's firewall (and, if applicable, your router/modem), you will need to assign the port in Docker/Pterodactyl. + +### Pterodactyl {#pterodactyl} + +Make sure to allocate the port(s) to the server in the Pterodactyl panel's `Network` tab, additionally to port forwarding the port(s). +See [here](https://pterodactyl.io/community/games/minecraft.html#allocations-in-the-panel) for more information. + +![Pterodactyl panel, Network section](/img/wiki/port-forwarding/pterodactyl-1.png) + +There are also different Geyser eggs for Pterodactyl, which can be found [here](https://github.com/GeyserMC/pterodactyl-stuff). + +:::caution + +If you are not able to allocate ports in the Pterodactyl panel, you will need to contact your server host to allocate one for you or try to use an existing port allocation. + +::: + +### Docker {#docker} + +For Geyser to work under Docker (e.g. using [Itzg's Docker image](https://github.com/itzg/docker-minecraft-server)), you will need to add the Geyser port on TCP and UDP to the docker-compose file. This is done by adding the following to the `ports` section: + +```yaml +ports: + - "25565:25565" + - "19132:19132" + - "19132:19132/udp" +``` + +Without a suffix, Docker exposes the port on TCP. The additional `/udp` suffix exposes it on UDP. +Alternatively, add the ports with the `-p 19132:19132 -p 19132:19132/udp` flags to the docker run command. + +## Issues with specific VPS/KVM providers {#issues-with-specific-vpskvm-providers} + +Some providers, such as OVH, Oracle Cloud, and SoYouStart, have a firewall that blocks the ports Geyser needs by default/in most cases. + +### OVH and SoYouStart {#ovh-and-soyoustart} + +OVH's GAME firewall filters traffic with rules made for specific games. The Minecraft Bedrock and Minecraft Pocket Edition rules currently only support RakNet, the protocol Bedrock used before NetherNet. +With NetherNet, players find the server over HTTP (TCP) and play over WebRTC (UDP), which these rules currently do not support. +For now, use the `Other` rule for the Geyser port(s) instead. + +:::caution + +If you do not have access to these firewall settings, but got linked to this page, please contact your server host and provide them with this link - they are likely using OVH internally. + +::: + +**To resolve it:** + +OVH: + +1. Navigate to `Network interfaces` +2. Click on the `...` button on the table for your IP -> then `...` and `Configure the GAME firewall` -> `Add rule` -> `Other protocol` +3. Add your Geyser port into `outgoing port`. If you use the "NetherNet and RakNet" option, add a rule for the `webrtc-port` as well. +4. If you use OVH's Edge Network Firewall, make sure it allows the Geyser port over both TCP and UDP. + +SoYouStart (subsidiary of OVH): + +1. Click the IP tab. +2. Click the gear at the right of the public IP address; select "Game mitigation". +3. Pick "Add a rule". +4. Select "Other" in the dropdown list and enter the Geyser port. If you use the "NetherNet and RakNet" option, add the `webrtc-port` as well. +5. Save and wait a few seconds for the changes to come into effect. + +### Oracle Cloud/OCI {#oracle-cloudoci} + +By default, Oracle Cloud will block all incoming traffic except for SSH and RDP. This must be resolved within Oracle Cloud itself and the Compute Instance running Geyser. + +The steps below assume that you are using the default ports for the Java server and Geyser, and should be adjusted accordingly. + +1. Find your Compute Instance in the OCI Console +2. Click on the instances Virtual Cloud Network (this will be under "Instance details") +3. On the left-hand side, select "Security Lists" +4. Select one of the security lists. By default only one security list will exist. It doesn't matter which security list we add the rules to. +5. Select "Add Ingress Rules" +6. Configure rules for Java (optional) + - Set "Source CIDR" to `0.0.0.0/0` + - Set "Destination Port Range" to `25565-25565` + - Select "Another Ingress Rule" +7. Configure rules for Geyser, once for TCP and once for UDP + - Set "Source CIDR" to `0.0.0.0/0` + - Set "Destination Port Range" to `19132-19132` + - Set "IP Protocol" to TCP + - Select "Another Ingress Rule", and repeat with "IP Protocol" set to UDP +8. Select "Add Ingress Rules" + +#### Oracle Linux {#oracle-linux} + +Run the following commands to allow Minecraft and Geyser through the OS firewall: + +```bash +sudo firewall-cmd --add-port=25565/tcp --permanent +sudo firewall-cmd --add-port=19132/tcp --permanent +sudo firewall-cmd --add-port=19132/udp --permanent +sudo firewall-cmd --reload +``` + +#### Ubuntu {#ubuntu} + +Run the following commands to allow Minecraft and Geyser through the OS firewall: + +```bash +sudo ufw allow 25565/tcp +sudo ufw allow 19132/tcp +sudo ufw allow 19132/udp +``` diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx b/i18n/ja/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx new file mode 100644 index 0000000..47391e7 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx @@ -0,0 +1,47 @@ +--- +title: Supported versions +description: Information on the versions Geyser supports. +crowdin_sync: true +crowdin_page_id: f199ae24-f711-486d-8e42-3079be87e8cd +--- + +import { Versions } from '@site/src/components/Versions' +import DocCardList from '@theme/DocCardList'; + +# Currently supported versions \ {#currently-supported-versions} + +:::info +**Geyser currently supports Minecraft Bedrock and Minecraft Java **. +::: + +## Using Geyser with older Minecraft: Bedrock edition versions \ {#using-geyser-with-older-minecraft-bedrock-edition-versions} + +Older Bedrock versions are not supported. Minecraft: Bedrock Edition updates automatically on all platforms, so there are few users who would +want to use older versions. Further, older Bedrock versions do not have all features which Geyser support, which would lead to a sub-par experience. + +## Using Geyser on older Minecraft: Java edition servers \ {#using-geyser-on-older-minecraft-java-edition-servers} + +Geyser emulates a client, so a Java server must accept users using that version in order for Geyser to work. +This is possible thanks to [ViaVersion](https://viaversion.com/viaversion), which allows Java edition players with newer versions to join servers +that run older versions of the game. + +### Using Geyser-Spigot on a Spigot/Paper server running on 1.20.5 or above + +You can use Geyser-Spigot on servers that run on 1.20.5 or above. You will also need to run at least Java 21 or later to use Geyser. See [here](https://docs.papermc.io/misc/java-install) for more info on updating Java. Paper versions not supporting Java 21 can add `-DPaper.IgnoreJavaVersion=true` flag to the Java startup arguments to allow Paper to run on Java 21. + +In order for Bedrock players to chat (1.19.3+) or join (1.19.1/1.19.2), you need to disable chat signing. More information about that can be read on the [chat signing page](/wiki/geyser/secure-chat). + +### Using Geyser-Spigot on a Spigot/Paper server running on a version below 1.20.5 + +This is unfortunately not possible. You'll need to use a proxy such as Velocity or BungeeCord, or set up Geyser-Standalone separately with the [ViaVersion](https://viaversion.com/viaversion) plugin. Another alternative would be to install [ViaProxy](https://viaversion.com/viaproxy), which is a standalone ViaVersion proxy that +translates between different Minecraft: Java edition versions, and to install Geyser-ViaProxy on it. + +### Using Geyser on Fabric/NeoForge servers not on the latest Minecraft version \ {#using-geyser-on-fabric-neoforge-servers-not-on-the-latest-minecraft-version} + +Unfortunately, Geyser-Fabric and Geyser-NeoForge only support the latest version of Minecraft: Java edition. The recommended way to still use +Geyser with older versions would be to install [ViaProxy](https://viaversion.com/viaproxy), which is a standalone ViaVersion proxy that +translates between different Minecraft: Java edition versions, and to install Geyser-ViaProxy on it. This will also work with Floodgate auth. + +### Using Geyser-Velocity or Geyser-BungeeCord on a proxy + +Make sure you update your proxy software to the latest available version, and, if the backend servers are not on , also install the [ViaVersion](https://viaversion.com/viaversion) plugin on the backend servers. Velocity/BungeeCord support most Minecraft versions, so you can update them regardless of the backend server versions. diff --git a/i18n/ja/docusaurus-theme-classic/footer.json b/i18n/ja/docusaurus-theme-classic/footer.json new file mode 100644 index 0000000..1a69184 --- /dev/null +++ b/i18n/ja/docusaurus-theme-classic/footer.json @@ -0,0 +1,50 @@ +{ + "link.title.Wiki": { + "message": "Wiki", + "description": "The title of the footer links column with title=Wiki in the footer" + }, + "link.title.Downloads": { + "message": "Downloads", + "description": "The title of the footer links column with title=Downloads in the footer" + }, + "link.title.Community": { + "message": "Community", + "description": "The title of the footer links column with title=Community in the footer" + }, + "link.title.More": { + "message": "More", + "description": "The title of the footer links column with title=More in the footer" + }, + "link.item.label.REST APIs": { + "message": "REST APIs", + "description": "The label of footer link with label=REST APIs linking to wiki/api/api.geysermc.org/global-api" + }, + "link.item.label.Other": { + "message": "Other", + "description": "The label of footer link with label=Other linking to download?project=other-projects" + }, + "link.item.label.Blog": { + "message": "Blog", + "description": "The label of footer link with label=Blog linking to blog" + }, + "link.item.label.Donate": { + "message": "Donate", + "description": "The label of footer link with label=Donate linking to https://opencollective.com/geysermc" + }, + "link.item.label.Global Linking": { + "message": "Global Linking", + "description": "The label of footer link with label=Global Linking linking to https://link.geysermc.org/" + }, + "link.item.label.Privacy Policy": { + "message": "Privacy Policy", + "description": "The label of footer link with label=Privacy Policy linking to https://ziax.com/terms/privacy-policy/" + }, + "logo.alt": { + "message": "GeyserMC logo", + "description": "The alt text of footer logo" + }, + "copyright": { + "message": "Copyright © 2026 GeyserMC. Built with Docusaurus.
This website is not an official Minecraft website and is not associated with Mojang Studios or Microsoft. All product and company names are trademarks or registered trademarks of their respective holders. Use of these names does not imply any affiliation or endorsement by them.", + "description": "The footer copyright" + } +} \ No newline at end of file diff --git a/i18n/ja/docusaurus-theme-classic/navbar.json b/i18n/ja/docusaurus-theme-classic/navbar.json new file mode 100644 index 0000000..c4f41a5 --- /dev/null +++ b/i18n/ja/docusaurus-theme-classic/navbar.json @@ -0,0 +1,38 @@ +{ + "logo.alt": { + "message": "GeyserMC logo", + "description": "The alt text of navbar logo" + }, + "item.label.Wiki": { + "message": "Wiki", + "description": "Navbar item with label Wiki" + }, + "item.label.Blog": { + "message": "Blog", + "description": "Navbar item with label Blog" + }, + "item.label.Utilities": { + "message": "Utilities", + "description": "Navbar item with label Utilities" + }, + "item.label.Download": { + "message": "Download", + "description": "Navbar item with label Download" + }, + "item.label.REST APIs": { + "message": "REST APIs", + "description": "Navbar item with label REST APIs" + }, + "item.label.Other": { + "message": "Other", + "description": "Navbar item with label Other" + }, + "item.label.Dump Viewer": { + "message": "Dump Viewer", + "description": "Navbar item with label Dump Viewer" + }, + "item.label.Hosting": { + "message": "Hosting", + "description": "Navbar item with label Hosting" + } +} \ No newline at end of file diff --git a/i18n/ru/code.json b/i18n/ru/code.json new file mode 100644 index 0000000..7251b24 --- /dev/null +++ b/i18n/ru/code.json @@ -0,0 +1,1023 @@ +{ + "pages.main.title": { + "message": "Revolutionize Your Minecraft Server" + }, + "pages.main.subtitle": { + "message": "Enable clients from Minecraft Bedrock Edition to join your Minecraft Java server" + }, + "components.homepage_features.1.line1": { + "message": "Geyser is a program that allows Minecraft: Bedrock Edition clients to join Minecraft: Java Edition servers, allowing for true crossplay between both editions of the game." + }, + "components.homepage_features.1.line2": { + "message": "The ultimate goal of this project is to allow Minecraft: Bedrock Edition users to join Minecraft: Java Edition servers as seamlessly as possible." + }, + "components.homepage_features.2": { + "message": "Geyser acts as a translator which sits between the Bedrock client and the Java server. It takes data from the Bedrock client and translates it into a format the Java server understands and vice versa. Geyser works with any modern Minecraft version and can be installed either as a plugin or ran as a standalone program." + }, + "components.homepage_features.3.line1": { + "message": "Geyser can be joined from Bedrock clients on Windows 10/11, iOS, Android, and even consoles. Geyser works with a wide array of hosting providers, but can also be used as its own standalone proxy to join any Minecraft server!" + }, + "components.homepage_features.3.line2": { + "message": "If you are a server owner, you can install our Floodgate plugin which allows Xbox Live authenticated Bedrock users to join without a Java Edition account!" + }, + "pages.download.title": { + "message": "Download" + }, + "pages.download.subheading": { + "message": "Download the latest versions of our various projects." + }, + "pages.download.description.geyser": { + "message": "A bridge/proxy allowing you to connect to Minecraft: Java Edition servers with Minecraft: Bedrock Edition." + }, + "pages.download.description.floodgate": { + "message": "Hybrid mode plugin to allow for connections from Geyser to join online mode servers." + }, + "pages.download.description.geyserconnect": { + "message": "A Geyser extension allowing players to connect to different Java or Geyser servers." + }, + "pages.download.description.thirdpartycosmetics": { + "message": "An extension that adds support for loading ears and other third party cosmetics on java players" + }, + "pages.dumpviewer.title": { + "message": "Dump Viewer" + }, + "pages.dumpviewer.subheading": { + "message": "View the breakdown of your Geyser dump." + }, + "pages.dumpviewer.enterdumpid": { + "message": "Enter Dump ID or URL below and click load." + }, + "pages.dumpviewer.button.load": { + "message": "Load" + }, + "pages.dumpviewer.versions": { + "message": "Versions" + }, + "pages.dumpviewer.versions.geyserver": { + "message": "Geyser Version" + }, + "pages.dumpviewer.versions.javaver": { + "message": "Java Version" + }, + "pages.dumpviewer.versions.os": { + "message": "Operating System" + }, + "pages.dumpviewer.geyserver": { + "message": "Geyser Version" + }, + "pages.dumpviewer.geyserver.build": { + "message": "Build" + }, + "pages.dumpviewer.geyserver.commit": { + "message": "Commit Hash" + }, + "pages.dumpviewer.geyserver.branch": { + "message": "Branch" + }, + "pages.dumpviewer.platform": { + "message": "Platform Info" + }, + "pages.dumpviewer.platform.id": { + "message": "Platform Identifier" + }, + "pages.dumpviewer.platform.name": { + "message": "Platform Name" + }, + "pages.dumpviewer.platform.version": { + "message": "Platform Version" + }, + "pages.dumpviewer.platform.apiver": { + "message": "Platform API Version" + }, + "pages.dumpviewer.platform.onlinemode": { + "message": "Online Mode" + }, + "pages.dumpviewer.sysinfo": { + "message": "System Info" + }, + "pages.dumpviewer.cpucount": { + "message": "CPU Count" + }, + "pages.dumpviewer.cpuname": { + "message": "CPU Name" + }, + "pages.dumpviewer.ram": { + "message": "RAM" + }, + "pages.dumpviewer.javaname": { + "message": "Java Name" + }, + "pages.dumpviewer.javavendor": { + "message": "Java Vendor" + }, + "pages.dumpviewer.dockercheck": { + "message": "Uses Docker?" + }, + "pages.dumpviewer.plugins": { + "message": "Plugins" + }, + "pages.dumpviewer.plugins.noplugins": { + "message": "No plugins to show." + }, + "pages.dumpviewer.plugins.helptext": { + "message": "Click on a plugin to view more information." + }, + "pages.dumpviewer.config": { + "message": "Config" + }, + "pages.dumpviewer.viewsource": { + "message": "View dump source" + }, + "theme.ErrorPageContent.title": { + "message": "This page crashed.", + "description": "The title of the fallback page when the page crashed" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "Scroll back to top", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.archive.title": { + "message": "Archive", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "Archive", + "description": "The page & hero description of the blog archive page" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "Blog list page navigation", + "description": "The ARIA label for the blog pagination" + }, + "theme.blog.paginator.newerEntries": { + "message": "Newer Entries", + "description": "The label used to navigate to the newer blog posts page (previous page)" + }, + "theme.blog.paginator.olderEntries": { + "message": "Older Entries", + "description": "The label used to navigate to the older blog posts page (next page)" + }, + "theme.blog.post.paginator.navAriaLabel": { + "message": "Blog post page navigation", + "description": "The ARIA label for the blog posts pagination" + }, + "theme.blog.post.paginator.newerPost": { + "message": "Newer Post", + "description": "The blog post button label to navigate to the newer/previous post" + }, + "theme.blog.post.paginator.olderPost": { + "message": "Older Post", + "description": "The blog post button label to navigate to the older/next post" + }, + "theme.blog.post.plurals": { + "message": "One post|{count} posts", + "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.blog.tagTitle": { + "message": "{nPosts} tagged with \"{tagName}\"", + "description": "The title of the page for a blog tag" + }, + "theme.tags.tagsPageLink": { + "message": "View All Tags", + "description": "The label of the link targeting the tag list page" + }, + "theme.colorToggle.ariaLabel": { + "message": "Switch between dark and light mode (currently {mode})", + "description": "The ARIA label for the navbar color mode toggle" + }, + "theme.colorToggle.ariaLabel.mode.dark": { + "message": "dark mode", + "description": "The name for the dark color mode" + }, + "theme.colorToggle.ariaLabel.mode.light": { + "message": "light mode", + "description": "The name for the light color mode" + }, + "theme.docs.DocCard.categoryDescription.plurals": { + "message": "1 item|{count} items", + "description": "The default description for a category card in the generated index about how many items this category includes" + }, + "theme.docs.breadcrumbs.navAriaLabel": { + "message": "Breadcrumbs", + "description": "The ARIA label for the breadcrumbs" + }, + "theme.docs.paginator.navAriaLabel": { + "message": "Docs pages", + "description": "The ARIA label for the docs pagination" + }, + "theme.docs.paginator.previous": { + "message": "Previous", + "description": "The label used to navigate to the previous doc" + }, + "theme.docs.paginator.next": { + "message": "Next", + "description": "The label used to navigate to the next doc" + }, + "theme.docs.tagDocListPageTitle.nDocsTagged": { + "message": "One doc tagged|{count} docs tagged", + "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.tagDocListPageTitle": { + "message": "{nDocsTagged} with \"{tagName}\"", + "description": "The title of the page for a docs tag" + }, + "theme.docs.versionBadge.label": { + "message": "Version: {versionLabel}" + }, + "theme.docs.versions.unreleasedVersionLabel": { + "message": "This is unreleased documentation for {siteTitle} {versionLabel} version.", + "description": "The label used to tell the user that he's browsing an unreleased doc version" + }, + "theme.docs.versions.unmaintainedVersionLabel": { + "message": "This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.", + "description": "The label used to tell the user that he's browsing an unmaintained doc version" + }, + "theme.docs.versions.latestVersionSuggestionLabel": { + "message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).", + "description": "The label used to tell the user to check the latest version" + }, + "theme.docs.versions.latestVersionLinkLabel": { + "message": "latest version", + "description": "The label used for the latest version suggestion link label" + }, + "theme.common.editThisPage": { + "message": "Edit this page", + "description": "The link label to edit the current page" + }, + "theme.common.headingLinkTitle": { + "message": "Direct link to {heading}", + "description": "Title for link to heading" + }, + "theme.lastUpdated.atDate": { + "message": " on {date}", + "description": "The words used to describe on which date a page has been last updated" + }, + "theme.lastUpdated.byUser": { + "message": " by {user}", + "description": "The words used to describe by who the page has been last updated" + }, + "theme.lastUpdated.lastUpdatedAtBy": { + "message": "Last updated{atDate}{byUser}", + "description": "The sentence used to display when a page has been last updated, and by who" + }, + "theme.NotFound.title": { + "message": "Page Not Found", + "description": "The title of the 404 page" + }, + "theme.navbar.mobileVersionsDropdown.label": { + "message": "Versions", + "description": "The label for the navbar versions dropdown on mobile view" + }, + "theme.tags.tagsListLabel": { + "message": "Tags:", + "description": "The label alongside a tag list" + }, + "theme.AnnouncementBar.closeButtonAriaLabel": { + "message": "Close", + "description": "The ARIA label for close button of announcement bar" + }, + "theme.admonition.caution": { + "message": "caution", + "description": "The default label used for the Caution admonition (:::caution)" + }, + "theme.admonition.danger": { + "message": "danger", + "description": "The default label used for the Danger admonition (:::danger)" + }, + "theme.admonition.info": { + "message": "info", + "description": "The default label used for the Info admonition (:::info)" + }, + "theme.admonition.note": { + "message": "note", + "description": "The default label used for the Note admonition (:::note)" + }, + "theme.admonition.tip": { + "message": "tip", + "description": "The default label used for the Tip admonition (:::tip)" + }, + "theme.admonition.warning": { + "message": "warning", + "description": "The default label used for the Warning admonition (:::warning)" + }, + "theme.blog.sidebar.navAriaLabel": { + "message": "Blog recent posts navigation", + "description": "The ARIA label for recent posts in the blog sidebar" + }, + "theme.CodeBlock.copied": { + "message": "Copied", + "description": "The copied button label on code blocks" + }, + "theme.CodeBlock.copyButtonAriaLabel": { + "message": "Copy code to clipboard", + "description": "The ARIA label for copy code blocks button" + }, + "theme.CodeBlock.copy": { + "message": "Copy", + "description": "The copy button label on code blocks" + }, + "theme.CodeBlock.wordWrapToggle": { + "message": "Toggle word wrap", + "description": "The title attribute for toggle word wrapping button of code block lines" + }, + "theme.DocSidebarItem.expandCategoryAriaLabel": { + "message": "Expand sidebar category '{label}'", + "description": "The ARIA label to expand the sidebar category" + }, + "theme.DocSidebarItem.collapseCategoryAriaLabel": { + "message": "Collapse sidebar category '{label}'", + "description": "The ARIA label to collapse the sidebar category" + }, + "theme.NavBar.navAriaLabel": { + "message": "Main", + "description": "The ARIA label for the main navigation" + }, + "theme.NotFound.p1": { + "message": "We could not find what you were looking for.", + "description": "The first paragraph of the 404 page" + }, + "theme.NotFound.p2": { + "message": "Please contact the owner of the site that linked you to the original URL and let them know their link is broken.", + "description": "The 2nd paragraph of the 404 page" + }, + "theme.navbar.mobileLanguageDropdown.label": { + "message": "Languages", + "description": "The label for the mobile language switcher dropdown" + }, + "theme.TOCCollapsible.toggleButtonLabel": { + "message": "On this page", + "description": "The label used by the button on the collapsible TOC component" + }, + "theme.blog.post.readMore": { + "message": "Read More", + "description": "The label used in blog post item excerpts to link to full blog posts" + }, + "theme.blog.post.readMoreLabel": { + "message": "Read more about {title}", + "description": "The ARIA label for the link to full blog posts from excerpts" + }, + "theme.blog.post.readingTime.plurals": { + "message": "One min read|{readingTime} min read", + "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.breadcrumbs.home": { + "message": "Home page", + "description": "The ARIA label for the home page in the breadcrumbs" + }, + "theme.docs.sidebar.collapseButtonTitle": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.collapseButtonAriaLabel": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.navAriaLabel": { + "message": "Docs sidebar", + "description": "The ARIA label for the sidebar navigation" + }, + "theme.docs.sidebar.closeSidebarButtonAriaLabel": { + "message": "Close navigation bar", + "description": "The ARIA label for close button of mobile sidebar" + }, + "theme.docs.sidebar.expandButtonTitle": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.docs.sidebar.expandButtonAriaLabel": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": { + "message": "← Back to main menu", + "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)" + }, + "theme.docs.sidebar.toggleSidebarButtonAriaLabel": { + "message": "Toggle navigation bar", + "description": "The ARIA label for hamburger menu button of mobile navigation" + }, + "theme.SearchBar.seeAll": { + "message": "See all {count} results" + }, + "theme.SearchPage.documentsFound.plurals": { + "message": "One document found|{count} documents found", + "description": "Pluralized label for \"{count} documents found\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.SearchPage.existingResultsTitle": { + "message": "Search results for \"{query}\"", + "description": "The search page title for non-empty query" + }, + "theme.SearchPage.emptyResultsTitle": { + "message": "Search the documentation", + "description": "The search page title for empty query" + }, + "theme.SearchPage.inputPlaceholder": { + "message": "Type your search here", + "description": "The placeholder for search page input" + }, + "theme.SearchPage.inputLabel": { + "message": "Search", + "description": "The ARIA label for search page input" + }, + "theme.SearchPage.algoliaLabel": { + "message": "Search by Algolia", + "description": "The ARIA label for Algolia mention" + }, + "theme.SearchPage.noResultsText": { + "message": "No results were found", + "description": "The paragraph for empty search result" + }, + "theme.SearchPage.fetchingNewResults": { + "message": "Fetching new results...", + "description": "The paragraph for fetching new search results" + }, + "theme.SearchBar.label": { + "message": "Search", + "description": "The ARIA label and placeholder for search button" + }, + "theme.SearchModal.searchBox.resetButtonTitle": { + "message": "Clear the query", + "description": "The label and ARIA label for search box reset button" + }, + "theme.SearchModal.searchBox.cancelButtonText": { + "message": "Cancel", + "description": "The label and ARIA label for search box cancel button" + }, + "theme.SearchModal.startScreen.recentSearchesTitle": { + "message": "Recent", + "description": "The title for recent searches" + }, + "theme.SearchModal.startScreen.noRecentSearchesText": { + "message": "No recent searches", + "description": "The text when no recent searches" + }, + "theme.SearchModal.startScreen.saveRecentSearchButtonTitle": { + "message": "Save this search", + "description": "The label for save recent search button" + }, + "theme.SearchModal.startScreen.removeRecentSearchButtonTitle": { + "message": "Remove this search from history", + "description": "The label for remove recent search button" + }, + "theme.SearchModal.startScreen.favoriteSearchesTitle": { + "message": "Favorite", + "description": "The title for favorite searches" + }, + "theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle": { + "message": "Remove this search from favorites", + "description": "The label for remove favorite search button" + }, + "theme.SearchModal.errorScreen.titleText": { + "message": "Unable to fetch results", + "description": "The title for error screen of search modal" + }, + "theme.SearchModal.errorScreen.helpText": { + "message": "You might want to check your network connection.", + "description": "The help text for error screen of search modal" + }, + "theme.SearchModal.footer.selectText": { + "message": "to select", + "description": "The explanatory text of the action for the enter key" + }, + "theme.SearchModal.footer.selectKeyAriaLabel": { + "message": "Enter key", + "description": "The ARIA label for the Enter key button that makes the selection" + }, + "theme.SearchModal.footer.navigateText": { + "message": "to navigate", + "description": "The explanatory text of the action for the Arrow up and Arrow down key" + }, + "theme.SearchModal.footer.navigateUpKeyAriaLabel": { + "message": "Arrow up", + "description": "The ARIA label for the Arrow up key button that makes the navigation" + }, + "theme.SearchModal.footer.navigateDownKeyAriaLabel": { + "message": "Arrow down", + "description": "The ARIA label for the Arrow down key button that makes the navigation" + }, + "theme.SearchModal.footer.closeText": { + "message": "to close", + "description": "The explanatory text of the action for Escape key" + }, + "theme.SearchModal.footer.closeKeyAriaLabel": { + "message": "Escape key", + "description": "The ARIA label for the Escape key button that close the modal" + }, + "theme.SearchModal.footer.searchByText": { + "message": "Search by", + "description": "The text explain that the search is making by Algolia" + }, + "theme.SearchModal.noResultsScreen.noResultsText": { + "message": "No results for", + "description": "The text explains that there are no results for the following search" + }, + "theme.SearchModal.noResultsScreen.suggestedQueryText": { + "message": "Try searching for", + "description": "The text for the suggested query when no results are found for the following search" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsText": { + "message": "Believe this query should return results?", + "description": "The text for the question where the user thinks there are missing results" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsLinkText": { + "message": "Let us know.", + "description": "The text for the link to report missing results" + }, + "theme.SearchModal.placeholder": { + "message": "Search docs", + "description": "The placeholder of the input of the DocSearch pop-up modal" + }, + "theme.ErrorPageContent.tryAgain": { + "message": "Try again", + "description": "The label of the button to try again rendering when the React error boundary captures an error" + }, + "theme.common.skipToMainContent": { + "message": "Skip to main content", + "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation" + }, + "theme.tags.tagsPageTitle": { + "message": "Tags", + "description": "The title of the tag list page" + }, + "pages.download.description.hurricane": { + "message": "A plugin with various workarounds for Geyser players that modify the server in order to achieve their goal." + }, + "theme.blog.author.pageTitle": { + "message": "{authorName} - {nPosts}", + "description": "The title of the page for a blog author" + }, + "theme.blog.authorsList.pageTitle": { + "message": "Authors", + "description": "The title of the authors page" + }, + "theme.blog.authorsList.viewAll": { + "message": "View all authors", + "description": "The label of the link targeting the blog authors page" + }, + "theme.blog.author.noPosts": { + "message": "This author has not written any posts yet.", + "description": "The text for authors with 0 blog post" + }, + "theme.contentVisibility.unlistedBanner.title": { + "message": "Unlisted page", + "description": "The unlisted content banner title" + }, + "theme.contentVisibility.unlistedBanner.message": { + "message": "This page is unlisted. Search engines will not index it, and only users having a direct link can access it.", + "description": "The unlisted content banner message" + }, + "theme.contentVisibility.draftBanner.title": { + "message": "Draft page", + "description": "The draft content banner title" + }, + "theme.contentVisibility.draftBanner.message": { + "message": "This page is a draft. It will only be visible in dev and be excluded from the production build.", + "description": "The draft content banner message" + }, + "mdx.setup.host_provider": { + "message": "Host Provider" + }, + "mdx.setup.self_host": { + "message": "Self Host" + }, + "mdx.setup.paper_spigot": { + "message": "Paper / Spigot" + }, + "mdx.setup.modded_servers": { + "message": "Modded Servers" + }, + "mdx.setup.proxy_servers": { + "message": "Proxy Servers" + }, + "mdx.setup.viaproxy": { + "message": "ViaProxy" + }, + "mdx.setup.standalone": { + "message": "Standalone" + }, + "pages.download.description.offhandextension": { + "message": "An extension that allows Bedrock players to switch their offhand and mainhand item by emoting." + }, + "pages.download.description.rainbow": { + "message": "A Minecraft mod to generate Geyser item mappings and bedrock resourcepacks for use with Geyser's custom item API (v2)." + }, + "pages.download.description.hydraulic": { + "message": "A companion mod to Geyser which allows for Bedrock players to join modded Minecraft: Java Edition servers." + }, + "pages.download.description.thunder": { + "message": "A java application to convert simple Java Edition resource packs to Bedrock Edition ones." + }, + "pages.dumpviewer.extensions": { + "message": "Extensions" + }, + "pages.dumpviewer.extensions.noextensions": { + "message": "No extensions to show." + }, + "pages.dumpviewer.extensions.helptext": { + "message": "Click on an extension to view more information." + }, + "mdx.setup.fabric": { + "message": "Fabric" + }, + "mdx.setup.neoforge": { + "message": "NeoForge" + }, + "mdx.setup.installing_geyser": { + "message": "Installing Geyser" + }, + "mdx.setup.download_jar": { + "message": "Download {jarName}." + }, + "mdx.setup.place_jar": { + "message": "Place the {jarName} in the {jarDirectory} folder." + }, + "mdx.setup.restart_server": { + "message": "Restart the server." + }, + "mdx.setup.additional_steps": { + "message": "Additional Steps" + }, + "mdx.setup.connecting_on_bedrock": { + "message": "Connecting on Bedrock" + }, + "providers.config.templates.java_address": { + "message": "Set `address` in the `bedrock` section to the public address of the Java server." + }, + "providers.config.templates.custom_port_dedicated_ip": { + "message": "This host may only give out a separate port with a dedicated IP address." + }, + "providers.warnings.ovh_firewall_misconfig": { + "message": "To fix random `Unable to Connect` issues, see [here](/wiki/geyser/port-forwarding/#ovh-and-soyoustart)." + }, + "providers.config.templates.install_location.plugin_list": { + "message": "Install Geyser through the plugin or mod list provided by the host." + }, + "providers.config.templates.install_location.enable_bedrock_crossplay": { + "message": "Select the 'Enable Bedrock crossplay?' option when changing your server software to automatically install and configure Geyser and Floodgate." + }, + "providers.config.templates.info.geyser_installed_by_default": { + "message": "Geyser is installed and configured on all servers by default." + }, + "mdx.setup.checking_server_version": { + "message": "Checking your server version" + }, + "mdx.setup.restart_geyser": { + "message": "Restart Geyser." + }, + "mdx.setup.https_note": { + "message": "Unless signaling runs over {https}, Minecraft asks players whether they trust the server the first time they join." + }, + "mdx.setup.configuring_geyser": { + "message": "Configuring Geyser" + }, + "mdx.setup.open_config_simple": { + "message": "Now open the file {configLocation}. Find the part that starts with {bedrock}, and change the lines shown below." + }, + "mdx.setup.preconfigured": { + "message": "No changes needed. {name} automatically configures Geyser." + }, + "mdx.setup.transport_nethernet_simple": { + "message": "NetherNet is supported fully by 26.50+. If you'd like to also have working MOTD and player count for older versions, you will need to set up both NetherNet and Raknet." + }, + "mdx.setup.transport_both_compat": { + "message": "Also accepts RakNet, for additional compatibility: some Bedrock versions, such as 26.40, fetch the server's MOTD and player count over RakNet. This option needs a separate UDP port for NetherNet." + }, + "mdx.setup.placeholder_word": { + "message": "Replace this" + }, + "mdx.setup.replace_with_simple": { + "message": "With this" + }, + "mdx.setup.placeholder_java_port": { + "message": "The port of the Java server." + }, + "mdx.setup.placeholder_java_port_udp": { + "message": "A UDP port for NetherNet, other than {port}. This can be the Java server's port: the Java server only uses it over TCP, so Geyser can use it over UDP. Any other available UDP port works too." + }, + "mdx.setup.placeholder_second_available_port": { + "message": "An available UDP port for NetherNet, other than {port}. Open it for UDP." + }, + "mdx.setup.raknet_on_port": { + "message": "RakNet uses {port} over UDP, so that port has to be open for UDP as well." + }, + "mdx.setup.summary.nethernet_reported_generic": { + "message": "Reported to work with NetherNet" + }, + "mdx.setup.summary.supporter_configures": { + "message": "{name} configures Geyser for you automatically, including NetherNet." + }, + "mdx.setup.summary.updated": { + "message": "Instructions last updated on {date}" + }, + "mdx.setup.badge.gold": { + "message": "Gold supporter" + }, + "mdx.setup.badge.silver": { + "message": "Silver supporter" + }, + "mdx.setup.badge.bronze": { + "message": "Bronze supporter" + }, + "mdx.setup.unconfirmed_title": { + "message": "Not checked for NetherNet yet" + }, + "mdx.setup.warning_title": { + "message": "Warning" + }, + "mdx.setup.unconfirmed_reach_out_update": { + "message": "These instructions have not been checked for NetherNet yet. If Bedrock players can't join, reach out to {name} to get instructions on how to use Geyser, and let us know on {discord} so we can update this guide." + }, + "mdx.setup.try_not_listed": { + "message": "If your host cannot give you a separate port, follow the {notListed} instead. Players then join through {warden}, an external signaling service." + }, + "mdx.setup.try_not_listed.link": { + "message": "\"Not listed\" guide for using only the Java server's port" + }, + "mdx.setup.no_signaling": { + "message": "{name} supports neither built-in nor external signaling, so Bedrock players cannot connect over NetherNet." + }, + "mdx.setup.hosting_provider_article_short": { + "message": "Host's Geyser guide" + }, + "mdx.setup.hosting_provider_website_short": { + "message": "Website" + }, + "mdx.setup.hosting_provider_support_short": { + "message": "Support" + }, + "mdx.setup.hosting_provider_discord_short": { + "message": "Discord" + }, + "mdx.setup.not_listed.tab_allocated": { + "message": "I can allocate ports" + }, + "mdx.setup.not_listed.tab_java_only": { + "message": "I only have the Java server port" + }, + "components.provider.open_collaboration_group": { + "message": "Hosts that support Geyser's development" + }, + "components.provider.other_group": { + "message": "Other providers" + }, + "mdx.setup.connect.port_java": { + "message": "Your Java server's port" + }, + "mdx.setup.connect.port_config_step": { + "message": "The port you set in \"Configuring Geyser\"" + }, + "mdx.setup.connect.intro": { + "message": "In Minecraft: Bedrock Edition, go to Play, then Servers, and select Add Server. Fill it in like this:" + }, + "mdx.setup.connect.add_server": { + "message": "Add Server" + }, + "mdx.setup.connect.server_name": { + "message": "Server Name" + }, + "mdx.setup.connect.server_name_value": { + "message": "Anything you like" + }, + "mdx.setup.connect.server_address": { + "message": "Server Address" + }, + "mdx.setup.connect.server_address_value": { + "message": "Your Java server's address" + }, + "mdx.setup.connect.port": { + "message": "Port" + }, + "mdx.setup.transport_nethernet_tab": { + "message": "NetherNet" + }, + "mdx.setup.transport_both_tab": { + "message": "NetherNet and RakNet" + }, + "providers.ports.assign": { + "message": "Assign a port in your host's panel, open for both TCP and UDP." + }, + "providers.ports.allocated": { + "message": "Pick an available port from the ports allocated to your server, open for both TCP and UDP." + }, + "providers.ports.ask_host": { + "message": "Ask your host for a port that is open for both TCP and UDP." + }, + "pages.hosting.tier.gold": { + "message": "Gold supporters" + }, + "pages.hosting.tier.silver": { + "message": "Silver supporters" + }, + "pages.hosting.tier.bronze": { + "message": "Bronze supporters" + }, + "pages.hosting.card.website": { + "message": "Website" + }, + "pages.hosting.card.setup": { + "message": "Setup guide" + }, + "pages.hosting.title": { + "message": "Hosting Providers" + }, + "pages.hosting.subheading": { + "message": "Hosting providers that support the development of Geyser." + }, + "pages.hosting.intro": { + "message": "The hosts below support Geyser and related projects through {openCollaboration}. Their support helps fund work on Geyser, such as keeping up with major changes to Bedrock Edition, like the switch to NetherNet. All hosts listed below also configure Geyser automatically when installed, making using Geyser easier than ever. We'd like to thank them all for their support." + }, + "pages.hosting.empty": { + "message": "No hosting providers are listed yet." + }, + "pages.hosting.other.title": { + "message": "Using another host?" + }, + "pages.hosting.other.text": { + "message": "Hosts not being listed here does not mean Geyser won't run there. The {setupGuide} includes community collected notes for many other hosts, and general instructions for those not listed." + }, + "pages.hosting.other.setup_guide": { + "message": "setup guide" + }, + "pages.hosting.meta.title": { + "message": "Hosting Providers" + }, + "pages.hosting.meta.description": { + "message": "Hosting providers that support the development of Geyser through Open Collaboration." + }, + "pages.download.description.floodgatedatabases": { + "message": "Database extension jars for Floodgate local linking." + }, + "providers.ports.from_host": { + "message": "The Bedrock port your host shows you." + }, + "providers.config.templates.info.only_serves_region": { + "message": "This host only provides service in {region}." + }, + "mdx.setup.velocity": { + "message": "Velocity" + }, + "mdx.setup.bungeecord": { + "message": "BungeeCord" + }, + "providers.ports.new_port": { + "message": "Open a new port in your server panel, open for both TCP and UDP, or ask your host for one if the panel has no option for it." + }, + "mdx.setup.supported_versions": { + "message": "Supported versions" + }, + "mdx.setup.restart_velocity": { + "message": "Restart Velocity." + }, + "mdx.setup.restart_bungeecord": { + "message": "Restart BungeeCord." + }, + "mdx.setup.restart_viaproxy": { + "message": "Restart ViaProxy." + }, + "mdx.setup.fabric_dependency": { + "message": "If it is not installed already, download {fabricApi} and place it in the same folder." + }, + "mdx.setup.version_step_viaversion": { + "message": "If your server is not running {version}, you will need to install {viaVersion}. For more information, see {supportedVersions}." + }, + "mdx.setup.version_step_proxy": { + "message": "All servers on the network must accept {version} Java clients, as Geyser imitates one." + }, + "mdx.setup.proxy_install_only": { + "message": "Install Geyser only on the {proxy} server! You can install Floodgate on all servers for better skin support and network-wide Floodgate API availability for other plugins." + }, + "mdx.setup.modded_requirements": { + "message": "{jarName} runs only on a {version} server, and only works alongside server-side mods. Mods that players also need to install on their client will not work. See {supportedVersions} for more details." + }, + "mdx.setup.self_port_choice": { + "message": "Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP, so it cannot be the port of the {platform} server." + }, + "mdx.setup.self_port_choice_standalone": { + "message": "Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP." + }, + "mdx.setup.self_port_sharing": { + "message": "{important}: No other program can use the Geyser port, over either protocol. This includes programs that use UDP, such as voice chat mods or Query, and programs that use TCP, such as another server, a web map, or a website." + }, + "mdx.setup.self_port_sharing.important": { + "message": "Important" + }, + "mdx.setup.connect_local_title": { + "message": "Connecting from the same network" + }, + "mdx.setup.connect_local": { + "message": "On the same device as the server, connect with {localhost} or {loopback} as the address. Other devices in the same local network can use your local IPv4 address, which starts with {ten} or {oneNineTwo}." + }, + "mdx.setup.connect_lan": { + "message": "Alternatively, open Minecraft: Bedrock Edition and join the LAN server in the {friends} tab." + }, + "mdx.setup.connect_lan.friends": { + "message": "Friends" + }, + "mdx.setup.connect_remote_title": { + "message": "Connecting from a different network" + }, + "mdx.setup.connect_remote": { + "message": "To let players from outside your network join, you need to make the Geyser port reachable from the internet." + }, + "mdx.setup.connect_tcp_udp": { + "message": "The Geyser port has to be forwarded for both TCP and UDP. Before NetherNet, forwarding UDP was enough. Now, players use TCP to find your server and UDP to play on it, so without TCP your server will not show up. If you use the \"NetherNet and RakNet\" option, also forward the {webrtcPort} for UDP." + }, + "mdx.setup.connect_options": { + "message": "You have two options:" + }, + "mdx.setup.connect_port_forwarding": { + "message": "{portForwarding}: open the Geyser port (e.g. 19132) for both TCP and UDP in your router and in your firewall. Players then connect with your public IPv4 address and the port. For detailed steps, see {guide}." + }, + "mdx.setup.connect_port_forwarding.title": { + "message": "Port forwarding" + }, + "mdx.setup.connect_port_forwarding.guide": { + "message": "Port forwarding" + }, + "mdx.setup.connect_playit": { + "message": "{playit}: if you cannot open a port, or do not want to expose your home IP address, playit.gg can create a tunnel for you. See {guide}. That guide was written for RakNet. For NetherNet, see {status}. Ngrok does not work, since it does not support UDP." + }, + "mdx.setup.connect_playit.guide": { + "message": "playit.gg Setup" + }, + "mdx.setup.connect_playit.status": { + "message": "NetherNet support on playit.gg" + }, + "mdx.setup.https_step_title": { + "message": "Recommended: Set up HTTPS for signaling" + }, + "mdx.setup.https_step": { + "message": "Geyser's built-in signaling server uses plain HTTP by default, so Minecraft shows players a \"Trust on First Use?\" prompt the first time they join. To avoid this prompt, serve signaling over HTTPS, as explained in {httpsGuide}. Some external signaling services, such as {warden}, provide HTTPS as well." + }, + "mdx.setup.https_step.guide": { + "message": "HTTPS for NetherNet" + }, + "mdx.setup.floodgate_info": { + "message": "To allow Bedrock Edition players to join your server without a paid Java Edition account, you can use {floodgate}." + }, + "mdx.setup.viaproxy_not_plugin.title": { + "message": "ViaProxy is not a plugin or mod" + }, + "mdx.setup.viaproxy_not_plugin": { + "message": "ViaProxy is a standalone program that runs separately from your Minecraft server. Do not put the ViaProxy jar into your server's {plugins} or {mods} folder. To run Geyser as a plugin or mod on your server instead, pick your server software in the tabs above." + }, + "mdx.setup.viaproxy_setup": { + "message": "Set up {viaProxy}." + }, + "mdx.setup.viaproxy_accounts": { + "message": "If you use the ViaProxy GUI, you can use its account management to join online mode servers with Bedrock Edition. If you use the ViaProxy CLI and want Bedrock players to join your online mode server, install and set up {floodgate}." + }, + "mdx.setup.viaproxy_auth_type": { + "message": "ViaProxy manages the {authType} setting itself, so its value in the config is ignored." + }, + "mdx.setup.standalone_java": { + "message": "You need Java 21 or newer to run Geyser. To run Geyser Standalone on Android, see the end of this page." + }, + "mdx.setup.standalone_not_plugin": { + "message": "Geyser Standalone is not a plugin or mod. It is a separate Java program that runs alongside your Java Edition server." + }, + "mdx.setup.standalone_download": { + "message": "Download {standalone}." + }, + "mdx.setup.standalone_folder": { + "message": "Create a new folder for Geyser, and put the jar in it." + }, + "mdx.setup.standalone_start": { + "message": "Start Geyser Standalone:" + }, + "mdx.setup.standalone_gui": { + "message": "{gui} (recommended): double-click the jar file. Geyser creates all the files it needs." + }, + "mdx.setup.standalone_console": { + "message": "{console}: create a startup script, like the one you would use for a Paper server. See {startupScript} for what to put into it. Run it, and Geyser creates all the files it needs." + }, + "mdx.setup.standalone_console.console": { + "message": "Console" + }, + "mdx.setup.standalone_console.startup_script": { + "message": "Creating a Startup Script" + }, + "mdx.setup.standalone_remote_intro": { + "message": "To choose which Java Edition server Geyser Standalone sends players to, find the {java} section:" + }, + "mdx.setup.standalone_remote": { + "message": "Change {address} to the Java server's address, or leave it as it is if the server runs on the same machine as Geyser. Then change {port} to the Java server's port. Set {authType} to {floodgate} if you set up Floodgate on the Java server, otherwise to {online} for an online mode server or {offline} for an offline mode server. To use Floodgate with Geyser Standalone, see {floodgateSetup}." + }, + "mdx.setup.standalone_remote.floodgate_setup": { + "message": "Floodgate Setup" + }, + "mdx.setup.standalone_android_title": { + "message": "Running Geyser Standalone on Android" + }, + "mdx.setup.standalone_android_caution": { + "message": "Apps such as Termux can run Geyser on Android, but how well this works depends on how powerful your device is. Do so at your own risk." + }, + "mdx.setup.standalone_termux_install": { + "message": "Download and install {termux}." + }, + "mdx.setup.run_command": { + "message": "Run {command}." + }, + "mdx.setup.standalone_termux_script": { + "message": "Alternatively, there is an automated setup script for clean Termux installs. It might not work for everyone, so try it if the steps above do not work:" + } +} \ No newline at end of file diff --git a/i18n/ru/docusaurus-plugin-content-blog/options.json b/i18n/ru/docusaurus-plugin-content-blog/options.json new file mode 100644 index 0000000..9fa6586 --- /dev/null +++ b/i18n/ru/docusaurus-plugin-content-blog/options.json @@ -0,0 +1,10 @@ +{ + "description": { + "message": "Blog", + "description": "The description for the blog used in SEO" + }, + "sidebar.title": { + "message": "Recent posts", + "description": "The label for the left sidebar" + } +} \ No newline at end of file diff --git a/i18n/ru/docusaurus-plugin-content-docs/current.json b/i18n/ru/docusaurus-plugin-content-docs/current.json new file mode 100644 index 0000000..cb3914c --- /dev/null +++ b/i18n/ru/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,34 @@ +{ + "version.label": { + "message": "Next", + "description": "The label for version current" + }, + "sidebar.geyserSidebar.category.Setup": { + "message": "Setup", + "description": "The label for category Setup in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Common Issues": { + "message": "Common Issues", + "description": "The label for category Common Issues in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Configuring Geyser": { + "message": "Configuring Geyser", + "description": "The label for category Configuring Geyser in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.FAQ": { + "message": "FAQ", + "description": "The label for category FAQ in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Geyser API": { + "message": "Geyser API", + "description": "The label for category Geyser API in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.link.Hosting Providers": { + "message": "Hosting Providers", + "description": "The label for link Hosting Providers in sidebar geyserSidebar, linking to /hosting" + }, + "sidebar.geyserSidebar.category.Custom Content": { + "message": "Custom Content", + "description": "The label for category Custom Content in sidebar geyserSidebar" + } +} \ No newline at end of file diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/geyser/commands.md b/i18n/ru/docusaurus-plugin-content-docs/current/geyser/commands.md new file mode 100644 index 0000000..0492482 --- /dev/null +++ b/i18n/ru/docusaurus-plugin-content-docs/current/geyser/commands.md @@ -0,0 +1,83 @@ +--- +title: Commands and Permissions +description: Commands and their associated permission nodes for Geyser. +crowdin_sync: true +crowdin_page_id: cd92ff4f-9105-46a2-8696-8b0e2f8b9d31 +--- + +# Commands and Permissions + +Geyser features many built-in commands that can be used by players or server owners. + +:::info + +When using BungeeCord and Velocity, you will need to use a permission plugin such as [LuckPerms](https://luckperms.net/) +on the proxy server to assign permissions to players. Assigning permissions on the backend servers will not work. + +::: + +## Geyser commands & their permissions {#geyser-commands--their-permissions} + +| Command | Permission | Description | +| :-----------------------------------: | :---------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | +| `geyser`
Geyser root command | `geyser.command` | The permission required to see/run any Geyser commands. | +| `geyser help`
`geyser ?` | `geyser.command.help` | Shows help for all registered commands. | +| `geyser advancements` | `geyser.command.advancements` | Open the Java advancements menu. | +| `geyser dump` | `geyser.command.dump` | Dumps Geyser debug information for bug reports. | +| `geyser list` | `geyser.command.list` | List all players connected through Geyser. | +| `geyser nethernet` | `geyser.command.nethernet` | Shows NetherNet signaling status and diagnostics, for use with external signaling. | +| `geyser offhand` | `geyser.command.offhand` | Puts an item in your offhand. | +| `geyser reload` | `geyser.command.reload` | Reloads the Geyser configurations. Kicks all players when used! | +| `geyser settings` | `geyser.command.settings` | Opens a settings menu allowing you to modify aspects of the world. | +| `geyser shutdown`
`geyser stop` | `geyser.command.shutdown` | Shuts down Geyser.
*This command only works on Standalone.* | +| `geyser statistics` | `geyser.command.statistics` | Open the Java statistics menu. | +| `geyser version` | `geyser.command.version` | Shows the current Geyser version and checks for updates. | +| `geyser tooltips` | `geyser.command.tooltips` | Toggle showing Advanced Tooltips (F3 + H on Java) | +| `geyser extensions` | `geyser.command.extensions` | Lists all currently loaded extensions. This command is only registered if any extensions are loaded. | +| `geyser ping` | `geyser.command.ping` | Shows the ping between the player and the Geyser instance. | +| `geyser options` | `geyser.command.options` | Opens the "pause screen additions" dialogue, if sent by the Java server | +| `geyser quickactions` | `geyser.command.quickactions` | Opens the "quick actions" dialogue, if sent by the Java server. | + +## Permissions for Geyser extensions {#extension-permissions} + +For the following, `` refers to the extensions' id. + +| Command | Permission | Description | +| :------------------------- | :---------------------------- | :------------------------------------------------------------------------ | +| ` help`
` ?` | `geyser.command.exthelp.` | Shows help for all commands registered by this extension. | + +## Other Permissions {#other-permissions} + +Besides commands, there are other permissions that are used to guard specific Geyser features. + +| Permission | Description | +| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `geyser.settings.server` | Allow players to use the [game settings menu](/img/wiki/game_menu.png). (Also requires player to have op.) | +| `geyser.settings.gamerules` | Defines whether a user can alter gamerules in the [game settings menu](/img/wiki/game_menu.png). (Also requires player to have op.) | +| `geyser.update` | Whether this player will receive Geyser update notifications upon joining. | + +## Permissions when using Geyser-Standalone/Geyser-ViaProxy {#standalone-viaproxy-permissions} + +Geyser-ViaProxy and Geyser-Standalone feature their own basic permission handler. To edit base permissions, +open the `permissions.yml` file and add or remove permissions that Geyser players should receive when joining. +See the file for more information. + +You can further customize permission handling by creating a [Geyser extension](/wiki/geyser/extensions/) that makes use of Geysers API +to deal with permission checking. + +## Permissions when using Geyser on platforms without permission handlers {#permissions-platforms-no-permission-handlers} + +The following affects Geyser-BungeeCord, Geyser-Velocity, and Geyser-Fabric. +These platforms unfortunately do not have built-in permission handlers. Because of that, you will need to grant permissions on those platforms +manually using permission handlers, such as [LuckPerms](https://luckperms.net/). Geyser's permission are listed above. For extension permissions, consult their documentation. + +Alternatively, you can use [LuckLink](https://github.com/onebeastchris/LuckLink), a third-party Geyser extension, to automatically register permissions using [LuckPerms](https://luckperms.net/). + +- Install [LuckPerms](https://luckperms.net/) on the platform where you've installed Geyser (BungeeCord/Velocity/Fabric). +- To allow Geyser to automatically register permission defaults, install the [LuckLink](https://github.com/onebeastchris/LuckLink) Geyser extension + by downloading the `LuckLink.jar` and adding it to Geyser's `extensions` folder. +- Restart the server, and permissions should be automatically registered. + +## Floodgate commands and permissions {#floodgate-commands-and-permissions} + +For Floodgate commands, see [here](/wiki/floodgate/commands/). diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/geyser/playit-gg.md b/i18n/ru/docusaurus-plugin-content-docs/current/geyser/playit-gg.md new file mode 100644 index 0000000..7d20bd3 --- /dev/null +++ b/i18n/ru/docusaurus-plugin-content-docs/current/geyser/playit-gg.md @@ -0,0 +1,62 @@ +--- +title: playit.gg Setup +description: How to set up playit.gg to use Geyser without port forwarding. +crowdin_sync: true +crowdin_page_id: 3aee52d0-b943-4e37-8797-4a83ef55e42a +--- + +## Prerequisites {#prerequisites} + +:::info +You must be able to connect to your Geyser instance locally! +::: + +:::warning +The playit.gg Minecraft server plugin does not support UDP tunnels. You will need to use the program agent instead! +::: + +:::caution +This guide was written for RakNet, and does not cover NetherNet. For NetherNet, see [playit.gg's progress on NetherNet support](https://status.playit.gg/3/adding-nethernet-support). +::: + +## Setup {#setup} + +1. Head over to [playit.gg's website](https://playit.gg/) - download the program & run it. +2. The program will provide a claiming link. Visit that link, log in. + ![img](/img/wiki/playit-gg/playit_claim.png) +3. Confirm your agent. + ![img](/img/wiki/playit-gg/playit_claim_confirm.png) +4. Add the agent. + ![img](/img/wiki/playit-gg/playit_add_agent.png) +5. After the agent is created, create a tunnel. + ![img](/img/wiki/playit-gg/playit_add_tunnel.png) +6. Name your tunnel and click Next. + ![img](/img/wiki/playit-gg/playit_name_tunnel.png) +7. Select "Minecraft Bedrock" as the tunnel type and click Next. + ![img](/img/wiki/playit-gg/playit_tunnel_type.png) +8. Select the Free Network and click Next. + ![img](/img/wiki/playit-gg/playit_select_network.png) + **Do not change your Geyser port in `config.yml` unless you have a reason (for example, hosting another Geyser server on the same machine).** The Bedrock (Geyser) port in `config.yml` and the playit.gg ports are separate. playit.gg will forward its port to the default Geyser port and should work as-is. Changing it can cause errors. If you have changed your config port, set the Bedrock port back to the default `19132` and ensure `clone-remote-port` is `false`. +9. If the playit.gg agent and Geyser are running on the same device, leave the IP as `127.0.0.1` and set the port to whatever you configured in Geyser's config. + ![img](/img/wiki/playit-gg/playit_set_ipandport.png) +10. Select `proxy-protocol-v2` for the Proxy Protocol section and click Next. +11. In the Geyser config, under `advanced:` `bedrock:`, set `use-haproxy-protocol` to `true`. +12. Click Create Tunnel and wait for the tunnel to be created. + ![img](/img/wiki/playit-gg/playit_create_tunnel.png) +13. Copy your tunnel's port. For example, if your tunnel address is `visiting-phone.gl.at.ply.gg:6695`, then `6695` is the tunnel port. +14. In the Geyser config under `advanced:` `bedrock:`, set `broadcast-port` to your tunnel port (`6695` in the example). +15. Save your config. Start your Minecraft server and connect using your tunnel's IP and port. +16. If you join successfully, then you are done! Make sure to leave the playit.gg program running as closing it will close the tunnel. You also may want to ratelimit individual connections - use the "Per Connection Rate Limit" option to do so. + (If you failed to join, check out the [troubleshooting](#troubleshooting) section of the page.) + +## Troubleshooting {#troubleshooting} + +### I can't connect to my server! {#i-cant-connect-to-my-server} + +- *Try going to the Agents page, set your agent to IPv4 only, and change the region. You may need to switch regions a few times before you can connect.* +- *Are there errors in your minecraft server console?* +- *Unless you manually changed the "Local Port" on the playit.gg website, in Geyser config, ensure that the bedrock port is the default of `19132` and that `clone-remote-port` is `false`.* +- *If you changed the `bedrock-port` or set `clone-remote-port` to `true` and have a reason for doing so (e.g. hosting another Geyser server on the same machine), you'll have to tell playit.gg to use that port instead! See the last paragraph in step 8.* +- *Check that you're joining with playit.gg's IP and port from the "Allocation" tab.* +- *Make sure that you have the program agent open while trying to join.* +- *See [here](/wiki/geyser/fixing-unable-to-connect-to-world/) for general troubleshooting steps.* diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md b/i18n/ru/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md new file mode 100644 index 0000000..492774c --- /dev/null +++ b/i18n/ru/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md @@ -0,0 +1,208 @@ +--- +title: Port forwarding +description: Information on how to set up port forwarding required for Geyser. +crowdin_sync: true +crowdin_page_id: be7c5a22-1e8e-4ffe-8d13-7d763dd75886 +--- + +# Port forwarding {#port-forwarding} + +This page contains information on how to set up port forwarding required for Geyser to work when self-hosting. +There are also guides for specific configurations, such as Docker/Pterodactyl, or on specific VPS/KVM providers, such as OVH or Oracle Cloud. + +:::caution + +If you are using a Minecraft server hosting provider (e.g. Aternos, or Nodecraft), you should refer to the hosting provider setup on the [setup](/wiki/geyser/setup) page instead. + +::: + +:::info Ports that need to be opened +With NetherNet, the Geyser port (by default 19132) has to be open for **both TCP and UDP**: players find the server over TCP (signaling), and play on it over UDP. +If you use the "NetherNet and RakNet" option, also open the `webrtc-port` for UDP. +With external signaling, such as [Warden](https://warden.cloud), only UDP for WebRTC is needed. +::: + +## Port forwarding on Linux/Windows/macOS {#port-forwarding-on-linuxwindowsmacos} + +To allow others to play on your server, you will need to set up port forwarding on the device hosting Geyser. +Additionally, you will need to port forward the port on your router/modem (in other words, allow and route traffic on that port to the proper machine) if you want the server to be accessible outside your own home network. +Forward it for both TCP and UDP; many routers offer a "TCP/UDP" or "Both" option for this. +See [here](https://www.howtogeek.com/66214/how-to-forward-ports-on-your-router/) or [here](https://www.lifewire.com/how-to-port-forward-4163829) for helpful guides. +Do note: if you do not have a static IP address, your IP address may change over time. + +:::info + +Some ISPs (Internet Service Providers) block certain ports, or don't allow you to open ports (e.g. by using CGNAT, which doesn't allow you to open a port with a dynamic IP). +Other ISPs may require you to pay extra for a static IP address. +As an alternative to port forwarding, you can use [playit.gg](/wiki/geyser/playit-gg/) to create a tunnel. + +::: + +### Windows {#windows} + +To open a port on Windows, you will need to open the port through the Windows Firewall. There are multiple ways to do this: + +- `Powershell` (recommended) + + To open a port on TCP and UDP (in our example, port 19132), run the following commands in an administrator Powershell: + + ```powershell + New-NetFirewallRule -DisplayName "Geyser (TCP)" -Direction Inbound -Protocol TCP -LocalPort 19132 -Action Allow + New-NetFirewallRule -DisplayName "Geyser (UDP)" -Direction Inbound -Protocol UDP -LocalPort 19132 -Action Allow + ``` + + Running these commands creates two rules that allow TCP and UDP traffic on port 19132. + +- Windows Defender Firewall with Advanced Security (GUI) + 1. Search for "Windows Defender Firewall with Advanced Security" in the start menu, and open it. ([Image](/img/wiki/port-forwarding/windows-1.png)) + 2. Click on "Inbound Rules" in the left sidebar. ([Image](/img/wiki/port-forwarding/windows-2.png)) + 3. Click on "New Rule..." in the right sidebar. ([Image](/img/wiki/port-forwarding/windows-2.png)) + 4. Select "Port" as the rule type and click "Next". ([Example](/img/wiki/port-forwarding/windows-3.png)) + 5. Select "UDP" and "Specific local ports", and enter the port you want to open (in our example, 19132). Click "Next". ([Example](/img/wiki/port-forwarding/windows-4.png)) + 6. Select "Allow the connection" and click "Next". ([Example](/img/wiki/port-forwarding/windows-5.png)) + 7. Select the profiles you want to apply the rule to (e.g. "Domain", "Private", "Public"), and click "Next". ([Example](/img/wiki/port-forwarding/windows-6.png)) + 8. Enter a name for the rule (e.g. "Geyser (UDP)"), and click "Finish". ([Image](/img/wiki/port-forwarding/windows-7.png)) + 9. Repeat these steps, selecting "TCP" in step 5 and naming the rule e.g. "Geyser (TCP)". + +### Linux {#linux} + +Different Linux distributions, even different VPS providers ship and configure different firewalls. In the following examples, we will use `19132` as the port to open, but you should replace this with the port you are using for Geyser. + +- `ufw` is a simple firewall front-end for iptables that is commonly used on Ubuntu and Debian. To open a port on TCP and UDP, run the following commands: + ```bash + sudo ufw allow 19132/tcp + sudo ufw allow 19132/udp + ``` + Then, reload the firewall with `sudo ufw reload`, and see all open rules with `sudo ufw status`. + Further helpful guides: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server), [Baeldung](https://www.baeldung.com/linux/uncomplicated-firewall) + +- `firewalld` Add a port on TCP and UDP by running: + ```bash + sudo firewall-cmd --zone=public --permanent --add-port=19132/tcp + sudo firewall-cmd --zone=public --permanent --add-port=19132/udp + ``` + Then, reload the firewall with `sudo firewall-cmd --reload`, and see all open rules with `sudo firewall-cmd --list-all`. + Further helpful guides: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7) + +- `iptables` is a common firewall that is used on many Linux distributions. To open a port on TCP and UDP, run the following commands: + ```bash + sudo iptables -A INPUT -p tcp --dport 19132 -j ACCEPT + sudo iptables -A INPUT -p udp --dport 19132 -j ACCEPT + ``` + Then, save the firewall with `sudo iptables-save`, and see all open rules with `sudo iptables -L`. + Further helpful guides for iptables: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-iptables-on-ubuntu-14-04), [Ubuntu](https://help.ubuntu.com/community/IptablesHowTo) + +### macOS {#macos} + +You will need to disable `Block all incoming connections` in your Firewall settings, as that will block any connections and won't allow you to make exceptions. +To allow incoming connections, click `Allow` when getting [these prompts](/img/wiki/port-forwarding/macos_warning.png). +If you are still facing issues, see Apple's official guide [here](https://support.apple.com/guide/mac-help/MH11783) to open a port on macOS. + +## Using Docker or Pterodactyl {#using-docker-or-pterodactyl} + +In addition to port forwarding the port in your server's firewall (and, if applicable, your router/modem), you will need to assign the port in Docker/Pterodactyl. + +### Pterodactyl {#pterodactyl} + +Make sure to allocate the port(s) to the server in the Pterodactyl panel's `Network` tab, additionally to port forwarding the port(s). +See [here](https://pterodactyl.io/community/games/minecraft.html#allocations-in-the-panel) for more information. + +![Pterodactyl panel, Network section](/img/wiki/port-forwarding/pterodactyl-1.png) + +There are also different Geyser eggs for Pterodactyl, which can be found [here](https://github.com/GeyserMC/pterodactyl-stuff). + +:::caution + +If you are not able to allocate ports in the Pterodactyl panel, you will need to contact your server host to allocate one for you or try to use an existing port allocation. + +::: + +### Docker {#docker} + +For Geyser to work under Docker (e.g. using [Itzg's Docker image](https://github.com/itzg/docker-minecraft-server)), you will need to add the Geyser port on TCP and UDP to the docker-compose file. This is done by adding the following to the `ports` section: + +```yaml +ports: + - "25565:25565" + - "19132:19132" + - "19132:19132/udp" +``` + +Without a suffix, Docker exposes the port on TCP. The additional `/udp` suffix exposes it on UDP. +Alternatively, add the ports with the `-p 19132:19132 -p 19132:19132/udp` flags to the docker run command. + +## Issues with specific VPS/KVM providers {#issues-with-specific-vpskvm-providers} + +Some providers, such as OVH, Oracle Cloud, and SoYouStart, have a firewall that blocks the ports Geyser needs by default/in most cases. + +### OVH and SoYouStart {#ovh-and-soyoustart} + +OVH's GAME firewall filters traffic with rules made for specific games. The Minecraft Bedrock and Minecraft Pocket Edition rules currently only support RakNet, the protocol Bedrock used before NetherNet. +With NetherNet, players find the server over HTTP (TCP) and play over WebRTC (UDP), which these rules currently do not support. +For now, use the `Other` rule for the Geyser port(s) instead. + +:::caution + +If you do not have access to these firewall settings, but got linked to this page, please contact your server host and provide them with this link - they are likely using OVH internally. + +::: + +**To resolve it:** + +OVH: + +1. Navigate to `Network interfaces` +2. Click on the `...` button on the table for your IP -> then `...` and `Configure the GAME firewall` -> `Add rule` -> `Other protocol` +3. Add your Geyser port into `outgoing port`. If you use the "NetherNet and RakNet" option, add a rule for the `webrtc-port` as well. +4. If you use OVH's Edge Network Firewall, make sure it allows the Geyser port over both TCP and UDP. + +SoYouStart (subsidiary of OVH): + +1. Click the IP tab. +2. Click the gear at the right of the public IP address; select "Game mitigation". +3. Pick "Add a rule". +4. Select "Other" in the dropdown list and enter the Geyser port. If you use the "NetherNet and RakNet" option, add the `webrtc-port` as well. +5. Save and wait a few seconds for the changes to come into effect. + +### Oracle Cloud/OCI {#oracle-cloudoci} + +By default, Oracle Cloud will block all incoming traffic except for SSH and RDP. This must be resolved within Oracle Cloud itself and the Compute Instance running Geyser. + +The steps below assume that you are using the default ports for the Java server and Geyser, and should be adjusted accordingly. + +1. Find your Compute Instance in the OCI Console +2. Click on the instances Virtual Cloud Network (this will be under "Instance details") +3. On the left-hand side, select "Security Lists" +4. Select one of the security lists. By default only one security list will exist. It doesn't matter which security list we add the rules to. +5. Select "Add Ingress Rules" +6. Configure rules for Java (optional) + - Set "Source CIDR" to `0.0.0.0/0` + - Set "Destination Port Range" to `25565-25565` + - Select "Another Ingress Rule" +7. Configure rules for Geyser, once for TCP and once for UDP + - Set "Source CIDR" to `0.0.0.0/0` + - Set "Destination Port Range" to `19132-19132` + - Set "IP Protocol" to TCP + - Select "Another Ingress Rule", and repeat with "IP Protocol" set to UDP +8. Select "Add Ingress Rules" + +#### Oracle Linux {#oracle-linux} + +Run the following commands to allow Minecraft and Geyser through the OS firewall: + +```bash +sudo firewall-cmd --add-port=25565/tcp --permanent +sudo firewall-cmd --add-port=19132/tcp --permanent +sudo firewall-cmd --add-port=19132/udp --permanent +sudo firewall-cmd --reload +``` + +#### Ubuntu {#ubuntu} + +Run the following commands to allow Minecraft and Geyser through the OS firewall: + +```bash +sudo ufw allow 25565/tcp +sudo ufw allow 19132/tcp +sudo ufw allow 19132/udp +``` diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx b/i18n/ru/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx new file mode 100644 index 0000000..47391e7 --- /dev/null +++ b/i18n/ru/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx @@ -0,0 +1,47 @@ +--- +title: Supported versions +description: Information on the versions Geyser supports. +crowdin_sync: true +crowdin_page_id: f199ae24-f711-486d-8e42-3079be87e8cd +--- + +import { Versions } from '@site/src/components/Versions' +import DocCardList from '@theme/DocCardList'; + +# Currently supported versions \ {#currently-supported-versions} + +:::info +**Geyser currently supports Minecraft Bedrock and Minecraft Java **. +::: + +## Using Geyser with older Minecraft: Bedrock edition versions \ {#using-geyser-with-older-minecraft-bedrock-edition-versions} + +Older Bedrock versions are not supported. Minecraft: Bedrock Edition updates automatically on all platforms, so there are few users who would +want to use older versions. Further, older Bedrock versions do not have all features which Geyser support, which would lead to a sub-par experience. + +## Using Geyser on older Minecraft: Java edition servers \ {#using-geyser-on-older-minecraft-java-edition-servers} + +Geyser emulates a client, so a Java server must accept users using that version in order for Geyser to work. +This is possible thanks to [ViaVersion](https://viaversion.com/viaversion), which allows Java edition players with newer versions to join servers +that run older versions of the game. + +### Using Geyser-Spigot on a Spigot/Paper server running on 1.20.5 or above + +You can use Geyser-Spigot on servers that run on 1.20.5 or above. You will also need to run at least Java 21 or later to use Geyser. See [here](https://docs.papermc.io/misc/java-install) for more info on updating Java. Paper versions not supporting Java 21 can add `-DPaper.IgnoreJavaVersion=true` flag to the Java startup arguments to allow Paper to run on Java 21. + +In order for Bedrock players to chat (1.19.3+) or join (1.19.1/1.19.2), you need to disable chat signing. More information about that can be read on the [chat signing page](/wiki/geyser/secure-chat). + +### Using Geyser-Spigot on a Spigot/Paper server running on a version below 1.20.5 + +This is unfortunately not possible. You'll need to use a proxy such as Velocity or BungeeCord, or set up Geyser-Standalone separately with the [ViaVersion](https://viaversion.com/viaversion) plugin. Another alternative would be to install [ViaProxy](https://viaversion.com/viaproxy), which is a standalone ViaVersion proxy that +translates between different Minecraft: Java edition versions, and to install Geyser-ViaProxy on it. + +### Using Geyser on Fabric/NeoForge servers not on the latest Minecraft version \ {#using-geyser-on-fabric-neoforge-servers-not-on-the-latest-minecraft-version} + +Unfortunately, Geyser-Fabric and Geyser-NeoForge only support the latest version of Minecraft: Java edition. The recommended way to still use +Geyser with older versions would be to install [ViaProxy](https://viaversion.com/viaproxy), which is a standalone ViaVersion proxy that +translates between different Minecraft: Java edition versions, and to install Geyser-ViaProxy on it. This will also work with Floodgate auth. + +### Using Geyser-Velocity or Geyser-BungeeCord on a proxy + +Make sure you update your proxy software to the latest available version, and, if the backend servers are not on , also install the [ViaVersion](https://viaversion.com/viaversion) plugin on the backend servers. Velocity/BungeeCord support most Minecraft versions, so you can update them regardless of the backend server versions. diff --git a/i18n/ru/docusaurus-theme-classic/footer.json b/i18n/ru/docusaurus-theme-classic/footer.json new file mode 100644 index 0000000..1a69184 --- /dev/null +++ b/i18n/ru/docusaurus-theme-classic/footer.json @@ -0,0 +1,50 @@ +{ + "link.title.Wiki": { + "message": "Wiki", + "description": "The title of the footer links column with title=Wiki in the footer" + }, + "link.title.Downloads": { + "message": "Downloads", + "description": "The title of the footer links column with title=Downloads in the footer" + }, + "link.title.Community": { + "message": "Community", + "description": "The title of the footer links column with title=Community in the footer" + }, + "link.title.More": { + "message": "More", + "description": "The title of the footer links column with title=More in the footer" + }, + "link.item.label.REST APIs": { + "message": "REST APIs", + "description": "The label of footer link with label=REST APIs linking to wiki/api/api.geysermc.org/global-api" + }, + "link.item.label.Other": { + "message": "Other", + "description": "The label of footer link with label=Other linking to download?project=other-projects" + }, + "link.item.label.Blog": { + "message": "Blog", + "description": "The label of footer link with label=Blog linking to blog" + }, + "link.item.label.Donate": { + "message": "Donate", + "description": "The label of footer link with label=Donate linking to https://opencollective.com/geysermc" + }, + "link.item.label.Global Linking": { + "message": "Global Linking", + "description": "The label of footer link with label=Global Linking linking to https://link.geysermc.org/" + }, + "link.item.label.Privacy Policy": { + "message": "Privacy Policy", + "description": "The label of footer link with label=Privacy Policy linking to https://ziax.com/terms/privacy-policy/" + }, + "logo.alt": { + "message": "GeyserMC logo", + "description": "The alt text of footer logo" + }, + "copyright": { + "message": "Copyright © 2026 GeyserMC. Built with Docusaurus.
This website is not an official Minecraft website and is not associated with Mojang Studios or Microsoft. All product and company names are trademarks or registered trademarks of their respective holders. Use of these names does not imply any affiliation or endorsement by them.", + "description": "The footer copyright" + } +} \ No newline at end of file diff --git a/i18n/ru/docusaurus-theme-classic/navbar.json b/i18n/ru/docusaurus-theme-classic/navbar.json new file mode 100644 index 0000000..c4f41a5 --- /dev/null +++ b/i18n/ru/docusaurus-theme-classic/navbar.json @@ -0,0 +1,38 @@ +{ + "logo.alt": { + "message": "GeyserMC logo", + "description": "The alt text of navbar logo" + }, + "item.label.Wiki": { + "message": "Wiki", + "description": "Navbar item with label Wiki" + }, + "item.label.Blog": { + "message": "Blog", + "description": "Navbar item with label Blog" + }, + "item.label.Utilities": { + "message": "Utilities", + "description": "Navbar item with label Utilities" + }, + "item.label.Download": { + "message": "Download", + "description": "Navbar item with label Download" + }, + "item.label.REST APIs": { + "message": "REST APIs", + "description": "Navbar item with label REST APIs" + }, + "item.label.Other": { + "message": "Other", + "description": "Navbar item with label Other" + }, + "item.label.Dump Viewer": { + "message": "Dump Viewer", + "description": "Navbar item with label Dump Viewer" + }, + "item.label.Hosting": { + "message": "Hosting", + "description": "Navbar item with label Hosting" + } +} \ No newline at end of file diff --git a/i18n/tr/code.json b/i18n/tr/code.json new file mode 100644 index 0000000..7251b24 --- /dev/null +++ b/i18n/tr/code.json @@ -0,0 +1,1023 @@ +{ + "pages.main.title": { + "message": "Revolutionize Your Minecraft Server" + }, + "pages.main.subtitle": { + "message": "Enable clients from Minecraft Bedrock Edition to join your Minecraft Java server" + }, + "components.homepage_features.1.line1": { + "message": "Geyser is a program that allows Minecraft: Bedrock Edition clients to join Minecraft: Java Edition servers, allowing for true crossplay between both editions of the game." + }, + "components.homepage_features.1.line2": { + "message": "The ultimate goal of this project is to allow Minecraft: Bedrock Edition users to join Minecraft: Java Edition servers as seamlessly as possible." + }, + "components.homepage_features.2": { + "message": "Geyser acts as a translator which sits between the Bedrock client and the Java server. It takes data from the Bedrock client and translates it into a format the Java server understands and vice versa. Geyser works with any modern Minecraft version and can be installed either as a plugin or ran as a standalone program." + }, + "components.homepage_features.3.line1": { + "message": "Geyser can be joined from Bedrock clients on Windows 10/11, iOS, Android, and even consoles. Geyser works with a wide array of hosting providers, but can also be used as its own standalone proxy to join any Minecraft server!" + }, + "components.homepage_features.3.line2": { + "message": "If you are a server owner, you can install our Floodgate plugin which allows Xbox Live authenticated Bedrock users to join without a Java Edition account!" + }, + "pages.download.title": { + "message": "Download" + }, + "pages.download.subheading": { + "message": "Download the latest versions of our various projects." + }, + "pages.download.description.geyser": { + "message": "A bridge/proxy allowing you to connect to Minecraft: Java Edition servers with Minecraft: Bedrock Edition." + }, + "pages.download.description.floodgate": { + "message": "Hybrid mode plugin to allow for connections from Geyser to join online mode servers." + }, + "pages.download.description.geyserconnect": { + "message": "A Geyser extension allowing players to connect to different Java or Geyser servers." + }, + "pages.download.description.thirdpartycosmetics": { + "message": "An extension that adds support for loading ears and other third party cosmetics on java players" + }, + "pages.dumpviewer.title": { + "message": "Dump Viewer" + }, + "pages.dumpviewer.subheading": { + "message": "View the breakdown of your Geyser dump." + }, + "pages.dumpviewer.enterdumpid": { + "message": "Enter Dump ID or URL below and click load." + }, + "pages.dumpviewer.button.load": { + "message": "Load" + }, + "pages.dumpviewer.versions": { + "message": "Versions" + }, + "pages.dumpviewer.versions.geyserver": { + "message": "Geyser Version" + }, + "pages.dumpviewer.versions.javaver": { + "message": "Java Version" + }, + "pages.dumpviewer.versions.os": { + "message": "Operating System" + }, + "pages.dumpviewer.geyserver": { + "message": "Geyser Version" + }, + "pages.dumpviewer.geyserver.build": { + "message": "Build" + }, + "pages.dumpviewer.geyserver.commit": { + "message": "Commit Hash" + }, + "pages.dumpviewer.geyserver.branch": { + "message": "Branch" + }, + "pages.dumpviewer.platform": { + "message": "Platform Info" + }, + "pages.dumpviewer.platform.id": { + "message": "Platform Identifier" + }, + "pages.dumpviewer.platform.name": { + "message": "Platform Name" + }, + "pages.dumpviewer.platform.version": { + "message": "Platform Version" + }, + "pages.dumpviewer.platform.apiver": { + "message": "Platform API Version" + }, + "pages.dumpviewer.platform.onlinemode": { + "message": "Online Mode" + }, + "pages.dumpviewer.sysinfo": { + "message": "System Info" + }, + "pages.dumpviewer.cpucount": { + "message": "CPU Count" + }, + "pages.dumpviewer.cpuname": { + "message": "CPU Name" + }, + "pages.dumpviewer.ram": { + "message": "RAM" + }, + "pages.dumpviewer.javaname": { + "message": "Java Name" + }, + "pages.dumpviewer.javavendor": { + "message": "Java Vendor" + }, + "pages.dumpviewer.dockercheck": { + "message": "Uses Docker?" + }, + "pages.dumpviewer.plugins": { + "message": "Plugins" + }, + "pages.dumpviewer.plugins.noplugins": { + "message": "No plugins to show." + }, + "pages.dumpviewer.plugins.helptext": { + "message": "Click on a plugin to view more information." + }, + "pages.dumpviewer.config": { + "message": "Config" + }, + "pages.dumpviewer.viewsource": { + "message": "View dump source" + }, + "theme.ErrorPageContent.title": { + "message": "This page crashed.", + "description": "The title of the fallback page when the page crashed" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "Scroll back to top", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.archive.title": { + "message": "Archive", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "Archive", + "description": "The page & hero description of the blog archive page" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "Blog list page navigation", + "description": "The ARIA label for the blog pagination" + }, + "theme.blog.paginator.newerEntries": { + "message": "Newer Entries", + "description": "The label used to navigate to the newer blog posts page (previous page)" + }, + "theme.blog.paginator.olderEntries": { + "message": "Older Entries", + "description": "The label used to navigate to the older blog posts page (next page)" + }, + "theme.blog.post.paginator.navAriaLabel": { + "message": "Blog post page navigation", + "description": "The ARIA label for the blog posts pagination" + }, + "theme.blog.post.paginator.newerPost": { + "message": "Newer Post", + "description": "The blog post button label to navigate to the newer/previous post" + }, + "theme.blog.post.paginator.olderPost": { + "message": "Older Post", + "description": "The blog post button label to navigate to the older/next post" + }, + "theme.blog.post.plurals": { + "message": "One post|{count} posts", + "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.blog.tagTitle": { + "message": "{nPosts} tagged with \"{tagName}\"", + "description": "The title of the page for a blog tag" + }, + "theme.tags.tagsPageLink": { + "message": "View All Tags", + "description": "The label of the link targeting the tag list page" + }, + "theme.colorToggle.ariaLabel": { + "message": "Switch between dark and light mode (currently {mode})", + "description": "The ARIA label for the navbar color mode toggle" + }, + "theme.colorToggle.ariaLabel.mode.dark": { + "message": "dark mode", + "description": "The name for the dark color mode" + }, + "theme.colorToggle.ariaLabel.mode.light": { + "message": "light mode", + "description": "The name for the light color mode" + }, + "theme.docs.DocCard.categoryDescription.plurals": { + "message": "1 item|{count} items", + "description": "The default description for a category card in the generated index about how many items this category includes" + }, + "theme.docs.breadcrumbs.navAriaLabel": { + "message": "Breadcrumbs", + "description": "The ARIA label for the breadcrumbs" + }, + "theme.docs.paginator.navAriaLabel": { + "message": "Docs pages", + "description": "The ARIA label for the docs pagination" + }, + "theme.docs.paginator.previous": { + "message": "Previous", + "description": "The label used to navigate to the previous doc" + }, + "theme.docs.paginator.next": { + "message": "Next", + "description": "The label used to navigate to the next doc" + }, + "theme.docs.tagDocListPageTitle.nDocsTagged": { + "message": "One doc tagged|{count} docs tagged", + "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.tagDocListPageTitle": { + "message": "{nDocsTagged} with \"{tagName}\"", + "description": "The title of the page for a docs tag" + }, + "theme.docs.versionBadge.label": { + "message": "Version: {versionLabel}" + }, + "theme.docs.versions.unreleasedVersionLabel": { + "message": "This is unreleased documentation for {siteTitle} {versionLabel} version.", + "description": "The label used to tell the user that he's browsing an unreleased doc version" + }, + "theme.docs.versions.unmaintainedVersionLabel": { + "message": "This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.", + "description": "The label used to tell the user that he's browsing an unmaintained doc version" + }, + "theme.docs.versions.latestVersionSuggestionLabel": { + "message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).", + "description": "The label used to tell the user to check the latest version" + }, + "theme.docs.versions.latestVersionLinkLabel": { + "message": "latest version", + "description": "The label used for the latest version suggestion link label" + }, + "theme.common.editThisPage": { + "message": "Edit this page", + "description": "The link label to edit the current page" + }, + "theme.common.headingLinkTitle": { + "message": "Direct link to {heading}", + "description": "Title for link to heading" + }, + "theme.lastUpdated.atDate": { + "message": " on {date}", + "description": "The words used to describe on which date a page has been last updated" + }, + "theme.lastUpdated.byUser": { + "message": " by {user}", + "description": "The words used to describe by who the page has been last updated" + }, + "theme.lastUpdated.lastUpdatedAtBy": { + "message": "Last updated{atDate}{byUser}", + "description": "The sentence used to display when a page has been last updated, and by who" + }, + "theme.NotFound.title": { + "message": "Page Not Found", + "description": "The title of the 404 page" + }, + "theme.navbar.mobileVersionsDropdown.label": { + "message": "Versions", + "description": "The label for the navbar versions dropdown on mobile view" + }, + "theme.tags.tagsListLabel": { + "message": "Tags:", + "description": "The label alongside a tag list" + }, + "theme.AnnouncementBar.closeButtonAriaLabel": { + "message": "Close", + "description": "The ARIA label for close button of announcement bar" + }, + "theme.admonition.caution": { + "message": "caution", + "description": "The default label used for the Caution admonition (:::caution)" + }, + "theme.admonition.danger": { + "message": "danger", + "description": "The default label used for the Danger admonition (:::danger)" + }, + "theme.admonition.info": { + "message": "info", + "description": "The default label used for the Info admonition (:::info)" + }, + "theme.admonition.note": { + "message": "note", + "description": "The default label used for the Note admonition (:::note)" + }, + "theme.admonition.tip": { + "message": "tip", + "description": "The default label used for the Tip admonition (:::tip)" + }, + "theme.admonition.warning": { + "message": "warning", + "description": "The default label used for the Warning admonition (:::warning)" + }, + "theme.blog.sidebar.navAriaLabel": { + "message": "Blog recent posts navigation", + "description": "The ARIA label for recent posts in the blog sidebar" + }, + "theme.CodeBlock.copied": { + "message": "Copied", + "description": "The copied button label on code blocks" + }, + "theme.CodeBlock.copyButtonAriaLabel": { + "message": "Copy code to clipboard", + "description": "The ARIA label for copy code blocks button" + }, + "theme.CodeBlock.copy": { + "message": "Copy", + "description": "The copy button label on code blocks" + }, + "theme.CodeBlock.wordWrapToggle": { + "message": "Toggle word wrap", + "description": "The title attribute for toggle word wrapping button of code block lines" + }, + "theme.DocSidebarItem.expandCategoryAriaLabel": { + "message": "Expand sidebar category '{label}'", + "description": "The ARIA label to expand the sidebar category" + }, + "theme.DocSidebarItem.collapseCategoryAriaLabel": { + "message": "Collapse sidebar category '{label}'", + "description": "The ARIA label to collapse the sidebar category" + }, + "theme.NavBar.navAriaLabel": { + "message": "Main", + "description": "The ARIA label for the main navigation" + }, + "theme.NotFound.p1": { + "message": "We could not find what you were looking for.", + "description": "The first paragraph of the 404 page" + }, + "theme.NotFound.p2": { + "message": "Please contact the owner of the site that linked you to the original URL and let them know their link is broken.", + "description": "The 2nd paragraph of the 404 page" + }, + "theme.navbar.mobileLanguageDropdown.label": { + "message": "Languages", + "description": "The label for the mobile language switcher dropdown" + }, + "theme.TOCCollapsible.toggleButtonLabel": { + "message": "On this page", + "description": "The label used by the button on the collapsible TOC component" + }, + "theme.blog.post.readMore": { + "message": "Read More", + "description": "The label used in blog post item excerpts to link to full blog posts" + }, + "theme.blog.post.readMoreLabel": { + "message": "Read more about {title}", + "description": "The ARIA label for the link to full blog posts from excerpts" + }, + "theme.blog.post.readingTime.plurals": { + "message": "One min read|{readingTime} min read", + "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.breadcrumbs.home": { + "message": "Home page", + "description": "The ARIA label for the home page in the breadcrumbs" + }, + "theme.docs.sidebar.collapseButtonTitle": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.collapseButtonAriaLabel": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.navAriaLabel": { + "message": "Docs sidebar", + "description": "The ARIA label for the sidebar navigation" + }, + "theme.docs.sidebar.closeSidebarButtonAriaLabel": { + "message": "Close navigation bar", + "description": "The ARIA label for close button of mobile sidebar" + }, + "theme.docs.sidebar.expandButtonTitle": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.docs.sidebar.expandButtonAriaLabel": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": { + "message": "← Back to main menu", + "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)" + }, + "theme.docs.sidebar.toggleSidebarButtonAriaLabel": { + "message": "Toggle navigation bar", + "description": "The ARIA label for hamburger menu button of mobile navigation" + }, + "theme.SearchBar.seeAll": { + "message": "See all {count} results" + }, + "theme.SearchPage.documentsFound.plurals": { + "message": "One document found|{count} documents found", + "description": "Pluralized label for \"{count} documents found\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.SearchPage.existingResultsTitle": { + "message": "Search results for \"{query}\"", + "description": "The search page title for non-empty query" + }, + "theme.SearchPage.emptyResultsTitle": { + "message": "Search the documentation", + "description": "The search page title for empty query" + }, + "theme.SearchPage.inputPlaceholder": { + "message": "Type your search here", + "description": "The placeholder for search page input" + }, + "theme.SearchPage.inputLabel": { + "message": "Search", + "description": "The ARIA label for search page input" + }, + "theme.SearchPage.algoliaLabel": { + "message": "Search by Algolia", + "description": "The ARIA label for Algolia mention" + }, + "theme.SearchPage.noResultsText": { + "message": "No results were found", + "description": "The paragraph for empty search result" + }, + "theme.SearchPage.fetchingNewResults": { + "message": "Fetching new results...", + "description": "The paragraph for fetching new search results" + }, + "theme.SearchBar.label": { + "message": "Search", + "description": "The ARIA label and placeholder for search button" + }, + "theme.SearchModal.searchBox.resetButtonTitle": { + "message": "Clear the query", + "description": "The label and ARIA label for search box reset button" + }, + "theme.SearchModal.searchBox.cancelButtonText": { + "message": "Cancel", + "description": "The label and ARIA label for search box cancel button" + }, + "theme.SearchModal.startScreen.recentSearchesTitle": { + "message": "Recent", + "description": "The title for recent searches" + }, + "theme.SearchModal.startScreen.noRecentSearchesText": { + "message": "No recent searches", + "description": "The text when no recent searches" + }, + "theme.SearchModal.startScreen.saveRecentSearchButtonTitle": { + "message": "Save this search", + "description": "The label for save recent search button" + }, + "theme.SearchModal.startScreen.removeRecentSearchButtonTitle": { + "message": "Remove this search from history", + "description": "The label for remove recent search button" + }, + "theme.SearchModal.startScreen.favoriteSearchesTitle": { + "message": "Favorite", + "description": "The title for favorite searches" + }, + "theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle": { + "message": "Remove this search from favorites", + "description": "The label for remove favorite search button" + }, + "theme.SearchModal.errorScreen.titleText": { + "message": "Unable to fetch results", + "description": "The title for error screen of search modal" + }, + "theme.SearchModal.errorScreen.helpText": { + "message": "You might want to check your network connection.", + "description": "The help text for error screen of search modal" + }, + "theme.SearchModal.footer.selectText": { + "message": "to select", + "description": "The explanatory text of the action for the enter key" + }, + "theme.SearchModal.footer.selectKeyAriaLabel": { + "message": "Enter key", + "description": "The ARIA label for the Enter key button that makes the selection" + }, + "theme.SearchModal.footer.navigateText": { + "message": "to navigate", + "description": "The explanatory text of the action for the Arrow up and Arrow down key" + }, + "theme.SearchModal.footer.navigateUpKeyAriaLabel": { + "message": "Arrow up", + "description": "The ARIA label for the Arrow up key button that makes the navigation" + }, + "theme.SearchModal.footer.navigateDownKeyAriaLabel": { + "message": "Arrow down", + "description": "The ARIA label for the Arrow down key button that makes the navigation" + }, + "theme.SearchModal.footer.closeText": { + "message": "to close", + "description": "The explanatory text of the action for Escape key" + }, + "theme.SearchModal.footer.closeKeyAriaLabel": { + "message": "Escape key", + "description": "The ARIA label for the Escape key button that close the modal" + }, + "theme.SearchModal.footer.searchByText": { + "message": "Search by", + "description": "The text explain that the search is making by Algolia" + }, + "theme.SearchModal.noResultsScreen.noResultsText": { + "message": "No results for", + "description": "The text explains that there are no results for the following search" + }, + "theme.SearchModal.noResultsScreen.suggestedQueryText": { + "message": "Try searching for", + "description": "The text for the suggested query when no results are found for the following search" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsText": { + "message": "Believe this query should return results?", + "description": "The text for the question where the user thinks there are missing results" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsLinkText": { + "message": "Let us know.", + "description": "The text for the link to report missing results" + }, + "theme.SearchModal.placeholder": { + "message": "Search docs", + "description": "The placeholder of the input of the DocSearch pop-up modal" + }, + "theme.ErrorPageContent.tryAgain": { + "message": "Try again", + "description": "The label of the button to try again rendering when the React error boundary captures an error" + }, + "theme.common.skipToMainContent": { + "message": "Skip to main content", + "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation" + }, + "theme.tags.tagsPageTitle": { + "message": "Tags", + "description": "The title of the tag list page" + }, + "pages.download.description.hurricane": { + "message": "A plugin with various workarounds for Geyser players that modify the server in order to achieve their goal." + }, + "theme.blog.author.pageTitle": { + "message": "{authorName} - {nPosts}", + "description": "The title of the page for a blog author" + }, + "theme.blog.authorsList.pageTitle": { + "message": "Authors", + "description": "The title of the authors page" + }, + "theme.blog.authorsList.viewAll": { + "message": "View all authors", + "description": "The label of the link targeting the blog authors page" + }, + "theme.blog.author.noPosts": { + "message": "This author has not written any posts yet.", + "description": "The text for authors with 0 blog post" + }, + "theme.contentVisibility.unlistedBanner.title": { + "message": "Unlisted page", + "description": "The unlisted content banner title" + }, + "theme.contentVisibility.unlistedBanner.message": { + "message": "This page is unlisted. Search engines will not index it, and only users having a direct link can access it.", + "description": "The unlisted content banner message" + }, + "theme.contentVisibility.draftBanner.title": { + "message": "Draft page", + "description": "The draft content banner title" + }, + "theme.contentVisibility.draftBanner.message": { + "message": "This page is a draft. It will only be visible in dev and be excluded from the production build.", + "description": "The draft content banner message" + }, + "mdx.setup.host_provider": { + "message": "Host Provider" + }, + "mdx.setup.self_host": { + "message": "Self Host" + }, + "mdx.setup.paper_spigot": { + "message": "Paper / Spigot" + }, + "mdx.setup.modded_servers": { + "message": "Modded Servers" + }, + "mdx.setup.proxy_servers": { + "message": "Proxy Servers" + }, + "mdx.setup.viaproxy": { + "message": "ViaProxy" + }, + "mdx.setup.standalone": { + "message": "Standalone" + }, + "pages.download.description.offhandextension": { + "message": "An extension that allows Bedrock players to switch their offhand and mainhand item by emoting." + }, + "pages.download.description.rainbow": { + "message": "A Minecraft mod to generate Geyser item mappings and bedrock resourcepacks for use with Geyser's custom item API (v2)." + }, + "pages.download.description.hydraulic": { + "message": "A companion mod to Geyser which allows for Bedrock players to join modded Minecraft: Java Edition servers." + }, + "pages.download.description.thunder": { + "message": "A java application to convert simple Java Edition resource packs to Bedrock Edition ones." + }, + "pages.dumpviewer.extensions": { + "message": "Extensions" + }, + "pages.dumpviewer.extensions.noextensions": { + "message": "No extensions to show." + }, + "pages.dumpviewer.extensions.helptext": { + "message": "Click on an extension to view more information." + }, + "mdx.setup.fabric": { + "message": "Fabric" + }, + "mdx.setup.neoforge": { + "message": "NeoForge" + }, + "mdx.setup.installing_geyser": { + "message": "Installing Geyser" + }, + "mdx.setup.download_jar": { + "message": "Download {jarName}." + }, + "mdx.setup.place_jar": { + "message": "Place the {jarName} in the {jarDirectory} folder." + }, + "mdx.setup.restart_server": { + "message": "Restart the server." + }, + "mdx.setup.additional_steps": { + "message": "Additional Steps" + }, + "mdx.setup.connecting_on_bedrock": { + "message": "Connecting on Bedrock" + }, + "providers.config.templates.java_address": { + "message": "Set `address` in the `bedrock` section to the public address of the Java server." + }, + "providers.config.templates.custom_port_dedicated_ip": { + "message": "This host may only give out a separate port with a dedicated IP address." + }, + "providers.warnings.ovh_firewall_misconfig": { + "message": "To fix random `Unable to Connect` issues, see [here](/wiki/geyser/port-forwarding/#ovh-and-soyoustart)." + }, + "providers.config.templates.install_location.plugin_list": { + "message": "Install Geyser through the plugin or mod list provided by the host." + }, + "providers.config.templates.install_location.enable_bedrock_crossplay": { + "message": "Select the 'Enable Bedrock crossplay?' option when changing your server software to automatically install and configure Geyser and Floodgate." + }, + "providers.config.templates.info.geyser_installed_by_default": { + "message": "Geyser is installed and configured on all servers by default." + }, + "mdx.setup.checking_server_version": { + "message": "Checking your server version" + }, + "mdx.setup.restart_geyser": { + "message": "Restart Geyser." + }, + "mdx.setup.https_note": { + "message": "Unless signaling runs over {https}, Minecraft asks players whether they trust the server the first time they join." + }, + "mdx.setup.configuring_geyser": { + "message": "Configuring Geyser" + }, + "mdx.setup.open_config_simple": { + "message": "Now open the file {configLocation}. Find the part that starts with {bedrock}, and change the lines shown below." + }, + "mdx.setup.preconfigured": { + "message": "No changes needed. {name} automatically configures Geyser." + }, + "mdx.setup.transport_nethernet_simple": { + "message": "NetherNet is supported fully by 26.50+. If you'd like to also have working MOTD and player count for older versions, you will need to set up both NetherNet and Raknet." + }, + "mdx.setup.transport_both_compat": { + "message": "Also accepts RakNet, for additional compatibility: some Bedrock versions, such as 26.40, fetch the server's MOTD and player count over RakNet. This option needs a separate UDP port for NetherNet." + }, + "mdx.setup.placeholder_word": { + "message": "Replace this" + }, + "mdx.setup.replace_with_simple": { + "message": "With this" + }, + "mdx.setup.placeholder_java_port": { + "message": "The port of the Java server." + }, + "mdx.setup.placeholder_java_port_udp": { + "message": "A UDP port for NetherNet, other than {port}. This can be the Java server's port: the Java server only uses it over TCP, so Geyser can use it over UDP. Any other available UDP port works too." + }, + "mdx.setup.placeholder_second_available_port": { + "message": "An available UDP port for NetherNet, other than {port}. Open it for UDP." + }, + "mdx.setup.raknet_on_port": { + "message": "RakNet uses {port} over UDP, so that port has to be open for UDP as well." + }, + "mdx.setup.summary.nethernet_reported_generic": { + "message": "Reported to work with NetherNet" + }, + "mdx.setup.summary.supporter_configures": { + "message": "{name} configures Geyser for you automatically, including NetherNet." + }, + "mdx.setup.summary.updated": { + "message": "Instructions last updated on {date}" + }, + "mdx.setup.badge.gold": { + "message": "Gold supporter" + }, + "mdx.setup.badge.silver": { + "message": "Silver supporter" + }, + "mdx.setup.badge.bronze": { + "message": "Bronze supporter" + }, + "mdx.setup.unconfirmed_title": { + "message": "Not checked for NetherNet yet" + }, + "mdx.setup.warning_title": { + "message": "Warning" + }, + "mdx.setup.unconfirmed_reach_out_update": { + "message": "These instructions have not been checked for NetherNet yet. If Bedrock players can't join, reach out to {name} to get instructions on how to use Geyser, and let us know on {discord} so we can update this guide." + }, + "mdx.setup.try_not_listed": { + "message": "If your host cannot give you a separate port, follow the {notListed} instead. Players then join through {warden}, an external signaling service." + }, + "mdx.setup.try_not_listed.link": { + "message": "\"Not listed\" guide for using only the Java server's port" + }, + "mdx.setup.no_signaling": { + "message": "{name} supports neither built-in nor external signaling, so Bedrock players cannot connect over NetherNet." + }, + "mdx.setup.hosting_provider_article_short": { + "message": "Host's Geyser guide" + }, + "mdx.setup.hosting_provider_website_short": { + "message": "Website" + }, + "mdx.setup.hosting_provider_support_short": { + "message": "Support" + }, + "mdx.setup.hosting_provider_discord_short": { + "message": "Discord" + }, + "mdx.setup.not_listed.tab_allocated": { + "message": "I can allocate ports" + }, + "mdx.setup.not_listed.tab_java_only": { + "message": "I only have the Java server port" + }, + "components.provider.open_collaboration_group": { + "message": "Hosts that support Geyser's development" + }, + "components.provider.other_group": { + "message": "Other providers" + }, + "mdx.setup.connect.port_java": { + "message": "Your Java server's port" + }, + "mdx.setup.connect.port_config_step": { + "message": "The port you set in \"Configuring Geyser\"" + }, + "mdx.setup.connect.intro": { + "message": "In Minecraft: Bedrock Edition, go to Play, then Servers, and select Add Server. Fill it in like this:" + }, + "mdx.setup.connect.add_server": { + "message": "Add Server" + }, + "mdx.setup.connect.server_name": { + "message": "Server Name" + }, + "mdx.setup.connect.server_name_value": { + "message": "Anything you like" + }, + "mdx.setup.connect.server_address": { + "message": "Server Address" + }, + "mdx.setup.connect.server_address_value": { + "message": "Your Java server's address" + }, + "mdx.setup.connect.port": { + "message": "Port" + }, + "mdx.setup.transport_nethernet_tab": { + "message": "NetherNet" + }, + "mdx.setup.transport_both_tab": { + "message": "NetherNet and RakNet" + }, + "providers.ports.assign": { + "message": "Assign a port in your host's panel, open for both TCP and UDP." + }, + "providers.ports.allocated": { + "message": "Pick an available port from the ports allocated to your server, open for both TCP and UDP." + }, + "providers.ports.ask_host": { + "message": "Ask your host for a port that is open for both TCP and UDP." + }, + "pages.hosting.tier.gold": { + "message": "Gold supporters" + }, + "pages.hosting.tier.silver": { + "message": "Silver supporters" + }, + "pages.hosting.tier.bronze": { + "message": "Bronze supporters" + }, + "pages.hosting.card.website": { + "message": "Website" + }, + "pages.hosting.card.setup": { + "message": "Setup guide" + }, + "pages.hosting.title": { + "message": "Hosting Providers" + }, + "pages.hosting.subheading": { + "message": "Hosting providers that support the development of Geyser." + }, + "pages.hosting.intro": { + "message": "The hosts below support Geyser and related projects through {openCollaboration}. Their support helps fund work on Geyser, such as keeping up with major changes to Bedrock Edition, like the switch to NetherNet. All hosts listed below also configure Geyser automatically when installed, making using Geyser easier than ever. We'd like to thank them all for their support." + }, + "pages.hosting.empty": { + "message": "No hosting providers are listed yet." + }, + "pages.hosting.other.title": { + "message": "Using another host?" + }, + "pages.hosting.other.text": { + "message": "Hosts not being listed here does not mean Geyser won't run there. The {setupGuide} includes community collected notes for many other hosts, and general instructions for those not listed." + }, + "pages.hosting.other.setup_guide": { + "message": "setup guide" + }, + "pages.hosting.meta.title": { + "message": "Hosting Providers" + }, + "pages.hosting.meta.description": { + "message": "Hosting providers that support the development of Geyser through Open Collaboration." + }, + "pages.download.description.floodgatedatabases": { + "message": "Database extension jars for Floodgate local linking." + }, + "providers.ports.from_host": { + "message": "The Bedrock port your host shows you." + }, + "providers.config.templates.info.only_serves_region": { + "message": "This host only provides service in {region}." + }, + "mdx.setup.velocity": { + "message": "Velocity" + }, + "mdx.setup.bungeecord": { + "message": "BungeeCord" + }, + "providers.ports.new_port": { + "message": "Open a new port in your server panel, open for both TCP and UDP, or ask your host for one if the panel has no option for it." + }, + "mdx.setup.supported_versions": { + "message": "Supported versions" + }, + "mdx.setup.restart_velocity": { + "message": "Restart Velocity." + }, + "mdx.setup.restart_bungeecord": { + "message": "Restart BungeeCord." + }, + "mdx.setup.restart_viaproxy": { + "message": "Restart ViaProxy." + }, + "mdx.setup.fabric_dependency": { + "message": "If it is not installed already, download {fabricApi} and place it in the same folder." + }, + "mdx.setup.version_step_viaversion": { + "message": "If your server is not running {version}, you will need to install {viaVersion}. For more information, see {supportedVersions}." + }, + "mdx.setup.version_step_proxy": { + "message": "All servers on the network must accept {version} Java clients, as Geyser imitates one." + }, + "mdx.setup.proxy_install_only": { + "message": "Install Geyser only on the {proxy} server! You can install Floodgate on all servers for better skin support and network-wide Floodgate API availability for other plugins." + }, + "mdx.setup.modded_requirements": { + "message": "{jarName} runs only on a {version} server, and only works alongside server-side mods. Mods that players also need to install on their client will not work. See {supportedVersions} for more details." + }, + "mdx.setup.self_port_choice": { + "message": "Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP, so it cannot be the port of the {platform} server." + }, + "mdx.setup.self_port_choice_standalone": { + "message": "Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP." + }, + "mdx.setup.self_port_sharing": { + "message": "{important}: No other program can use the Geyser port, over either protocol. This includes programs that use UDP, such as voice chat mods or Query, and programs that use TCP, such as another server, a web map, or a website." + }, + "mdx.setup.self_port_sharing.important": { + "message": "Important" + }, + "mdx.setup.connect_local_title": { + "message": "Connecting from the same network" + }, + "mdx.setup.connect_local": { + "message": "On the same device as the server, connect with {localhost} or {loopback} as the address. Other devices in the same local network can use your local IPv4 address, which starts with {ten} or {oneNineTwo}." + }, + "mdx.setup.connect_lan": { + "message": "Alternatively, open Minecraft: Bedrock Edition and join the LAN server in the {friends} tab." + }, + "mdx.setup.connect_lan.friends": { + "message": "Friends" + }, + "mdx.setup.connect_remote_title": { + "message": "Connecting from a different network" + }, + "mdx.setup.connect_remote": { + "message": "To let players from outside your network join, you need to make the Geyser port reachable from the internet." + }, + "mdx.setup.connect_tcp_udp": { + "message": "The Geyser port has to be forwarded for both TCP and UDP. Before NetherNet, forwarding UDP was enough. Now, players use TCP to find your server and UDP to play on it, so without TCP your server will not show up. If you use the \"NetherNet and RakNet\" option, also forward the {webrtcPort} for UDP." + }, + "mdx.setup.connect_options": { + "message": "You have two options:" + }, + "mdx.setup.connect_port_forwarding": { + "message": "{portForwarding}: open the Geyser port (e.g. 19132) for both TCP and UDP in your router and in your firewall. Players then connect with your public IPv4 address and the port. For detailed steps, see {guide}." + }, + "mdx.setup.connect_port_forwarding.title": { + "message": "Port forwarding" + }, + "mdx.setup.connect_port_forwarding.guide": { + "message": "Port forwarding" + }, + "mdx.setup.connect_playit": { + "message": "{playit}: if you cannot open a port, or do not want to expose your home IP address, playit.gg can create a tunnel for you. See {guide}. That guide was written for RakNet. For NetherNet, see {status}. Ngrok does not work, since it does not support UDP." + }, + "mdx.setup.connect_playit.guide": { + "message": "playit.gg Setup" + }, + "mdx.setup.connect_playit.status": { + "message": "NetherNet support on playit.gg" + }, + "mdx.setup.https_step_title": { + "message": "Recommended: Set up HTTPS for signaling" + }, + "mdx.setup.https_step": { + "message": "Geyser's built-in signaling server uses plain HTTP by default, so Minecraft shows players a \"Trust on First Use?\" prompt the first time they join. To avoid this prompt, serve signaling over HTTPS, as explained in {httpsGuide}. Some external signaling services, such as {warden}, provide HTTPS as well." + }, + "mdx.setup.https_step.guide": { + "message": "HTTPS for NetherNet" + }, + "mdx.setup.floodgate_info": { + "message": "To allow Bedrock Edition players to join your server without a paid Java Edition account, you can use {floodgate}." + }, + "mdx.setup.viaproxy_not_plugin.title": { + "message": "ViaProxy is not a plugin or mod" + }, + "mdx.setup.viaproxy_not_plugin": { + "message": "ViaProxy is a standalone program that runs separately from your Minecraft server. Do not put the ViaProxy jar into your server's {plugins} or {mods} folder. To run Geyser as a plugin or mod on your server instead, pick your server software in the tabs above." + }, + "mdx.setup.viaproxy_setup": { + "message": "Set up {viaProxy}." + }, + "mdx.setup.viaproxy_accounts": { + "message": "If you use the ViaProxy GUI, you can use its account management to join online mode servers with Bedrock Edition. If you use the ViaProxy CLI and want Bedrock players to join your online mode server, install and set up {floodgate}." + }, + "mdx.setup.viaproxy_auth_type": { + "message": "ViaProxy manages the {authType} setting itself, so its value in the config is ignored." + }, + "mdx.setup.standalone_java": { + "message": "You need Java 21 or newer to run Geyser. To run Geyser Standalone on Android, see the end of this page." + }, + "mdx.setup.standalone_not_plugin": { + "message": "Geyser Standalone is not a plugin or mod. It is a separate Java program that runs alongside your Java Edition server." + }, + "mdx.setup.standalone_download": { + "message": "Download {standalone}." + }, + "mdx.setup.standalone_folder": { + "message": "Create a new folder for Geyser, and put the jar in it." + }, + "mdx.setup.standalone_start": { + "message": "Start Geyser Standalone:" + }, + "mdx.setup.standalone_gui": { + "message": "{gui} (recommended): double-click the jar file. Geyser creates all the files it needs." + }, + "mdx.setup.standalone_console": { + "message": "{console}: create a startup script, like the one you would use for a Paper server. See {startupScript} for what to put into it. Run it, and Geyser creates all the files it needs." + }, + "mdx.setup.standalone_console.console": { + "message": "Console" + }, + "mdx.setup.standalone_console.startup_script": { + "message": "Creating a Startup Script" + }, + "mdx.setup.standalone_remote_intro": { + "message": "To choose which Java Edition server Geyser Standalone sends players to, find the {java} section:" + }, + "mdx.setup.standalone_remote": { + "message": "Change {address} to the Java server's address, or leave it as it is if the server runs on the same machine as Geyser. Then change {port} to the Java server's port. Set {authType} to {floodgate} if you set up Floodgate on the Java server, otherwise to {online} for an online mode server or {offline} for an offline mode server. To use Floodgate with Geyser Standalone, see {floodgateSetup}." + }, + "mdx.setup.standalone_remote.floodgate_setup": { + "message": "Floodgate Setup" + }, + "mdx.setup.standalone_android_title": { + "message": "Running Geyser Standalone on Android" + }, + "mdx.setup.standalone_android_caution": { + "message": "Apps such as Termux can run Geyser on Android, but how well this works depends on how powerful your device is. Do so at your own risk." + }, + "mdx.setup.standalone_termux_install": { + "message": "Download and install {termux}." + }, + "mdx.setup.run_command": { + "message": "Run {command}." + }, + "mdx.setup.standalone_termux_script": { + "message": "Alternatively, there is an automated setup script for clean Termux installs. It might not work for everyone, so try it if the steps above do not work:" + } +} \ No newline at end of file diff --git a/i18n/tr/docusaurus-plugin-content-blog/options.json b/i18n/tr/docusaurus-plugin-content-blog/options.json new file mode 100644 index 0000000..9fa6586 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-blog/options.json @@ -0,0 +1,10 @@ +{ + "description": { + "message": "Blog", + "description": "The description for the blog used in SEO" + }, + "sidebar.title": { + "message": "Recent posts", + "description": "The label for the left sidebar" + } +} \ No newline at end of file diff --git a/i18n/tr/docusaurus-plugin-content-docs/current.json b/i18n/tr/docusaurus-plugin-content-docs/current.json new file mode 100644 index 0000000..cb3914c --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,34 @@ +{ + "version.label": { + "message": "Next", + "description": "The label for version current" + }, + "sidebar.geyserSidebar.category.Setup": { + "message": "Setup", + "description": "The label for category Setup in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Common Issues": { + "message": "Common Issues", + "description": "The label for category Common Issues in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Configuring Geyser": { + "message": "Configuring Geyser", + "description": "The label for category Configuring Geyser in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.FAQ": { + "message": "FAQ", + "description": "The label for category FAQ in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Geyser API": { + "message": "Geyser API", + "description": "The label for category Geyser API in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.link.Hosting Providers": { + "message": "Hosting Providers", + "description": "The label for link Hosting Providers in sidebar geyserSidebar, linking to /hosting" + }, + "sidebar.geyserSidebar.category.Custom Content": { + "message": "Custom Content", + "description": "The label for category Custom Content in sidebar geyserSidebar" + } +} \ No newline at end of file diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/geyser/commands.md b/i18n/tr/docusaurus-plugin-content-docs/current/geyser/commands.md new file mode 100644 index 0000000..0492482 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/geyser/commands.md @@ -0,0 +1,83 @@ +--- +title: Commands and Permissions +description: Commands and their associated permission nodes for Geyser. +crowdin_sync: true +crowdin_page_id: cd92ff4f-9105-46a2-8696-8b0e2f8b9d31 +--- + +# Commands and Permissions + +Geyser features many built-in commands that can be used by players or server owners. + +:::info + +When using BungeeCord and Velocity, you will need to use a permission plugin such as [LuckPerms](https://luckperms.net/) +on the proxy server to assign permissions to players. Assigning permissions on the backend servers will not work. + +::: + +## Geyser commands & their permissions {#geyser-commands--their-permissions} + +| Command | Permission | Description | +| :-----------------------------------: | :---------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | +| `geyser`
Geyser root command | `geyser.command` | The permission required to see/run any Geyser commands. | +| `geyser help`
`geyser ?` | `geyser.command.help` | Shows help for all registered commands. | +| `geyser advancements` | `geyser.command.advancements` | Open the Java advancements menu. | +| `geyser dump` | `geyser.command.dump` | Dumps Geyser debug information for bug reports. | +| `geyser list` | `geyser.command.list` | List all players connected through Geyser. | +| `geyser nethernet` | `geyser.command.nethernet` | Shows NetherNet signaling status and diagnostics, for use with external signaling. | +| `geyser offhand` | `geyser.command.offhand` | Puts an item in your offhand. | +| `geyser reload` | `geyser.command.reload` | Reloads the Geyser configurations. Kicks all players when used! | +| `geyser settings` | `geyser.command.settings` | Opens a settings menu allowing you to modify aspects of the world. | +| `geyser shutdown`
`geyser stop` | `geyser.command.shutdown` | Shuts down Geyser.
*This command only works on Standalone.* | +| `geyser statistics` | `geyser.command.statistics` | Open the Java statistics menu. | +| `geyser version` | `geyser.command.version` | Shows the current Geyser version and checks for updates. | +| `geyser tooltips` | `geyser.command.tooltips` | Toggle showing Advanced Tooltips (F3 + H on Java) | +| `geyser extensions` | `geyser.command.extensions` | Lists all currently loaded extensions. This command is only registered if any extensions are loaded. | +| `geyser ping` | `geyser.command.ping` | Shows the ping between the player and the Geyser instance. | +| `geyser options` | `geyser.command.options` | Opens the "pause screen additions" dialogue, if sent by the Java server | +| `geyser quickactions` | `geyser.command.quickactions` | Opens the "quick actions" dialogue, if sent by the Java server. | + +## Permissions for Geyser extensions {#extension-permissions} + +For the following, `` refers to the extensions' id. + +| Command | Permission | Description | +| :------------------------- | :---------------------------- | :------------------------------------------------------------------------ | +| ` help`
` ?` | `geyser.command.exthelp.` | Shows help for all commands registered by this extension. | + +## Other Permissions {#other-permissions} + +Besides commands, there are other permissions that are used to guard specific Geyser features. + +| Permission | Description | +| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `geyser.settings.server` | Allow players to use the [game settings menu](/img/wiki/game_menu.png). (Also requires player to have op.) | +| `geyser.settings.gamerules` | Defines whether a user can alter gamerules in the [game settings menu](/img/wiki/game_menu.png). (Also requires player to have op.) | +| `geyser.update` | Whether this player will receive Geyser update notifications upon joining. | + +## Permissions when using Geyser-Standalone/Geyser-ViaProxy {#standalone-viaproxy-permissions} + +Geyser-ViaProxy and Geyser-Standalone feature their own basic permission handler. To edit base permissions, +open the `permissions.yml` file and add or remove permissions that Geyser players should receive when joining. +See the file for more information. + +You can further customize permission handling by creating a [Geyser extension](/wiki/geyser/extensions/) that makes use of Geysers API +to deal with permission checking. + +## Permissions when using Geyser on platforms without permission handlers {#permissions-platforms-no-permission-handlers} + +The following affects Geyser-BungeeCord, Geyser-Velocity, and Geyser-Fabric. +These platforms unfortunately do not have built-in permission handlers. Because of that, you will need to grant permissions on those platforms +manually using permission handlers, such as [LuckPerms](https://luckperms.net/). Geyser's permission are listed above. For extension permissions, consult their documentation. + +Alternatively, you can use [LuckLink](https://github.com/onebeastchris/LuckLink), a third-party Geyser extension, to automatically register permissions using [LuckPerms](https://luckperms.net/). + +- Install [LuckPerms](https://luckperms.net/) on the platform where you've installed Geyser (BungeeCord/Velocity/Fabric). +- To allow Geyser to automatically register permission defaults, install the [LuckLink](https://github.com/onebeastchris/LuckLink) Geyser extension + by downloading the `LuckLink.jar` and adding it to Geyser's `extensions` folder. +- Restart the server, and permissions should be automatically registered. + +## Floodgate commands and permissions {#floodgate-commands-and-permissions} + +For Floodgate commands, see [here](/wiki/floodgate/commands/). diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/geyser/playit-gg.md b/i18n/tr/docusaurus-plugin-content-docs/current/geyser/playit-gg.md new file mode 100644 index 0000000..7d20bd3 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/geyser/playit-gg.md @@ -0,0 +1,62 @@ +--- +title: playit.gg Setup +description: How to set up playit.gg to use Geyser without port forwarding. +crowdin_sync: true +crowdin_page_id: 3aee52d0-b943-4e37-8797-4a83ef55e42a +--- + +## Prerequisites {#prerequisites} + +:::info +You must be able to connect to your Geyser instance locally! +::: + +:::warning +The playit.gg Minecraft server plugin does not support UDP tunnels. You will need to use the program agent instead! +::: + +:::caution +This guide was written for RakNet, and does not cover NetherNet. For NetherNet, see [playit.gg's progress on NetherNet support](https://status.playit.gg/3/adding-nethernet-support). +::: + +## Setup {#setup} + +1. Head over to [playit.gg's website](https://playit.gg/) - download the program & run it. +2. The program will provide a claiming link. Visit that link, log in. + ![img](/img/wiki/playit-gg/playit_claim.png) +3. Confirm your agent. + ![img](/img/wiki/playit-gg/playit_claim_confirm.png) +4. Add the agent. + ![img](/img/wiki/playit-gg/playit_add_agent.png) +5. After the agent is created, create a tunnel. + ![img](/img/wiki/playit-gg/playit_add_tunnel.png) +6. Name your tunnel and click Next. + ![img](/img/wiki/playit-gg/playit_name_tunnel.png) +7. Select "Minecraft Bedrock" as the tunnel type and click Next. + ![img](/img/wiki/playit-gg/playit_tunnel_type.png) +8. Select the Free Network and click Next. + ![img](/img/wiki/playit-gg/playit_select_network.png) + **Do not change your Geyser port in `config.yml` unless you have a reason (for example, hosting another Geyser server on the same machine).** The Bedrock (Geyser) port in `config.yml` and the playit.gg ports are separate. playit.gg will forward its port to the default Geyser port and should work as-is. Changing it can cause errors. If you have changed your config port, set the Bedrock port back to the default `19132` and ensure `clone-remote-port` is `false`. +9. If the playit.gg agent and Geyser are running on the same device, leave the IP as `127.0.0.1` and set the port to whatever you configured in Geyser's config. + ![img](/img/wiki/playit-gg/playit_set_ipandport.png) +10. Select `proxy-protocol-v2` for the Proxy Protocol section and click Next. +11. In the Geyser config, under `advanced:` `bedrock:`, set `use-haproxy-protocol` to `true`. +12. Click Create Tunnel and wait for the tunnel to be created. + ![img](/img/wiki/playit-gg/playit_create_tunnel.png) +13. Copy your tunnel's port. For example, if your tunnel address is `visiting-phone.gl.at.ply.gg:6695`, then `6695` is the tunnel port. +14. In the Geyser config under `advanced:` `bedrock:`, set `broadcast-port` to your tunnel port (`6695` in the example). +15. Save your config. Start your Minecraft server and connect using your tunnel's IP and port. +16. If you join successfully, then you are done! Make sure to leave the playit.gg program running as closing it will close the tunnel. You also may want to ratelimit individual connections - use the "Per Connection Rate Limit" option to do so. + (If you failed to join, check out the [troubleshooting](#troubleshooting) section of the page.) + +## Troubleshooting {#troubleshooting} + +### I can't connect to my server! {#i-cant-connect-to-my-server} + +- *Try going to the Agents page, set your agent to IPv4 only, and change the region. You may need to switch regions a few times before you can connect.* +- *Are there errors in your minecraft server console?* +- *Unless you manually changed the "Local Port" on the playit.gg website, in Geyser config, ensure that the bedrock port is the default of `19132` and that `clone-remote-port` is `false`.* +- *If you changed the `bedrock-port` or set `clone-remote-port` to `true` and have a reason for doing so (e.g. hosting another Geyser server on the same machine), you'll have to tell playit.gg to use that port instead! See the last paragraph in step 8.* +- *Check that you're joining with playit.gg's IP and port from the "Allocation" tab.* +- *Make sure that you have the program agent open while trying to join.* +- *See [here](/wiki/geyser/fixing-unable-to-connect-to-world/) for general troubleshooting steps.* diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md b/i18n/tr/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md new file mode 100644 index 0000000..492774c --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md @@ -0,0 +1,208 @@ +--- +title: Port forwarding +description: Information on how to set up port forwarding required for Geyser. +crowdin_sync: true +crowdin_page_id: be7c5a22-1e8e-4ffe-8d13-7d763dd75886 +--- + +# Port forwarding {#port-forwarding} + +This page contains information on how to set up port forwarding required for Geyser to work when self-hosting. +There are also guides for specific configurations, such as Docker/Pterodactyl, or on specific VPS/KVM providers, such as OVH or Oracle Cloud. + +:::caution + +If you are using a Minecraft server hosting provider (e.g. Aternos, or Nodecraft), you should refer to the hosting provider setup on the [setup](/wiki/geyser/setup) page instead. + +::: + +:::info Ports that need to be opened +With NetherNet, the Geyser port (by default 19132) has to be open for **both TCP and UDP**: players find the server over TCP (signaling), and play on it over UDP. +If you use the "NetherNet and RakNet" option, also open the `webrtc-port` for UDP. +With external signaling, such as [Warden](https://warden.cloud), only UDP for WebRTC is needed. +::: + +## Port forwarding on Linux/Windows/macOS {#port-forwarding-on-linuxwindowsmacos} + +To allow others to play on your server, you will need to set up port forwarding on the device hosting Geyser. +Additionally, you will need to port forward the port on your router/modem (in other words, allow and route traffic on that port to the proper machine) if you want the server to be accessible outside your own home network. +Forward it for both TCP and UDP; many routers offer a "TCP/UDP" or "Both" option for this. +See [here](https://www.howtogeek.com/66214/how-to-forward-ports-on-your-router/) or [here](https://www.lifewire.com/how-to-port-forward-4163829) for helpful guides. +Do note: if you do not have a static IP address, your IP address may change over time. + +:::info + +Some ISPs (Internet Service Providers) block certain ports, or don't allow you to open ports (e.g. by using CGNAT, which doesn't allow you to open a port with a dynamic IP). +Other ISPs may require you to pay extra for a static IP address. +As an alternative to port forwarding, you can use [playit.gg](/wiki/geyser/playit-gg/) to create a tunnel. + +::: + +### Windows {#windows} + +To open a port on Windows, you will need to open the port through the Windows Firewall. There are multiple ways to do this: + +- `Powershell` (recommended) + + To open a port on TCP and UDP (in our example, port 19132), run the following commands in an administrator Powershell: + + ```powershell + New-NetFirewallRule -DisplayName "Geyser (TCP)" -Direction Inbound -Protocol TCP -LocalPort 19132 -Action Allow + New-NetFirewallRule -DisplayName "Geyser (UDP)" -Direction Inbound -Protocol UDP -LocalPort 19132 -Action Allow + ``` + + Running these commands creates two rules that allow TCP and UDP traffic on port 19132. + +- Windows Defender Firewall with Advanced Security (GUI) + 1. Search for "Windows Defender Firewall with Advanced Security" in the start menu, and open it. ([Image](/img/wiki/port-forwarding/windows-1.png)) + 2. Click on "Inbound Rules" in the left sidebar. ([Image](/img/wiki/port-forwarding/windows-2.png)) + 3. Click on "New Rule..." in the right sidebar. ([Image](/img/wiki/port-forwarding/windows-2.png)) + 4. Select "Port" as the rule type and click "Next". ([Example](/img/wiki/port-forwarding/windows-3.png)) + 5. Select "UDP" and "Specific local ports", and enter the port you want to open (in our example, 19132). Click "Next". ([Example](/img/wiki/port-forwarding/windows-4.png)) + 6. Select "Allow the connection" and click "Next". ([Example](/img/wiki/port-forwarding/windows-5.png)) + 7. Select the profiles you want to apply the rule to (e.g. "Domain", "Private", "Public"), and click "Next". ([Example](/img/wiki/port-forwarding/windows-6.png)) + 8. Enter a name for the rule (e.g. "Geyser (UDP)"), and click "Finish". ([Image](/img/wiki/port-forwarding/windows-7.png)) + 9. Repeat these steps, selecting "TCP" in step 5 and naming the rule e.g. "Geyser (TCP)". + +### Linux {#linux} + +Different Linux distributions, even different VPS providers ship and configure different firewalls. In the following examples, we will use `19132` as the port to open, but you should replace this with the port you are using for Geyser. + +- `ufw` is a simple firewall front-end for iptables that is commonly used on Ubuntu and Debian. To open a port on TCP and UDP, run the following commands: + ```bash + sudo ufw allow 19132/tcp + sudo ufw allow 19132/udp + ``` + Then, reload the firewall with `sudo ufw reload`, and see all open rules with `sudo ufw status`. + Further helpful guides: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server), [Baeldung](https://www.baeldung.com/linux/uncomplicated-firewall) + +- `firewalld` Add a port on TCP and UDP by running: + ```bash + sudo firewall-cmd --zone=public --permanent --add-port=19132/tcp + sudo firewall-cmd --zone=public --permanent --add-port=19132/udp + ``` + Then, reload the firewall with `sudo firewall-cmd --reload`, and see all open rules with `sudo firewall-cmd --list-all`. + Further helpful guides: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7) + +- `iptables` is a common firewall that is used on many Linux distributions. To open a port on TCP and UDP, run the following commands: + ```bash + sudo iptables -A INPUT -p tcp --dport 19132 -j ACCEPT + sudo iptables -A INPUT -p udp --dport 19132 -j ACCEPT + ``` + Then, save the firewall with `sudo iptables-save`, and see all open rules with `sudo iptables -L`. + Further helpful guides for iptables: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-iptables-on-ubuntu-14-04), [Ubuntu](https://help.ubuntu.com/community/IptablesHowTo) + +### macOS {#macos} + +You will need to disable `Block all incoming connections` in your Firewall settings, as that will block any connections and won't allow you to make exceptions. +To allow incoming connections, click `Allow` when getting [these prompts](/img/wiki/port-forwarding/macos_warning.png). +If you are still facing issues, see Apple's official guide [here](https://support.apple.com/guide/mac-help/MH11783) to open a port on macOS. + +## Using Docker or Pterodactyl {#using-docker-or-pterodactyl} + +In addition to port forwarding the port in your server's firewall (and, if applicable, your router/modem), you will need to assign the port in Docker/Pterodactyl. + +### Pterodactyl {#pterodactyl} + +Make sure to allocate the port(s) to the server in the Pterodactyl panel's `Network` tab, additionally to port forwarding the port(s). +See [here](https://pterodactyl.io/community/games/minecraft.html#allocations-in-the-panel) for more information. + +![Pterodactyl panel, Network section](/img/wiki/port-forwarding/pterodactyl-1.png) + +There are also different Geyser eggs for Pterodactyl, which can be found [here](https://github.com/GeyserMC/pterodactyl-stuff). + +:::caution + +If you are not able to allocate ports in the Pterodactyl panel, you will need to contact your server host to allocate one for you or try to use an existing port allocation. + +::: + +### Docker {#docker} + +For Geyser to work under Docker (e.g. using [Itzg's Docker image](https://github.com/itzg/docker-minecraft-server)), you will need to add the Geyser port on TCP and UDP to the docker-compose file. This is done by adding the following to the `ports` section: + +```yaml +ports: + - "25565:25565" + - "19132:19132" + - "19132:19132/udp" +``` + +Without a suffix, Docker exposes the port on TCP. The additional `/udp` suffix exposes it on UDP. +Alternatively, add the ports with the `-p 19132:19132 -p 19132:19132/udp` flags to the docker run command. + +## Issues with specific VPS/KVM providers {#issues-with-specific-vpskvm-providers} + +Some providers, such as OVH, Oracle Cloud, and SoYouStart, have a firewall that blocks the ports Geyser needs by default/in most cases. + +### OVH and SoYouStart {#ovh-and-soyoustart} + +OVH's GAME firewall filters traffic with rules made for specific games. The Minecraft Bedrock and Minecraft Pocket Edition rules currently only support RakNet, the protocol Bedrock used before NetherNet. +With NetherNet, players find the server over HTTP (TCP) and play over WebRTC (UDP), which these rules currently do not support. +For now, use the `Other` rule for the Geyser port(s) instead. + +:::caution + +If you do not have access to these firewall settings, but got linked to this page, please contact your server host and provide them with this link - they are likely using OVH internally. + +::: + +**To resolve it:** + +OVH: + +1. Navigate to `Network interfaces` +2. Click on the `...` button on the table for your IP -> then `...` and `Configure the GAME firewall` -> `Add rule` -> `Other protocol` +3. Add your Geyser port into `outgoing port`. If you use the "NetherNet and RakNet" option, add a rule for the `webrtc-port` as well. +4. If you use OVH's Edge Network Firewall, make sure it allows the Geyser port over both TCP and UDP. + +SoYouStart (subsidiary of OVH): + +1. Click the IP tab. +2. Click the gear at the right of the public IP address; select "Game mitigation". +3. Pick "Add a rule". +4. Select "Other" in the dropdown list and enter the Geyser port. If you use the "NetherNet and RakNet" option, add the `webrtc-port` as well. +5. Save and wait a few seconds for the changes to come into effect. + +### Oracle Cloud/OCI {#oracle-cloudoci} + +By default, Oracle Cloud will block all incoming traffic except for SSH and RDP. This must be resolved within Oracle Cloud itself and the Compute Instance running Geyser. + +The steps below assume that you are using the default ports for the Java server and Geyser, and should be adjusted accordingly. + +1. Find your Compute Instance in the OCI Console +2. Click on the instances Virtual Cloud Network (this will be under "Instance details") +3. On the left-hand side, select "Security Lists" +4. Select one of the security lists. By default only one security list will exist. It doesn't matter which security list we add the rules to. +5. Select "Add Ingress Rules" +6. Configure rules for Java (optional) + - Set "Source CIDR" to `0.0.0.0/0` + - Set "Destination Port Range" to `25565-25565` + - Select "Another Ingress Rule" +7. Configure rules for Geyser, once for TCP and once for UDP + - Set "Source CIDR" to `0.0.0.0/0` + - Set "Destination Port Range" to `19132-19132` + - Set "IP Protocol" to TCP + - Select "Another Ingress Rule", and repeat with "IP Protocol" set to UDP +8. Select "Add Ingress Rules" + +#### Oracle Linux {#oracle-linux} + +Run the following commands to allow Minecraft and Geyser through the OS firewall: + +```bash +sudo firewall-cmd --add-port=25565/tcp --permanent +sudo firewall-cmd --add-port=19132/tcp --permanent +sudo firewall-cmd --add-port=19132/udp --permanent +sudo firewall-cmd --reload +``` + +#### Ubuntu {#ubuntu} + +Run the following commands to allow Minecraft and Geyser through the OS firewall: + +```bash +sudo ufw allow 25565/tcp +sudo ufw allow 19132/tcp +sudo ufw allow 19132/udp +``` diff --git a/i18n/tr/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx b/i18n/tr/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx new file mode 100644 index 0000000..47391e7 --- /dev/null +++ b/i18n/tr/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx @@ -0,0 +1,47 @@ +--- +title: Supported versions +description: Information on the versions Geyser supports. +crowdin_sync: true +crowdin_page_id: f199ae24-f711-486d-8e42-3079be87e8cd +--- + +import { Versions } from '@site/src/components/Versions' +import DocCardList from '@theme/DocCardList'; + +# Currently supported versions \ {#currently-supported-versions} + +:::info +**Geyser currently supports Minecraft Bedrock and Minecraft Java **. +::: + +## Using Geyser with older Minecraft: Bedrock edition versions \ {#using-geyser-with-older-minecraft-bedrock-edition-versions} + +Older Bedrock versions are not supported. Minecraft: Bedrock Edition updates automatically on all platforms, so there are few users who would +want to use older versions. Further, older Bedrock versions do not have all features which Geyser support, which would lead to a sub-par experience. + +## Using Geyser on older Minecraft: Java edition servers \ {#using-geyser-on-older-minecraft-java-edition-servers} + +Geyser emulates a client, so a Java server must accept users using that version in order for Geyser to work. +This is possible thanks to [ViaVersion](https://viaversion.com/viaversion), which allows Java edition players with newer versions to join servers +that run older versions of the game. + +### Using Geyser-Spigot on a Spigot/Paper server running on 1.20.5 or above + +You can use Geyser-Spigot on servers that run on 1.20.5 or above. You will also need to run at least Java 21 or later to use Geyser. See [here](https://docs.papermc.io/misc/java-install) for more info on updating Java. Paper versions not supporting Java 21 can add `-DPaper.IgnoreJavaVersion=true` flag to the Java startup arguments to allow Paper to run on Java 21. + +In order for Bedrock players to chat (1.19.3+) or join (1.19.1/1.19.2), you need to disable chat signing. More information about that can be read on the [chat signing page](/wiki/geyser/secure-chat). + +### Using Geyser-Spigot on a Spigot/Paper server running on a version below 1.20.5 + +This is unfortunately not possible. You'll need to use a proxy such as Velocity or BungeeCord, or set up Geyser-Standalone separately with the [ViaVersion](https://viaversion.com/viaversion) plugin. Another alternative would be to install [ViaProxy](https://viaversion.com/viaproxy), which is a standalone ViaVersion proxy that +translates between different Minecraft: Java edition versions, and to install Geyser-ViaProxy on it. + +### Using Geyser on Fabric/NeoForge servers not on the latest Minecraft version \ {#using-geyser-on-fabric-neoforge-servers-not-on-the-latest-minecraft-version} + +Unfortunately, Geyser-Fabric and Geyser-NeoForge only support the latest version of Minecraft: Java edition. The recommended way to still use +Geyser with older versions would be to install [ViaProxy](https://viaversion.com/viaproxy), which is a standalone ViaVersion proxy that +translates between different Minecraft: Java edition versions, and to install Geyser-ViaProxy on it. This will also work with Floodgate auth. + +### Using Geyser-Velocity or Geyser-BungeeCord on a proxy + +Make sure you update your proxy software to the latest available version, and, if the backend servers are not on , also install the [ViaVersion](https://viaversion.com/viaversion) plugin on the backend servers. Velocity/BungeeCord support most Minecraft versions, so you can update them regardless of the backend server versions. diff --git a/i18n/tr/docusaurus-theme-classic/footer.json b/i18n/tr/docusaurus-theme-classic/footer.json new file mode 100644 index 0000000..1a69184 --- /dev/null +++ b/i18n/tr/docusaurus-theme-classic/footer.json @@ -0,0 +1,50 @@ +{ + "link.title.Wiki": { + "message": "Wiki", + "description": "The title of the footer links column with title=Wiki in the footer" + }, + "link.title.Downloads": { + "message": "Downloads", + "description": "The title of the footer links column with title=Downloads in the footer" + }, + "link.title.Community": { + "message": "Community", + "description": "The title of the footer links column with title=Community in the footer" + }, + "link.title.More": { + "message": "More", + "description": "The title of the footer links column with title=More in the footer" + }, + "link.item.label.REST APIs": { + "message": "REST APIs", + "description": "The label of footer link with label=REST APIs linking to wiki/api/api.geysermc.org/global-api" + }, + "link.item.label.Other": { + "message": "Other", + "description": "The label of footer link with label=Other linking to download?project=other-projects" + }, + "link.item.label.Blog": { + "message": "Blog", + "description": "The label of footer link with label=Blog linking to blog" + }, + "link.item.label.Donate": { + "message": "Donate", + "description": "The label of footer link with label=Donate linking to https://opencollective.com/geysermc" + }, + "link.item.label.Global Linking": { + "message": "Global Linking", + "description": "The label of footer link with label=Global Linking linking to https://link.geysermc.org/" + }, + "link.item.label.Privacy Policy": { + "message": "Privacy Policy", + "description": "The label of footer link with label=Privacy Policy linking to https://ziax.com/terms/privacy-policy/" + }, + "logo.alt": { + "message": "GeyserMC logo", + "description": "The alt text of footer logo" + }, + "copyright": { + "message": "Copyright © 2026 GeyserMC. Built with Docusaurus.
This website is not an official Minecraft website and is not associated with Mojang Studios or Microsoft. All product and company names are trademarks or registered trademarks of their respective holders. Use of these names does not imply any affiliation or endorsement by them.", + "description": "The footer copyright" + } +} \ No newline at end of file diff --git a/i18n/tr/docusaurus-theme-classic/navbar.json b/i18n/tr/docusaurus-theme-classic/navbar.json new file mode 100644 index 0000000..c4f41a5 --- /dev/null +++ b/i18n/tr/docusaurus-theme-classic/navbar.json @@ -0,0 +1,38 @@ +{ + "logo.alt": { + "message": "GeyserMC logo", + "description": "The alt text of navbar logo" + }, + "item.label.Wiki": { + "message": "Wiki", + "description": "Navbar item with label Wiki" + }, + "item.label.Blog": { + "message": "Blog", + "description": "Navbar item with label Blog" + }, + "item.label.Utilities": { + "message": "Utilities", + "description": "Navbar item with label Utilities" + }, + "item.label.Download": { + "message": "Download", + "description": "Navbar item with label Download" + }, + "item.label.REST APIs": { + "message": "REST APIs", + "description": "Navbar item with label REST APIs" + }, + "item.label.Other": { + "message": "Other", + "description": "Navbar item with label Other" + }, + "item.label.Dump Viewer": { + "message": "Dump Viewer", + "description": "Navbar item with label Dump Viewer" + }, + "item.label.Hosting": { + "message": "Hosting", + "description": "Navbar item with label Hosting" + } +} \ No newline at end of file diff --git a/i18n/uk/code.json b/i18n/uk/code.json new file mode 100644 index 0000000..7251b24 --- /dev/null +++ b/i18n/uk/code.json @@ -0,0 +1,1023 @@ +{ + "pages.main.title": { + "message": "Revolutionize Your Minecraft Server" + }, + "pages.main.subtitle": { + "message": "Enable clients from Minecraft Bedrock Edition to join your Minecraft Java server" + }, + "components.homepage_features.1.line1": { + "message": "Geyser is a program that allows Minecraft: Bedrock Edition clients to join Minecraft: Java Edition servers, allowing for true crossplay between both editions of the game." + }, + "components.homepage_features.1.line2": { + "message": "The ultimate goal of this project is to allow Minecraft: Bedrock Edition users to join Minecraft: Java Edition servers as seamlessly as possible." + }, + "components.homepage_features.2": { + "message": "Geyser acts as a translator which sits between the Bedrock client and the Java server. It takes data from the Bedrock client and translates it into a format the Java server understands and vice versa. Geyser works with any modern Minecraft version and can be installed either as a plugin or ran as a standalone program." + }, + "components.homepage_features.3.line1": { + "message": "Geyser can be joined from Bedrock clients on Windows 10/11, iOS, Android, and even consoles. Geyser works with a wide array of hosting providers, but can also be used as its own standalone proxy to join any Minecraft server!" + }, + "components.homepage_features.3.line2": { + "message": "If you are a server owner, you can install our Floodgate plugin which allows Xbox Live authenticated Bedrock users to join without a Java Edition account!" + }, + "pages.download.title": { + "message": "Download" + }, + "pages.download.subheading": { + "message": "Download the latest versions of our various projects." + }, + "pages.download.description.geyser": { + "message": "A bridge/proxy allowing you to connect to Minecraft: Java Edition servers with Minecraft: Bedrock Edition." + }, + "pages.download.description.floodgate": { + "message": "Hybrid mode plugin to allow for connections from Geyser to join online mode servers." + }, + "pages.download.description.geyserconnect": { + "message": "A Geyser extension allowing players to connect to different Java or Geyser servers." + }, + "pages.download.description.thirdpartycosmetics": { + "message": "An extension that adds support for loading ears and other third party cosmetics on java players" + }, + "pages.dumpviewer.title": { + "message": "Dump Viewer" + }, + "pages.dumpviewer.subheading": { + "message": "View the breakdown of your Geyser dump." + }, + "pages.dumpviewer.enterdumpid": { + "message": "Enter Dump ID or URL below and click load." + }, + "pages.dumpviewer.button.load": { + "message": "Load" + }, + "pages.dumpviewer.versions": { + "message": "Versions" + }, + "pages.dumpviewer.versions.geyserver": { + "message": "Geyser Version" + }, + "pages.dumpviewer.versions.javaver": { + "message": "Java Version" + }, + "pages.dumpviewer.versions.os": { + "message": "Operating System" + }, + "pages.dumpviewer.geyserver": { + "message": "Geyser Version" + }, + "pages.dumpviewer.geyserver.build": { + "message": "Build" + }, + "pages.dumpviewer.geyserver.commit": { + "message": "Commit Hash" + }, + "pages.dumpviewer.geyserver.branch": { + "message": "Branch" + }, + "pages.dumpviewer.platform": { + "message": "Platform Info" + }, + "pages.dumpviewer.platform.id": { + "message": "Platform Identifier" + }, + "pages.dumpviewer.platform.name": { + "message": "Platform Name" + }, + "pages.dumpviewer.platform.version": { + "message": "Platform Version" + }, + "pages.dumpviewer.platform.apiver": { + "message": "Platform API Version" + }, + "pages.dumpviewer.platform.onlinemode": { + "message": "Online Mode" + }, + "pages.dumpviewer.sysinfo": { + "message": "System Info" + }, + "pages.dumpviewer.cpucount": { + "message": "CPU Count" + }, + "pages.dumpviewer.cpuname": { + "message": "CPU Name" + }, + "pages.dumpviewer.ram": { + "message": "RAM" + }, + "pages.dumpviewer.javaname": { + "message": "Java Name" + }, + "pages.dumpviewer.javavendor": { + "message": "Java Vendor" + }, + "pages.dumpviewer.dockercheck": { + "message": "Uses Docker?" + }, + "pages.dumpviewer.plugins": { + "message": "Plugins" + }, + "pages.dumpviewer.plugins.noplugins": { + "message": "No plugins to show." + }, + "pages.dumpviewer.plugins.helptext": { + "message": "Click on a plugin to view more information." + }, + "pages.dumpviewer.config": { + "message": "Config" + }, + "pages.dumpviewer.viewsource": { + "message": "View dump source" + }, + "theme.ErrorPageContent.title": { + "message": "This page crashed.", + "description": "The title of the fallback page when the page crashed" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "Scroll back to top", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.archive.title": { + "message": "Archive", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "Archive", + "description": "The page & hero description of the blog archive page" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "Blog list page navigation", + "description": "The ARIA label for the blog pagination" + }, + "theme.blog.paginator.newerEntries": { + "message": "Newer Entries", + "description": "The label used to navigate to the newer blog posts page (previous page)" + }, + "theme.blog.paginator.olderEntries": { + "message": "Older Entries", + "description": "The label used to navigate to the older blog posts page (next page)" + }, + "theme.blog.post.paginator.navAriaLabel": { + "message": "Blog post page navigation", + "description": "The ARIA label for the blog posts pagination" + }, + "theme.blog.post.paginator.newerPost": { + "message": "Newer Post", + "description": "The blog post button label to navigate to the newer/previous post" + }, + "theme.blog.post.paginator.olderPost": { + "message": "Older Post", + "description": "The blog post button label to navigate to the older/next post" + }, + "theme.blog.post.plurals": { + "message": "One post|{count} posts", + "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.blog.tagTitle": { + "message": "{nPosts} tagged with \"{tagName}\"", + "description": "The title of the page for a blog tag" + }, + "theme.tags.tagsPageLink": { + "message": "View All Tags", + "description": "The label of the link targeting the tag list page" + }, + "theme.colorToggle.ariaLabel": { + "message": "Switch between dark and light mode (currently {mode})", + "description": "The ARIA label for the navbar color mode toggle" + }, + "theme.colorToggle.ariaLabel.mode.dark": { + "message": "dark mode", + "description": "The name for the dark color mode" + }, + "theme.colorToggle.ariaLabel.mode.light": { + "message": "light mode", + "description": "The name for the light color mode" + }, + "theme.docs.DocCard.categoryDescription.plurals": { + "message": "1 item|{count} items", + "description": "The default description for a category card in the generated index about how many items this category includes" + }, + "theme.docs.breadcrumbs.navAriaLabel": { + "message": "Breadcrumbs", + "description": "The ARIA label for the breadcrumbs" + }, + "theme.docs.paginator.navAriaLabel": { + "message": "Docs pages", + "description": "The ARIA label for the docs pagination" + }, + "theme.docs.paginator.previous": { + "message": "Previous", + "description": "The label used to navigate to the previous doc" + }, + "theme.docs.paginator.next": { + "message": "Next", + "description": "The label used to navigate to the next doc" + }, + "theme.docs.tagDocListPageTitle.nDocsTagged": { + "message": "One doc tagged|{count} docs tagged", + "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.tagDocListPageTitle": { + "message": "{nDocsTagged} with \"{tagName}\"", + "description": "The title of the page for a docs tag" + }, + "theme.docs.versionBadge.label": { + "message": "Version: {versionLabel}" + }, + "theme.docs.versions.unreleasedVersionLabel": { + "message": "This is unreleased documentation for {siteTitle} {versionLabel} version.", + "description": "The label used to tell the user that he's browsing an unreleased doc version" + }, + "theme.docs.versions.unmaintainedVersionLabel": { + "message": "This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.", + "description": "The label used to tell the user that he's browsing an unmaintained doc version" + }, + "theme.docs.versions.latestVersionSuggestionLabel": { + "message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).", + "description": "The label used to tell the user to check the latest version" + }, + "theme.docs.versions.latestVersionLinkLabel": { + "message": "latest version", + "description": "The label used for the latest version suggestion link label" + }, + "theme.common.editThisPage": { + "message": "Edit this page", + "description": "The link label to edit the current page" + }, + "theme.common.headingLinkTitle": { + "message": "Direct link to {heading}", + "description": "Title for link to heading" + }, + "theme.lastUpdated.atDate": { + "message": " on {date}", + "description": "The words used to describe on which date a page has been last updated" + }, + "theme.lastUpdated.byUser": { + "message": " by {user}", + "description": "The words used to describe by who the page has been last updated" + }, + "theme.lastUpdated.lastUpdatedAtBy": { + "message": "Last updated{atDate}{byUser}", + "description": "The sentence used to display when a page has been last updated, and by who" + }, + "theme.NotFound.title": { + "message": "Page Not Found", + "description": "The title of the 404 page" + }, + "theme.navbar.mobileVersionsDropdown.label": { + "message": "Versions", + "description": "The label for the navbar versions dropdown on mobile view" + }, + "theme.tags.tagsListLabel": { + "message": "Tags:", + "description": "The label alongside a tag list" + }, + "theme.AnnouncementBar.closeButtonAriaLabel": { + "message": "Close", + "description": "The ARIA label for close button of announcement bar" + }, + "theme.admonition.caution": { + "message": "caution", + "description": "The default label used for the Caution admonition (:::caution)" + }, + "theme.admonition.danger": { + "message": "danger", + "description": "The default label used for the Danger admonition (:::danger)" + }, + "theme.admonition.info": { + "message": "info", + "description": "The default label used for the Info admonition (:::info)" + }, + "theme.admonition.note": { + "message": "note", + "description": "The default label used for the Note admonition (:::note)" + }, + "theme.admonition.tip": { + "message": "tip", + "description": "The default label used for the Tip admonition (:::tip)" + }, + "theme.admonition.warning": { + "message": "warning", + "description": "The default label used for the Warning admonition (:::warning)" + }, + "theme.blog.sidebar.navAriaLabel": { + "message": "Blog recent posts navigation", + "description": "The ARIA label for recent posts in the blog sidebar" + }, + "theme.CodeBlock.copied": { + "message": "Copied", + "description": "The copied button label on code blocks" + }, + "theme.CodeBlock.copyButtonAriaLabel": { + "message": "Copy code to clipboard", + "description": "The ARIA label for copy code blocks button" + }, + "theme.CodeBlock.copy": { + "message": "Copy", + "description": "The copy button label on code blocks" + }, + "theme.CodeBlock.wordWrapToggle": { + "message": "Toggle word wrap", + "description": "The title attribute for toggle word wrapping button of code block lines" + }, + "theme.DocSidebarItem.expandCategoryAriaLabel": { + "message": "Expand sidebar category '{label}'", + "description": "The ARIA label to expand the sidebar category" + }, + "theme.DocSidebarItem.collapseCategoryAriaLabel": { + "message": "Collapse sidebar category '{label}'", + "description": "The ARIA label to collapse the sidebar category" + }, + "theme.NavBar.navAriaLabel": { + "message": "Main", + "description": "The ARIA label for the main navigation" + }, + "theme.NotFound.p1": { + "message": "We could not find what you were looking for.", + "description": "The first paragraph of the 404 page" + }, + "theme.NotFound.p2": { + "message": "Please contact the owner of the site that linked you to the original URL and let them know their link is broken.", + "description": "The 2nd paragraph of the 404 page" + }, + "theme.navbar.mobileLanguageDropdown.label": { + "message": "Languages", + "description": "The label for the mobile language switcher dropdown" + }, + "theme.TOCCollapsible.toggleButtonLabel": { + "message": "On this page", + "description": "The label used by the button on the collapsible TOC component" + }, + "theme.blog.post.readMore": { + "message": "Read More", + "description": "The label used in blog post item excerpts to link to full blog posts" + }, + "theme.blog.post.readMoreLabel": { + "message": "Read more about {title}", + "description": "The ARIA label for the link to full blog posts from excerpts" + }, + "theme.blog.post.readingTime.plurals": { + "message": "One min read|{readingTime} min read", + "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.breadcrumbs.home": { + "message": "Home page", + "description": "The ARIA label for the home page in the breadcrumbs" + }, + "theme.docs.sidebar.collapseButtonTitle": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.collapseButtonAriaLabel": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.navAriaLabel": { + "message": "Docs sidebar", + "description": "The ARIA label for the sidebar navigation" + }, + "theme.docs.sidebar.closeSidebarButtonAriaLabel": { + "message": "Close navigation bar", + "description": "The ARIA label for close button of mobile sidebar" + }, + "theme.docs.sidebar.expandButtonTitle": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.docs.sidebar.expandButtonAriaLabel": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": { + "message": "← Back to main menu", + "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)" + }, + "theme.docs.sidebar.toggleSidebarButtonAriaLabel": { + "message": "Toggle navigation bar", + "description": "The ARIA label for hamburger menu button of mobile navigation" + }, + "theme.SearchBar.seeAll": { + "message": "See all {count} results" + }, + "theme.SearchPage.documentsFound.plurals": { + "message": "One document found|{count} documents found", + "description": "Pluralized label for \"{count} documents found\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.SearchPage.existingResultsTitle": { + "message": "Search results for \"{query}\"", + "description": "The search page title for non-empty query" + }, + "theme.SearchPage.emptyResultsTitle": { + "message": "Search the documentation", + "description": "The search page title for empty query" + }, + "theme.SearchPage.inputPlaceholder": { + "message": "Type your search here", + "description": "The placeholder for search page input" + }, + "theme.SearchPage.inputLabel": { + "message": "Search", + "description": "The ARIA label for search page input" + }, + "theme.SearchPage.algoliaLabel": { + "message": "Search by Algolia", + "description": "The ARIA label for Algolia mention" + }, + "theme.SearchPage.noResultsText": { + "message": "No results were found", + "description": "The paragraph for empty search result" + }, + "theme.SearchPage.fetchingNewResults": { + "message": "Fetching new results...", + "description": "The paragraph for fetching new search results" + }, + "theme.SearchBar.label": { + "message": "Search", + "description": "The ARIA label and placeholder for search button" + }, + "theme.SearchModal.searchBox.resetButtonTitle": { + "message": "Clear the query", + "description": "The label and ARIA label for search box reset button" + }, + "theme.SearchModal.searchBox.cancelButtonText": { + "message": "Cancel", + "description": "The label and ARIA label for search box cancel button" + }, + "theme.SearchModal.startScreen.recentSearchesTitle": { + "message": "Recent", + "description": "The title for recent searches" + }, + "theme.SearchModal.startScreen.noRecentSearchesText": { + "message": "No recent searches", + "description": "The text when no recent searches" + }, + "theme.SearchModal.startScreen.saveRecentSearchButtonTitle": { + "message": "Save this search", + "description": "The label for save recent search button" + }, + "theme.SearchModal.startScreen.removeRecentSearchButtonTitle": { + "message": "Remove this search from history", + "description": "The label for remove recent search button" + }, + "theme.SearchModal.startScreen.favoriteSearchesTitle": { + "message": "Favorite", + "description": "The title for favorite searches" + }, + "theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle": { + "message": "Remove this search from favorites", + "description": "The label for remove favorite search button" + }, + "theme.SearchModal.errorScreen.titleText": { + "message": "Unable to fetch results", + "description": "The title for error screen of search modal" + }, + "theme.SearchModal.errorScreen.helpText": { + "message": "You might want to check your network connection.", + "description": "The help text for error screen of search modal" + }, + "theme.SearchModal.footer.selectText": { + "message": "to select", + "description": "The explanatory text of the action for the enter key" + }, + "theme.SearchModal.footer.selectKeyAriaLabel": { + "message": "Enter key", + "description": "The ARIA label for the Enter key button that makes the selection" + }, + "theme.SearchModal.footer.navigateText": { + "message": "to navigate", + "description": "The explanatory text of the action for the Arrow up and Arrow down key" + }, + "theme.SearchModal.footer.navigateUpKeyAriaLabel": { + "message": "Arrow up", + "description": "The ARIA label for the Arrow up key button that makes the navigation" + }, + "theme.SearchModal.footer.navigateDownKeyAriaLabel": { + "message": "Arrow down", + "description": "The ARIA label for the Arrow down key button that makes the navigation" + }, + "theme.SearchModal.footer.closeText": { + "message": "to close", + "description": "The explanatory text of the action for Escape key" + }, + "theme.SearchModal.footer.closeKeyAriaLabel": { + "message": "Escape key", + "description": "The ARIA label for the Escape key button that close the modal" + }, + "theme.SearchModal.footer.searchByText": { + "message": "Search by", + "description": "The text explain that the search is making by Algolia" + }, + "theme.SearchModal.noResultsScreen.noResultsText": { + "message": "No results for", + "description": "The text explains that there are no results for the following search" + }, + "theme.SearchModal.noResultsScreen.suggestedQueryText": { + "message": "Try searching for", + "description": "The text for the suggested query when no results are found for the following search" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsText": { + "message": "Believe this query should return results?", + "description": "The text for the question where the user thinks there are missing results" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsLinkText": { + "message": "Let us know.", + "description": "The text for the link to report missing results" + }, + "theme.SearchModal.placeholder": { + "message": "Search docs", + "description": "The placeholder of the input of the DocSearch pop-up modal" + }, + "theme.ErrorPageContent.tryAgain": { + "message": "Try again", + "description": "The label of the button to try again rendering when the React error boundary captures an error" + }, + "theme.common.skipToMainContent": { + "message": "Skip to main content", + "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation" + }, + "theme.tags.tagsPageTitle": { + "message": "Tags", + "description": "The title of the tag list page" + }, + "pages.download.description.hurricane": { + "message": "A plugin with various workarounds for Geyser players that modify the server in order to achieve their goal." + }, + "theme.blog.author.pageTitle": { + "message": "{authorName} - {nPosts}", + "description": "The title of the page for a blog author" + }, + "theme.blog.authorsList.pageTitle": { + "message": "Authors", + "description": "The title of the authors page" + }, + "theme.blog.authorsList.viewAll": { + "message": "View all authors", + "description": "The label of the link targeting the blog authors page" + }, + "theme.blog.author.noPosts": { + "message": "This author has not written any posts yet.", + "description": "The text for authors with 0 blog post" + }, + "theme.contentVisibility.unlistedBanner.title": { + "message": "Unlisted page", + "description": "The unlisted content banner title" + }, + "theme.contentVisibility.unlistedBanner.message": { + "message": "This page is unlisted. Search engines will not index it, and only users having a direct link can access it.", + "description": "The unlisted content banner message" + }, + "theme.contentVisibility.draftBanner.title": { + "message": "Draft page", + "description": "The draft content banner title" + }, + "theme.contentVisibility.draftBanner.message": { + "message": "This page is a draft. It will only be visible in dev and be excluded from the production build.", + "description": "The draft content banner message" + }, + "mdx.setup.host_provider": { + "message": "Host Provider" + }, + "mdx.setup.self_host": { + "message": "Self Host" + }, + "mdx.setup.paper_spigot": { + "message": "Paper / Spigot" + }, + "mdx.setup.modded_servers": { + "message": "Modded Servers" + }, + "mdx.setup.proxy_servers": { + "message": "Proxy Servers" + }, + "mdx.setup.viaproxy": { + "message": "ViaProxy" + }, + "mdx.setup.standalone": { + "message": "Standalone" + }, + "pages.download.description.offhandextension": { + "message": "An extension that allows Bedrock players to switch their offhand and mainhand item by emoting." + }, + "pages.download.description.rainbow": { + "message": "A Minecraft mod to generate Geyser item mappings and bedrock resourcepacks for use with Geyser's custom item API (v2)." + }, + "pages.download.description.hydraulic": { + "message": "A companion mod to Geyser which allows for Bedrock players to join modded Minecraft: Java Edition servers." + }, + "pages.download.description.thunder": { + "message": "A java application to convert simple Java Edition resource packs to Bedrock Edition ones." + }, + "pages.dumpviewer.extensions": { + "message": "Extensions" + }, + "pages.dumpviewer.extensions.noextensions": { + "message": "No extensions to show." + }, + "pages.dumpviewer.extensions.helptext": { + "message": "Click on an extension to view more information." + }, + "mdx.setup.fabric": { + "message": "Fabric" + }, + "mdx.setup.neoforge": { + "message": "NeoForge" + }, + "mdx.setup.installing_geyser": { + "message": "Installing Geyser" + }, + "mdx.setup.download_jar": { + "message": "Download {jarName}." + }, + "mdx.setup.place_jar": { + "message": "Place the {jarName} in the {jarDirectory} folder." + }, + "mdx.setup.restart_server": { + "message": "Restart the server." + }, + "mdx.setup.additional_steps": { + "message": "Additional Steps" + }, + "mdx.setup.connecting_on_bedrock": { + "message": "Connecting on Bedrock" + }, + "providers.config.templates.java_address": { + "message": "Set `address` in the `bedrock` section to the public address of the Java server." + }, + "providers.config.templates.custom_port_dedicated_ip": { + "message": "This host may only give out a separate port with a dedicated IP address." + }, + "providers.warnings.ovh_firewall_misconfig": { + "message": "To fix random `Unable to Connect` issues, see [here](/wiki/geyser/port-forwarding/#ovh-and-soyoustart)." + }, + "providers.config.templates.install_location.plugin_list": { + "message": "Install Geyser through the plugin or mod list provided by the host." + }, + "providers.config.templates.install_location.enable_bedrock_crossplay": { + "message": "Select the 'Enable Bedrock crossplay?' option when changing your server software to automatically install and configure Geyser and Floodgate." + }, + "providers.config.templates.info.geyser_installed_by_default": { + "message": "Geyser is installed and configured on all servers by default." + }, + "mdx.setup.checking_server_version": { + "message": "Checking your server version" + }, + "mdx.setup.restart_geyser": { + "message": "Restart Geyser." + }, + "mdx.setup.https_note": { + "message": "Unless signaling runs over {https}, Minecraft asks players whether they trust the server the first time they join." + }, + "mdx.setup.configuring_geyser": { + "message": "Configuring Geyser" + }, + "mdx.setup.open_config_simple": { + "message": "Now open the file {configLocation}. Find the part that starts with {bedrock}, and change the lines shown below." + }, + "mdx.setup.preconfigured": { + "message": "No changes needed. {name} automatically configures Geyser." + }, + "mdx.setup.transport_nethernet_simple": { + "message": "NetherNet is supported fully by 26.50+. If you'd like to also have working MOTD and player count for older versions, you will need to set up both NetherNet and Raknet." + }, + "mdx.setup.transport_both_compat": { + "message": "Also accepts RakNet, for additional compatibility: some Bedrock versions, such as 26.40, fetch the server's MOTD and player count over RakNet. This option needs a separate UDP port for NetherNet." + }, + "mdx.setup.placeholder_word": { + "message": "Replace this" + }, + "mdx.setup.replace_with_simple": { + "message": "With this" + }, + "mdx.setup.placeholder_java_port": { + "message": "The port of the Java server." + }, + "mdx.setup.placeholder_java_port_udp": { + "message": "A UDP port for NetherNet, other than {port}. This can be the Java server's port: the Java server only uses it over TCP, so Geyser can use it over UDP. Any other available UDP port works too." + }, + "mdx.setup.placeholder_second_available_port": { + "message": "An available UDP port for NetherNet, other than {port}. Open it for UDP." + }, + "mdx.setup.raknet_on_port": { + "message": "RakNet uses {port} over UDP, so that port has to be open for UDP as well." + }, + "mdx.setup.summary.nethernet_reported_generic": { + "message": "Reported to work with NetherNet" + }, + "mdx.setup.summary.supporter_configures": { + "message": "{name} configures Geyser for you automatically, including NetherNet." + }, + "mdx.setup.summary.updated": { + "message": "Instructions last updated on {date}" + }, + "mdx.setup.badge.gold": { + "message": "Gold supporter" + }, + "mdx.setup.badge.silver": { + "message": "Silver supporter" + }, + "mdx.setup.badge.bronze": { + "message": "Bronze supporter" + }, + "mdx.setup.unconfirmed_title": { + "message": "Not checked for NetherNet yet" + }, + "mdx.setup.warning_title": { + "message": "Warning" + }, + "mdx.setup.unconfirmed_reach_out_update": { + "message": "These instructions have not been checked for NetherNet yet. If Bedrock players can't join, reach out to {name} to get instructions on how to use Geyser, and let us know on {discord} so we can update this guide." + }, + "mdx.setup.try_not_listed": { + "message": "If your host cannot give you a separate port, follow the {notListed} instead. Players then join through {warden}, an external signaling service." + }, + "mdx.setup.try_not_listed.link": { + "message": "\"Not listed\" guide for using only the Java server's port" + }, + "mdx.setup.no_signaling": { + "message": "{name} supports neither built-in nor external signaling, so Bedrock players cannot connect over NetherNet." + }, + "mdx.setup.hosting_provider_article_short": { + "message": "Host's Geyser guide" + }, + "mdx.setup.hosting_provider_website_short": { + "message": "Website" + }, + "mdx.setup.hosting_provider_support_short": { + "message": "Support" + }, + "mdx.setup.hosting_provider_discord_short": { + "message": "Discord" + }, + "mdx.setup.not_listed.tab_allocated": { + "message": "I can allocate ports" + }, + "mdx.setup.not_listed.tab_java_only": { + "message": "I only have the Java server port" + }, + "components.provider.open_collaboration_group": { + "message": "Hosts that support Geyser's development" + }, + "components.provider.other_group": { + "message": "Other providers" + }, + "mdx.setup.connect.port_java": { + "message": "Your Java server's port" + }, + "mdx.setup.connect.port_config_step": { + "message": "The port you set in \"Configuring Geyser\"" + }, + "mdx.setup.connect.intro": { + "message": "In Minecraft: Bedrock Edition, go to Play, then Servers, and select Add Server. Fill it in like this:" + }, + "mdx.setup.connect.add_server": { + "message": "Add Server" + }, + "mdx.setup.connect.server_name": { + "message": "Server Name" + }, + "mdx.setup.connect.server_name_value": { + "message": "Anything you like" + }, + "mdx.setup.connect.server_address": { + "message": "Server Address" + }, + "mdx.setup.connect.server_address_value": { + "message": "Your Java server's address" + }, + "mdx.setup.connect.port": { + "message": "Port" + }, + "mdx.setup.transport_nethernet_tab": { + "message": "NetherNet" + }, + "mdx.setup.transport_both_tab": { + "message": "NetherNet and RakNet" + }, + "providers.ports.assign": { + "message": "Assign a port in your host's panel, open for both TCP and UDP." + }, + "providers.ports.allocated": { + "message": "Pick an available port from the ports allocated to your server, open for both TCP and UDP." + }, + "providers.ports.ask_host": { + "message": "Ask your host for a port that is open for both TCP and UDP." + }, + "pages.hosting.tier.gold": { + "message": "Gold supporters" + }, + "pages.hosting.tier.silver": { + "message": "Silver supporters" + }, + "pages.hosting.tier.bronze": { + "message": "Bronze supporters" + }, + "pages.hosting.card.website": { + "message": "Website" + }, + "pages.hosting.card.setup": { + "message": "Setup guide" + }, + "pages.hosting.title": { + "message": "Hosting Providers" + }, + "pages.hosting.subheading": { + "message": "Hosting providers that support the development of Geyser." + }, + "pages.hosting.intro": { + "message": "The hosts below support Geyser and related projects through {openCollaboration}. Their support helps fund work on Geyser, such as keeping up with major changes to Bedrock Edition, like the switch to NetherNet. All hosts listed below also configure Geyser automatically when installed, making using Geyser easier than ever. We'd like to thank them all for their support." + }, + "pages.hosting.empty": { + "message": "No hosting providers are listed yet." + }, + "pages.hosting.other.title": { + "message": "Using another host?" + }, + "pages.hosting.other.text": { + "message": "Hosts not being listed here does not mean Geyser won't run there. The {setupGuide} includes community collected notes for many other hosts, and general instructions for those not listed." + }, + "pages.hosting.other.setup_guide": { + "message": "setup guide" + }, + "pages.hosting.meta.title": { + "message": "Hosting Providers" + }, + "pages.hosting.meta.description": { + "message": "Hosting providers that support the development of Geyser through Open Collaboration." + }, + "pages.download.description.floodgatedatabases": { + "message": "Database extension jars for Floodgate local linking." + }, + "providers.ports.from_host": { + "message": "The Bedrock port your host shows you." + }, + "providers.config.templates.info.only_serves_region": { + "message": "This host only provides service in {region}." + }, + "mdx.setup.velocity": { + "message": "Velocity" + }, + "mdx.setup.bungeecord": { + "message": "BungeeCord" + }, + "providers.ports.new_port": { + "message": "Open a new port in your server panel, open for both TCP and UDP, or ask your host for one if the panel has no option for it." + }, + "mdx.setup.supported_versions": { + "message": "Supported versions" + }, + "mdx.setup.restart_velocity": { + "message": "Restart Velocity." + }, + "mdx.setup.restart_bungeecord": { + "message": "Restart BungeeCord." + }, + "mdx.setup.restart_viaproxy": { + "message": "Restart ViaProxy." + }, + "mdx.setup.fabric_dependency": { + "message": "If it is not installed already, download {fabricApi} and place it in the same folder." + }, + "mdx.setup.version_step_viaversion": { + "message": "If your server is not running {version}, you will need to install {viaVersion}. For more information, see {supportedVersions}." + }, + "mdx.setup.version_step_proxy": { + "message": "All servers on the network must accept {version} Java clients, as Geyser imitates one." + }, + "mdx.setup.proxy_install_only": { + "message": "Install Geyser only on the {proxy} server! You can install Floodgate on all servers for better skin support and network-wide Floodgate API availability for other plugins." + }, + "mdx.setup.modded_requirements": { + "message": "{jarName} runs only on a {version} server, and only works alongside server-side mods. Mods that players also need to install on their client will not work. See {supportedVersions} for more details." + }, + "mdx.setup.self_port_choice": { + "message": "Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP, so it cannot be the port of the {platform} server." + }, + "mdx.setup.self_port_choice_standalone": { + "message": "Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP." + }, + "mdx.setup.self_port_sharing": { + "message": "{important}: No other program can use the Geyser port, over either protocol. This includes programs that use UDP, such as voice chat mods or Query, and programs that use TCP, such as another server, a web map, or a website." + }, + "mdx.setup.self_port_sharing.important": { + "message": "Important" + }, + "mdx.setup.connect_local_title": { + "message": "Connecting from the same network" + }, + "mdx.setup.connect_local": { + "message": "On the same device as the server, connect with {localhost} or {loopback} as the address. Other devices in the same local network can use your local IPv4 address, which starts with {ten} or {oneNineTwo}." + }, + "mdx.setup.connect_lan": { + "message": "Alternatively, open Minecraft: Bedrock Edition and join the LAN server in the {friends} tab." + }, + "mdx.setup.connect_lan.friends": { + "message": "Friends" + }, + "mdx.setup.connect_remote_title": { + "message": "Connecting from a different network" + }, + "mdx.setup.connect_remote": { + "message": "To let players from outside your network join, you need to make the Geyser port reachable from the internet." + }, + "mdx.setup.connect_tcp_udp": { + "message": "The Geyser port has to be forwarded for both TCP and UDP. Before NetherNet, forwarding UDP was enough. Now, players use TCP to find your server and UDP to play on it, so without TCP your server will not show up. If you use the \"NetherNet and RakNet\" option, also forward the {webrtcPort} for UDP." + }, + "mdx.setup.connect_options": { + "message": "You have two options:" + }, + "mdx.setup.connect_port_forwarding": { + "message": "{portForwarding}: open the Geyser port (e.g. 19132) for both TCP and UDP in your router and in your firewall. Players then connect with your public IPv4 address and the port. For detailed steps, see {guide}." + }, + "mdx.setup.connect_port_forwarding.title": { + "message": "Port forwarding" + }, + "mdx.setup.connect_port_forwarding.guide": { + "message": "Port forwarding" + }, + "mdx.setup.connect_playit": { + "message": "{playit}: if you cannot open a port, or do not want to expose your home IP address, playit.gg can create a tunnel for you. See {guide}. That guide was written for RakNet. For NetherNet, see {status}. Ngrok does not work, since it does not support UDP." + }, + "mdx.setup.connect_playit.guide": { + "message": "playit.gg Setup" + }, + "mdx.setup.connect_playit.status": { + "message": "NetherNet support on playit.gg" + }, + "mdx.setup.https_step_title": { + "message": "Recommended: Set up HTTPS for signaling" + }, + "mdx.setup.https_step": { + "message": "Geyser's built-in signaling server uses plain HTTP by default, so Minecraft shows players a \"Trust on First Use?\" prompt the first time they join. To avoid this prompt, serve signaling over HTTPS, as explained in {httpsGuide}. Some external signaling services, such as {warden}, provide HTTPS as well." + }, + "mdx.setup.https_step.guide": { + "message": "HTTPS for NetherNet" + }, + "mdx.setup.floodgate_info": { + "message": "To allow Bedrock Edition players to join your server without a paid Java Edition account, you can use {floodgate}." + }, + "mdx.setup.viaproxy_not_plugin.title": { + "message": "ViaProxy is not a plugin or mod" + }, + "mdx.setup.viaproxy_not_plugin": { + "message": "ViaProxy is a standalone program that runs separately from your Minecraft server. Do not put the ViaProxy jar into your server's {plugins} or {mods} folder. To run Geyser as a plugin or mod on your server instead, pick your server software in the tabs above." + }, + "mdx.setup.viaproxy_setup": { + "message": "Set up {viaProxy}." + }, + "mdx.setup.viaproxy_accounts": { + "message": "If you use the ViaProxy GUI, you can use its account management to join online mode servers with Bedrock Edition. If you use the ViaProxy CLI and want Bedrock players to join your online mode server, install and set up {floodgate}." + }, + "mdx.setup.viaproxy_auth_type": { + "message": "ViaProxy manages the {authType} setting itself, so its value in the config is ignored." + }, + "mdx.setup.standalone_java": { + "message": "You need Java 21 or newer to run Geyser. To run Geyser Standalone on Android, see the end of this page." + }, + "mdx.setup.standalone_not_plugin": { + "message": "Geyser Standalone is not a plugin or mod. It is a separate Java program that runs alongside your Java Edition server." + }, + "mdx.setup.standalone_download": { + "message": "Download {standalone}." + }, + "mdx.setup.standalone_folder": { + "message": "Create a new folder for Geyser, and put the jar in it." + }, + "mdx.setup.standalone_start": { + "message": "Start Geyser Standalone:" + }, + "mdx.setup.standalone_gui": { + "message": "{gui} (recommended): double-click the jar file. Geyser creates all the files it needs." + }, + "mdx.setup.standalone_console": { + "message": "{console}: create a startup script, like the one you would use for a Paper server. See {startupScript} for what to put into it. Run it, and Geyser creates all the files it needs." + }, + "mdx.setup.standalone_console.console": { + "message": "Console" + }, + "mdx.setup.standalone_console.startup_script": { + "message": "Creating a Startup Script" + }, + "mdx.setup.standalone_remote_intro": { + "message": "To choose which Java Edition server Geyser Standalone sends players to, find the {java} section:" + }, + "mdx.setup.standalone_remote": { + "message": "Change {address} to the Java server's address, or leave it as it is if the server runs on the same machine as Geyser. Then change {port} to the Java server's port. Set {authType} to {floodgate} if you set up Floodgate on the Java server, otherwise to {online} for an online mode server or {offline} for an offline mode server. To use Floodgate with Geyser Standalone, see {floodgateSetup}." + }, + "mdx.setup.standalone_remote.floodgate_setup": { + "message": "Floodgate Setup" + }, + "mdx.setup.standalone_android_title": { + "message": "Running Geyser Standalone on Android" + }, + "mdx.setup.standalone_android_caution": { + "message": "Apps such as Termux can run Geyser on Android, but how well this works depends on how powerful your device is. Do so at your own risk." + }, + "mdx.setup.standalone_termux_install": { + "message": "Download and install {termux}." + }, + "mdx.setup.run_command": { + "message": "Run {command}." + }, + "mdx.setup.standalone_termux_script": { + "message": "Alternatively, there is an automated setup script for clean Termux installs. It might not work for everyone, so try it if the steps above do not work:" + } +} \ No newline at end of file diff --git a/i18n/uk/docusaurus-plugin-content-blog/options.json b/i18n/uk/docusaurus-plugin-content-blog/options.json new file mode 100644 index 0000000..9fa6586 --- /dev/null +++ b/i18n/uk/docusaurus-plugin-content-blog/options.json @@ -0,0 +1,10 @@ +{ + "description": { + "message": "Blog", + "description": "The description for the blog used in SEO" + }, + "sidebar.title": { + "message": "Recent posts", + "description": "The label for the left sidebar" + } +} \ No newline at end of file diff --git a/i18n/uk/docusaurus-plugin-content-docs/current.json b/i18n/uk/docusaurus-plugin-content-docs/current.json new file mode 100644 index 0000000..cb3914c --- /dev/null +++ b/i18n/uk/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,34 @@ +{ + "version.label": { + "message": "Next", + "description": "The label for version current" + }, + "sidebar.geyserSidebar.category.Setup": { + "message": "Setup", + "description": "The label for category Setup in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Common Issues": { + "message": "Common Issues", + "description": "The label for category Common Issues in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Configuring Geyser": { + "message": "Configuring Geyser", + "description": "The label for category Configuring Geyser in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.FAQ": { + "message": "FAQ", + "description": "The label for category FAQ in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Geyser API": { + "message": "Geyser API", + "description": "The label for category Geyser API in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.link.Hosting Providers": { + "message": "Hosting Providers", + "description": "The label for link Hosting Providers in sidebar geyserSidebar, linking to /hosting" + }, + "sidebar.geyserSidebar.category.Custom Content": { + "message": "Custom Content", + "description": "The label for category Custom Content in sidebar geyserSidebar" + } +} \ No newline at end of file diff --git a/i18n/uk/docusaurus-plugin-content-docs/current/geyser/commands.md b/i18n/uk/docusaurus-plugin-content-docs/current/geyser/commands.md new file mode 100644 index 0000000..0492482 --- /dev/null +++ b/i18n/uk/docusaurus-plugin-content-docs/current/geyser/commands.md @@ -0,0 +1,83 @@ +--- +title: Commands and Permissions +description: Commands and their associated permission nodes for Geyser. +crowdin_sync: true +crowdin_page_id: cd92ff4f-9105-46a2-8696-8b0e2f8b9d31 +--- + +# Commands and Permissions + +Geyser features many built-in commands that can be used by players or server owners. + +:::info + +When using BungeeCord and Velocity, you will need to use a permission plugin such as [LuckPerms](https://luckperms.net/) +on the proxy server to assign permissions to players. Assigning permissions on the backend servers will not work. + +::: + +## Geyser commands & their permissions {#geyser-commands--their-permissions} + +| Command | Permission | Description | +| :-----------------------------------: | :---------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | +| `geyser`
Geyser root command | `geyser.command` | The permission required to see/run any Geyser commands. | +| `geyser help`
`geyser ?` | `geyser.command.help` | Shows help for all registered commands. | +| `geyser advancements` | `geyser.command.advancements` | Open the Java advancements menu. | +| `geyser dump` | `geyser.command.dump` | Dumps Geyser debug information for bug reports. | +| `geyser list` | `geyser.command.list` | List all players connected through Geyser. | +| `geyser nethernet` | `geyser.command.nethernet` | Shows NetherNet signaling status and diagnostics, for use with external signaling. | +| `geyser offhand` | `geyser.command.offhand` | Puts an item in your offhand. | +| `geyser reload` | `geyser.command.reload` | Reloads the Geyser configurations. Kicks all players when used! | +| `geyser settings` | `geyser.command.settings` | Opens a settings menu allowing you to modify aspects of the world. | +| `geyser shutdown`
`geyser stop` | `geyser.command.shutdown` | Shuts down Geyser.
*This command only works on Standalone.* | +| `geyser statistics` | `geyser.command.statistics` | Open the Java statistics menu. | +| `geyser version` | `geyser.command.version` | Shows the current Geyser version and checks for updates. | +| `geyser tooltips` | `geyser.command.tooltips` | Toggle showing Advanced Tooltips (F3 + H on Java) | +| `geyser extensions` | `geyser.command.extensions` | Lists all currently loaded extensions. This command is only registered if any extensions are loaded. | +| `geyser ping` | `geyser.command.ping` | Shows the ping between the player and the Geyser instance. | +| `geyser options` | `geyser.command.options` | Opens the "pause screen additions" dialogue, if sent by the Java server | +| `geyser quickactions` | `geyser.command.quickactions` | Opens the "quick actions" dialogue, if sent by the Java server. | + +## Permissions for Geyser extensions {#extension-permissions} + +For the following, `` refers to the extensions' id. + +| Command | Permission | Description | +| :------------------------- | :---------------------------- | :------------------------------------------------------------------------ | +| ` help`
` ?` | `geyser.command.exthelp.` | Shows help for all commands registered by this extension. | + +## Other Permissions {#other-permissions} + +Besides commands, there are other permissions that are used to guard specific Geyser features. + +| Permission | Description | +| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `geyser.settings.server` | Allow players to use the [game settings menu](/img/wiki/game_menu.png). (Also requires player to have op.) | +| `geyser.settings.gamerules` | Defines whether a user can alter gamerules in the [game settings menu](/img/wiki/game_menu.png). (Also requires player to have op.) | +| `geyser.update` | Whether this player will receive Geyser update notifications upon joining. | + +## Permissions when using Geyser-Standalone/Geyser-ViaProxy {#standalone-viaproxy-permissions} + +Geyser-ViaProxy and Geyser-Standalone feature their own basic permission handler. To edit base permissions, +open the `permissions.yml` file and add or remove permissions that Geyser players should receive when joining. +See the file for more information. + +You can further customize permission handling by creating a [Geyser extension](/wiki/geyser/extensions/) that makes use of Geysers API +to deal with permission checking. + +## Permissions when using Geyser on platforms without permission handlers {#permissions-platforms-no-permission-handlers} + +The following affects Geyser-BungeeCord, Geyser-Velocity, and Geyser-Fabric. +These platforms unfortunately do not have built-in permission handlers. Because of that, you will need to grant permissions on those platforms +manually using permission handlers, such as [LuckPerms](https://luckperms.net/). Geyser's permission are listed above. For extension permissions, consult their documentation. + +Alternatively, you can use [LuckLink](https://github.com/onebeastchris/LuckLink), a third-party Geyser extension, to automatically register permissions using [LuckPerms](https://luckperms.net/). + +- Install [LuckPerms](https://luckperms.net/) on the platform where you've installed Geyser (BungeeCord/Velocity/Fabric). +- To allow Geyser to automatically register permission defaults, install the [LuckLink](https://github.com/onebeastchris/LuckLink) Geyser extension + by downloading the `LuckLink.jar` and adding it to Geyser's `extensions` folder. +- Restart the server, and permissions should be automatically registered. + +## Floodgate commands and permissions {#floodgate-commands-and-permissions} + +For Floodgate commands, see [here](/wiki/floodgate/commands/). diff --git a/i18n/uk/docusaurus-plugin-content-docs/current/geyser/playit-gg.md b/i18n/uk/docusaurus-plugin-content-docs/current/geyser/playit-gg.md new file mode 100644 index 0000000..7d20bd3 --- /dev/null +++ b/i18n/uk/docusaurus-plugin-content-docs/current/geyser/playit-gg.md @@ -0,0 +1,62 @@ +--- +title: playit.gg Setup +description: How to set up playit.gg to use Geyser without port forwarding. +crowdin_sync: true +crowdin_page_id: 3aee52d0-b943-4e37-8797-4a83ef55e42a +--- + +## Prerequisites {#prerequisites} + +:::info +You must be able to connect to your Geyser instance locally! +::: + +:::warning +The playit.gg Minecraft server plugin does not support UDP tunnels. You will need to use the program agent instead! +::: + +:::caution +This guide was written for RakNet, and does not cover NetherNet. For NetherNet, see [playit.gg's progress on NetherNet support](https://status.playit.gg/3/adding-nethernet-support). +::: + +## Setup {#setup} + +1. Head over to [playit.gg's website](https://playit.gg/) - download the program & run it. +2. The program will provide a claiming link. Visit that link, log in. + ![img](/img/wiki/playit-gg/playit_claim.png) +3. Confirm your agent. + ![img](/img/wiki/playit-gg/playit_claim_confirm.png) +4. Add the agent. + ![img](/img/wiki/playit-gg/playit_add_agent.png) +5. After the agent is created, create a tunnel. + ![img](/img/wiki/playit-gg/playit_add_tunnel.png) +6. Name your tunnel and click Next. + ![img](/img/wiki/playit-gg/playit_name_tunnel.png) +7. Select "Minecraft Bedrock" as the tunnel type and click Next. + ![img](/img/wiki/playit-gg/playit_tunnel_type.png) +8. Select the Free Network and click Next. + ![img](/img/wiki/playit-gg/playit_select_network.png) + **Do not change your Geyser port in `config.yml` unless you have a reason (for example, hosting another Geyser server on the same machine).** The Bedrock (Geyser) port in `config.yml` and the playit.gg ports are separate. playit.gg will forward its port to the default Geyser port and should work as-is. Changing it can cause errors. If you have changed your config port, set the Bedrock port back to the default `19132` and ensure `clone-remote-port` is `false`. +9. If the playit.gg agent and Geyser are running on the same device, leave the IP as `127.0.0.1` and set the port to whatever you configured in Geyser's config. + ![img](/img/wiki/playit-gg/playit_set_ipandport.png) +10. Select `proxy-protocol-v2` for the Proxy Protocol section and click Next. +11. In the Geyser config, under `advanced:` `bedrock:`, set `use-haproxy-protocol` to `true`. +12. Click Create Tunnel and wait for the tunnel to be created. + ![img](/img/wiki/playit-gg/playit_create_tunnel.png) +13. Copy your tunnel's port. For example, if your tunnel address is `visiting-phone.gl.at.ply.gg:6695`, then `6695` is the tunnel port. +14. In the Geyser config under `advanced:` `bedrock:`, set `broadcast-port` to your tunnel port (`6695` in the example). +15. Save your config. Start your Minecraft server and connect using your tunnel's IP and port. +16. If you join successfully, then you are done! Make sure to leave the playit.gg program running as closing it will close the tunnel. You also may want to ratelimit individual connections - use the "Per Connection Rate Limit" option to do so. + (If you failed to join, check out the [troubleshooting](#troubleshooting) section of the page.) + +## Troubleshooting {#troubleshooting} + +### I can't connect to my server! {#i-cant-connect-to-my-server} + +- *Try going to the Agents page, set your agent to IPv4 only, and change the region. You may need to switch regions a few times before you can connect.* +- *Are there errors in your minecraft server console?* +- *Unless you manually changed the "Local Port" on the playit.gg website, in Geyser config, ensure that the bedrock port is the default of `19132` and that `clone-remote-port` is `false`.* +- *If you changed the `bedrock-port` or set `clone-remote-port` to `true` and have a reason for doing so (e.g. hosting another Geyser server on the same machine), you'll have to tell playit.gg to use that port instead! See the last paragraph in step 8.* +- *Check that you're joining with playit.gg's IP and port from the "Allocation" tab.* +- *Make sure that you have the program agent open while trying to join.* +- *See [here](/wiki/geyser/fixing-unable-to-connect-to-world/) for general troubleshooting steps.* diff --git a/i18n/uk/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md b/i18n/uk/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md new file mode 100644 index 0000000..492774c --- /dev/null +++ b/i18n/uk/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md @@ -0,0 +1,208 @@ +--- +title: Port forwarding +description: Information on how to set up port forwarding required for Geyser. +crowdin_sync: true +crowdin_page_id: be7c5a22-1e8e-4ffe-8d13-7d763dd75886 +--- + +# Port forwarding {#port-forwarding} + +This page contains information on how to set up port forwarding required for Geyser to work when self-hosting. +There are also guides for specific configurations, such as Docker/Pterodactyl, or on specific VPS/KVM providers, such as OVH or Oracle Cloud. + +:::caution + +If you are using a Minecraft server hosting provider (e.g. Aternos, or Nodecraft), you should refer to the hosting provider setup on the [setup](/wiki/geyser/setup) page instead. + +::: + +:::info Ports that need to be opened +With NetherNet, the Geyser port (by default 19132) has to be open for **both TCP and UDP**: players find the server over TCP (signaling), and play on it over UDP. +If you use the "NetherNet and RakNet" option, also open the `webrtc-port` for UDP. +With external signaling, such as [Warden](https://warden.cloud), only UDP for WebRTC is needed. +::: + +## Port forwarding on Linux/Windows/macOS {#port-forwarding-on-linuxwindowsmacos} + +To allow others to play on your server, you will need to set up port forwarding on the device hosting Geyser. +Additionally, you will need to port forward the port on your router/modem (in other words, allow and route traffic on that port to the proper machine) if you want the server to be accessible outside your own home network. +Forward it for both TCP and UDP; many routers offer a "TCP/UDP" or "Both" option for this. +See [here](https://www.howtogeek.com/66214/how-to-forward-ports-on-your-router/) or [here](https://www.lifewire.com/how-to-port-forward-4163829) for helpful guides. +Do note: if you do not have a static IP address, your IP address may change over time. + +:::info + +Some ISPs (Internet Service Providers) block certain ports, or don't allow you to open ports (e.g. by using CGNAT, which doesn't allow you to open a port with a dynamic IP). +Other ISPs may require you to pay extra for a static IP address. +As an alternative to port forwarding, you can use [playit.gg](/wiki/geyser/playit-gg/) to create a tunnel. + +::: + +### Windows {#windows} + +To open a port on Windows, you will need to open the port through the Windows Firewall. There are multiple ways to do this: + +- `Powershell` (recommended) + + To open a port on TCP and UDP (in our example, port 19132), run the following commands in an administrator Powershell: + + ```powershell + New-NetFirewallRule -DisplayName "Geyser (TCP)" -Direction Inbound -Protocol TCP -LocalPort 19132 -Action Allow + New-NetFirewallRule -DisplayName "Geyser (UDP)" -Direction Inbound -Protocol UDP -LocalPort 19132 -Action Allow + ``` + + Running these commands creates two rules that allow TCP and UDP traffic on port 19132. + +- Windows Defender Firewall with Advanced Security (GUI) + 1. Search for "Windows Defender Firewall with Advanced Security" in the start menu, and open it. ([Image](/img/wiki/port-forwarding/windows-1.png)) + 2. Click on "Inbound Rules" in the left sidebar. ([Image](/img/wiki/port-forwarding/windows-2.png)) + 3. Click on "New Rule..." in the right sidebar. ([Image](/img/wiki/port-forwarding/windows-2.png)) + 4. Select "Port" as the rule type and click "Next". ([Example](/img/wiki/port-forwarding/windows-3.png)) + 5. Select "UDP" and "Specific local ports", and enter the port you want to open (in our example, 19132). Click "Next". ([Example](/img/wiki/port-forwarding/windows-4.png)) + 6. Select "Allow the connection" and click "Next". ([Example](/img/wiki/port-forwarding/windows-5.png)) + 7. Select the profiles you want to apply the rule to (e.g. "Domain", "Private", "Public"), and click "Next". ([Example](/img/wiki/port-forwarding/windows-6.png)) + 8. Enter a name for the rule (e.g. "Geyser (UDP)"), and click "Finish". ([Image](/img/wiki/port-forwarding/windows-7.png)) + 9. Repeat these steps, selecting "TCP" in step 5 and naming the rule e.g. "Geyser (TCP)". + +### Linux {#linux} + +Different Linux distributions, even different VPS providers ship and configure different firewalls. In the following examples, we will use `19132` as the port to open, but you should replace this with the port you are using for Geyser. + +- `ufw` is a simple firewall front-end for iptables that is commonly used on Ubuntu and Debian. To open a port on TCP and UDP, run the following commands: + ```bash + sudo ufw allow 19132/tcp + sudo ufw allow 19132/udp + ``` + Then, reload the firewall with `sudo ufw reload`, and see all open rules with `sudo ufw status`. + Further helpful guides: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server), [Baeldung](https://www.baeldung.com/linux/uncomplicated-firewall) + +- `firewalld` Add a port on TCP and UDP by running: + ```bash + sudo firewall-cmd --zone=public --permanent --add-port=19132/tcp + sudo firewall-cmd --zone=public --permanent --add-port=19132/udp + ``` + Then, reload the firewall with `sudo firewall-cmd --reload`, and see all open rules with `sudo firewall-cmd --list-all`. + Further helpful guides: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7) + +- `iptables` is a common firewall that is used on many Linux distributions. To open a port on TCP and UDP, run the following commands: + ```bash + sudo iptables -A INPUT -p tcp --dport 19132 -j ACCEPT + sudo iptables -A INPUT -p udp --dport 19132 -j ACCEPT + ``` + Then, save the firewall with `sudo iptables-save`, and see all open rules with `sudo iptables -L`. + Further helpful guides for iptables: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-iptables-on-ubuntu-14-04), [Ubuntu](https://help.ubuntu.com/community/IptablesHowTo) + +### macOS {#macos} + +You will need to disable `Block all incoming connections` in your Firewall settings, as that will block any connections and won't allow you to make exceptions. +To allow incoming connections, click `Allow` when getting [these prompts](/img/wiki/port-forwarding/macos_warning.png). +If you are still facing issues, see Apple's official guide [here](https://support.apple.com/guide/mac-help/MH11783) to open a port on macOS. + +## Using Docker or Pterodactyl {#using-docker-or-pterodactyl} + +In addition to port forwarding the port in your server's firewall (and, if applicable, your router/modem), you will need to assign the port in Docker/Pterodactyl. + +### Pterodactyl {#pterodactyl} + +Make sure to allocate the port(s) to the server in the Pterodactyl panel's `Network` tab, additionally to port forwarding the port(s). +See [here](https://pterodactyl.io/community/games/minecraft.html#allocations-in-the-panel) for more information. + +![Pterodactyl panel, Network section](/img/wiki/port-forwarding/pterodactyl-1.png) + +There are also different Geyser eggs for Pterodactyl, which can be found [here](https://github.com/GeyserMC/pterodactyl-stuff). + +:::caution + +If you are not able to allocate ports in the Pterodactyl panel, you will need to contact your server host to allocate one for you or try to use an existing port allocation. + +::: + +### Docker {#docker} + +For Geyser to work under Docker (e.g. using [Itzg's Docker image](https://github.com/itzg/docker-minecraft-server)), you will need to add the Geyser port on TCP and UDP to the docker-compose file. This is done by adding the following to the `ports` section: + +```yaml +ports: + - "25565:25565" + - "19132:19132" + - "19132:19132/udp" +``` + +Without a suffix, Docker exposes the port on TCP. The additional `/udp` suffix exposes it on UDP. +Alternatively, add the ports with the `-p 19132:19132 -p 19132:19132/udp` flags to the docker run command. + +## Issues with specific VPS/KVM providers {#issues-with-specific-vpskvm-providers} + +Some providers, such as OVH, Oracle Cloud, and SoYouStart, have a firewall that blocks the ports Geyser needs by default/in most cases. + +### OVH and SoYouStart {#ovh-and-soyoustart} + +OVH's GAME firewall filters traffic with rules made for specific games. The Minecraft Bedrock and Minecraft Pocket Edition rules currently only support RakNet, the protocol Bedrock used before NetherNet. +With NetherNet, players find the server over HTTP (TCP) and play over WebRTC (UDP), which these rules currently do not support. +For now, use the `Other` rule for the Geyser port(s) instead. + +:::caution + +If you do not have access to these firewall settings, but got linked to this page, please contact your server host and provide them with this link - they are likely using OVH internally. + +::: + +**To resolve it:** + +OVH: + +1. Navigate to `Network interfaces` +2. Click on the `...` button on the table for your IP -> then `...` and `Configure the GAME firewall` -> `Add rule` -> `Other protocol` +3. Add your Geyser port into `outgoing port`. If you use the "NetherNet and RakNet" option, add a rule for the `webrtc-port` as well. +4. If you use OVH's Edge Network Firewall, make sure it allows the Geyser port over both TCP and UDP. + +SoYouStart (subsidiary of OVH): + +1. Click the IP tab. +2. Click the gear at the right of the public IP address; select "Game mitigation". +3. Pick "Add a rule". +4. Select "Other" in the dropdown list and enter the Geyser port. If you use the "NetherNet and RakNet" option, add the `webrtc-port` as well. +5. Save and wait a few seconds for the changes to come into effect. + +### Oracle Cloud/OCI {#oracle-cloudoci} + +By default, Oracle Cloud will block all incoming traffic except for SSH and RDP. This must be resolved within Oracle Cloud itself and the Compute Instance running Geyser. + +The steps below assume that you are using the default ports for the Java server and Geyser, and should be adjusted accordingly. + +1. Find your Compute Instance in the OCI Console +2. Click on the instances Virtual Cloud Network (this will be under "Instance details") +3. On the left-hand side, select "Security Lists" +4. Select one of the security lists. By default only one security list will exist. It doesn't matter which security list we add the rules to. +5. Select "Add Ingress Rules" +6. Configure rules for Java (optional) + - Set "Source CIDR" to `0.0.0.0/0` + - Set "Destination Port Range" to `25565-25565` + - Select "Another Ingress Rule" +7. Configure rules for Geyser, once for TCP and once for UDP + - Set "Source CIDR" to `0.0.0.0/0` + - Set "Destination Port Range" to `19132-19132` + - Set "IP Protocol" to TCP + - Select "Another Ingress Rule", and repeat with "IP Protocol" set to UDP +8. Select "Add Ingress Rules" + +#### Oracle Linux {#oracle-linux} + +Run the following commands to allow Minecraft and Geyser through the OS firewall: + +```bash +sudo firewall-cmd --add-port=25565/tcp --permanent +sudo firewall-cmd --add-port=19132/tcp --permanent +sudo firewall-cmd --add-port=19132/udp --permanent +sudo firewall-cmd --reload +``` + +#### Ubuntu {#ubuntu} + +Run the following commands to allow Minecraft and Geyser through the OS firewall: + +```bash +sudo ufw allow 25565/tcp +sudo ufw allow 19132/tcp +sudo ufw allow 19132/udp +``` diff --git a/i18n/uk/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx b/i18n/uk/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx new file mode 100644 index 0000000..47391e7 --- /dev/null +++ b/i18n/uk/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx @@ -0,0 +1,47 @@ +--- +title: Supported versions +description: Information on the versions Geyser supports. +crowdin_sync: true +crowdin_page_id: f199ae24-f711-486d-8e42-3079be87e8cd +--- + +import { Versions } from '@site/src/components/Versions' +import DocCardList from '@theme/DocCardList'; + +# Currently supported versions \ {#currently-supported-versions} + +:::info +**Geyser currently supports Minecraft Bedrock and Minecraft Java **. +::: + +## Using Geyser with older Minecraft: Bedrock edition versions \ {#using-geyser-with-older-minecraft-bedrock-edition-versions} + +Older Bedrock versions are not supported. Minecraft: Bedrock Edition updates automatically on all platforms, so there are few users who would +want to use older versions. Further, older Bedrock versions do not have all features which Geyser support, which would lead to a sub-par experience. + +## Using Geyser on older Minecraft: Java edition servers \ {#using-geyser-on-older-minecraft-java-edition-servers} + +Geyser emulates a client, so a Java server must accept users using that version in order for Geyser to work. +This is possible thanks to [ViaVersion](https://viaversion.com/viaversion), which allows Java edition players with newer versions to join servers +that run older versions of the game. + +### Using Geyser-Spigot on a Spigot/Paper server running on 1.20.5 or above + +You can use Geyser-Spigot on servers that run on 1.20.5 or above. You will also need to run at least Java 21 or later to use Geyser. See [here](https://docs.papermc.io/misc/java-install) for more info on updating Java. Paper versions not supporting Java 21 can add `-DPaper.IgnoreJavaVersion=true` flag to the Java startup arguments to allow Paper to run on Java 21. + +In order for Bedrock players to chat (1.19.3+) or join (1.19.1/1.19.2), you need to disable chat signing. More information about that can be read on the [chat signing page](/wiki/geyser/secure-chat). + +### Using Geyser-Spigot on a Spigot/Paper server running on a version below 1.20.5 + +This is unfortunately not possible. You'll need to use a proxy such as Velocity or BungeeCord, or set up Geyser-Standalone separately with the [ViaVersion](https://viaversion.com/viaversion) plugin. Another alternative would be to install [ViaProxy](https://viaversion.com/viaproxy), which is a standalone ViaVersion proxy that +translates between different Minecraft: Java edition versions, and to install Geyser-ViaProxy on it. + +### Using Geyser on Fabric/NeoForge servers not on the latest Minecraft version \ {#using-geyser-on-fabric-neoforge-servers-not-on-the-latest-minecraft-version} + +Unfortunately, Geyser-Fabric and Geyser-NeoForge only support the latest version of Minecraft: Java edition. The recommended way to still use +Geyser with older versions would be to install [ViaProxy](https://viaversion.com/viaproxy), which is a standalone ViaVersion proxy that +translates between different Minecraft: Java edition versions, and to install Geyser-ViaProxy on it. This will also work with Floodgate auth. + +### Using Geyser-Velocity or Geyser-BungeeCord on a proxy + +Make sure you update your proxy software to the latest available version, and, if the backend servers are not on , also install the [ViaVersion](https://viaversion.com/viaversion) plugin on the backend servers. Velocity/BungeeCord support most Minecraft versions, so you can update them regardless of the backend server versions. diff --git a/i18n/uk/docusaurus-theme-classic/footer.json b/i18n/uk/docusaurus-theme-classic/footer.json new file mode 100644 index 0000000..1a69184 --- /dev/null +++ b/i18n/uk/docusaurus-theme-classic/footer.json @@ -0,0 +1,50 @@ +{ + "link.title.Wiki": { + "message": "Wiki", + "description": "The title of the footer links column with title=Wiki in the footer" + }, + "link.title.Downloads": { + "message": "Downloads", + "description": "The title of the footer links column with title=Downloads in the footer" + }, + "link.title.Community": { + "message": "Community", + "description": "The title of the footer links column with title=Community in the footer" + }, + "link.title.More": { + "message": "More", + "description": "The title of the footer links column with title=More in the footer" + }, + "link.item.label.REST APIs": { + "message": "REST APIs", + "description": "The label of footer link with label=REST APIs linking to wiki/api/api.geysermc.org/global-api" + }, + "link.item.label.Other": { + "message": "Other", + "description": "The label of footer link with label=Other linking to download?project=other-projects" + }, + "link.item.label.Blog": { + "message": "Blog", + "description": "The label of footer link with label=Blog linking to blog" + }, + "link.item.label.Donate": { + "message": "Donate", + "description": "The label of footer link with label=Donate linking to https://opencollective.com/geysermc" + }, + "link.item.label.Global Linking": { + "message": "Global Linking", + "description": "The label of footer link with label=Global Linking linking to https://link.geysermc.org/" + }, + "link.item.label.Privacy Policy": { + "message": "Privacy Policy", + "description": "The label of footer link with label=Privacy Policy linking to https://ziax.com/terms/privacy-policy/" + }, + "logo.alt": { + "message": "GeyserMC logo", + "description": "The alt text of footer logo" + }, + "copyright": { + "message": "Copyright © 2026 GeyserMC. Built with Docusaurus.
This website is not an official Minecraft website and is not associated with Mojang Studios or Microsoft. All product and company names are trademarks or registered trademarks of their respective holders. Use of these names does not imply any affiliation or endorsement by them.", + "description": "The footer copyright" + } +} \ No newline at end of file diff --git a/i18n/uk/docusaurus-theme-classic/navbar.json b/i18n/uk/docusaurus-theme-classic/navbar.json new file mode 100644 index 0000000..c4f41a5 --- /dev/null +++ b/i18n/uk/docusaurus-theme-classic/navbar.json @@ -0,0 +1,38 @@ +{ + "logo.alt": { + "message": "GeyserMC logo", + "description": "The alt text of navbar logo" + }, + "item.label.Wiki": { + "message": "Wiki", + "description": "Navbar item with label Wiki" + }, + "item.label.Blog": { + "message": "Blog", + "description": "Navbar item with label Blog" + }, + "item.label.Utilities": { + "message": "Utilities", + "description": "Navbar item with label Utilities" + }, + "item.label.Download": { + "message": "Download", + "description": "Navbar item with label Download" + }, + "item.label.REST APIs": { + "message": "REST APIs", + "description": "Navbar item with label REST APIs" + }, + "item.label.Other": { + "message": "Other", + "description": "Navbar item with label Other" + }, + "item.label.Dump Viewer": { + "message": "Dump Viewer", + "description": "Navbar item with label Dump Viewer" + }, + "item.label.Hosting": { + "message": "Hosting", + "description": "Navbar item with label Hosting" + } +} \ No newline at end of file diff --git a/i18n/zh-CN/code.json b/i18n/zh-CN/code.json new file mode 100644 index 0000000..7251b24 --- /dev/null +++ b/i18n/zh-CN/code.json @@ -0,0 +1,1023 @@ +{ + "pages.main.title": { + "message": "Revolutionize Your Minecraft Server" + }, + "pages.main.subtitle": { + "message": "Enable clients from Minecraft Bedrock Edition to join your Minecraft Java server" + }, + "components.homepage_features.1.line1": { + "message": "Geyser is a program that allows Minecraft: Bedrock Edition clients to join Minecraft: Java Edition servers, allowing for true crossplay between both editions of the game." + }, + "components.homepage_features.1.line2": { + "message": "The ultimate goal of this project is to allow Minecraft: Bedrock Edition users to join Minecraft: Java Edition servers as seamlessly as possible." + }, + "components.homepage_features.2": { + "message": "Geyser acts as a translator which sits between the Bedrock client and the Java server. It takes data from the Bedrock client and translates it into a format the Java server understands and vice versa. Geyser works with any modern Minecraft version and can be installed either as a plugin or ran as a standalone program." + }, + "components.homepage_features.3.line1": { + "message": "Geyser can be joined from Bedrock clients on Windows 10/11, iOS, Android, and even consoles. Geyser works with a wide array of hosting providers, but can also be used as its own standalone proxy to join any Minecraft server!" + }, + "components.homepage_features.3.line2": { + "message": "If you are a server owner, you can install our Floodgate plugin which allows Xbox Live authenticated Bedrock users to join without a Java Edition account!" + }, + "pages.download.title": { + "message": "Download" + }, + "pages.download.subheading": { + "message": "Download the latest versions of our various projects." + }, + "pages.download.description.geyser": { + "message": "A bridge/proxy allowing you to connect to Minecraft: Java Edition servers with Minecraft: Bedrock Edition." + }, + "pages.download.description.floodgate": { + "message": "Hybrid mode plugin to allow for connections from Geyser to join online mode servers." + }, + "pages.download.description.geyserconnect": { + "message": "A Geyser extension allowing players to connect to different Java or Geyser servers." + }, + "pages.download.description.thirdpartycosmetics": { + "message": "An extension that adds support for loading ears and other third party cosmetics on java players" + }, + "pages.dumpviewer.title": { + "message": "Dump Viewer" + }, + "pages.dumpviewer.subheading": { + "message": "View the breakdown of your Geyser dump." + }, + "pages.dumpviewer.enterdumpid": { + "message": "Enter Dump ID or URL below and click load." + }, + "pages.dumpviewer.button.load": { + "message": "Load" + }, + "pages.dumpviewer.versions": { + "message": "Versions" + }, + "pages.dumpviewer.versions.geyserver": { + "message": "Geyser Version" + }, + "pages.dumpviewer.versions.javaver": { + "message": "Java Version" + }, + "pages.dumpviewer.versions.os": { + "message": "Operating System" + }, + "pages.dumpviewer.geyserver": { + "message": "Geyser Version" + }, + "pages.dumpviewer.geyserver.build": { + "message": "Build" + }, + "pages.dumpviewer.geyserver.commit": { + "message": "Commit Hash" + }, + "pages.dumpviewer.geyserver.branch": { + "message": "Branch" + }, + "pages.dumpviewer.platform": { + "message": "Platform Info" + }, + "pages.dumpviewer.platform.id": { + "message": "Platform Identifier" + }, + "pages.dumpviewer.platform.name": { + "message": "Platform Name" + }, + "pages.dumpviewer.platform.version": { + "message": "Platform Version" + }, + "pages.dumpviewer.platform.apiver": { + "message": "Platform API Version" + }, + "pages.dumpviewer.platform.onlinemode": { + "message": "Online Mode" + }, + "pages.dumpviewer.sysinfo": { + "message": "System Info" + }, + "pages.dumpviewer.cpucount": { + "message": "CPU Count" + }, + "pages.dumpviewer.cpuname": { + "message": "CPU Name" + }, + "pages.dumpviewer.ram": { + "message": "RAM" + }, + "pages.dumpviewer.javaname": { + "message": "Java Name" + }, + "pages.dumpviewer.javavendor": { + "message": "Java Vendor" + }, + "pages.dumpviewer.dockercheck": { + "message": "Uses Docker?" + }, + "pages.dumpviewer.plugins": { + "message": "Plugins" + }, + "pages.dumpviewer.plugins.noplugins": { + "message": "No plugins to show." + }, + "pages.dumpviewer.plugins.helptext": { + "message": "Click on a plugin to view more information." + }, + "pages.dumpviewer.config": { + "message": "Config" + }, + "pages.dumpviewer.viewsource": { + "message": "View dump source" + }, + "theme.ErrorPageContent.title": { + "message": "This page crashed.", + "description": "The title of the fallback page when the page crashed" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "Scroll back to top", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.archive.title": { + "message": "Archive", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "Archive", + "description": "The page & hero description of the blog archive page" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "Blog list page navigation", + "description": "The ARIA label for the blog pagination" + }, + "theme.blog.paginator.newerEntries": { + "message": "Newer Entries", + "description": "The label used to navigate to the newer blog posts page (previous page)" + }, + "theme.blog.paginator.olderEntries": { + "message": "Older Entries", + "description": "The label used to navigate to the older blog posts page (next page)" + }, + "theme.blog.post.paginator.navAriaLabel": { + "message": "Blog post page navigation", + "description": "The ARIA label for the blog posts pagination" + }, + "theme.blog.post.paginator.newerPost": { + "message": "Newer Post", + "description": "The blog post button label to navigate to the newer/previous post" + }, + "theme.blog.post.paginator.olderPost": { + "message": "Older Post", + "description": "The blog post button label to navigate to the older/next post" + }, + "theme.blog.post.plurals": { + "message": "One post|{count} posts", + "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.blog.tagTitle": { + "message": "{nPosts} tagged with \"{tagName}\"", + "description": "The title of the page for a blog tag" + }, + "theme.tags.tagsPageLink": { + "message": "View All Tags", + "description": "The label of the link targeting the tag list page" + }, + "theme.colorToggle.ariaLabel": { + "message": "Switch between dark and light mode (currently {mode})", + "description": "The ARIA label for the navbar color mode toggle" + }, + "theme.colorToggle.ariaLabel.mode.dark": { + "message": "dark mode", + "description": "The name for the dark color mode" + }, + "theme.colorToggle.ariaLabel.mode.light": { + "message": "light mode", + "description": "The name for the light color mode" + }, + "theme.docs.DocCard.categoryDescription.plurals": { + "message": "1 item|{count} items", + "description": "The default description for a category card in the generated index about how many items this category includes" + }, + "theme.docs.breadcrumbs.navAriaLabel": { + "message": "Breadcrumbs", + "description": "The ARIA label for the breadcrumbs" + }, + "theme.docs.paginator.navAriaLabel": { + "message": "Docs pages", + "description": "The ARIA label for the docs pagination" + }, + "theme.docs.paginator.previous": { + "message": "Previous", + "description": "The label used to navigate to the previous doc" + }, + "theme.docs.paginator.next": { + "message": "Next", + "description": "The label used to navigate to the next doc" + }, + "theme.docs.tagDocListPageTitle.nDocsTagged": { + "message": "One doc tagged|{count} docs tagged", + "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.tagDocListPageTitle": { + "message": "{nDocsTagged} with \"{tagName}\"", + "description": "The title of the page for a docs tag" + }, + "theme.docs.versionBadge.label": { + "message": "Version: {versionLabel}" + }, + "theme.docs.versions.unreleasedVersionLabel": { + "message": "This is unreleased documentation for {siteTitle} {versionLabel} version.", + "description": "The label used to tell the user that he's browsing an unreleased doc version" + }, + "theme.docs.versions.unmaintainedVersionLabel": { + "message": "This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.", + "description": "The label used to tell the user that he's browsing an unmaintained doc version" + }, + "theme.docs.versions.latestVersionSuggestionLabel": { + "message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).", + "description": "The label used to tell the user to check the latest version" + }, + "theme.docs.versions.latestVersionLinkLabel": { + "message": "latest version", + "description": "The label used for the latest version suggestion link label" + }, + "theme.common.editThisPage": { + "message": "Edit this page", + "description": "The link label to edit the current page" + }, + "theme.common.headingLinkTitle": { + "message": "Direct link to {heading}", + "description": "Title for link to heading" + }, + "theme.lastUpdated.atDate": { + "message": " on {date}", + "description": "The words used to describe on which date a page has been last updated" + }, + "theme.lastUpdated.byUser": { + "message": " by {user}", + "description": "The words used to describe by who the page has been last updated" + }, + "theme.lastUpdated.lastUpdatedAtBy": { + "message": "Last updated{atDate}{byUser}", + "description": "The sentence used to display when a page has been last updated, and by who" + }, + "theme.NotFound.title": { + "message": "Page Not Found", + "description": "The title of the 404 page" + }, + "theme.navbar.mobileVersionsDropdown.label": { + "message": "Versions", + "description": "The label for the navbar versions dropdown on mobile view" + }, + "theme.tags.tagsListLabel": { + "message": "Tags:", + "description": "The label alongside a tag list" + }, + "theme.AnnouncementBar.closeButtonAriaLabel": { + "message": "Close", + "description": "The ARIA label for close button of announcement bar" + }, + "theme.admonition.caution": { + "message": "caution", + "description": "The default label used for the Caution admonition (:::caution)" + }, + "theme.admonition.danger": { + "message": "danger", + "description": "The default label used for the Danger admonition (:::danger)" + }, + "theme.admonition.info": { + "message": "info", + "description": "The default label used for the Info admonition (:::info)" + }, + "theme.admonition.note": { + "message": "note", + "description": "The default label used for the Note admonition (:::note)" + }, + "theme.admonition.tip": { + "message": "tip", + "description": "The default label used for the Tip admonition (:::tip)" + }, + "theme.admonition.warning": { + "message": "warning", + "description": "The default label used for the Warning admonition (:::warning)" + }, + "theme.blog.sidebar.navAriaLabel": { + "message": "Blog recent posts navigation", + "description": "The ARIA label for recent posts in the blog sidebar" + }, + "theme.CodeBlock.copied": { + "message": "Copied", + "description": "The copied button label on code blocks" + }, + "theme.CodeBlock.copyButtonAriaLabel": { + "message": "Copy code to clipboard", + "description": "The ARIA label for copy code blocks button" + }, + "theme.CodeBlock.copy": { + "message": "Copy", + "description": "The copy button label on code blocks" + }, + "theme.CodeBlock.wordWrapToggle": { + "message": "Toggle word wrap", + "description": "The title attribute for toggle word wrapping button of code block lines" + }, + "theme.DocSidebarItem.expandCategoryAriaLabel": { + "message": "Expand sidebar category '{label}'", + "description": "The ARIA label to expand the sidebar category" + }, + "theme.DocSidebarItem.collapseCategoryAriaLabel": { + "message": "Collapse sidebar category '{label}'", + "description": "The ARIA label to collapse the sidebar category" + }, + "theme.NavBar.navAriaLabel": { + "message": "Main", + "description": "The ARIA label for the main navigation" + }, + "theme.NotFound.p1": { + "message": "We could not find what you were looking for.", + "description": "The first paragraph of the 404 page" + }, + "theme.NotFound.p2": { + "message": "Please contact the owner of the site that linked you to the original URL and let them know their link is broken.", + "description": "The 2nd paragraph of the 404 page" + }, + "theme.navbar.mobileLanguageDropdown.label": { + "message": "Languages", + "description": "The label for the mobile language switcher dropdown" + }, + "theme.TOCCollapsible.toggleButtonLabel": { + "message": "On this page", + "description": "The label used by the button on the collapsible TOC component" + }, + "theme.blog.post.readMore": { + "message": "Read More", + "description": "The label used in blog post item excerpts to link to full blog posts" + }, + "theme.blog.post.readMoreLabel": { + "message": "Read more about {title}", + "description": "The ARIA label for the link to full blog posts from excerpts" + }, + "theme.blog.post.readingTime.plurals": { + "message": "One min read|{readingTime} min read", + "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.breadcrumbs.home": { + "message": "Home page", + "description": "The ARIA label for the home page in the breadcrumbs" + }, + "theme.docs.sidebar.collapseButtonTitle": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.collapseButtonAriaLabel": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.navAriaLabel": { + "message": "Docs sidebar", + "description": "The ARIA label for the sidebar navigation" + }, + "theme.docs.sidebar.closeSidebarButtonAriaLabel": { + "message": "Close navigation bar", + "description": "The ARIA label for close button of mobile sidebar" + }, + "theme.docs.sidebar.expandButtonTitle": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.docs.sidebar.expandButtonAriaLabel": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": { + "message": "← Back to main menu", + "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)" + }, + "theme.docs.sidebar.toggleSidebarButtonAriaLabel": { + "message": "Toggle navigation bar", + "description": "The ARIA label for hamburger menu button of mobile navigation" + }, + "theme.SearchBar.seeAll": { + "message": "See all {count} results" + }, + "theme.SearchPage.documentsFound.plurals": { + "message": "One document found|{count} documents found", + "description": "Pluralized label for \"{count} documents found\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.SearchPage.existingResultsTitle": { + "message": "Search results for \"{query}\"", + "description": "The search page title for non-empty query" + }, + "theme.SearchPage.emptyResultsTitle": { + "message": "Search the documentation", + "description": "The search page title for empty query" + }, + "theme.SearchPage.inputPlaceholder": { + "message": "Type your search here", + "description": "The placeholder for search page input" + }, + "theme.SearchPage.inputLabel": { + "message": "Search", + "description": "The ARIA label for search page input" + }, + "theme.SearchPage.algoliaLabel": { + "message": "Search by Algolia", + "description": "The ARIA label for Algolia mention" + }, + "theme.SearchPage.noResultsText": { + "message": "No results were found", + "description": "The paragraph for empty search result" + }, + "theme.SearchPage.fetchingNewResults": { + "message": "Fetching new results...", + "description": "The paragraph for fetching new search results" + }, + "theme.SearchBar.label": { + "message": "Search", + "description": "The ARIA label and placeholder for search button" + }, + "theme.SearchModal.searchBox.resetButtonTitle": { + "message": "Clear the query", + "description": "The label and ARIA label for search box reset button" + }, + "theme.SearchModal.searchBox.cancelButtonText": { + "message": "Cancel", + "description": "The label and ARIA label for search box cancel button" + }, + "theme.SearchModal.startScreen.recentSearchesTitle": { + "message": "Recent", + "description": "The title for recent searches" + }, + "theme.SearchModal.startScreen.noRecentSearchesText": { + "message": "No recent searches", + "description": "The text when no recent searches" + }, + "theme.SearchModal.startScreen.saveRecentSearchButtonTitle": { + "message": "Save this search", + "description": "The label for save recent search button" + }, + "theme.SearchModal.startScreen.removeRecentSearchButtonTitle": { + "message": "Remove this search from history", + "description": "The label for remove recent search button" + }, + "theme.SearchModal.startScreen.favoriteSearchesTitle": { + "message": "Favorite", + "description": "The title for favorite searches" + }, + "theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle": { + "message": "Remove this search from favorites", + "description": "The label for remove favorite search button" + }, + "theme.SearchModal.errorScreen.titleText": { + "message": "Unable to fetch results", + "description": "The title for error screen of search modal" + }, + "theme.SearchModal.errorScreen.helpText": { + "message": "You might want to check your network connection.", + "description": "The help text for error screen of search modal" + }, + "theme.SearchModal.footer.selectText": { + "message": "to select", + "description": "The explanatory text of the action for the enter key" + }, + "theme.SearchModal.footer.selectKeyAriaLabel": { + "message": "Enter key", + "description": "The ARIA label for the Enter key button that makes the selection" + }, + "theme.SearchModal.footer.navigateText": { + "message": "to navigate", + "description": "The explanatory text of the action for the Arrow up and Arrow down key" + }, + "theme.SearchModal.footer.navigateUpKeyAriaLabel": { + "message": "Arrow up", + "description": "The ARIA label for the Arrow up key button that makes the navigation" + }, + "theme.SearchModal.footer.navigateDownKeyAriaLabel": { + "message": "Arrow down", + "description": "The ARIA label for the Arrow down key button that makes the navigation" + }, + "theme.SearchModal.footer.closeText": { + "message": "to close", + "description": "The explanatory text of the action for Escape key" + }, + "theme.SearchModal.footer.closeKeyAriaLabel": { + "message": "Escape key", + "description": "The ARIA label for the Escape key button that close the modal" + }, + "theme.SearchModal.footer.searchByText": { + "message": "Search by", + "description": "The text explain that the search is making by Algolia" + }, + "theme.SearchModal.noResultsScreen.noResultsText": { + "message": "No results for", + "description": "The text explains that there are no results for the following search" + }, + "theme.SearchModal.noResultsScreen.suggestedQueryText": { + "message": "Try searching for", + "description": "The text for the suggested query when no results are found for the following search" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsText": { + "message": "Believe this query should return results?", + "description": "The text for the question where the user thinks there are missing results" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsLinkText": { + "message": "Let us know.", + "description": "The text for the link to report missing results" + }, + "theme.SearchModal.placeholder": { + "message": "Search docs", + "description": "The placeholder of the input of the DocSearch pop-up modal" + }, + "theme.ErrorPageContent.tryAgain": { + "message": "Try again", + "description": "The label of the button to try again rendering when the React error boundary captures an error" + }, + "theme.common.skipToMainContent": { + "message": "Skip to main content", + "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation" + }, + "theme.tags.tagsPageTitle": { + "message": "Tags", + "description": "The title of the tag list page" + }, + "pages.download.description.hurricane": { + "message": "A plugin with various workarounds for Geyser players that modify the server in order to achieve their goal." + }, + "theme.blog.author.pageTitle": { + "message": "{authorName} - {nPosts}", + "description": "The title of the page for a blog author" + }, + "theme.blog.authorsList.pageTitle": { + "message": "Authors", + "description": "The title of the authors page" + }, + "theme.blog.authorsList.viewAll": { + "message": "View all authors", + "description": "The label of the link targeting the blog authors page" + }, + "theme.blog.author.noPosts": { + "message": "This author has not written any posts yet.", + "description": "The text for authors with 0 blog post" + }, + "theme.contentVisibility.unlistedBanner.title": { + "message": "Unlisted page", + "description": "The unlisted content banner title" + }, + "theme.contentVisibility.unlistedBanner.message": { + "message": "This page is unlisted. Search engines will not index it, and only users having a direct link can access it.", + "description": "The unlisted content banner message" + }, + "theme.contentVisibility.draftBanner.title": { + "message": "Draft page", + "description": "The draft content banner title" + }, + "theme.contentVisibility.draftBanner.message": { + "message": "This page is a draft. It will only be visible in dev and be excluded from the production build.", + "description": "The draft content banner message" + }, + "mdx.setup.host_provider": { + "message": "Host Provider" + }, + "mdx.setup.self_host": { + "message": "Self Host" + }, + "mdx.setup.paper_spigot": { + "message": "Paper / Spigot" + }, + "mdx.setup.modded_servers": { + "message": "Modded Servers" + }, + "mdx.setup.proxy_servers": { + "message": "Proxy Servers" + }, + "mdx.setup.viaproxy": { + "message": "ViaProxy" + }, + "mdx.setup.standalone": { + "message": "Standalone" + }, + "pages.download.description.offhandextension": { + "message": "An extension that allows Bedrock players to switch their offhand and mainhand item by emoting." + }, + "pages.download.description.rainbow": { + "message": "A Minecraft mod to generate Geyser item mappings and bedrock resourcepacks for use with Geyser's custom item API (v2)." + }, + "pages.download.description.hydraulic": { + "message": "A companion mod to Geyser which allows for Bedrock players to join modded Minecraft: Java Edition servers." + }, + "pages.download.description.thunder": { + "message": "A java application to convert simple Java Edition resource packs to Bedrock Edition ones." + }, + "pages.dumpviewer.extensions": { + "message": "Extensions" + }, + "pages.dumpviewer.extensions.noextensions": { + "message": "No extensions to show." + }, + "pages.dumpviewer.extensions.helptext": { + "message": "Click on an extension to view more information." + }, + "mdx.setup.fabric": { + "message": "Fabric" + }, + "mdx.setup.neoforge": { + "message": "NeoForge" + }, + "mdx.setup.installing_geyser": { + "message": "Installing Geyser" + }, + "mdx.setup.download_jar": { + "message": "Download {jarName}." + }, + "mdx.setup.place_jar": { + "message": "Place the {jarName} in the {jarDirectory} folder." + }, + "mdx.setup.restart_server": { + "message": "Restart the server." + }, + "mdx.setup.additional_steps": { + "message": "Additional Steps" + }, + "mdx.setup.connecting_on_bedrock": { + "message": "Connecting on Bedrock" + }, + "providers.config.templates.java_address": { + "message": "Set `address` in the `bedrock` section to the public address of the Java server." + }, + "providers.config.templates.custom_port_dedicated_ip": { + "message": "This host may only give out a separate port with a dedicated IP address." + }, + "providers.warnings.ovh_firewall_misconfig": { + "message": "To fix random `Unable to Connect` issues, see [here](/wiki/geyser/port-forwarding/#ovh-and-soyoustart)." + }, + "providers.config.templates.install_location.plugin_list": { + "message": "Install Geyser through the plugin or mod list provided by the host." + }, + "providers.config.templates.install_location.enable_bedrock_crossplay": { + "message": "Select the 'Enable Bedrock crossplay?' option when changing your server software to automatically install and configure Geyser and Floodgate." + }, + "providers.config.templates.info.geyser_installed_by_default": { + "message": "Geyser is installed and configured on all servers by default." + }, + "mdx.setup.checking_server_version": { + "message": "Checking your server version" + }, + "mdx.setup.restart_geyser": { + "message": "Restart Geyser." + }, + "mdx.setup.https_note": { + "message": "Unless signaling runs over {https}, Minecraft asks players whether they trust the server the first time they join." + }, + "mdx.setup.configuring_geyser": { + "message": "Configuring Geyser" + }, + "mdx.setup.open_config_simple": { + "message": "Now open the file {configLocation}. Find the part that starts with {bedrock}, and change the lines shown below." + }, + "mdx.setup.preconfigured": { + "message": "No changes needed. {name} automatically configures Geyser." + }, + "mdx.setup.transport_nethernet_simple": { + "message": "NetherNet is supported fully by 26.50+. If you'd like to also have working MOTD and player count for older versions, you will need to set up both NetherNet and Raknet." + }, + "mdx.setup.transport_both_compat": { + "message": "Also accepts RakNet, for additional compatibility: some Bedrock versions, such as 26.40, fetch the server's MOTD and player count over RakNet. This option needs a separate UDP port for NetherNet." + }, + "mdx.setup.placeholder_word": { + "message": "Replace this" + }, + "mdx.setup.replace_with_simple": { + "message": "With this" + }, + "mdx.setup.placeholder_java_port": { + "message": "The port of the Java server." + }, + "mdx.setup.placeholder_java_port_udp": { + "message": "A UDP port for NetherNet, other than {port}. This can be the Java server's port: the Java server only uses it over TCP, so Geyser can use it over UDP. Any other available UDP port works too." + }, + "mdx.setup.placeholder_second_available_port": { + "message": "An available UDP port for NetherNet, other than {port}. Open it for UDP." + }, + "mdx.setup.raknet_on_port": { + "message": "RakNet uses {port} over UDP, so that port has to be open for UDP as well." + }, + "mdx.setup.summary.nethernet_reported_generic": { + "message": "Reported to work with NetherNet" + }, + "mdx.setup.summary.supporter_configures": { + "message": "{name} configures Geyser for you automatically, including NetherNet." + }, + "mdx.setup.summary.updated": { + "message": "Instructions last updated on {date}" + }, + "mdx.setup.badge.gold": { + "message": "Gold supporter" + }, + "mdx.setup.badge.silver": { + "message": "Silver supporter" + }, + "mdx.setup.badge.bronze": { + "message": "Bronze supporter" + }, + "mdx.setup.unconfirmed_title": { + "message": "Not checked for NetherNet yet" + }, + "mdx.setup.warning_title": { + "message": "Warning" + }, + "mdx.setup.unconfirmed_reach_out_update": { + "message": "These instructions have not been checked for NetherNet yet. If Bedrock players can't join, reach out to {name} to get instructions on how to use Geyser, and let us know on {discord} so we can update this guide." + }, + "mdx.setup.try_not_listed": { + "message": "If your host cannot give you a separate port, follow the {notListed} instead. Players then join through {warden}, an external signaling service." + }, + "mdx.setup.try_not_listed.link": { + "message": "\"Not listed\" guide for using only the Java server's port" + }, + "mdx.setup.no_signaling": { + "message": "{name} supports neither built-in nor external signaling, so Bedrock players cannot connect over NetherNet." + }, + "mdx.setup.hosting_provider_article_short": { + "message": "Host's Geyser guide" + }, + "mdx.setup.hosting_provider_website_short": { + "message": "Website" + }, + "mdx.setup.hosting_provider_support_short": { + "message": "Support" + }, + "mdx.setup.hosting_provider_discord_short": { + "message": "Discord" + }, + "mdx.setup.not_listed.tab_allocated": { + "message": "I can allocate ports" + }, + "mdx.setup.not_listed.tab_java_only": { + "message": "I only have the Java server port" + }, + "components.provider.open_collaboration_group": { + "message": "Hosts that support Geyser's development" + }, + "components.provider.other_group": { + "message": "Other providers" + }, + "mdx.setup.connect.port_java": { + "message": "Your Java server's port" + }, + "mdx.setup.connect.port_config_step": { + "message": "The port you set in \"Configuring Geyser\"" + }, + "mdx.setup.connect.intro": { + "message": "In Minecraft: Bedrock Edition, go to Play, then Servers, and select Add Server. Fill it in like this:" + }, + "mdx.setup.connect.add_server": { + "message": "Add Server" + }, + "mdx.setup.connect.server_name": { + "message": "Server Name" + }, + "mdx.setup.connect.server_name_value": { + "message": "Anything you like" + }, + "mdx.setup.connect.server_address": { + "message": "Server Address" + }, + "mdx.setup.connect.server_address_value": { + "message": "Your Java server's address" + }, + "mdx.setup.connect.port": { + "message": "Port" + }, + "mdx.setup.transport_nethernet_tab": { + "message": "NetherNet" + }, + "mdx.setup.transport_both_tab": { + "message": "NetherNet and RakNet" + }, + "providers.ports.assign": { + "message": "Assign a port in your host's panel, open for both TCP and UDP." + }, + "providers.ports.allocated": { + "message": "Pick an available port from the ports allocated to your server, open for both TCP and UDP." + }, + "providers.ports.ask_host": { + "message": "Ask your host for a port that is open for both TCP and UDP." + }, + "pages.hosting.tier.gold": { + "message": "Gold supporters" + }, + "pages.hosting.tier.silver": { + "message": "Silver supporters" + }, + "pages.hosting.tier.bronze": { + "message": "Bronze supporters" + }, + "pages.hosting.card.website": { + "message": "Website" + }, + "pages.hosting.card.setup": { + "message": "Setup guide" + }, + "pages.hosting.title": { + "message": "Hosting Providers" + }, + "pages.hosting.subheading": { + "message": "Hosting providers that support the development of Geyser." + }, + "pages.hosting.intro": { + "message": "The hosts below support Geyser and related projects through {openCollaboration}. Their support helps fund work on Geyser, such as keeping up with major changes to Bedrock Edition, like the switch to NetherNet. All hosts listed below also configure Geyser automatically when installed, making using Geyser easier than ever. We'd like to thank them all for their support." + }, + "pages.hosting.empty": { + "message": "No hosting providers are listed yet." + }, + "pages.hosting.other.title": { + "message": "Using another host?" + }, + "pages.hosting.other.text": { + "message": "Hosts not being listed here does not mean Geyser won't run there. The {setupGuide} includes community collected notes for many other hosts, and general instructions for those not listed." + }, + "pages.hosting.other.setup_guide": { + "message": "setup guide" + }, + "pages.hosting.meta.title": { + "message": "Hosting Providers" + }, + "pages.hosting.meta.description": { + "message": "Hosting providers that support the development of Geyser through Open Collaboration." + }, + "pages.download.description.floodgatedatabases": { + "message": "Database extension jars for Floodgate local linking." + }, + "providers.ports.from_host": { + "message": "The Bedrock port your host shows you." + }, + "providers.config.templates.info.only_serves_region": { + "message": "This host only provides service in {region}." + }, + "mdx.setup.velocity": { + "message": "Velocity" + }, + "mdx.setup.bungeecord": { + "message": "BungeeCord" + }, + "providers.ports.new_port": { + "message": "Open a new port in your server panel, open for both TCP and UDP, or ask your host for one if the panel has no option for it." + }, + "mdx.setup.supported_versions": { + "message": "Supported versions" + }, + "mdx.setup.restart_velocity": { + "message": "Restart Velocity." + }, + "mdx.setup.restart_bungeecord": { + "message": "Restart BungeeCord." + }, + "mdx.setup.restart_viaproxy": { + "message": "Restart ViaProxy." + }, + "mdx.setup.fabric_dependency": { + "message": "If it is not installed already, download {fabricApi} and place it in the same folder." + }, + "mdx.setup.version_step_viaversion": { + "message": "If your server is not running {version}, you will need to install {viaVersion}. For more information, see {supportedVersions}." + }, + "mdx.setup.version_step_proxy": { + "message": "All servers on the network must accept {version} Java clients, as Geyser imitates one." + }, + "mdx.setup.proxy_install_only": { + "message": "Install Geyser only on the {proxy} server! You can install Floodgate on all servers for better skin support and network-wide Floodgate API availability for other plugins." + }, + "mdx.setup.modded_requirements": { + "message": "{jarName} runs only on a {version} server, and only works alongside server-side mods. Mods that players also need to install on their client will not work. See {supportedVersions} for more details." + }, + "mdx.setup.self_port_choice": { + "message": "Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP, so it cannot be the port of the {platform} server." + }, + "mdx.setup.self_port_choice_standalone": { + "message": "Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP." + }, + "mdx.setup.self_port_sharing": { + "message": "{important}: No other program can use the Geyser port, over either protocol. This includes programs that use UDP, such as voice chat mods or Query, and programs that use TCP, such as another server, a web map, or a website." + }, + "mdx.setup.self_port_sharing.important": { + "message": "Important" + }, + "mdx.setup.connect_local_title": { + "message": "Connecting from the same network" + }, + "mdx.setup.connect_local": { + "message": "On the same device as the server, connect with {localhost} or {loopback} as the address. Other devices in the same local network can use your local IPv4 address, which starts with {ten} or {oneNineTwo}." + }, + "mdx.setup.connect_lan": { + "message": "Alternatively, open Minecraft: Bedrock Edition and join the LAN server in the {friends} tab." + }, + "mdx.setup.connect_lan.friends": { + "message": "Friends" + }, + "mdx.setup.connect_remote_title": { + "message": "Connecting from a different network" + }, + "mdx.setup.connect_remote": { + "message": "To let players from outside your network join, you need to make the Geyser port reachable from the internet." + }, + "mdx.setup.connect_tcp_udp": { + "message": "The Geyser port has to be forwarded for both TCP and UDP. Before NetherNet, forwarding UDP was enough. Now, players use TCP to find your server and UDP to play on it, so without TCP your server will not show up. If you use the \"NetherNet and RakNet\" option, also forward the {webrtcPort} for UDP." + }, + "mdx.setup.connect_options": { + "message": "You have two options:" + }, + "mdx.setup.connect_port_forwarding": { + "message": "{portForwarding}: open the Geyser port (e.g. 19132) for both TCP and UDP in your router and in your firewall. Players then connect with your public IPv4 address and the port. For detailed steps, see {guide}." + }, + "mdx.setup.connect_port_forwarding.title": { + "message": "Port forwarding" + }, + "mdx.setup.connect_port_forwarding.guide": { + "message": "Port forwarding" + }, + "mdx.setup.connect_playit": { + "message": "{playit}: if you cannot open a port, or do not want to expose your home IP address, playit.gg can create a tunnel for you. See {guide}. That guide was written for RakNet. For NetherNet, see {status}. Ngrok does not work, since it does not support UDP." + }, + "mdx.setup.connect_playit.guide": { + "message": "playit.gg Setup" + }, + "mdx.setup.connect_playit.status": { + "message": "NetherNet support on playit.gg" + }, + "mdx.setup.https_step_title": { + "message": "Recommended: Set up HTTPS for signaling" + }, + "mdx.setup.https_step": { + "message": "Geyser's built-in signaling server uses plain HTTP by default, so Minecraft shows players a \"Trust on First Use?\" prompt the first time they join. To avoid this prompt, serve signaling over HTTPS, as explained in {httpsGuide}. Some external signaling services, such as {warden}, provide HTTPS as well." + }, + "mdx.setup.https_step.guide": { + "message": "HTTPS for NetherNet" + }, + "mdx.setup.floodgate_info": { + "message": "To allow Bedrock Edition players to join your server without a paid Java Edition account, you can use {floodgate}." + }, + "mdx.setup.viaproxy_not_plugin.title": { + "message": "ViaProxy is not a plugin or mod" + }, + "mdx.setup.viaproxy_not_plugin": { + "message": "ViaProxy is a standalone program that runs separately from your Minecraft server. Do not put the ViaProxy jar into your server's {plugins} or {mods} folder. To run Geyser as a plugin or mod on your server instead, pick your server software in the tabs above." + }, + "mdx.setup.viaproxy_setup": { + "message": "Set up {viaProxy}." + }, + "mdx.setup.viaproxy_accounts": { + "message": "If you use the ViaProxy GUI, you can use its account management to join online mode servers with Bedrock Edition. If you use the ViaProxy CLI and want Bedrock players to join your online mode server, install and set up {floodgate}." + }, + "mdx.setup.viaproxy_auth_type": { + "message": "ViaProxy manages the {authType} setting itself, so its value in the config is ignored." + }, + "mdx.setup.standalone_java": { + "message": "You need Java 21 or newer to run Geyser. To run Geyser Standalone on Android, see the end of this page." + }, + "mdx.setup.standalone_not_plugin": { + "message": "Geyser Standalone is not a plugin or mod. It is a separate Java program that runs alongside your Java Edition server." + }, + "mdx.setup.standalone_download": { + "message": "Download {standalone}." + }, + "mdx.setup.standalone_folder": { + "message": "Create a new folder for Geyser, and put the jar in it." + }, + "mdx.setup.standalone_start": { + "message": "Start Geyser Standalone:" + }, + "mdx.setup.standalone_gui": { + "message": "{gui} (recommended): double-click the jar file. Geyser creates all the files it needs." + }, + "mdx.setup.standalone_console": { + "message": "{console}: create a startup script, like the one you would use for a Paper server. See {startupScript} for what to put into it. Run it, and Geyser creates all the files it needs." + }, + "mdx.setup.standalone_console.console": { + "message": "Console" + }, + "mdx.setup.standalone_console.startup_script": { + "message": "Creating a Startup Script" + }, + "mdx.setup.standalone_remote_intro": { + "message": "To choose which Java Edition server Geyser Standalone sends players to, find the {java} section:" + }, + "mdx.setup.standalone_remote": { + "message": "Change {address} to the Java server's address, or leave it as it is if the server runs on the same machine as Geyser. Then change {port} to the Java server's port. Set {authType} to {floodgate} if you set up Floodgate on the Java server, otherwise to {online} for an online mode server or {offline} for an offline mode server. To use Floodgate with Geyser Standalone, see {floodgateSetup}." + }, + "mdx.setup.standalone_remote.floodgate_setup": { + "message": "Floodgate Setup" + }, + "mdx.setup.standalone_android_title": { + "message": "Running Geyser Standalone on Android" + }, + "mdx.setup.standalone_android_caution": { + "message": "Apps such as Termux can run Geyser on Android, but how well this works depends on how powerful your device is. Do so at your own risk." + }, + "mdx.setup.standalone_termux_install": { + "message": "Download and install {termux}." + }, + "mdx.setup.run_command": { + "message": "Run {command}." + }, + "mdx.setup.standalone_termux_script": { + "message": "Alternatively, there is an automated setup script for clean Termux installs. It might not work for everyone, so try it if the steps above do not work:" + } +} \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-blog/options.json b/i18n/zh-CN/docusaurus-plugin-content-blog/options.json new file mode 100644 index 0000000..9fa6586 --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-blog/options.json @@ -0,0 +1,10 @@ +{ + "description": { + "message": "Blog", + "description": "The description for the blog used in SEO" + }, + "sidebar.title": { + "message": "Recent posts", + "description": "The label for the left sidebar" + } +} \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current.json b/i18n/zh-CN/docusaurus-plugin-content-docs/current.json new file mode 100644 index 0000000..cb3914c --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,34 @@ +{ + "version.label": { + "message": "Next", + "description": "The label for version current" + }, + "sidebar.geyserSidebar.category.Setup": { + "message": "Setup", + "description": "The label for category Setup in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Common Issues": { + "message": "Common Issues", + "description": "The label for category Common Issues in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Configuring Geyser": { + "message": "Configuring Geyser", + "description": "The label for category Configuring Geyser in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.FAQ": { + "message": "FAQ", + "description": "The label for category FAQ in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.category.Geyser API": { + "message": "Geyser API", + "description": "The label for category Geyser API in sidebar geyserSidebar" + }, + "sidebar.geyserSidebar.link.Hosting Providers": { + "message": "Hosting Providers", + "description": "The label for link Hosting Providers in sidebar geyserSidebar, linking to /hosting" + }, + "sidebar.geyserSidebar.category.Custom Content": { + "message": "Custom Content", + "description": "The label for category Custom Content in sidebar geyserSidebar" + } +} \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/geyser/commands.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/geyser/commands.md new file mode 100644 index 0000000..0492482 --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/geyser/commands.md @@ -0,0 +1,83 @@ +--- +title: Commands and Permissions +description: Commands and their associated permission nodes for Geyser. +crowdin_sync: true +crowdin_page_id: cd92ff4f-9105-46a2-8696-8b0e2f8b9d31 +--- + +# Commands and Permissions + +Geyser features many built-in commands that can be used by players or server owners. + +:::info + +When using BungeeCord and Velocity, you will need to use a permission plugin such as [LuckPerms](https://luckperms.net/) +on the proxy server to assign permissions to players. Assigning permissions on the backend servers will not work. + +::: + +## Geyser commands & their permissions {#geyser-commands--their-permissions} + +| Command | Permission | Description | +| :-----------------------------------: | :---------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | +| `geyser`
Geyser root command | `geyser.command` | The permission required to see/run any Geyser commands. | +| `geyser help`
`geyser ?` | `geyser.command.help` | Shows help for all registered commands. | +| `geyser advancements` | `geyser.command.advancements` | Open the Java advancements menu. | +| `geyser dump` | `geyser.command.dump` | Dumps Geyser debug information for bug reports. | +| `geyser list` | `geyser.command.list` | List all players connected through Geyser. | +| `geyser nethernet` | `geyser.command.nethernet` | Shows NetherNet signaling status and diagnostics, for use with external signaling. | +| `geyser offhand` | `geyser.command.offhand` | Puts an item in your offhand. | +| `geyser reload` | `geyser.command.reload` | Reloads the Geyser configurations. Kicks all players when used! | +| `geyser settings` | `geyser.command.settings` | Opens a settings menu allowing you to modify aspects of the world. | +| `geyser shutdown`
`geyser stop` | `geyser.command.shutdown` | Shuts down Geyser.
*This command only works on Standalone.* | +| `geyser statistics` | `geyser.command.statistics` | Open the Java statistics menu. | +| `geyser version` | `geyser.command.version` | Shows the current Geyser version and checks for updates. | +| `geyser tooltips` | `geyser.command.tooltips` | Toggle showing Advanced Tooltips (F3 + H on Java) | +| `geyser extensions` | `geyser.command.extensions` | Lists all currently loaded extensions. This command is only registered if any extensions are loaded. | +| `geyser ping` | `geyser.command.ping` | Shows the ping between the player and the Geyser instance. | +| `geyser options` | `geyser.command.options` | Opens the "pause screen additions" dialogue, if sent by the Java server | +| `geyser quickactions` | `geyser.command.quickactions` | Opens the "quick actions" dialogue, if sent by the Java server. | + +## Permissions for Geyser extensions {#extension-permissions} + +For the following, `` refers to the extensions' id. + +| Command | Permission | Description | +| :------------------------- | :---------------------------- | :------------------------------------------------------------------------ | +| ` help`
` ?` | `geyser.command.exthelp.` | Shows help for all commands registered by this extension. | + +## Other Permissions {#other-permissions} + +Besides commands, there are other permissions that are used to guard specific Geyser features. + +| Permission | Description | +| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `geyser.settings.server` | Allow players to use the [game settings menu](/img/wiki/game_menu.png). (Also requires player to have op.) | +| `geyser.settings.gamerules` | Defines whether a user can alter gamerules in the [game settings menu](/img/wiki/game_menu.png). (Also requires player to have op.) | +| `geyser.update` | Whether this player will receive Geyser update notifications upon joining. | + +## Permissions when using Geyser-Standalone/Geyser-ViaProxy {#standalone-viaproxy-permissions} + +Geyser-ViaProxy and Geyser-Standalone feature their own basic permission handler. To edit base permissions, +open the `permissions.yml` file and add or remove permissions that Geyser players should receive when joining. +See the file for more information. + +You can further customize permission handling by creating a [Geyser extension](/wiki/geyser/extensions/) that makes use of Geysers API +to deal with permission checking. + +## Permissions when using Geyser on platforms without permission handlers {#permissions-platforms-no-permission-handlers} + +The following affects Geyser-BungeeCord, Geyser-Velocity, and Geyser-Fabric. +These platforms unfortunately do not have built-in permission handlers. Because of that, you will need to grant permissions on those platforms +manually using permission handlers, such as [LuckPerms](https://luckperms.net/). Geyser's permission are listed above. For extension permissions, consult their documentation. + +Alternatively, you can use [LuckLink](https://github.com/onebeastchris/LuckLink), a third-party Geyser extension, to automatically register permissions using [LuckPerms](https://luckperms.net/). + +- Install [LuckPerms](https://luckperms.net/) on the platform where you've installed Geyser (BungeeCord/Velocity/Fabric). +- To allow Geyser to automatically register permission defaults, install the [LuckLink](https://github.com/onebeastchris/LuckLink) Geyser extension + by downloading the `LuckLink.jar` and adding it to Geyser's `extensions` folder. +- Restart the server, and permissions should be automatically registered. + +## Floodgate commands and permissions {#floodgate-commands-and-permissions} + +For Floodgate commands, see [here](/wiki/floodgate/commands/). diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/geyser/playit-gg.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/geyser/playit-gg.md new file mode 100644 index 0000000..7d20bd3 --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/geyser/playit-gg.md @@ -0,0 +1,62 @@ +--- +title: playit.gg Setup +description: How to set up playit.gg to use Geyser without port forwarding. +crowdin_sync: true +crowdin_page_id: 3aee52d0-b943-4e37-8797-4a83ef55e42a +--- + +## Prerequisites {#prerequisites} + +:::info +You must be able to connect to your Geyser instance locally! +::: + +:::warning +The playit.gg Minecraft server plugin does not support UDP tunnels. You will need to use the program agent instead! +::: + +:::caution +This guide was written for RakNet, and does not cover NetherNet. For NetherNet, see [playit.gg's progress on NetherNet support](https://status.playit.gg/3/adding-nethernet-support). +::: + +## Setup {#setup} + +1. Head over to [playit.gg's website](https://playit.gg/) - download the program & run it. +2. The program will provide a claiming link. Visit that link, log in. + ![img](/img/wiki/playit-gg/playit_claim.png) +3. Confirm your agent. + ![img](/img/wiki/playit-gg/playit_claim_confirm.png) +4. Add the agent. + ![img](/img/wiki/playit-gg/playit_add_agent.png) +5. After the agent is created, create a tunnel. + ![img](/img/wiki/playit-gg/playit_add_tunnel.png) +6. Name your tunnel and click Next. + ![img](/img/wiki/playit-gg/playit_name_tunnel.png) +7. Select "Minecraft Bedrock" as the tunnel type and click Next. + ![img](/img/wiki/playit-gg/playit_tunnel_type.png) +8. Select the Free Network and click Next. + ![img](/img/wiki/playit-gg/playit_select_network.png) + **Do not change your Geyser port in `config.yml` unless you have a reason (for example, hosting another Geyser server on the same machine).** The Bedrock (Geyser) port in `config.yml` and the playit.gg ports are separate. playit.gg will forward its port to the default Geyser port and should work as-is. Changing it can cause errors. If you have changed your config port, set the Bedrock port back to the default `19132` and ensure `clone-remote-port` is `false`. +9. If the playit.gg agent and Geyser are running on the same device, leave the IP as `127.0.0.1` and set the port to whatever you configured in Geyser's config. + ![img](/img/wiki/playit-gg/playit_set_ipandport.png) +10. Select `proxy-protocol-v2` for the Proxy Protocol section and click Next. +11. In the Geyser config, under `advanced:` `bedrock:`, set `use-haproxy-protocol` to `true`. +12. Click Create Tunnel and wait for the tunnel to be created. + ![img](/img/wiki/playit-gg/playit_create_tunnel.png) +13. Copy your tunnel's port. For example, if your tunnel address is `visiting-phone.gl.at.ply.gg:6695`, then `6695` is the tunnel port. +14. In the Geyser config under `advanced:` `bedrock:`, set `broadcast-port` to your tunnel port (`6695` in the example). +15. Save your config. Start your Minecraft server and connect using your tunnel's IP and port. +16. If you join successfully, then you are done! Make sure to leave the playit.gg program running as closing it will close the tunnel. You also may want to ratelimit individual connections - use the "Per Connection Rate Limit" option to do so. + (If you failed to join, check out the [troubleshooting](#troubleshooting) section of the page.) + +## Troubleshooting {#troubleshooting} + +### I can't connect to my server! {#i-cant-connect-to-my-server} + +- *Try going to the Agents page, set your agent to IPv4 only, and change the region. You may need to switch regions a few times before you can connect.* +- *Are there errors in your minecraft server console?* +- *Unless you manually changed the "Local Port" on the playit.gg website, in Geyser config, ensure that the bedrock port is the default of `19132` and that `clone-remote-port` is `false`.* +- *If you changed the `bedrock-port` or set `clone-remote-port` to `true` and have a reason for doing so (e.g. hosting another Geyser server on the same machine), you'll have to tell playit.gg to use that port instead! See the last paragraph in step 8.* +- *Check that you're joining with playit.gg's IP and port from the "Allocation" tab.* +- *Make sure that you have the program agent open while trying to join.* +- *See [here](/wiki/geyser/fixing-unable-to-connect-to-world/) for general troubleshooting steps.* diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md new file mode 100644 index 0000000..492774c --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/geyser/port-forwarding.md @@ -0,0 +1,208 @@ +--- +title: Port forwarding +description: Information on how to set up port forwarding required for Geyser. +crowdin_sync: true +crowdin_page_id: be7c5a22-1e8e-4ffe-8d13-7d763dd75886 +--- + +# Port forwarding {#port-forwarding} + +This page contains information on how to set up port forwarding required for Geyser to work when self-hosting. +There are also guides for specific configurations, such as Docker/Pterodactyl, or on specific VPS/KVM providers, such as OVH or Oracle Cloud. + +:::caution + +If you are using a Minecraft server hosting provider (e.g. Aternos, or Nodecraft), you should refer to the hosting provider setup on the [setup](/wiki/geyser/setup) page instead. + +::: + +:::info Ports that need to be opened +With NetherNet, the Geyser port (by default 19132) has to be open for **both TCP and UDP**: players find the server over TCP (signaling), and play on it over UDP. +If you use the "NetherNet and RakNet" option, also open the `webrtc-port` for UDP. +With external signaling, such as [Warden](https://warden.cloud), only UDP for WebRTC is needed. +::: + +## Port forwarding on Linux/Windows/macOS {#port-forwarding-on-linuxwindowsmacos} + +To allow others to play on your server, you will need to set up port forwarding on the device hosting Geyser. +Additionally, you will need to port forward the port on your router/modem (in other words, allow and route traffic on that port to the proper machine) if you want the server to be accessible outside your own home network. +Forward it for both TCP and UDP; many routers offer a "TCP/UDP" or "Both" option for this. +See [here](https://www.howtogeek.com/66214/how-to-forward-ports-on-your-router/) or [here](https://www.lifewire.com/how-to-port-forward-4163829) for helpful guides. +Do note: if you do not have a static IP address, your IP address may change over time. + +:::info + +Some ISPs (Internet Service Providers) block certain ports, or don't allow you to open ports (e.g. by using CGNAT, which doesn't allow you to open a port with a dynamic IP). +Other ISPs may require you to pay extra for a static IP address. +As an alternative to port forwarding, you can use [playit.gg](/wiki/geyser/playit-gg/) to create a tunnel. + +::: + +### Windows {#windows} + +To open a port on Windows, you will need to open the port through the Windows Firewall. There are multiple ways to do this: + +- `Powershell` (recommended) + + To open a port on TCP and UDP (in our example, port 19132), run the following commands in an administrator Powershell: + + ```powershell + New-NetFirewallRule -DisplayName "Geyser (TCP)" -Direction Inbound -Protocol TCP -LocalPort 19132 -Action Allow + New-NetFirewallRule -DisplayName "Geyser (UDP)" -Direction Inbound -Protocol UDP -LocalPort 19132 -Action Allow + ``` + + Running these commands creates two rules that allow TCP and UDP traffic on port 19132. + +- Windows Defender Firewall with Advanced Security (GUI) + 1. Search for "Windows Defender Firewall with Advanced Security" in the start menu, and open it. ([Image](/img/wiki/port-forwarding/windows-1.png)) + 2. Click on "Inbound Rules" in the left sidebar. ([Image](/img/wiki/port-forwarding/windows-2.png)) + 3. Click on "New Rule..." in the right sidebar. ([Image](/img/wiki/port-forwarding/windows-2.png)) + 4. Select "Port" as the rule type and click "Next". ([Example](/img/wiki/port-forwarding/windows-3.png)) + 5. Select "UDP" and "Specific local ports", and enter the port you want to open (in our example, 19132). Click "Next". ([Example](/img/wiki/port-forwarding/windows-4.png)) + 6. Select "Allow the connection" and click "Next". ([Example](/img/wiki/port-forwarding/windows-5.png)) + 7. Select the profiles you want to apply the rule to (e.g. "Domain", "Private", "Public"), and click "Next". ([Example](/img/wiki/port-forwarding/windows-6.png)) + 8. Enter a name for the rule (e.g. "Geyser (UDP)"), and click "Finish". ([Image](/img/wiki/port-forwarding/windows-7.png)) + 9. Repeat these steps, selecting "TCP" in step 5 and naming the rule e.g. "Geyser (TCP)". + +### Linux {#linux} + +Different Linux distributions, even different VPS providers ship and configure different firewalls. In the following examples, we will use `19132` as the port to open, but you should replace this with the port you are using for Geyser. + +- `ufw` is a simple firewall front-end for iptables that is commonly used on Ubuntu and Debian. To open a port on TCP and UDP, run the following commands: + ```bash + sudo ufw allow 19132/tcp + sudo ufw allow 19132/udp + ``` + Then, reload the firewall with `sudo ufw reload`, and see all open rules with `sudo ufw status`. + Further helpful guides: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server), [Baeldung](https://www.baeldung.com/linux/uncomplicated-firewall) + +- `firewalld` Add a port on TCP and UDP by running: + ```bash + sudo firewall-cmd --zone=public --permanent --add-port=19132/tcp + sudo firewall-cmd --zone=public --permanent --add-port=19132/udp + ``` + Then, reload the firewall with `sudo firewall-cmd --reload`, and see all open rules with `sudo firewall-cmd --list-all`. + Further helpful guides: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7) + +- `iptables` is a common firewall that is used on many Linux distributions. To open a port on TCP and UDP, run the following commands: + ```bash + sudo iptables -A INPUT -p tcp --dport 19132 -j ACCEPT + sudo iptables -A INPUT -p udp --dport 19132 -j ACCEPT + ``` + Then, save the firewall with `sudo iptables-save`, and see all open rules with `sudo iptables -L`. + Further helpful guides for iptables: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-iptables-on-ubuntu-14-04), [Ubuntu](https://help.ubuntu.com/community/IptablesHowTo) + +### macOS {#macos} + +You will need to disable `Block all incoming connections` in your Firewall settings, as that will block any connections and won't allow you to make exceptions. +To allow incoming connections, click `Allow` when getting [these prompts](/img/wiki/port-forwarding/macos_warning.png). +If you are still facing issues, see Apple's official guide [here](https://support.apple.com/guide/mac-help/MH11783) to open a port on macOS. + +## Using Docker or Pterodactyl {#using-docker-or-pterodactyl} + +In addition to port forwarding the port in your server's firewall (and, if applicable, your router/modem), you will need to assign the port in Docker/Pterodactyl. + +### Pterodactyl {#pterodactyl} + +Make sure to allocate the port(s) to the server in the Pterodactyl panel's `Network` tab, additionally to port forwarding the port(s). +See [here](https://pterodactyl.io/community/games/minecraft.html#allocations-in-the-panel) for more information. + +![Pterodactyl panel, Network section](/img/wiki/port-forwarding/pterodactyl-1.png) + +There are also different Geyser eggs for Pterodactyl, which can be found [here](https://github.com/GeyserMC/pterodactyl-stuff). + +:::caution + +If you are not able to allocate ports in the Pterodactyl panel, you will need to contact your server host to allocate one for you or try to use an existing port allocation. + +::: + +### Docker {#docker} + +For Geyser to work under Docker (e.g. using [Itzg's Docker image](https://github.com/itzg/docker-minecraft-server)), you will need to add the Geyser port on TCP and UDP to the docker-compose file. This is done by adding the following to the `ports` section: + +```yaml +ports: + - "25565:25565" + - "19132:19132" + - "19132:19132/udp" +``` + +Without a suffix, Docker exposes the port on TCP. The additional `/udp` suffix exposes it on UDP. +Alternatively, add the ports with the `-p 19132:19132 -p 19132:19132/udp` flags to the docker run command. + +## Issues with specific VPS/KVM providers {#issues-with-specific-vpskvm-providers} + +Some providers, such as OVH, Oracle Cloud, and SoYouStart, have a firewall that blocks the ports Geyser needs by default/in most cases. + +### OVH and SoYouStart {#ovh-and-soyoustart} + +OVH's GAME firewall filters traffic with rules made for specific games. The Minecraft Bedrock and Minecraft Pocket Edition rules currently only support RakNet, the protocol Bedrock used before NetherNet. +With NetherNet, players find the server over HTTP (TCP) and play over WebRTC (UDP), which these rules currently do not support. +For now, use the `Other` rule for the Geyser port(s) instead. + +:::caution + +If you do not have access to these firewall settings, but got linked to this page, please contact your server host and provide them with this link - they are likely using OVH internally. + +::: + +**To resolve it:** + +OVH: + +1. Navigate to `Network interfaces` +2. Click on the `...` button on the table for your IP -> then `...` and `Configure the GAME firewall` -> `Add rule` -> `Other protocol` +3. Add your Geyser port into `outgoing port`. If you use the "NetherNet and RakNet" option, add a rule for the `webrtc-port` as well. +4. If you use OVH's Edge Network Firewall, make sure it allows the Geyser port over both TCP and UDP. + +SoYouStart (subsidiary of OVH): + +1. Click the IP tab. +2. Click the gear at the right of the public IP address; select "Game mitigation". +3. Pick "Add a rule". +4. Select "Other" in the dropdown list and enter the Geyser port. If you use the "NetherNet and RakNet" option, add the `webrtc-port` as well. +5. Save and wait a few seconds for the changes to come into effect. + +### Oracle Cloud/OCI {#oracle-cloudoci} + +By default, Oracle Cloud will block all incoming traffic except for SSH and RDP. This must be resolved within Oracle Cloud itself and the Compute Instance running Geyser. + +The steps below assume that you are using the default ports for the Java server and Geyser, and should be adjusted accordingly. + +1. Find your Compute Instance in the OCI Console +2. Click on the instances Virtual Cloud Network (this will be under "Instance details") +3. On the left-hand side, select "Security Lists" +4. Select one of the security lists. By default only one security list will exist. It doesn't matter which security list we add the rules to. +5. Select "Add Ingress Rules" +6. Configure rules for Java (optional) + - Set "Source CIDR" to `0.0.0.0/0` + - Set "Destination Port Range" to `25565-25565` + - Select "Another Ingress Rule" +7. Configure rules for Geyser, once for TCP and once for UDP + - Set "Source CIDR" to `0.0.0.0/0` + - Set "Destination Port Range" to `19132-19132` + - Set "IP Protocol" to TCP + - Select "Another Ingress Rule", and repeat with "IP Protocol" set to UDP +8. Select "Add Ingress Rules" + +#### Oracle Linux {#oracle-linux} + +Run the following commands to allow Minecraft and Geyser through the OS firewall: + +```bash +sudo firewall-cmd --add-port=25565/tcp --permanent +sudo firewall-cmd --add-port=19132/tcp --permanent +sudo firewall-cmd --add-port=19132/udp --permanent +sudo firewall-cmd --reload +``` + +#### Ubuntu {#ubuntu} + +Run the following commands to allow Minecraft and Geyser through the OS firewall: + +```bash +sudo ufw allow 25565/tcp +sudo ufw allow 19132/tcp +sudo ufw allow 19132/udp +``` diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx b/i18n/zh-CN/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx new file mode 100644 index 0000000..47391e7 --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/geyser/supported-versions.mdx @@ -0,0 +1,47 @@ +--- +title: Supported versions +description: Information on the versions Geyser supports. +crowdin_sync: true +crowdin_page_id: f199ae24-f711-486d-8e42-3079be87e8cd +--- + +import { Versions } from '@site/src/components/Versions' +import DocCardList from '@theme/DocCardList'; + +# Currently supported versions \ {#currently-supported-versions} + +:::info +**Geyser currently supports Minecraft Bedrock and Minecraft Java **. +::: + +## Using Geyser with older Minecraft: Bedrock edition versions \ {#using-geyser-with-older-minecraft-bedrock-edition-versions} + +Older Bedrock versions are not supported. Minecraft: Bedrock Edition updates automatically on all platforms, so there are few users who would +want to use older versions. Further, older Bedrock versions do not have all features which Geyser support, which would lead to a sub-par experience. + +## Using Geyser on older Minecraft: Java edition servers \ {#using-geyser-on-older-minecraft-java-edition-servers} + +Geyser emulates a client, so a Java server must accept users using that version in order for Geyser to work. +This is possible thanks to [ViaVersion](https://viaversion.com/viaversion), which allows Java edition players with newer versions to join servers +that run older versions of the game. + +### Using Geyser-Spigot on a Spigot/Paper server running on 1.20.5 or above + +You can use Geyser-Spigot on servers that run on 1.20.5 or above. You will also need to run at least Java 21 or later to use Geyser. See [here](https://docs.papermc.io/misc/java-install) for more info on updating Java. Paper versions not supporting Java 21 can add `-DPaper.IgnoreJavaVersion=true` flag to the Java startup arguments to allow Paper to run on Java 21. + +In order for Bedrock players to chat (1.19.3+) or join (1.19.1/1.19.2), you need to disable chat signing. More information about that can be read on the [chat signing page](/wiki/geyser/secure-chat). + +### Using Geyser-Spigot on a Spigot/Paper server running on a version below 1.20.5 + +This is unfortunately not possible. You'll need to use a proxy such as Velocity or BungeeCord, or set up Geyser-Standalone separately with the [ViaVersion](https://viaversion.com/viaversion) plugin. Another alternative would be to install [ViaProxy](https://viaversion.com/viaproxy), which is a standalone ViaVersion proxy that +translates between different Minecraft: Java edition versions, and to install Geyser-ViaProxy on it. + +### Using Geyser on Fabric/NeoForge servers not on the latest Minecraft version \ {#using-geyser-on-fabric-neoforge-servers-not-on-the-latest-minecraft-version} + +Unfortunately, Geyser-Fabric and Geyser-NeoForge only support the latest version of Minecraft: Java edition. The recommended way to still use +Geyser with older versions would be to install [ViaProxy](https://viaversion.com/viaproxy), which is a standalone ViaVersion proxy that +translates between different Minecraft: Java edition versions, and to install Geyser-ViaProxy on it. This will also work with Floodgate auth. + +### Using Geyser-Velocity or Geyser-BungeeCord on a proxy + +Make sure you update your proxy software to the latest available version, and, if the backend servers are not on , also install the [ViaVersion](https://viaversion.com/viaversion) plugin on the backend servers. Velocity/BungeeCord support most Minecraft versions, so you can update them regardless of the backend server versions. diff --git a/i18n/zh-CN/docusaurus-theme-classic/footer.json b/i18n/zh-CN/docusaurus-theme-classic/footer.json new file mode 100644 index 0000000..1a69184 --- /dev/null +++ b/i18n/zh-CN/docusaurus-theme-classic/footer.json @@ -0,0 +1,50 @@ +{ + "link.title.Wiki": { + "message": "Wiki", + "description": "The title of the footer links column with title=Wiki in the footer" + }, + "link.title.Downloads": { + "message": "Downloads", + "description": "The title of the footer links column with title=Downloads in the footer" + }, + "link.title.Community": { + "message": "Community", + "description": "The title of the footer links column with title=Community in the footer" + }, + "link.title.More": { + "message": "More", + "description": "The title of the footer links column with title=More in the footer" + }, + "link.item.label.REST APIs": { + "message": "REST APIs", + "description": "The label of footer link with label=REST APIs linking to wiki/api/api.geysermc.org/global-api" + }, + "link.item.label.Other": { + "message": "Other", + "description": "The label of footer link with label=Other linking to download?project=other-projects" + }, + "link.item.label.Blog": { + "message": "Blog", + "description": "The label of footer link with label=Blog linking to blog" + }, + "link.item.label.Donate": { + "message": "Donate", + "description": "The label of footer link with label=Donate linking to https://opencollective.com/geysermc" + }, + "link.item.label.Global Linking": { + "message": "Global Linking", + "description": "The label of footer link with label=Global Linking linking to https://link.geysermc.org/" + }, + "link.item.label.Privacy Policy": { + "message": "Privacy Policy", + "description": "The label of footer link with label=Privacy Policy linking to https://ziax.com/terms/privacy-policy/" + }, + "logo.alt": { + "message": "GeyserMC logo", + "description": "The alt text of footer logo" + }, + "copyright": { + "message": "Copyright © 2026 GeyserMC. Built with Docusaurus.
This website is not an official Minecraft website and is not associated with Mojang Studios or Microsoft. All product and company names are trademarks or registered trademarks of their respective holders. Use of these names does not imply any affiliation or endorsement by them.", + "description": "The footer copyright" + } +} \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-theme-classic/navbar.json b/i18n/zh-CN/docusaurus-theme-classic/navbar.json new file mode 100644 index 0000000..c4f41a5 --- /dev/null +++ b/i18n/zh-CN/docusaurus-theme-classic/navbar.json @@ -0,0 +1,38 @@ +{ + "logo.alt": { + "message": "GeyserMC logo", + "description": "The alt text of navbar logo" + }, + "item.label.Wiki": { + "message": "Wiki", + "description": "Navbar item with label Wiki" + }, + "item.label.Blog": { + "message": "Blog", + "description": "Navbar item with label Blog" + }, + "item.label.Utilities": { + "message": "Utilities", + "description": "Navbar item with label Utilities" + }, + "item.label.Download": { + "message": "Download", + "description": "Navbar item with label Download" + }, + "item.label.REST APIs": { + "message": "REST APIs", + "description": "Navbar item with label REST APIs" + }, + "item.label.Other": { + "message": "Other", + "description": "Navbar item with label Other" + }, + "item.label.Dump Viewer": { + "message": "Dump Viewer", + "description": "Navbar item with label Dump Viewer" + }, + "item.label.Hosting": { + "message": "Hosting", + "description": "Navbar item with label Hosting" + } +} \ No newline at end of file diff --git a/package.json b/package.json index d568aa4..171ed22 100644 --- a/package.json +++ b/package.json @@ -19,37 +19,40 @@ "clean-api-docs:version": "docusaurus clean-api-docs:version", "gen-all": "docusaurus gen-api-docs all && docusaurus gen-api-docs:version petstore_versioned:all", "clean-all": "docusaurus clean-api-docs all && docusaurus clean-api-docs:version petstore_versioned:all", + "crowdin-sync": "docusaurus crowdin-sync", + "output-locales": "docusaurus output-locales", "re-gen": "yarn clean-all && yarn gen-all", "typecheck": "tsc" }, "dependencies": { - "@docusaurus/core": "3.6.3", - "@docusaurus/preset-classic": "3.6.3", - "@fortawesome/fontawesome-svg-core": "6.5.1", - "@fortawesome/free-brands-svg-icons": "6.5.1", - "@fortawesome/free-regular-svg-icons": "6.5.1", - "@fortawesome/free-solid-svg-icons": "6.5.1", - "@fortawesome/react-fontawesome": "0.2.0", - "@kas-tle/docusaurus-og": "https://github.com/Kas-tle/docusaurus-og", + "@crowdin/crowdin-api-client": "1.59.1", + "@docusaurus/core": "3.10.2", + "@docusaurus/preset-classic": "3.10.2", + "@docusaurus/theme-mermaid": "3.10.2", + "@fortawesome/fontawesome-svg-core": "7.3.1", + "@fortawesome/free-brands-svg-icons": "7.3.1", + "@fortawesome/free-regular-svg-icons": "7.3.1", + "@fortawesome/free-solid-svg-icons": "7.3.1", + "@fortawesome/react-fontawesome": "3.5.0", + "@kas-tle/docusaurus-og": "github:Kas-tle/docusaurus-og#5f91196240d02442fc8bf507f753a8e288b048fd", "@mdx-js/react": "3.0.0", - "clsx": "1.2.1", - "docusaurus-plugin-openapi-docs": "4.3.0", - "docusaurus-theme-openapi-docs": "4.3.0", - "prism-react-renderer": "2.1.0", - "react": "18.3.1", - "react-dom": "18.3.1", - "react-markdown": "^9.0.0" + "adm-zip": "0.6.1", + "clsx": "2.1.1", + "docusaurus-plugin-openapi-docs": "5.2.0", + "docusaurus-theme-openapi-docs": "5.2.0", + "prism-react-renderer": "2.4.1", + "react": "19.3.1", + "react-dom": "19.3.1", + "react-markdown": "10.1.0" }, "devDependencies": { - "@docusaurus/module-type-aliases": "^3.6.3", - "@docusaurus/tsconfig": "^3.6.3", - "@docusaurus/types": "^3.6.3", - "docusaurus-plugin-sass": "0.2.5", - "sass": "1.77.8", - "typescript": "5.7.2" - }, - "resolutions": { - "postman-code-generators": "1.14.0" + "@docusaurus/module-type-aliases": "3.10.2", + "@docusaurus/tsconfig": "3.10.2", + "@docusaurus/types": "3.10.2", + "@types/adm-zip": "0.6.0", + "docusaurus-plugin-sass": "0.2.7", + "sass": "1.105.1", + "typescript": "6.0.3" }, "browserslist": { "production": [ @@ -66,5 +69,5 @@ "engines": { "node": ">=22.0" }, - "packageManager": "yarn@4.5.3" + "packageManager": "yarn@4.18.1" } diff --git a/sidebars.ts b/sidebars.ts index 59496e5..3209a18 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -1,4 +1,5 @@ import type { SidebarsConfig } from '@docusaurus/plugin-content-docs'; +import type { SidebarItemConfig } from "@docusaurus/plugin-content-docs/src/sidebars/types.js"; /** * Creating a sidebar enables you to: @@ -12,7 +13,7 @@ import type { SidebarsConfig } from '@docusaurus/plugin-content-docs'; */ const sidebars: SidebarsConfig = { // By default, Docusaurus generates a sidebar from the docs folder structure - apiSidebar: [ + apiSidebar: withUniqueKeys([ "api/index", { type: "category", @@ -36,7 +37,7 @@ const sidebars: SidebarsConfig = { }, items: require("./wiki/api/downloads.geysermc.org/sidebar.ts"), }, - ], + ]), geyserSidebar: [ 'geyser/index', { @@ -47,11 +48,17 @@ const sidebars: SidebarsConfig = { id: 'geyser/setup' }, items: [ - 'geyser/supported-hosting-providers', + // TODO: hidden until the hosting page launches + // { + // type: 'link', + // label: 'Hosting Providers', + // href: '/hosting' + // }, 'geyser/using-geyser-with-consoles', - 'geyser/playit-gg', + 'geyser/nethernet-https', + 'geyser/port-forwarding', 'geyser/creating-a-startup-script', - 'geyser/port-forwarding' + 'geyser/playit-gg' ] }, { @@ -146,4 +153,17 @@ const sidebars: SidebarsConfig = { ] }; +function withUniqueKeys(items: SidebarItemConfig[]): SidebarItemConfig[] { + return items.map((item) => { + if (typeof item === "string") return item; + if (item.type === "doc") { + return { ...item, key: item.key ?? item.id }; + } + if (item.type === "category" && Array.isArray(item.items)) { + return { ...item, items: withUniqueKeys(item.items) }; + } + return item; + }); +} + export default sidebars; diff --git a/src/components/Collapsibles.tsx b/src/components/Collapsibles.tsx index 15fcf78..69650d2 100644 --- a/src/components/Collapsibles.tsx +++ b/src/components/Collapsibles.tsx @@ -5,7 +5,7 @@ const useQuery = () => { return new URLSearchParams(useLocation().search); }; -export const Collapsibles = ({ children }) => { +export const Collapsibles = ({ children }: { children: React.ReactNode }) => { return (
{children} diff --git a/src/components/Columns.tsx b/src/components/Columns.tsx index 9a92d39..ef7655e 100644 --- a/src/components/Columns.tsx +++ b/src/components/Columns.tsx @@ -1,6 +1,6 @@ import React from 'react'; -export const Columns = ({ children }) => { +export const Columns = ({ children }: { children: React.ReactNode }) => { return
{children}
; }; diff --git a/src/components/HeroBanner/index.tsx b/src/components/HeroBanner/index.tsx index 547962d..bc90d39 100644 --- a/src/components/HeroBanner/index.tsx +++ b/src/components/HeroBanner/index.tsx @@ -1,7 +1,13 @@ import React from 'react'; import styles from './styles.module.scss'; -const HeroBanner = ({ title, subheading, backgroundImage }) => { +interface HeroBannerProps { + title: React.ReactNode; + subheading: React.ReactNode; + backgroundImage: string; +} + +const HeroBanner = ({ title, subheading, backgroundImage }: HeroBannerProps) => { return (
( + + {children} + +); \ No newline at end of file diff --git a/src/components/MDXTranslatable.tsx b/src/components/MDXTranslatable.tsx new file mode 100644 index 0000000..e7e66d7 --- /dev/null +++ b/src/components/MDXTranslatable.tsx @@ -0,0 +1,331 @@ +import React from 'react'; +import Translate, { translate } from "@docusaurus/Translate" +import Link from '@docusaurus/Link'; +import { InlineCode } from "./InlineCode"; +import { Versions } from "./Versions"; + +const supportedVersions = Supported versions; +const code = (text: string) => {text}; +const bold = (node: React.ReactNode) => {node}; + +export const MDXTranslatable = { + setup: { + host_provider: () => Host Provider, + self_host: () => Self Host, + paper_spigot: () => <>Paper / Spigot, + modded_servers: () => Modded Servers, + fabric: () => <>Fabric, + neoforge: () => <>NeoForge, + proxy_servers: () => Proxy Servers, + velocity: () => <>Velocity, + bungeecord: () => <>BungeeCord, + viaproxy: () => <>ViaProxy, + standalone: () => Standalone, + + checking_server_version: () => Checking your server version, + installing_geyser: () => Installing Geyser, + download_jar: ({ jarName }: { jarName: string }) => ( + {jarName} + }}> + {"Download {jarName}."} + + ), + place_jar: ({ jarName, jarDirectory }: { jarName: string, jarDirectory: string }) => ( + {jarName}, + jarDirectory: {jarDirectory} + }}> + {"Place the {jarName} in the {jarDirectory} folder."} + + ), + restart_server: () => Restart the server., + restart_geyser: () => Restart Geyser., + restart_velocity: () => Restart Velocity., + restart_bungeecord: () => Restart BungeeCord., + restart_viaproxy: () => Restart ViaProxy., + fabric_dependency: () => ( + Fabric API }}> + {"If it is not installed already, download {fabricApi} and place it in the same folder."} + + ), + + // Platform notices and version checks + version_step_viaversion: () => ( + ViaVersion, + supportedVersions: {supportedVersions} + }}> + {"If your server is not running {version}, you will need to install {viaVersion}. For more information, see {supportedVersions}."} + + ), + version_step_proxy: () => ( + + {"All servers on the network must accept {version} Java clients, as Geyser imitates one."} + + ), + proxy_install_only: ({ proxy }: { proxy: string }) => ( + + {"Install Geyser only on the {proxy} server! You can install Floodgate on all servers for better skin support and network-wide Floodgate API availability for other plugins."} + + ), + modded_requirements: ({ jarName }: { jarName: string }) => ( + {supportedVersions} + }}> + {"{jarName} runs only on a {version} server, and only works alongside server-side mods. Mods that players also need to install on their client will not work. See {supportedVersions} for more details."} + + ), + + // Self-hosted guides + self_port_choice: ({ platform }: { platform: string }) => ( + + {"Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP, so it cannot be the port of the {platform} server."} + + ), + self_port_choice_standalone: () => ( + + Since you are self-hosting, you can choose the port freely; the default is 19132. Geyser uses it over both TCP and UDP. + + ), + self_port_sharing: () => ( + Important) }}> + {"{important}: No other program can use the Geyser port, over either protocol. This includes programs that use UDP, such as voice chat mods or Query, and programs that use TCP, such as another server, a web map, or a website."} + + ), + connect_local_title: () => Connecting from the same network, + connect_local: () => ( + + {"On the same device as the server, connect with {localhost} or {loopback} as the address. Other devices in the same local network can use your local IPv4 address, which starts with {ten} or {oneNineTwo}."} + + ), + connect_lan: () => ( + Friends) }}> + {"Alternatively, open Minecraft: Bedrock Edition and join the LAN server in the {friends} tab."} + + ), + connect_remote_title: () => Connecting from a different network, + connect_remote: () => ( + + To let players from outside your network join, you need to make the Geyser port reachable from the internet. + + ), + connect_tcp_udp: () => ( + + {"The Geyser port has to be forwarded for both TCP and UDP. Before NetherNet, forwarding UDP was enough. Now, players use TCP to find your server and UDP to play on it, so without TCP your server will not show up. If you use the \"NetherNet and RakNet\" option, also forward the {webrtcPort} for UDP."} + + ), + connect_options: () => You have two options:, + connect_port_forwarding: () => ( + Port forwarding), + guide: Port forwarding + }}> + {"{portForwarding}: open the Geyser port (e.g. 19132) for both TCP and UDP in your router and in your firewall. Players then connect with your public IPv4 address and the port. For detailed steps, see {guide}."} + + ), + connect_playit: () => ( + playit.gg Setup, + status: NetherNet support on playit.gg + }}> + {"{playit}: if you cannot open a port, or do not want to expose your home IP address, playit.gg can create a tunnel for you. See {guide}. That guide was written for RakNet. For NetherNet, see {status}. Ngrok does not work, since it does not support UDP."} + + ), + https_step_title: () => Recommended: Set up HTTPS for signaling, + https_step: () => ( + HTTPS for NetherNet, + warden: Warden + }}> + {"Geyser's built-in signaling server uses plain HTTP by default, so Minecraft shows players a \"Trust on First Use?\" prompt the first time they join. To avoid this prompt, serve signaling over HTTPS, as explained in {httpsGuide}. Some external signaling services, such as {warden}, provide HTTPS as well."} + + ), + floodgate_info: () => ( + Floodgate }}> + {"To allow Bedrock Edition players to join your server without a paid Java Edition account, you can use {floodgate}."} + + ), + + // ViaProxy + viaproxy_not_plugin_title: () => ViaProxy is not a plugin or mod, + viaproxy_not_plugin: () => ( + + {"ViaProxy is a standalone program that runs separately from your Minecraft server. Do not put the ViaProxy jar into your server's {plugins} or {mods} folder. To run Geyser as a plugin or mod on your server instead, pick your server software in the tabs above."} + + ), + viaproxy_setup: () => ( + ViaProxy }}> + {"Set up {viaProxy}."} + + ), + viaproxy_accounts: () => ( + Floodgate }}> + {"If you use the ViaProxy GUI, you can use its account management to join online mode servers with Bedrock Edition. If you use the ViaProxy CLI and want Bedrock players to join your online mode server, install and set up {floodgate}."} + + ), + viaproxy_auth_type: () => ( + + {"ViaProxy manages the {authType} setting itself, so its value in the config is ignored."} + + ), + + // Geyser Standalone + standalone_java: () => ( + + You need Java 21 or newer to run Geyser. To run Geyser Standalone on Android, see the end of this page. + + ), + standalone_not_plugin: () => ( + + Geyser Standalone is not a plugin or mod. It is a separate Java program that runs alongside your Java Edition server. + + ), + standalone_download: () => ( + Geyser Standalone }}> + {"Download {standalone}."} + + ), + standalone_folder: () => Create a new folder for Geyser, and put the jar in it., + standalone_start: () => Start Geyser Standalone:, + standalone_gui: () => ( + + {"{gui} (recommended): double-click the jar file. Geyser creates all the files it needs."} + + ), + standalone_console: () => ( + Console), + startupScript: Creating a Startup Script + }}> + {"{console}: create a startup script, like the one you would use for a Paper server. See {startupScript} for what to put into it. Run it, and Geyser creates all the files it needs."} + + ), + standalone_remote_intro: () => ( + + {"To choose which Java Edition server Geyser Standalone sends players to, find the {java} section:"} + + ), + standalone_remote: () => ( + Floodgate Setup + }}> + {"Change {address} to the Java server's address, or leave it as it is if the server runs on the same machine as Geyser. Then change {port} to the Java server's port. Set {authType} to {floodgate} if you set up Floodgate on the Java server, otherwise to {online} for an online mode server or {offline} for an offline mode server. To use Floodgate with Geyser Standalone, see {floodgateSetup}."} + + ), + standalone_android_title: () => Running Geyser Standalone on Android, + standalone_android_caution: () => ( + + Apps such as Termux can run Geyser on Android, but how well this works depends on how powerful your device is. Do so at your own risk. + + ), + standalone_termux_install: () => ( + Termux }}> + {"Download and install {termux}."} + + ), + run_command: ({ command }: { command: string }) => ( + {"Run {command}."} + ), + standalone_termux_script: () => ( + + Alternatively, there is an automated setup script for clean Termux installs. It might not work for everyone, so try it if the steps above do not work: + + ), + https_note: () => ( + HTTPS }}> + {"Unless signaling runs over {https}, Minecraft asks players whether they trust the server the first time they join."} + + ), + + configuring_geyser: () => Configuring Geyser, + open_config_match: ({ configLocation }: { configLocation: string }) => ( + {configLocation}, bedrock: bedrock: }}> + {"Now open the file {configLocation}. Find the part that starts with {bedrock}, and change the lines shown below."} + + ), + preconfigured: ({ name }: { name: string }) => ( + + {"No changes needed. {name} automatically configures Geyser."} + + ), + transport_nethernet_explainer: () => ( + + NetherNet is supported fully by 26.50+. If you'd like to also have working MOTD and player count for older versions, you will need to set up both NetherNet and Raknet. + + ), + transport_both_explainer: () => ( + + Also accepts RakNet, for additional compatibility: some Bedrock versions, such as 26.40, fetch the server's MOTD and player count over RakNet. This option needs a separate UDP port for NetherNet. + + ), + placeholder: () => Replace this, + replace_with: () => With this, + placeholder_java_port: () => The port of the Java server., + placeholder_java_port_udp: () => ( + port }}> + {"A UDP port for NetherNet, other than {port}. This can be the Java server's port: the Java server only uses it over TCP, so Geyser can use it over UDP. Any other available UDP port works too."} + + ), + placeholder_second_available_port: () => ( + port }}> + {"An available UDP port for NetherNet, other than {port}. Open it for UDP."} + + ), + raknet_on_port: () => ( + port }}> + {"RakNet uses {port} over UDP, so that port has to be open for UDP as well."} + + ), + + summary_nethernet_reported: () => Reported to work with NetherNet, + summary_supporter_configures: ({ name }: { name: string }) => ( + {"{name} configures Geyser for you automatically, including NetherNet."} + ), + summary_updated: ({ date }: { date: string }) => ( + {"Instructions last updated on {date}"} + ), + badge_gold: () => Gold supporter, + badge_silver: () => Silver supporter, + badge_bronze: () => Bronze supporter, + + unconfirmed_title: () => Not checked for NetherNet yet, + warning_title: () => Warning, + unconfirmed: ({ name }: { name: string }) => ( + Discord }}> + {"These instructions have not been checked for NetherNet yet. If Bedrock players can't join, reach out to {name} to get instructions on how to use Geyser, and let us know on {discord} so we can update this guide."} + + ), + try_not_listed: ({ link }: { link: string }) => ( + "Not listed" guide for using only the Java server's port, + warden: Warden + }}> + {"If your host cannot give you a separate port, follow the {notListed} instead. Players then join through {warden}, an external signaling service."} + + ), + no_signaling: ({ name }: { name: string }) => ( + + {"{name} supports neither built-in nor external signaling, so Bedrock players cannot connect over NetherNet."} + + ), + + additional_steps: () => Additional Steps, + connecting_on_bedrock: () => Connecting on Bedrock, + + hosting_provider_article: () => Host's Geyser guide, + hosting_provider_website: () => Website, + hosting_provider_support: () => Support, + hosting_provider_discord: () => <>Discord, + } +} \ No newline at end of file diff --git a/src/components/PlatformIcon.tsx b/src/components/PlatformIcon.tsx index 3fefdf7..f630804 100644 --- a/src/components/PlatformIcon.tsx +++ b/src/components/PlatformIcon.tsx @@ -1,6 +1,14 @@ import React from 'react'; -const PlatformIcon = ({ img = null, svg: SvgComponent = null, text="", width = '20px', height = '20px' }) => { +type PlatformIconProps = { + img?: string | null; + svg?: React.ComponentType> | null; + text: string; + width?: string; + height?: string; +}; + +const PlatformIcon = ({ img = null, svg: SvgComponent = null, text="", width = '20px', height = '20px' }: PlatformIconProps) => { return ( img != null ? <> diff --git a/src/components/ProjectDownload.tsx b/src/components/ProjectDownload.tsx index c829683..307dab5 100644 --- a/src/components/ProjectDownload.tsx +++ b/src/components/ProjectDownload.tsx @@ -135,7 +135,7 @@ export const ProjectDownload: React.FC = ({ projectId, des ); }; -function LinkedCommitMessage({ message, repo }) { +function LinkedCommitMessage({ message, repo }: { message: string, repo: string }) { const regex = /#(\d+)/g; const parts = message.split(/(#\d+)/).filter((part: string) => part); diff --git a/src/components/Provider.module.scss b/src/components/Provider.module.scss new file mode 100644 index 0000000..f32bb28 --- /dev/null +++ b/src/components/Provider.module.scss @@ -0,0 +1,207 @@ +$gold: #d4af37; +$silver: #a8a9ad; +$bronze: #cd7f32; + +.summary { + margin: 1rem 0; + padding: 0.5rem 0.75rem; + border: 1px solid var(--ifm-color-emphasis-300); + border-radius: var(--ifm-global-radius); + font-size: 0.875rem; + + // Supporting hosts get the tier color on the whole border, like their cards on the hosting page + &.gold { + border: 2px solid $gold; + } + + &.silver { + border: 2px solid $silver; + } + + &.bronze { + border: 2px solid $bronze; + } +} + +.summaryRow { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 0.25rem 0.5rem; +} + +.summaryName { + font-size: 1rem; +} + +// Logos sit on a dark plate in both themes, like on the hosting page +.summaryLogo { + display: flex; + align-items: center; + height: 1.5rem; + padding: 0.15rem 0.3rem; + border-radius: 0.25rem; + background-color: #1b1b1d; + + img { + height: 100%; + width: auto; + } +} + +.tierBadge { + color: #1c1e21; + + &:hover { + color: #1c1e21; + text-decoration: none; + } + + &.gold { + background-color: $gold; + } + + &.silver { + background-color: $silver; + } + + &.bronze { + background-color: $bronze; + } +} + +// Link buttons below the description, in the site's primary green +.summaryLinks { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + margin-top: 0.75rem; + + :global(.button) { + display: inline-flex; + align-items: center; + gap: 0.4rem; + } +} + +.summaryMeta { + margin-top: 0.25rem; + color: var(--ifm-color-emphasis-700); +} + +.hostNote { + font-size: 0.875rem; + color: var(--ifm-color-emphasis-700); + + p:last-child { + margin-bottom: 0; + } +} + +// Numbered steps with a line connecting them +.steps { + list-style: none; + counter-reset: step; + padding-left: 0; + margin: 2rem 0; +} + +.step { + counter-increment: step; + position: relative; + padding-left: 3rem; + padding-bottom: 1.5rem; + + &::before { + content: counter(step); + position: absolute; + left: 0; + top: 0; + width: 2rem; + height: 2rem; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-weight: var(--ifm-font-weight-bold); + color: var(--ifm-color-white); + background-color: var(--ifm-color-primary); + } + + &:not(:last-child)::after { + content: ''; + position: absolute; + left: calc(1rem - 1px); + top: 2.25rem; + bottom: 0.25rem; + width: 2px; + background-color: var(--ifm-color-emphasis-300); + } +} + +// Step titles are h4 headings (see Step), shown at h3 size +.stepTitle { + margin: 0.2rem 0 0.75rem; + font-size: var(--ifm-h3-font-size); +} + +.stepBody { + > :last-child { + margin-bottom: 0; + } +} + +.transportExplainer { + color: var(--ifm-color-emphasis-700); +} + +.placeholders { + display: table; + width: 100%; + + td:first-child { + white-space: nowrap; + } +} + +// Readable status pills (the default warning badge has too little contrast) +.pill { + display: inline-block; + padding: 0.1rem 0.55rem; + border-radius: 999px; + font-size: 0.8rem; + font-weight: var(--ifm-font-weight-semibold); + line-height: 1.5; + white-space: nowrap; +} + +// A mock of Bedrock's "Add Server" screen +.addServer { + max-width: 22rem; + padding: 0.75rem 1rem 1rem; + border: 2px solid #1e1e1f; + background-color: #48494a; + color: #fff; + font-family: var(--ifm-font-family-base); + box-shadow: inset 0 -4px 0 #313233; + + label { + display: block; + margin-top: 0.5rem; + font-size: 0.8rem; + color: #d0d1d4; + } +} + +.addServerTitle { + text-align: center; + font-weight: var(--ifm-font-weight-bold); +} + +.addServerField { + margin-top: 0.2rem; + padding: 0.35rem 0.6rem; + border: 2px solid #1e1e1f; + background-color: #313233; + font-size: 0.9rem; +} diff --git a/src/components/Provider.tsx b/src/components/Provider.tsx index 7f8a69a..ba38cee 100644 --- a/src/components/Provider.tsx +++ b/src/components/Provider.tsx @@ -1,89 +1,644 @@ -import type { HostingProvider, ProviderType } from "@site/src/types/providers"; -import ReactMarkdown from "react-markdown"; -import Admonition from '@theme/Admonition'; -import React, { useState } from 'react'; +import type { GeyserConfig, HostingProvider, OpenCollaborationTier, PortSource } from "@site/src/types/providers"; +import React, { createContext, useContext, useEffect, useRef, useState } from 'react'; import Translate, { translate } from "@docusaurus/Translate"; import { providersData } from "../data/providers"; +import Admonition from '@theme/Admonition'; +import { MDXTranslatable } from "./MDXTranslatable"; +import ReactMarkdown from 'react-markdown'; +import Link from '@docusaurus/Link'; +import Heading from '@theme/Heading'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import clsx from 'clsx'; +import styles from './Provider.module.scss'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import { useHistory, useLocation } from '@docusaurus/router'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { faBook, faGlobe, faHeadset } from '@fortawesome/free-solid-svg-icons'; +import { faDiscord } from '@fortawesome/free-brands-svg-icons'; -export const noP = (props: { children: any; }) => { +export const noP = (props: { children?: any; }) => { const { children } = props; return children; } -export const Provider = ({ type }) => { - const hostingProviders: HostingProvider[] = providersData[type as ProviderType] - - return ( - - - - - - - - - {hostingProviders.map((provider: HostingProvider) => ( - - - - - ))} - -
ProviderDescription
- {provider.name} - - {provider.description != null ? ( - - ) : ( - '' - )} -
- ) +// Ports for hosts we have no notes on. The setup guide offers both, as tabs. +const notListedPorts: Record<'allocated' | 'javaOnly', HostingProvider['config']> = { + // One allocated port, open for both TCP and UDP, used for signaling and gameplay + allocated: { + udp: { + obtain: translate({ + id: 'providers.provider.not_listed.allocate_port', + message: "Allocate a port in your server panel, open for both TCP and UDP." + }) + }, + builtin_signaling: 'same_as_udp' + }, + // Only the Java server port: gameplay shares it over UDP, and players find the server through external signaling + javaOnly: { + udp: 'java' + } } -export const ProviderSelector = () => { - const providers: HostingProvider[] = [ - ...Object.values(providersData.built_in), - ...Object.values(providersData.support), - ...Object.values(providersData.no_support) - ].flat().sort((a, b) => a.name.localeCompare(b.name)); - - providers.unshift({ - name: 'Not listed', - description: translate({ - id: 'providers.provider.not_listed.description', - message: "If your hosting provider is not listed, try enabling the `clone-remote-port` option in the config. Then, restart the server, and try connecting with the same IP and port as on Java Edition.
If this does not work, ask your server hosting provider for a UDP port, and use that. For VPS/KVM servers please follow the self-hosting steps." +const notListed: HostingProvider = { + name: 'Not listed', + url: null, + config: { ...notListedPorts.allocated, confirmed: false }, + notices: { + info: translate({ + id: 'providers.provider.not_listed.info', + message: "For VPS/KVM servers, please follow the self-hosting steps." }) - } as HostingProvider); - - - const [selectedProvider, setSelectedProvider] = useState(null); - - const handleSelectionChange = (event) => { - const selectedName = event.target.value; - const provider = providers.find(p => p.name === selectedName); - setSelectedProvider(provider); } +} + +// The two "Not listed" options, shown as tabs that switch together in the config and connect steps +const notListedVariants = [ + { + value: 'allocated', + label: translate({ id: 'mdx.setup.not_listed.tab_allocated', message: 'I can allocate ports' }), + provider: { ...notListed, config: notListedPorts.allocated } + }, + { + value: 'java-only', + label: translate({ id: 'mdx.setup.not_listed.tab_java_only', message: 'I only have the Java server port' }), + provider: { ...notListed, config: notListedPorts.javaOnly } + } +]; + +// What a self-hosted server looks like to the config builder: one port, open for both TCP and UDP +const selfHosted: HostingProvider = { + name: 'Self-hosted', + url: null, + config: { udp: 19132, builtin_signaling: 'same_as_udp' } +} + +// Open Collaboration tiers that are highlighted in the setup guide, highest first +export const highlightedTiers: OpenCollaborationTier[] = ['gold', 'silver', 'bronze']; +// Tiers that get an entry on the hosting page +export const hostingPageTiers: OpenCollaborationTier[] = ['gold', 'silver']; +export const isHighlighted = (provider: HostingProvider) => + provider.open_collaboration?.tier ? highlightedTiers.includes(provider.open_collaboration.tier) : false; + +const byName = (a: HostingProvider, b: HostingProvider) => a.name.localeCompare(b.name); +const byTierThenName = (a: HostingProvider, b: HostingProvider) => { + const tierA = a.open_collaboration?.tier; + const tierB = b.open_collaboration?.tier; + const indexA = tierA ? highlightedTiers.indexOf(tierA) : Infinity; + const indexB = tierB ? highlightedTiers.indexOf(tierB) : Infinity; + return indexA - indexB || byName(a, b); +}; +export const openCollaborationProviders: HostingProvider[] = providersData.filter(isHighlighted).sort(byTierThenName); +const otherProviders: HostingProvider[] = providersData.filter(p => !isHighlighted(p)).sort(byName); + +// Whether the host configures Geyser itself. A type guard, so the other branch knows the config has ports. +export const isPreconfigured = (config: GeyserConfig): config is Extract => config.preconfigured === true; + +// NetherNet details count as confirmed unless the host is marked with `confirmed: false` +export const isConfirmed = (provider: HostingProvider) => provider.config.confirmed !== false; + +// Links to the setup guide with a provider selected +export const providerSetupLink = (provider: HostingProvider) => `/wiki/geyser/setup/?host=provider&provider=${encodeURIComponent(provider.name)}`; + +interface ProviderSelectorProps { + setProvider: (provider: HostingProvider | null) => void; +} + +export const ProviderSelector = ({ setProvider }: ProviderSelectorProps) => { + const providers: HostingProvider[] = [notListed, ...openCollaborationProviders, ...otherProviders]; + + const [selectedProvider, setSelectedProvider] = useState(null); + const history = useHistory(); + const location = useLocation(); + + const select = (name: string) => { + const provider = providers.find(p => p.name.toLowerCase() === name.toLowerCase()) ?? null; + setSelectedProvider(provider); + setProvider(provider); + } + + // The "Not listed" ports tab, kept while the self host tab is open so it can be restored + const hiddenPorts = useRef(null); + + // Keep the selected host in the URL, so the guide for a host can be linked + const linkProvider = (name: string | null, ports: string | null = null) => { + const params = new URLSearchParams(location.search); + // Only the "Not listed" guide uses the ports tabs + if (name !== notListed.name) { + params.delete('ports'); + } else if (ports) { + params.set('ports', ports); + } + if (name === null) { + params.delete('provider'); + } else { + params.set('host', 'provider'); + params.set('provider', name); + } + const query = params.toString(); + history.replace({ search: query ? `?${query}` : '', hash: location.hash }); + } + + const selectAndLink = (name: string) => { + select(name); + linkProvider(name === 'none' ? null : name); + } + + useEffect(() => { + const name = new URLSearchParams(location.search).get('provider'); + if (name) { + select(name); + } + }, []); + + // The host only belongs in the URL while the hosting provider tab is open + useEffect(() => { + const params = new URLSearchParams(location.search); + const onProviderTab = (params.get('host') ?? 'provider') === 'provider'; + if (!onProviderTab && params.has('provider')) { + hiddenPorts.current = params.get('ports'); + linkProvider(null); + } else if (onProviderTab && selectedProvider && !params.has('provider')) { + linkProvider(selectedProvider.name, hiddenPorts.current); + hiddenPorts.current = null; + } + }, [location.search]); + + const option = (provider: HostingProvider) => ( + + ); return (
- selectAndLink(event.target.value)}> - {providers.map((provider) => ( - - ))} - - Provider Instructions}> - {selectedProvider ? ( - {selectedProvider.description} - ) : ( -

- Select a provider to see specific installation instructions -

+ {option(notListed)} + {openCollaborationProviders.length > 0 && ( + + {openCollaborationProviders.map(option)} + )} -
+ + {otherProviders.map(option)} + +
); } + +/** + * Picks the signaling setup for a provider: built-in signaling when the host gives Geyser a TCP port, external signaling otherwise. + */ +const signalingSetup = (provider: HostingProvider) => { + const { config } = provider; + if (isPreconfigured(config)) { + // The host runs signaling itself; players connect with the port it gives them. + return { builtin: false, external: true, separateTcp: false, bedrockPort: config.port }; + } + const { udp, builtin_signaling, external_signaling } = config; + const builtin = builtin_signaling !== undefined; + const external = external_signaling !== false; + // The TCP port built-in signaling uses is the Bedrock `port`, so it is also the port players connect with. + // Without built-in signaling, `port` is only used as the UDP port. + const separateTcp = builtin && builtin_signaling !== 'same_as_udp'; + const bedrockPort: PortSource = separateTcp ? builtin_signaling as PortSource : udp; + return { builtin, external, separateTcp, bedrockPort }; +} + +type Transport = 'nethernet' | 'both'; + +type ConfigNote = { + placeholder?: string; // shown in the placeholder column; notes without one are shown below the table + text: React.ReactNode; +} + +/** + * Builds the `bedrock` section of the Geyser config for a provider, and the notes explaining its placeholders. + */ +const buildConfig = (provider: HostingProvider, transport: Transport, selfHost: boolean) => { + const { config } = provider; + if (isPreconfigured(config)) { + throw new Error(`${provider.name} is preconfigured, so it has no config to build`); + } + const { udp, external_signaling, notes: configNotes = [] } = config; + const { builtin, separateTcp, bedrockPort } = signalingSetup(provider); + const lines = ['bedrock:']; + const notes: ConfigNote[] = []; + + const portValue = (source: PortSource, placeholder: string): string => { + if (source === 'java') { + notes.push({ placeholder, text: }); + return placeholder; + } + if (typeof source === 'number') { + return String(source); + } + notes.push({ placeholder, text: {source.obtain} }); + return placeholder; + } + + if (bedrockPort === 'java') { + lines.push(' clone-remote-port: true'); + } else { + // Many hosts used to preset clone-remote-port, which makes Geyser ignore `port` + if (!selfHost) { + lines.push(' clone-remote-port: false'); + } + lines.push(` port: ${portValue(bedrockPort, separateTcp ? 'TCP_PORT' : 'TCP_UDP_PORT')}`); + } + + if (separateTcp) { + lines.push(` webrtc-port: ${portValue(udp, 'UDP_PORT')}`); + if (transport === 'both') { + notes.push({ text: }); + } + } else if (transport === 'both' && !selfHost) { + // RakNet stays on `port`. The Java server only uses its port over TCP, so NetherNet can use it over UDP + // without the user having to get another port. + lines.push(' webrtc-port: UDP_PORT'); + notes.push({ placeholder: 'UDP_PORT', text: }); + } else if (transport === 'both') { + lines.push(' webrtc-port: UDP_PORT'); + notes.push({ placeholder: 'UDP_PORT', text: }); + } + + lines.push(` transport: ${transport}`); + + // Built-in signaling is the default, so the signaling section only needs changes for hosts that confirmed something else. + // Sharing the Java server's port always ends up on external signaling, so say so instead of relying on Geyser's fallback. + if ((isConfirmed(provider) || udp === 'java') && !builtin) { + lines.push(' signaling:', ' mode: nxs'); + if (external_signaling) { + lines.push(' nxs:', ` endpoint: ${external_signaling.endpoint}`); + if (external_signaling.token_instruction) { + lines.push(' token: YOUR_TOKEN'); + notes.push({ placeholder: 'YOUR_TOKEN', text: {external_signaling.token_instruction} }); + } + } + } + + for (const note of configNotes) { + notes.push({ text: {note} }); + } + + return { yaml: lines.join('\n'), notes }; +} + +const ConfigSnippet = ({ provider, transport, configLocation, selfHost, explain = true }: { provider: HostingProvider, transport: Transport, configLocation: string, selfHost: boolean, explain?: boolean }) => { + const { yaml, notes } = buildConfig(provider, transport, selfHost); + const placeholders = notes.filter(note => note.placeholder); + const others = notes.filter(note => !note.placeholder); + return ( + <> + {explain && ( +

+ {transport === 'nethernet' && } + {transport === 'both' && } +

+ )} + {yaml} + {placeholders.length > 0 && ( + + + + + + + + + {placeholders.map(note => ( + + + + + ))} + +
{note.placeholder}{note.text}
+ )} + {others.map((note, i) =>

{note.text}

)} + + ); +} + +const ConnectInstructions = ({ provider }: { provider: HostingProvider }) => { + if (provider.connect) { + return {provider.connect}; + } + const { bedrockPort } = signalingSetup(provider); + const preconfigured = isPreconfigured(provider.config); + // Sharing the Java server's port leaves no TCP port for built-in signaling, so Geyser switches to external signaling, + // which gives the server its own address. Hosts that configure Geyser themselves may run signaling another way. + if (bedrockPort === 'java' && !preconfigured) { + return ( +

+ Warden }}> + {"Players do not connect with the Java server's address. After Geyser starts, it shows the address and port to use in the console, provided by the external signaling service ({warden} by default). Share these with your players."} + +

+ ); + } + let port: React.ReactNode; + if (bedrockPort === 'java') { + port = Your Java server's port; + } else if (typeof bedrockPort === 'number') { + port = String(bedrockPort); + } else if (preconfigured) { + // There is no config step to refer to, so show where the port comes from + port = {bedrockPort.obtain}; + } else { + port = The port you set in "Configuring Geyser"; + } + return ( + <> +

+ + In Minecraft: Bedrock Edition, go to Play, then Servers, and select Add Server. Fill it in like this: + +

+ + + ); +} + +const tierBadges: Record = { + gold: , + silver: , + bronze: , +}; + +/** + * A compact bar at the top of the guide: who the host is, and what it supports. + */ +const HostSummary = ({ provider }: { provider: HostingProvider }) => { + const { i18n } = useDocusaurusContext(); + const confirmed = isConfirmed(provider); + const tier = isHighlighted(provider) ? provider.open_collaboration?.tier : null; + const logo = useBaseUrl(provider.open_collaboration?.logo ?? ''); + // The host's own guide is the main action, so it is the filled button + const links = [ + provider.links?.article ? { to: provider.links.article, icon: faBook, primary: true, label: } : undefined, + provider.url ? { to: provider.url, icon: faGlobe, label: } : undefined, + provider.links?.support ? { to: provider.links.support, icon: faHeadset, label: } : undefined, + provider.links?.discord ? { to: provider.links.discord, icon: faDiscord, label: } : undefined, + ].filter((link): link is NonNullable => link !== undefined); + + // The provider list is crowd-sourced, so this is worded as a report rather than a guarantee + const reported = confirmed && ; + + // Dates are stored as YYYY-MM-DD; format them in UTC so they do not shift by a day in other time zones + const updated = provider.updated && new Date(`${provider.updated}T00:00:00Z`) + .toLocaleDateString(i18n.currentLocale, { year: 'numeric', month: 'long', day: 'numeric', timeZone: 'UTC' }); + + return ( +
+
+ {tier && provider.open_collaboration?.logo && ( + + )} + {provider.name} + {/* TODO: link the badge to /hosting again once the hosting page launches */} + {tier && ( + + {tierBadges[tier]} + + )} +
+ {tier ? ( + // Supporting hosts configure Geyser for their users, so the crowd-sourced details do not apply +
+ +
+ ) : (updated || reported) && ( +
+ {updated && } + {updated && reported && ' · '} + {reported} +
+ )} +
+ {links.map(link => ( + + + {link?.label} + + ))} +
+
+ ); +} + +/** + * Shown first, above the host summary: the steps below may not work if NetherNet is not confirmed for this host. + */ +const UnconfirmedNotice = ({ provider }: { provider: HostingProvider }) => { + // The fallback is "Not listed" with only the Java server's port, which uses external signaling (Warden). + // Keep the platform the user is on. + const platform = new URLSearchParams(useLocation().search).get('platform'); + const notListedLink = useBaseUrl(`${providerSetupLink(notListed)}&ports=java-only${platform ? `&platform=${encodeURIComponent(platform)}` : ''}`); + // "Not listed" has no instructions to check, so it gets no notice; its steps cover both options instead + if (isConfirmed(provider) || provider === notListed) { + return null; + } + return ( + }> +

+ +

+ {/* A plain link, so the page reloads and the selector picks up the provider from the URL */} +

+
+ ); +} + +/** + * Host-specific warnings, shown below the host summary with the platform notices. + */ +const HostNotice = ({ provider }: { provider: HostingProvider }) => { + const { builtin, external } = signalingSetup(provider); + if (!builtin && !external) { + return ( + + + + ); + } + const warn = provider.notices?.warn; + if (!warn) { + return null; + } + return ( + }> + {warn} + + ); +} + +// Numbered setup steps, shared by the hosted provider and self-hosted guides +export const SetupSteps = ({ children }: { children: React.ReactNode }) => ( +
    {children}
+); + +// Level 4 keeps step titles out of the table of contents, which only lists levels 2 and 3 +export const Step = ({ title, id, children }: { title: React.ReactNode, id: string, children: React.ReactNode }) => ( +
  • + {title} +
    {children}
    +
  • +); + +/** + * The config changes for a server, with a tab for NetherNet only and one that also accepts RakNet. + */ +const ConfigTabs = ({ provider, configLocation, selfHost = false, standalone = false }: { provider: HostingProvider, configLocation: string, selfHost?: boolean, standalone?: boolean }) => { + // With only the Java server's port, there is no second UDP port for RakNet, so only NetherNet is possible + if (!isPreconfigured(provider.config) && provider.config.udp === 'java') { + return ( + <> +

    + +

    {standalone ? : }

    + + ); + } + return ( + <> +

    + + + + + + + + +

    {standalone ? : }

    + + ); +} + +// The config step for self-hosted servers, for use in the self-hosting pages +export const SelfHostConfig = ({ configLocation, standalone }: { configLocation: string, standalone?: boolean }) => ( + +); + +const ConnectStep = ({ provider }: { provider: HostingProvider }) => ( + <> + + {/* Unconfirmed hosts get the default built-in signaling, which is the one that can use HTTPS, + unless they share the Java server's port, where Geyser uses external signaling instead */} + {!isPreconfigured(provider.config) && provider.config.udp !== 'java' && (signalingSetup(provider).builtin || !isConfirmed(provider)) && ( +

    + )} + +); + +// The provider picked in the setup guide +export const SelectedProvider = createContext(null); + +export interface ProviderGeyserSetupProps { + jarName: string; + jarDirectory: string; + configLocation: string; + notice?: React.ReactNode; // Platform notice, shown below the host summary so the host comes first + versionStep?: React.ReactNode; // Shown as the first step, e.g. which plugin older server versions need + installNote?: React.ReactNode; // An extra item in the install step, e.g. a required dependency +} + +export const ProviderGeyserSetup: React.FC = ({ jarName, jarDirectory, configLocation, notice, versionStep, installNote }) => { + const provider = useContext(SelectedProvider); + if (!provider) { + return null; + } + + return ( + <> + + + {provider.url && } + + {notice} + + + + + {versionStep && ( + }> +

    {versionStep}

    +
    + )} + + }> + {provider.install ? ( + {provider.install} + ) : ( +
      +
    • +
    • + {installNote &&
    • {installNote}
    • } +
    • +
    + )} +
    + + }> + {provider === notListed ? ( + + {notListedVariants.map((variant, i) => ( + + + + ))} + + ) : provider.config.preconfigured ? ( +

    + ) : ( + + )} +
    + + {provider.extra_step && ( + }> + {provider.extra_step} + + )} + + }> + {provider === notListed ? ( + // Same groupId as the config step, so both switch together + + {notListedVariants.map((variant, i) => ( + + + + ))} + + ) : ( + + )} + +
    + + {provider.notices?.info && ( +
    + {provider.notices.info} +
    + )} + + ) +} diff --git a/src/components/Questions.tsx b/src/components/Questions.tsx index 1182aba..05d310f 100644 --- a/src/components/Questions.tsx +++ b/src/components/Questions.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useRef, useState } from 'react'; -export const Questions = ({ children }) => { +export const Questions = ({ children }: { children: React.ReactNode }) => { return (
    {children} @@ -8,9 +8,9 @@ export const Questions = ({ children }) => { ); }; -export const Q = ({ children }) => { +export const Q = ({ children }: { children: React.ReactNode }) => { const [isAnswerVisible, setIsAnswerVisible] = useState(false); - const answerRef = useRef(null); + const answerRef = useRef(null); const [answerHeight, setAnswerHeight] = useState(0); useEffect(() => { @@ -19,8 +19,9 @@ export const Q = ({ children }) => { } }, [isAnswerVisible]); - const questionText = children[0]; - const answerComponent = React.Children.toArray(children)[1]; + const childArray = React.Children.toArray(children); + const questionText = childArray[0]; + const answerComponent = childArray[1]; const arrowClass = isAnswerVisible ? 'collapsible-arrow expanded' : 'collapsible-arrow'; @@ -38,7 +39,7 @@ export const Q = ({ children }) => { ); }; -export const A = ({ children }) => { +export const A = ({ children }: { children: React.ReactNode }) => { return (
    {children} diff --git a/src/components/SetupGuide.tsx b/src/components/SetupGuide.tsx new file mode 100644 index 0000000..da904c0 --- /dev/null +++ b/src/components/SetupGuide.tsx @@ -0,0 +1,208 @@ +import React from 'react'; +import Admonition from '@theme/Admonition'; +import CodeBlock from '@theme/CodeBlock'; +import { MDXTranslatable } from './MDXTranslatable'; +import { ProviderGeyserSetup, SelfHostConfig, SetupSteps, Step } from './Provider'; + +const t = MDXTranslatable.setup; + +export type PlatformId = 'paper-spigot' | 'fabric' | 'neoforge' | 'velocity' | 'bungeecord' | 'viaproxy' | 'standalone'; + +type Platform = { + name: string; + jarName: string; + jarDirectory: string; + configLocation: string; + notice?: React.ReactNode; // shown above the steps + versionStep?: React.ReactNode; + installFirst?: React.ReactNode; // an item before downloading Geyser, e.g. setting up the program it runs in + installNote?: React.ReactNode; // an extra item in the install step + configNotes?: React.ReactNode; // extra paragraphs in the configure step when self-hosting + restart: React.ReactNode; // the last install item when self-hosting +} + +// Everything that differs between platforms; the guides below are the same for all of them +const platforms: Record, Platform> = { + 'paper-spigot': { + name: 'Paper / Spigot', + jarName: 'Geyser-Spigot.jar', + jarDirectory: 'plugins', + configLocation: '/plugins/Geyser-Spigot/config.yml', + versionStep: , + restart: , + }, + fabric: { + name: 'Fabric', + restart: , + jarName: 'Geyser-Fabric.jar', + jarDirectory: 'mods', + configLocation: '/config/Geyser-Fabric/config.yml', + notice: , + installNote: , + }, + neoforge: { + name: 'NeoForge', + restart: , + jarName: 'Geyser-NeoForge.jar', + jarDirectory: 'mods', + configLocation: '/config/Geyser-NeoForge/config.yml', + notice: , + }, + velocity: { + name: 'Velocity', + restart: , + jarName: 'Geyser-Velocity.jar', + jarDirectory: 'plugins', + configLocation: '/plugins/Geyser-Velocity/config.yml', + notice: , + versionStep: , + }, + bungeecord: { + name: 'BungeeCord', + restart: , + jarName: 'Geyser-BungeeCord.jar', + jarDirectory: 'plugins', + configLocation: '/plugins/Geyser-BungeeCord/config.yml', + notice: , + versionStep: , + }, + viaproxy: { + name: 'ViaProxy', + restart: , + jarName: 'Geyser-ViaProxy.jar', + jarDirectory: 'plugins', + configLocation: '/plugins/Geyser/config.yml', + notice: }>, + installFirst: , + configNotes: ( + <> +

    +

    + + ), + }, +}; + +// The setup guide for a server at a hosting provider. Reads the host from SelectedProvider. +export const HostedGuide = ({ platform }: { platform: Exclude }) => { + const { jarName, jarDirectory, configLocation, notice, versionStep, installNote } = platforms[platform]; + return ; +} + +const ConnectStep = ({ lan = false }: { lan?: boolean }) => ( + }> +

    +
    + {lan && <> } +

    +

    +
    + +

    + +

    +
      +
    • +
    • +
    +
    +); + +const HttpsStep = () => ( + }> +

    +
    +); + +const StandaloneGuide = () => ( + <> + + + + }> +
      +
    • +
    • +
    • + +
        +
      • +
      • +
      +
    • +
    +
    + }> + +

    +

    +

    + {[ + 'java:', + ' # The IP address of the Java Edition server.', + ' address: 127.0.0.1', + '', + ' # The port of the Java Edition server.', + ' port: 25565', + '', + ' # What type of authentication Bedrock players will be checked against when logging into the Java server.', + ' # Can be "floodgate" (see https://wiki.geysermc.org/floodgate/), "online", or "offline".', + ' auth-type: online', + ].join('\n')} +

    +
    + + +
    + +

    + +
      +
    1. +
    2. +
    3. +
    4. +
    +

    + curl https://gist.githubusercontent.com/rtm516/e3e07d6595ee41e05a38b03c0f4d7a80/raw/install.sh | bash + +); + +// The setup guide for a server you host yourself +export const SelfHostGuide = ({ platform }: { platform: PlatformId }) => { + if (platform === 'standalone') { + return ; + } + const { name, jarName, jarDirectory, configLocation, notice, versionStep, installFirst, installNote, configNotes, restart } = platforms[platform]; + return ( + <> + {notice} + + {versionStep && ( + }> +

    {versionStep}

    +
    + )} + }> +
      + {installFirst &&
    • {installFirst}
    • } +
    • +
    • + {installNote &&
    • {installNote}
    • } +
    • {restart}
    • +
    +
    + }> + +

    +

    + {configNotes} +
    + + +
    + + + ); +} diff --git a/src/components/Versions.tsx b/src/components/Versions.tsx index 5f9e2e3..c10b7cb 100644 --- a/src/components/Versions.tsx +++ b/src/components/Versions.tsx @@ -1,5 +1,6 @@ import versions from '../data/versions.json'; -export const Versions = ({ platform }) => { - return versions[platform].supported +export const Versions = { + bedrock: () => versions.bedrock.supported, + java: () => versions.java.supported, }; \ No newline at end of file diff --git a/src/css/custom.scss b/src/css/custom.scss index 323d914..2dd8d85 100644 --- a/src/css/custom.scss +++ b/src/css/custom.scss @@ -104,6 +104,10 @@ html[data-theme='dark'] { @include header-link(24px, 24px, url('data:image/svg+xml,')); } +.header-hosting-link { + @include header-link(24px, 24px, url('data:image/svg+xml,')); +} + .header-github-link { @include header-link(24px, 24px, url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")); } diff --git a/src/data/providers.ts b/src/data/providers.ts index 04f428b..f437a48 100644 --- a/src/data/providers.ts +++ b/src/data/providers.ts @@ -1,711 +1,939 @@ import { translate } from "@docusaurus/Translate" -import { Providers } from "../types/providers" +import { HostingProvider, PortSource } from "../types/providers" -// Do not modify the structure of this file without updating the extraction logic in create-providers-json.ts +// See HOSTING_PROVIDERS.md for how to add or update a hosting provider. +// Only add strings where the generated steps are not enough: the setup guide already covers downloading and placing +// the jar, the config changes for the given ports, and what players enter to connect. -const descriptionTemplates = { - default: translate({ - id: 'providers.templates.default', - message: "Enable `clone-remote-port` (or manually set `bedrock port` to the Java port), and connect with the Java IP and port." - }), - ipAndPort: translate({ - id: 'providers.templates.ip_and_port', - message: "Enable `clone-remote-port` (or manually set `bedrock port` to the Java port) and change `bedrock address` from `0.0.0.0` to your Java server's IP. Connect with the Java IP and port." - }), - forwardingOption: translate({ - id: 'providers.templates.forwarding_option', - message: "Offers a working port forwarding option." - }), - javaIp: translate({ - id: 'providers.templates.java_ip', - message: "Change `bedrock address` from `0.0.0.0` to your Java server's IP." +// Ways to get a port. The setup guide adds which config option to set it as. +const ports: Record = { + assign: { + obtain: translate({ + id: 'providers.ports.assign', + message: "Assign a port in your host's panel, open for both TCP and UDP." + }) + }, + allocated: { + obtain: translate({ + id: 'providers.ports.allocated', + message: "Pick an available port from the ports allocated to your server, open for both TCP and UDP." + }) + }, + askHost: { + obtain: translate({ + id: 'providers.ports.ask_host', + message: "Ask your host for a port that is open for both TCP and UDP." + }) + }, + // For hosts we have no NetherNet details on, which used to share the Java server's port + newPort: { + obtain: translate({ + id: 'providers.ports.new_port', + message: "Open a new port in your server panel, open for both TCP and UDP, or ask your host for one if the panel has no option for it." + }) + }, + // For hosts that configure Geyser themselves: the port players connect with + fromHost: { + obtain: translate({ + id: 'providers.ports.from_host', + message: "The Bedrock port your host shows you." + }) + } +} + +const javaAddressInstruction = translate({ + id: 'providers.config.templates.java_address', + message: "Set `address` in the `bedrock` section to the public address of the Java server." +}); + +const otherInstructions = { + dedicatedIp: translate({ + id: 'providers.config.templates.custom_port_dedicated_ip', + message: "This host may only give out a separate port with a dedicated IP address." }) } -export const providersData: Providers = { - built_in: [ - { - name: 'Apex Hosting', - url: 'https://apexminecrafthosting.com/', - description: translate({ - id: 'providers.provider.apex_hosting.description', - message: "Full auto installation. Go to the Customizations tab in the panel and select 'Enabled' under the 'Geyser Auto Installer' option. Then, restart and connect to your server with your Java IP and port. See [Apex's article](https://apexminecrafthosting.com/geysermc/) for more details." - }) - }, - { - name: 'Arth Hosting', - url: 'https://arthmc.xyz/', - description: translate({ - id: 'providers.provider.arth_hosting.description', - message: "Geyser is installed and configured on all servers by default. You can disable it in the 'Manage Plugins' menu." - }) - }, - { - name: 'Aternos', - url: 'https://aternos.org/', - description: translate({ - id: 'providers.provider.aternos.description', - message: "Install Geyser in the Aternos plugin list and connect to your server with your Java IP and port. See [Aternos's article](https://support.aternos.org/hc/en-us/articles/360051047631) for more details. Do note: Aternos automatically installs the latest version of the plugin, but does not auto update it. To update Geyser on Aternos, simply reinstall the plugin (no need to uninstall the plugin/deleting the plugin files)." - }) - }, - { - name: 'AxentHost', - url: 'https://axenthost.com/games/minecraft/', - description: translate({ - id: 'providers.provider.axenthost.description', - message: "For a quick installation, navigate to your server Variants tab and select GeyserMC. The server will be automatically reinstalled with Geyser-Spigot alongside a Paper server. For a manual install using any other variant such as Paper, you will need to upload the GeyserMC jar to your server and set the the clone-remote-port option to true. See AxentHost's [guide](https://axenthost.com/knowledgebase/categories/minecraft/create-a-crossplay-server-with-geyser/) to see all the steps." - }) - }, - { - name: 'BedrockHost', - url: 'https://bedrockhost.pl/', - description: translate({ - id: 'providers.provider.bedrockhost.description', - message: "Easiest solution is: Go to hosting panel > install new engine > Ready-made solutions and select Geyser. This will install Paper & Geyser-Spigot - no setup needed, just connect with your Java IP and port. See [BedrockHost's article](https://bedrockhost.pl/w/geyser-czyli-serwer-minecraft-java-i-bedrock-w-jednym) for more details or for custom setup instructions (available in Polish)." - }) - }, - { - name: 'CloudNord', - url: 'https://cloudnord.net/', - description: translate({ - id: 'providers.provider.cloud_nord.description', - message: "Go to their [Crossplay Server](https://cloudnord.net/minecraftcrossplay-server-hosting/) hosting section and order your server. Instructions on how to join are provided." - }) - }, - { - name: 'ConsulHosting', - url: 'https://consulhosting.com/minecraft-server-hosting/', - description: translate({ - id: 'providers.provider.consulhosting.description', - message: "GeyserMC can be installed with a single click on ConsulHosting's Minecraft server hosting. Head to your server panel, find the GeyserMC option at Software, and install it automatically — no manual configuration needed. For step-by-step instructions, see [ConsulHosting's GeyserMC installation tutorial](https://consulhosting.com/help/install-geysermc/)." - }) - }, - { - name: 'CreeperHost', - url: 'https://www.creeperhost.net/', - description: translate({ - id: 'providers.provider.creeperhost.description', - message: "Has a toggle within the control panel to automatically enable Geyser. May not be enabled by default, so you may need to toggle it and restart the server." - }) - }, - { - name: 'Cubes Hosting', - url: 'https://www.cubes.host/', - description: translate({ - id: 'providers.provider.cubes_hosting.description', - message: "Install Geyser using the plugin manager. Then restart the server and Geyser will run on an additional port - you can check it in the server console. Geyser-Standalone can be set up through a support ticket." - }) - }, - { - name: 'exaroton', - url: 'https://exaroton.com/', - description: translate({ - id: 'providers.provider.exaroton.description', - message: "Install Geyser in the exaroton plugin list and connect to your server with your Java IP and port. See [exaroton's article](https://support.exaroton.com/hc/en-us/articles/360019857918-Geyser) for more details." - }) - }, - { - name: 'FreeMcServer.net', - url: 'https://freemcserver.net', - description: translate({ - id: 'providers.provider.freemcserver_net.description', - message: "Install Geyser from the Plugins tab, then connect to your server using your Java IP and port." - }) - }, - { - name: 'GGServers', - url: 'https://ggservers.com', - description: translate({ - id: 'providers.provider.ggservers.description', - message: "Can be installed to any server from their auto plugin setups. No further configuration needed." - }) - }, - { - name: 'KaasHosting', - url: 'https://www.kaashosting.nl/minecraft-servers', - description: translate({ - id: 'providers.provider.kaashosting.description', - message: "Automatic and manual installation supported. Go to the `Plugin Installer` tab, search for Geyser and click `Install Automatically`. Connect with the Java IP and port. See [KaasHosting's article](https://www.kaashosting.nl/help/nl/minecraft/hoe-maak-ik-mijn-minecraft-server-crossplay-met-geysermc) for more details." - }) - }, - { - name: 'Lilypad', - url: 'https://lilypad.gg', - description: translate({ - id: 'providers.provider.lilypad.description', - message: "Tick the 'Enable Bedrock crossplay?' option when changing your server software to automatically install and configure Geyser + Floodgate. For more details, navigate to [lilypad.gg/bedrock](https://lilypad.gg/bedrock)." - }) - }, - { - name: 'MCServerHost', - url: 'https://www.mcserverhost.com/', - description: translate({ - id: 'providers.provider.mcserverhost.description', - message: "On the server panel under the Software tab, turn on 'Bedrock crossplay' and restart the server. Geyser and Floodgate are installed automatically and kept up to date on every start. Then connect via `[servername].mcsh.gg` on the default Bedrock port 19132 — the same address Java players use." - }) - }, - { - name: 'Minefort', - url: 'https://minefort.com/', - description: translate({ - id: 'providers.provider.minefort.description', - message: "On the server dashboard under 'Connect Support', make sure 'Allow Bedrock' is enabled. Then connect via `play.minefort.com` and join using `/server [servername]`, or connect via `[servername].minefort.com`." - }) - }, - { - name: 'Minehost', - url: 'https://www.minehost.com/', - description: translate({ - id: 'providers.provider.minehost.description', - message: "On the server panel under the Software tab, turn on 'Minecraft Bedrock support' and restart the server. Geyser and Floodgate are installed automatically and kept up to date on every start. Then connect via `[servername].minehost.gg` on the default Bedrock port 19132 — the same address Java players use." - }) - }, - { - name: 'Minehut', - url: 'https://minehut.com/', - description: translate({ - id: 'providers.provider.minehut.description', - message: "Connect via `bedrock.minehut.com` and do `/join [servername]`, or connect directly via `[servername].bedrock.minehut.gg`." - }) - }, - { - name: 'OMGServ', - url: 'https://www.omgserv.com/en/', - description: translate({ - id: 'providers.provider.omgserv.description', - message: "Select Geyser in the [Install Menu](https://i.imgur.com/Gewpsrq.png), it will be automatically installed. You can enable floodgate in the [server properties on the dashboard](https://i.imgur.com/jg5mzNj.png)." - }) - }, - { - name: 'Physgun', - url: 'https://physgun.com/', - description: descriptionTemplates.default - }, - { - name: 'PiglinHost', - url: 'https://piglinhost.com/', - description: translate({ - id: 'providers.provider.piglinhost.description', - message: "Order from the [cross-platform servers page](https://piglinhost.com/minecraft-java-hosting.html). Alternatively, contact their support by creating a [support ticket](https://billing.piglinhost.com/submitticket.php?step=2&deptid=5) or via discord for installation and configuration help." - }) - }, - { - name: 'Play Hosting', - url: 'https://play.hosting', - description: translate({ - id: 'providers.provider.playhosting.description', - message: "Tick the 'Enable Bedrock crossplay?' option when changing your server software to automatically install and configure Geyser + Floodgate. For more details, navigate to [help.play.hosting/minecraft/crossplay](https://help.play.hosting/minecraft/crossplay)." - }) - }, - { - name: 'Pufferfish Host', - url: 'https://pufferfish.host/', - description: translate({ - id: 'providers.provider.pufferfish_host.description', - message: "Geyser is installed and configured on all servers by default." - }) - }, - { - name: 'Server.pro', - url: 'https://server.pro', - description: translate({ - id: 'providers.provider.server.pro.description', - message: "Different instructions for different plans: On VPS, select Geyser in the [Service Type Menu](https://i.imgur.com/loSNmvu.png), Floodgate can be enabled on the dashboard configuration. For manual installation: Using a Premium or Free plan, use the same port as your Java server for the Bedrock port in the configuration file and connect that; for the Free plan, also enable the `clone-remote-port` option. If you are using a PRO or a VPS plan, you can use any port, which can be opened on the Firewall tab." - }) - }, - { - name: 'ServerPrism', - url: 'https://serverprism.com/', - description: translate({ - id: 'providers.provider.serverprism.description', - message: "Order a [Minecraft server](https://serverprism.com/minecraft-server-hosting) on any plugin-compatible runtime (Paper, Spigot, Purpur, etc.), then install Geyser from the panel's plugin installer. Connect with the same IP and port as your Java server." - }) - }, - { - name: 'SRKHOST', - url: 'https://www.srkhost.eu/', - description: translate({ - id: 'providers.provider.srkhost.description', - message: "You can enable Geyser on the version changer page. Geyser will run on the given port by the host." - }) - }, - { - name: 'UltraServers', - url: 'https://ultraservers.com/', - description: translate({ - id: 'providers.provider.ultraservers.description', - message: "Select 'Paper + Geyser' under the Change version tab. You can connect to your server using the same IP and port as you would on Java. Existing servers can use the Plugins/Minecraft mods tab to install Geyser. See [Crossplay](https://docs.ultraservers.com/minecraft/plugins-mods/crossplay-on-java-and-bedrock) for more information." - }) - }, - { - name: 'VemoxHost', - url: 'https://vemoxhost.com/', - description: translate({ - id: 'providers.provider.vemox_hosting.description', - message: "Full automatic installation. Go to one of the panel options and select the option to enable GeyserMC. Then, restart and connect to your server using your Java IP and port." - }) - }, - { - name: 'WiseHosting', - url: 'https://wisehosting.com', - description: translate({ - id: 'providers.provider.wisehosting.description', - message: "Both auto and manual installation available. Find the GeyserMC presets from the `Addons` tab in the Game Panel. There, click `Install` and restart your server. See [Crossplay FAQ](https://wisehosting.com/help/how-to-install-geysermc-to-your-minecraft-server) for additional details." - }) - }, - { - name: 'ZapHosting', - url: 'https://zap-hosting.com/en/', - description: translate({ - id: 'providers.provider.zaphosting.description', - message: "Find the plugin in the control panel and restart your server. IP and port are the same as Java." - }) - }, - ], - support: [ - { - name: 'Akliz', - url: 'https://www.akliz.net/', - description: descriptionTemplates.forwardingOption - }, - { - name: 'Aquatis', - url: 'https://aquatis.host/', - description: translate({ - id: 'providers.provider.aquatis.description', - message: "Need to open a support ticket to get a UDP port, then use that as the `bedrock port`." - }) - }, - { - name: 'BisectHosting', - url: 'https://www.bisecthosting.com/', - description: translate({ - id: 'providers.provider.bisecthosting.description', - message: "Go to the Network tab and copy an available port not in use by other mods. In Geyser's config, under the bedrock section, on the port: line, edit the value to the port you copied. See Bisect's [article](https://www.bisecthosting.com/clients/index.php?rp=/knowledgebase/193/How-to-install-Geyser-and-Floodgate-on-a-Minecraft-Java-server.html) for full instructions. If you still cannot connect after following these instructions, contact Bisect Support, as they reportedly have UDP disabled on some nodes." - }) - }, - { - name: 'Birdflop', - url: 'https://birdflop.com/', - description: translate({ - id: 'providers.provider.birdflop.description', - message: "Open an allocation in the networks tab. If you have a dedicated IP, you can open a ticket to request allocation of the default Bedrock port (19132). Update the config to use the allocated port and restart the server." - }) - }, - { - name: 'Bloom.Host', - url: 'https://www.bloom.host/', - description: translate({ - id: 'providers.provider.bloomhost.description', - message: "See [Bloom's documentation](https://docs.bloom.host/multiplatform/geysermc) for setup instructions." - }) - }, - { - name: 'Clovux', - url: 'https://clovux.net/', - description: descriptionTemplates.javaIp - }, - { - name: 'Craft-Hosting', - url: 'https://craft-hosting.ru/', - description: translate({ - id: 'providers.provider.craft-hosting.description', - message: "Set the Bedrock port to the Java server's port and connect with that port; note that this provider appears to only provide service in Russia." - }) - }, - { - name: 'DedicatedMC', - url: 'https://dedicatedmc.io/', - description: translate({ - id: 'providers.provider.dedicatedmc.description', - message: "Check [DedicatedMC's documentation](https://docs.dedicatedmc.io/plugins-mods/how-to-install-geysermc/) for specific instructions." - }) - }, - { - name: 'ElfIDC', - url: 'https://www.elfidc.com/', - description: translate({ - id: 'providers.provider.elfidc.description', - message: "When placing an order, choose Paper/Spigot + Geyser, which will automatically install the Geyser plugin. Connect with the Java server's IP and port. Note: This provider only provides service in China." - }) - }, - { - name: 'EnviroMC', - url: 'https://enviromc.host/', - description: descriptionTemplates.default - }, - { - name: 'ExtraVM', - url: 'https://extravm.com/', - description: descriptionTemplates.javaIp - }, - { - name: 'FadeHost', - url: 'https://fadehost.com/', - description: translate({ - id: 'providers.provider.fadehost.description', - message: "Set the Bedrock port to the Java server's port and connect with that port. Alternatively, buy a dedicated IP address to support a different port." - }) - }, - { - name: 'FakaHeda', - url: 'https://fakaheda.eu/', - description: translate({ - id: 'providers.provider.fakaheda.description', - message: "Set the `bedrock port` in the config to the Java server's port or use one of the available ports allocated to your server, and connect with that port." - }) - }, - { - name: 'FalixNodes', - url: 'https://falixnodes.net/', - description: translate({ - id: 'providers.provider.falixnodes.description', - message: "Enable `clone-remote-port` (or manually set `bedrock port` to the Java port), and connect with the Java IP and port." - }) - }, - { - name: 'Ferox Hosting', - url: 'https://feroxhosting.nl', - description: translate({ - id: 'providers.provider.ferox_hosting.description', - message: "Open a port yourself in their panel and check out the [knowledgebase article](https://feroxhosting.nl/kb/) for how to install and configure Geyser." - }) - }, - { - name: 'Fluctis Hosting', - url: 'https://fluctishosting.com', - description: descriptionTemplates.default - }, - { - name: 'FREAKHOSTING', - url: 'https://freakhosting.com/', - description: descriptionTemplates.default - }, - { - name: 'GameHosting.it', - url: 'https://www.gamehosting.it/', - description: descriptionTemplates.default - }, - { - name: 'GPortal', - url: 'https://www.g-portal.com/', - description: translate({ - id: 'providers.provider.gportal.description', - message: "You have to adjust the port according to your query port. Scheme: Query port: xxx65. The ports from xxx66 to xxx70 are available. For example, if your query port is 12365, then Geyser can only run under the port range 12366-12370. Furthermore, you have to change the 'Bedrock' 'address' in the Geyser config to your IP address. You can find it above your query port. Don't forget to delete the # in front of `address'." - }) - }, - { - name: 'Hicoria', - url: 'https://hicoria.com/en/', - description: translate({ - id: 'providers.provider.hicoria.description', - message: "Use one of the available ports allocated for your server for the Bedrock port in your config and connect with that port." - }) - }, - { - name: 'Hosterfy', - url: 'https://www.hosterfy.com/', - description: translate({ - id: 'providers.provider.hosterfy.description', - message: "Use the same port as your Java server for the Bedrock port in your config (either by setting it yourself, or enabling `clone-remote-port`) and connect with the same IP and port as you would on Java. You can also ask for a new port." - }) - }, - { - name: 'HostEZ', - url: 'https://hostez.io/minecraft', - description: translate({ - id: 'providers.provider.hostez.description', - message: "Geyser plugin supported with self-install or installed on request with its own port." - }) - }, - { - name: 'Host Havoc', - url: 'https://hosthavoc.com/minecraft', - description: descriptionTemplates.default - }, - { - name: 'Hosting-Minecraft', - url: 'https://hosting-minecraft.pro/', - description: translate({ - id: 'providers.provider.hosting-minecraft.description', - message: 'Create a new port in the "Allocations" tab and use that port in the config.' - }) - }, - { - name: 'HumbleServers', - url: 'https://humbleservers.com/', - description: translate({ - id: 'providers.provider.humbleservers.description', - message: "Set the Bedrock port to the Java server's port, or to one of the two extra ports, and connect with that port. If the subdomain doesn't work, use your regular numbered IP address." - }) - }, - { - name: 'KeKsHost', - url: 'https://kekshost.com/en/', - description: translate({ - id: 'providers.provider.kekshost.description', - message: "Use the default bedrock port (19132) and the server ip to connect on Bedrock edition. No changes to the Geyser config are needed. You can also ask for a new port and use it instead." - }) - }, - { - name: 'Kinetic Hosting', - url: 'https://kinetichosting.net/', - description: translate({ - id: 'providers.provider.kinetic_hosting.description', - message: "Open a port in the Network and Ports page, and set that port as the `bedrock port` in the Geyser config. Alternatively, use the Java server's port by enabling the `clone-remote-port` option in the config. Connect with the same IP as on Java, and the port that you have chosen. For more info see the hosts [support article](https://www.kinetichosting.net/articles/minecraft-java/plugins/geyser)." - }) - }, - { - name: 'MC-HOST24.de', - url: 'https://mc-host24.de/', - description: descriptionTemplates.ipAndPort - }, - { - name: 'MCPEhost.ru', - url: 'https://mcpehost.ru', - description: translate({ - id: 'providers.provider.mcpehost.ru.description', - message: "Create an additional port in the server settings and enable UDP protocol, then use that as the `bedrock port` in the config. Connect with the Java IP and that new port." - }) - }, - { - name: 'Meloncube', - url: 'https://www.meloncube.net/', - description: translate({ - id: 'providers.provider.meloncube.description', - message: "Contact the support for a UDP port to use for Geyser. Set that port as the `bedrock port`, and connect with it." - }) - }, - { - name: 'MineStrator', - url: 'https://minestrator.com/', - description: descriptionTemplates.default - }, - { - name: 'Minecraft-Hosting.pro', - url: 'https://www.minecraft-hosting.pro/', - description: descriptionTemplates.default - }, - { - name: 'Modrinth Hosting', - url: 'https://modrinth.com/hosting', - description: translate({ - id: 'providers.provider.modrinth.description', - message: "Check [Modrinth's documentation](https://support.modrinth.com/en/articles/10986613-adding-geyser-to-your-server) for specific instructions." - }) - }, - { - name: 'NFOservers', - url: 'https://nfoservers.com/', - description: translate({ - id: 'providers.provider.nfoservers.description', - message: "Set `bedrock address` to the server IP in the Geyser config file. As an alternative, you can run Geyser standalone separately on an Unmanaged VDS." - }) - }, - { - name: 'Nitrado', - url: 'https://nitrado.net', - description: translate({ - id: 'providers.provider.nitrado.description', - message: "Get Geyser as a plugin. Add 4 to the Port of the Java server. See [here](https://wiki.nitrado.net/en/How_to_install_GeyserMC_and_Floodgate) for specific instructions." - }) - }, - { - name: 'Nodecraft', - url: 'https://nodecraft.com', - description: translate({ - id: 'providers.provider.nodecraft.description', - message: "Use the default server port and `0.0.0.0` or your server IP as the host address." - }) - }, - { - name: 'NolimitHost', - url: 'https://nolimithost.cc', - description: translate({ - id: 'providers.provider.nolimithost.description', - message: "Check [NolimitHost's documentation](https://nolimithost.cc/docs/minecraft/geyser) for specific instructions." - }) - }, - { - name: 'PaperNodes', - url: 'https://papernodes.com/', - description: translate({ - id: 'providers.provider.papernodes.description', - message: 'Enable clone-remote-port (or manually set the Bedrock port to the Java port), and connect with the Java IP and port. Alternatively, you can contact the host to request an additional port or a dedicated IP.' - }) - }, - { - name: 'Pebblehost', - url: 'https://pebblehost.com/', - description: translate({ - id: 'providers.provider.pebblehost.description', - message: "Enable `clone-remote-port` (or manually set `bedrock port` to the Java port), and connect with the Java IP and port. See [this video](https://youtu.be/v9lC80UBZF4) for a PebbleHost-specific tutorial." - }) - }, - { - name: 'PlanetNode', - url: 'https://planetnode.net', - description: descriptionTemplates.default - }, - { - name: 'PUBCS', - url: 'https://pubcs.com', - description: translate({ - id: 'providers.provider.pubcs.description', - message: "Set the Bedrock port to the Java server's port and connect with that port, or upgrade to a plan that includes dedicated IP address to support a different port." - }) - }, - { - name: 'RackGenius', - url: 'https://rackgenius.com/', - description: descriptionTemplates.default - }, - { - name: 'Redline Hosting', - url: 'https://redlinehosting.net/', - description: descriptionTemplates.default - }, - { - name: 'Revivenode', - url: 'https://revivenode.com/', - description: translate({ - id: 'providers.provider.revivenode.description', - message: "Set `bedrock port` to the Java server's port (either by setting it yourself, or enabling `clone-remote-port`). You can also create a secondary port in the `network tab` and use that. To fix random `Unable to Connect` issues, see [here](https://wiki.geysermc.org/geyser/port-forwarding/#ovh-and-soyoustart)." - }) - }, - { - name: 'ScalaCube', - url: 'https://scalacube.com/', - description: descriptionTemplates.ipAndPort - }, - { - name: 'Shockbyte', - url: 'https://shockbyte.com/', - description: translate({ - id: 'providers.provider.shockbyte.description', - message: "The port will be automatically set after you download Geyser and restart the server. Connect with the same IP and port as on Java. For Geyser Standalone installation instructions, see [here](https://shockbyte.com/billing/knowledgebase/173/Introduction-to-GeyserMCorDragonProxy-How-GeyserMC-Works.html)." - }) - }, - { - name: 'SimpleGameHosting', - url: 'https://simplegamehosting.com/', - description: translate({ - id: 'providers.provider.simplegamehosting.description', - message: "Contact live chat support to open a port and check out the [help center guide](https://help.simplegamehosting.com/how-to-enable-crossplay-with-geyser-on-your-minecraft-server/) for how to install and configure Geyser on your server." - }) - }, - { - name: 'Skynode.pro', - url: 'https://skynode.pro/', - description: translate({ - id: 'providers.provider.skynode.pro.description', - message: "Go to 'Server Details', add a new port, and set the `bedrock port` in your config to that port. Connect with it and the Java server's address." - }) - }, - { - name: 'Sparked Host', - url: 'https://sparkedhost.com', - description: descriptionTemplates.default - }, - { - name: 'STIPE', - url: 'https://stipe.com.au/', - description: translate({ - id: 'providers.provider.stipe.description', - message: "Set the Bedrock port to the Java server's port and connect with that port; note that this provider only provides service in Australia." - }) - }, - { - name: 'The Minecraft Hosting', - url: 'https://theminecrafthosting.com/', - description: translate({ - id: 'providers.provider.the_minecraft hosting.description', - message: "Try using `19132` as the Bedrock port, if that does not work, use the same Java server's port for the `bedrock port` in your config and connect with that port and the Java server's IP." - }) - }, - { - name: 'TNAHosting', - url: 'https://tnahosting.net/', - description: descriptionTemplates.default - }, - { - name: 'VexyHost', - url: 'https://vexyhost.com/', - description: descriptionTemplates.default - }, - { - name: 'VoltHosting', - url: 'https://www.volthosting.co.uk/', - description: translate({ - id: 'providers.provider.volthosting.description', - message: "Enable clone-remote-port (or manually set bedrock port to the Java port), and connect with the Java IP and port. Alternatively, request an additional port, or buy a dedicated IP address. If you continue to have issues, please [contact VoltHosting support](https://volthosting.co.uk/contact.html) for further assistance." - }) - }, - { - name: 'Vultam', - url: 'https://vultam.net/', - description: translate({ - id: 'providers.provider.vultam.description', - message: "Enable `clone-remote-port` in the Geyser config, and connect with the Java IP and port. Alternatively, allocate an additional port to your server from the Network section of the control panel and set it as the `bedrock port` in the Geyser config. Use that port to connect from Bedrock. Please contact [Vultam support](https://clients.vultam.net/submitticket.php?step=2&deptid=1) if you need assistance." - }) - }, - { - name: 'Wasabi Hosting', - url: 'https://wasabihosting.com', - description: translate({ - id: 'providers.provider.wasabihosting.description', - message: "Install Geyser with the plugin installer. Use the same port as your Java server in the Geyser config. Connect with the same address and port as your Java server." - }) - }, - { - name: "Wepwawet", - url: "https://wepwawet.net/", - description: translate({ - id: 'providers.provider.wepwawet.description', - message: "Add a new port in the Network tab. Use this new port as the bedrock port." - }) - }, - { - name: 'WinterNode', - url: 'https://winternode.com', - description: translate({ - id: 'providers.provider.winternode.description', - message: "Set the Bedrock port to the Java server's port and connect with that port. Alternatively, request an additional port, or buy a dedicated IP address." - }) - }, - { - name: 'WitherHosting', - url: 'https://witherhosting.com/', - description: translate({ - id: 'providers.provider.witherhosting.description', - message: "Either use the Java server's port, or create a port in the ports manager on the panel and use that for Bedrock. Refer to the hosts [support article](https://my.witherhosting.com/kb/how-to-install-and-use-geysermc-java) for further info." +const warnings = { + ovhFirewallMisconfiguration: translate({ + id: 'providers.warnings.ovh_firewall_misconfig', + message: "To fix random `Unable to Connect` issues, see [here](/wiki/geyser/port-forwarding/#ovh-and-soyoustart)." + }) +} + +const customInstallLocations = { + plugin_list: translate({ + id: 'providers.config.templates.install_location.plugin_list', + message: "Install Geyser through the plugin or mod list provided by the host." + }), + enable_bedrock_crossplay_option: translate({ + id: 'providers.config.templates.install_location.enable_bedrock_crossplay', + message: "Select the 'Enable Bedrock crossplay?' option when changing your server software to automatically install and configure Geyser and Floodgate." + }) +} + +const infos = { + installed_by_default: translate({ + id: 'providers.config.templates.info.geyser_installed_by_default', + message: "Geyser is installed and configured on all servers by default." + }) +} + +const onlyServesRegion = (region: string) => translate({ + id: 'providers.config.templates.info.only_serves_region', + message: "This host only provides service in {region}." +}, { region }); + +export const providersData: HostingProvider[] = [ + { + name: 'Akliz', + url: 'https://www.akliz.net/', + updated: '2025-03-22', + config: { udp: ports.assign, confirmed: false } + }, + { + name: 'Apex Hosting', + url: 'https://apexminecrafthosting.com/', + updated: '2026-07-10', + links: { + article: "https://apexminecrafthosting.com/geysermc/", + support: "https://apexminecrafthosting.com/support/", + discord: 'https://discord.apexminecrafthosting.com/' + }, + install: translate({ + id: 'providers.provider.apex_hosting.install', + message: "Go to the Customizations tab in the panel and select 'Enabled' under the 'Geyser Auto Installer' option." + }), + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'Aquatis', + url: 'https://aquatis.host/', + updated: '2025-03-22', + config: { udp: ports.askHost, confirmed: false } + }, + { + name: 'Arth Hosting', + url: 'https://arthmc.xyz/', + updated: '2026-07-10', + links: { discord: 'https://discord.com/invite/jUeNm7UvKy' }, + install: infos.installed_by_default, + config: { preconfigured: true, port: ports.fromHost, confirmed: false } + }, + { + name: 'Aternos', + url: 'https://aternos.org/', + links: { + article: "https://support.aternos.org/hc/en-us/articles/39155890785053-NetherNet-protocol-Minecraft-Bedrock-Edition", + support: 'https://support.aternos.org/', + discord: "https://discord.aternos.org/" + }, + open_collaboration: { + tier: 'bronze' + }, + install: customInstallLocations.plugin_list, + // Aternos runs NetherNet on 19132 for all servers, and keeps RakNet on the old port while it exists + config: { preconfigured: true, port: 19132 }, + notices: { + info: translate({ + id: 'providers.provider.aternos.info', + message: "Aternos automatically installs the latest version of Geyser and Floodgate, but does not auto update it. To update, reinstall the plugin (no need to uninstall Geyser/deleting the plugin files)." + }) + }, + proxies_banned: true + }, + { + name: 'AxentHost', + url: 'https://axenthost.com/games/minecraft/', + updated: '2026-07-10', + links: { + article: 'https://axenthost.com/knowledgebase/categories/minecraft/create-a-crossplay-server-with-geyser/', + discord: 'https://discord.axenthost.com/' + }, + install: translate({ + id: 'providers.provider.axenthost.install', + message: "Select GeyserMC in the Variants tab. This reinstalls the server with Paper and Geyser." + }), + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'BedrockHost', + url: 'https://bedrockhost.pl/', + updated: '2026-07-10', + links: { + article: 'https://bedrockhost.pl/w/geyser-czyli-serwer-minecraft-java-i-bedrock-w-jednym', + support: 'https://bedrockhost.pl/kontakt' + }, + install: translate({ + id: 'providers.provider.bedrockhost.install', + message: "In the hosting panel, go to install new engine > Ready-made solutions and select Geyser. This installs Paper and Geyser." + }), + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'Birdflop', + url: 'https://birdflop.com/', + updated: '2025-03-22', + config: { udp: ports.assign, confirmed: false } + }, + { + name: 'BisectHosting', + url: 'https://www.bisecthosting.com/', + updated: '2026-03-03', + links: { + article: 'https://www.bisecthosting.com/clients/index.php?rp=/knowledgebase/193/How-to-install-Geyser-and-Floodgate-on-a-Minecraft-Java-server.html' + }, + config: { udp: ports.allocated, confirmed: false }, + notices: { + warn: translate({ + id: 'providers.provider.bisecthosting.warn', + message: "If you cannot connect after following these instructions, contact Bisect Support, as they reportedly have UDP disabled on some nodes." }) } - ], - no_support: [ - { - name: 'MyArena', - url: 'https://www.myarena.ru/', - description: translate({ + }, + { + name: 'Bloom.Host', + url: 'https://www.bloom.host/', + updated: '2026-05-25', + links: { article: 'https://docs.bloom.host/multiplatform/geysermc' }, + config: { udp: ports.assign, confirmed: false } + }, + { + name: 'CloudNord', + url: 'https://cloudnord.net/', + updated: '2026-07-10', + links: { support: "https://cloudnord.net/submitticket.php", discord: 'https://cloudnord.net/discord' }, + install: customInstallLocations.plugin_list, + config: { udp: ports.assign, confirmed: false }, + notices: { + info: translate({ + id: 'providers.provider.cloud_nord.description', + message: "Servers from the [Crossplay Server](https://cloudnord.net/minecraftcrossplay-server-hosting/) hosting section do not need further configuration." + }) + } + }, + { + name: 'Clovux', + url: 'https://clovux.net/', + updated: '2024-12-23', + config: { + udp: 19132, + confirmed: false, + notes: [javaAddressInstruction] + } + }, + { + name: 'ConsulHosting', + url: 'https://consulhosting.com/minecraft-server-hosting/', + updated: '2026-08-08', + links: { article: 'https://consulhosting.com/help/install-geysermc/' }, + install: translate({ + id: 'providers.provider.consulhosting.install', + message: "Install GeyserMC from the Software section of your server panel." + }), + config: { preconfigured: true, port: ports.fromHost, confirmed: false } + }, + { + name: 'Craft-Hosting', + url: 'https://craft-hosting.ru/', + updated: '2025-03-22', + config: { udp: ports.newPort, confirmed: false }, + notices: { info: onlyServesRegion('Russia') } + }, + { + name: 'CreeperHost', + url: 'https://www.creeperhost.net/', + updated: '2026-07-10', + links: { discord: 'https://discord.gg/cJTYkdmbgy' }, + install: translate({ + id: 'providers.provider.creeperhost.install', + message: "Enable Geyser in the control panel." + }), + config: { preconfigured: true, port: ports.fromHost, confirmed: false } + }, + { + name: 'Cubes Hosting', + url: 'https://www.cubes.host/', + updated: '2026-07-10', + links: { support: 'https://cubes.host/client/submitticket.php', discord: 'https://discord.gg/K8XzK4RqUH' }, + install: customInstallLocations.plugin_list, + config: { + preconfigured: true, + port: { + obtain: translate({ + id: 'providers.provider.cubes_hosting.port', + message: "The port shown in the server console." + }) + }, + confirmed: false + }, + notices: { + info: translate({ + id: 'providers.provider.cubes_hosting.info', + message: "Geyser-Standalone can be set up through a support ticket." + }) + } + }, + { + name: 'DedicatedMC', + url: 'https://dedicatedmc.io/', + updated: '2024-12-23', + links: { article: 'https://docs.dedicatedmc.io/plugins-mods/how-to-install-geysermc/' }, + config: { udp: ports.askHost, confirmed: false } + }, + { + name: 'ElfIDC', + url: 'https://www.elfidc.com/', + updated: '2024-12-23', + install: translate({ + id: 'providers.provider.elfidc.custom', + message: "When placing an order, choose Paper/Spigot + Geyser, which will automatically install the Geyser plugin." + }), + config: { udp: ports.newPort, confirmed: false }, + notices: { info: onlyServesRegion('China') } + }, + { + name: 'EnviroMC', + url: 'https://enviromc.host/', + updated: '2024-12-23', + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'exaroton', + url: 'https://exaroton.com/', + links: { + article: "https://support.exaroton.com/hc/en-us/articles/39157467467165-NetherNet-protocol-Minecraft-Bedrock-Edition", + discord: 'https://discord.gg/exaroton' + }, + open_collaboration: { + tier: 'bronze' + }, + install: customInstallLocations.plugin_list, + // Same setup as Aternos: NetherNet runs on 19132 for all servers + config: { preconfigured: true, port: 19132 } + }, + { + name: 'ExtraVM', + url: 'https://extravm.com/', + updated: '2024-12-23', + config: { + udp: 19132, + confirmed: false, + notes: [javaAddressInstruction] + } + }, + { + name: 'FadeHost', + url: 'https://fadehost.com/', + updated: '2024-12-23', + config: { + udp: ports.askHost, + confirmed: false, + notes: [otherInstructions.dedicatedIp] + } + }, + { + name: 'FakaHeda', + url: 'https://fakaheda.eu/', + updated: '2025-03-22', + config: { udp: ports.allocated, confirmed: false } + }, + { + name: 'FalixNodes', + url: 'https://falixnodes.net/', + updated: '2026-07-09', + config: { udp: ports.assign, confirmed: false } + }, + { + name: 'Ferox Hosting', + url: 'https://feroxhosting.nl', + updated: '2025-03-22', + links: { article: "https://feroxhosting.nl/kb/" }, + config: { udp: ports.assign, confirmed: false } + }, + { + name: 'Fluctis Hosting', + url: 'https://fluctishosting.com', + updated: '2024-12-23', + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'FREAKHOSTING', + url: 'https://freakhosting.com/', + updated: '2024-12-23', + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'FreeMcServer.net', + url: 'https://freemcserver.net', + updated: '2025-12-14', + install: customInstallLocations.plugin_list, + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'GameHosting.it', + url: 'https://www.gamehosting.it/', + updated: '2024-12-23', + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'GGServers', + url: 'https://ggservers.com', + updated: '2026-07-10', + links: { + article: 'https://ggservers.com/knowledgebase/article/how-to-set-up-and-use-geyser-plugin/', + discord: 'https://discord.gg/ggservers' + }, + install: customInstallLocations.plugin_list, + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'GPortal', + url: 'https://www.g-portal.com/', + updated: '2025-10-29', + config: { + udp: { + obtain: translate({ + id: 'providers.provider.gportal.description', + message: "Pick a port based on your query port. Scheme: Query port: xxx65. The ports from xxx66 to xxx70 are available. For example, if your query port is 12365, then Geyser can only run under the port range 12366-12370." + }) + }, + confirmed: false, + notes: [javaAddressInstruction] + } + }, + { + name: 'Hicoria', + url: 'https://hicoria.com/en/', + updated: '2025-03-22', + config: { udp: ports.allocated, confirmed: false } + }, + { + name: 'Host Havoc', + url: 'https://hosthavoc.com/minecraft', + updated: '2024-12-23', + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'Hosterfy', + url: 'https://www.hosterfy.com/', + updated: '2024-12-23', + config: { udp: ports.askHost, confirmed: false } + }, + { + name: 'HostEZ', + url: 'https://hostez.io/minecraft', + updated: '2025-03-22', + config: { + udp: { + obtain: translate({ + id: 'providers.provider.hostez.config.port', + message: "Add 1 to the port you were assigned (e.g. 25565 -> 25566)." + }) + }, + confirmed: false, + notes: [ + translate({ + id: 'providers.provider.hostez.config.other', + message: "Different ports can be set in the Allocations tab. Premium products with a dedicated IP can use the default port (19132)." + }) + ] + } + }, + { + name: 'Hosting-Minecraft', + url: 'https://hosting-minecraft.pro/', + updated: '2025-10-29', + config: { udp: ports.assign, confirmed: false } + }, + { + name: 'HumbleServers', + url: 'https://humbleservers.com/', + updated: '2025-10-29', + config: { udp: ports.allocated, confirmed: false } + }, + { + name: 'KaasHosting', + url: 'https://www.kaashosting.nl/minecraft-servers', + updated: '2026-07-10', + links: { + article: 'https://www.kaashosting.nl/help/nl/minecraft/hoe-maak-ik-mijn-minecraft-server-crossplay-met-geysermc', + discord: 'https://kaas.gg/discord' + }, + install: customInstallLocations.plugin_list, + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'KeKsHost', + url: 'https://kekshost.com/en/', + updated: '2024-12-23', + config: { udp: 19132, confirmed: false } + }, + { + name: 'Kinetic Hosting', + url: 'https://kinetichosting.net/', + updated: '2025-10-29', + links: { article: 'https://www.kinetichosting.net/articles/minecraft-java/plugins/geyser' }, + config: { udp: ports.assign, confirmed: false } + }, + { + name: 'Lilypad', + url: 'https://lilypad.gg', + updated: '2026-07-10', + links: { article: "https://lilypad.gg/bedrock", discord: "https://lilypad.gg/discord" }, + install: customInstallLocations.enable_bedrock_crossplay_option, + config: { preconfigured: true, port: ports.fromHost, confirmed: false } + }, + { + name: 'MC-HOST24.de', + url: 'https://mc-host24.de/', + updated: '2024-12-23', + config: { + udp: ports.newPort, + confirmed: false, + notes: [javaAddressInstruction] + } + }, + { + name: 'MCPEhost.ru', + url: 'https://mcpehost.ru', + updated: '2025-10-29', + config: { udp: ports.assign, confirmed: false } + }, + { + name: 'MCServerHost', + url: 'https://www.mcserverhost.com/', + updated: '2026-09-25', + links: { + article: 'https://www.mcserverhost.com/community/tutorials/how-to-set-up-a-minecraft-java-and-bedrock-crossplay-server-with-mcserverhost', + discord: 'https://discord.gg/mcserverhost' + }, + install: translate({ + id: 'providers.provider.mcserverhost.install', + message: "In the Software tab of the server panel, turn on 'Bedrock crossplay' and restart the server." + }), + config: { preconfigured: true, port: 19132, confirmed: false } + }, + { + name: 'Meloncube', + url: 'https://www.meloncube.net/', + updated: '2024-12-23', + config: { udp: ports.askHost, confirmed: false } + }, + { + name: 'Minecraft-Hosting.pro', + url: 'https://www.minecraft-hosting.pro/', + updated: '2024-12-23', + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'Minefort', + url: 'https://minefort.com/', + updated: '2026-07-10', + links: { support: 'https://minefort.com/support', discord: 'https://discord.minefort.com/' }, + config: { preconfigured: true, port: ports.fromHost, confirmed: false }, + extra_step: translate({ + id: 'providers.provider.minefort.additional_step', + message: "Go to the server dashboard under 'Connect Support', and enable the 'Allow Bedrock' option." + }), + connect: translate({ + id: 'providers.provider.minefort.connect_instructions', + message: "Connect via `play.minefort.com` and join using `/server [servername]`, or connect directly via `[servername].minefort.com`." + }) + }, + { + name: 'Minehost', + url: 'https://www.minehost.com/', + updated: '2026-09-25', + install: translate({ + id: 'providers.provider.minehost.install', + message: "In the Software tab of the server panel, turn on 'Minecraft Bedrock support' and restart the server." + }), + config: { preconfigured: true, port: 19132, confirmed: false } + }, + { + name: 'Minehut', + url: 'https://minehut.com/', + updated: '2026-07-10', + links: { discord: 'https://discord.gg/cCyEeUs' }, + config: { preconfigured: true, port: ports.fromHost, confirmed: false }, + connect: translate({ + id: 'providers.provider.minehut.connect_instructions', + message: "Connect via `bedrock.minehut.com` and do `/join [servername]`, or connect directly via `[servername].bedrock.minehut.gg`." + }) + }, + { + name: 'MineStrator', + url: 'https://minestrator.com/', + updated: '2024-12-23', + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'Modrinth Hosting', + url: 'https://modrinth.com/hosting', + updated: '2026-03-07', + links: { article: 'https://support.modrinth.com/en/articles/10986613-adding-geyser-to-your-server' }, + config: { udp: ports.assign, confirmed: false } + }, + { + name: 'MyArena', + url: 'https://www.myarena.ru/', + updated: '2024-03-03', + config: { udp: 'java', confirmed: false }, + notices: { + unsupported: translate({ id: 'providers.provider.myarena.description', message: "Does seem to be working, but the Java version is too old in order for Geyser to run properly." }) + } + }, + { + name: 'NFOservers', + url: 'https://nfoservers.com/', + updated: '2025-11-17', + config: { + udp: 19132, + confirmed: false, + notes: [javaAddressInstruction] }, - { - name: 'NiCraft', - url: 'https://www.ni-host.com/', - description: translate({ - id: 'providers.provider.nicraft.description', - message: "Does not provide Bedrock support, and are affected by a [firewall configuration issue](https://wiki.geysermc.org/geyser/port-forwarding/#ovh-and-soyoustart), which prohibits most players from joining." - }) - }, - { - name: 'Dawn', - url: 'https://dawn.gg/', - description: translate({ - id: 'providers.provider.dawn.description', - message: "Their proxy network does not support UDP. Therefore, Geyser is not supported. As an alternative, set up a paper server with e.g. playit.gg instead of port forwarding." + notices: { + info: translate({ + id: 'providers.provider.nfoservers.info', + message: "You can also run Geyser-Standalone separately on an Unmanaged VDS." }) } - ] -} + }, + { + name: 'NiCraft', + url: 'https://www.ni-host.com/', + updated: '2025-10-29', + config: { udp: 'java', confirmed: false }, + notices: { + unsupported: translate({ + id: 'providers.provider.nicraft.description', + message: "Nicraft does not provide Bedrock support, and is affected by a [firewall configuration issue](/wiki/geyser/port-forwarding/#ovh-and-soyoustart), which prohibits most players from joining." + }) + } + }, + { + name: 'Nitrado', + url: 'https://nitrado.net', + updated: '2025-03-22', + links: { article: 'https://wiki.nitrado.net/en/How_to_install_GeyserMC_and_Floodgate' }, + config: { + udp: { + obtain: translate({ + id: 'providers.provider.nitrado.config.port', + message: "Add 4 to the port of the Java server." + }) + }, + confirmed: false + } + }, + { + name: 'Nodecraft', + url: 'https://nodecraft.com', + updated: '2025-10-29', + config: { udp: 19132, confirmed: false } + }, + { + name: 'NolimitHost', + url: 'https://nolimithost.cc', + updated: '2026-07-09', + links: { article: 'https://nolimithost.cc/docs/minecraft/geyser' }, + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'OMGServ', + url: 'https://www.omgserv.com/en/', + updated: '2026-07-10', + install: translate({ + id: 'providers.provider.omgserv.install', + message: "Select Geyser in the Install Menu to install it automatically. You can enable Floodgate in the server properties on the dashboard." + }), + config: { preconfigured: true, port: ports.fromHost, confirmed: false } + }, + { + name: 'PaperNodes', + url: 'https://papernodes.com/', + updated: '2024-12-23', + config: { udp: ports.askHost, confirmed: false } + }, + { + name: 'Pebblehost', + url: 'https://pebblehost.com/', + updated: '2024-12-23', + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'Physgun', + url: 'https://physgun.com/', + updated: '2026-07-10', + links: { discord: 'https://physgun.com/discord' }, + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'PiglinHost', + url: 'https://piglinhost.com/', + updated: '2026-07-10', + links: { support: 'https://billing.piglinhost.com/submitticket.php?step=2&deptid=5', discord: 'https://discord.gg/piglinhost' }, + config: { preconfigured: true, port: ports.fromHost, confirmed: false }, + notices: { + info: translate({ + id: 'providers.provider.config.other', + message: "If you did not order the server from the [cross-platform servers page](https://piglinhost.com/minecraft-java-hosting.html), contact the support for help with Geyser setup." + }) + } + }, + { + name: 'PlanetNode', + url: 'https://planetnode.net', + updated: '2024-12-23', + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'Play Hosting', + url: 'https://play.hosting', + updated: '2026-07-10', + links: { + article: 'https://help.play.hosting/minecraft/crossplay', + discord: 'https://discord.com/invite/PmXc62p4PN' + }, + install: customInstallLocations.enable_bedrock_crossplay_option, + config: { preconfigured: true, port: ports.fromHost, confirmed: false } + }, + { + name: 'PUBCS', + url: 'https://pubcs.com', + updated: '2024-12-23', + config: { + udp: ports.askHost, + confirmed: false, + notes: [otherInstructions.dedicatedIp] + } + }, + { + name: 'Pufferfish Host', + url: 'https://pufferfish.host/', + updated: '2026-07-10', + links: { + article: 'https://docs.pufferfish.host/plugins/how-to-allow-bedrock-and-java-crossplay/', + discord: 'https://discord.gg/reZw4vQV9H' + }, + install: infos.installed_by_default, + config: { preconfigured: true, port: ports.fromHost, confirmed: false } + }, + { + name: 'RackGenius', + url: 'https://rackgenius.com/', + updated: '2026-08-08', + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'Redline Hosting', + url: 'https://redlinehosting.net/', + updated: '2024-12-23', + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'Revivenode', + url: 'https://revivenode.com/', + updated: '2025-03-22', + config: { udp: ports.assign, confirmed: false }, + notices: { + warn: warnings.ovhFirewallMisconfiguration + } + }, + { + name: 'ScalaCube', + url: 'https://scalacube.com/', + updated: '2024-12-23', + config: { + udp: ports.newPort, + confirmed: false, + notes: [javaAddressInstruction] + } + }, + { + name: 'Server.pro', + url: 'https://server.pro', + updated: '2026-07-10', + links: { support: 'https://server.pro/support', discord: 'https://server.pro/discord' }, + config: { + udp: ports.assign, + confirmed: false, + notes: [ + translate({ + id: 'providers.provider.server.pro.config.plans', + message: "Only PRO and VPS plans can open additional ports, in the Firewall tab. On other plans, contact the host for help." + }) + ] + } + }, + { + name: 'ServerPrism', + url: 'https://serverprism.com/', + updated: '2026-07-10', + links: { + article: 'https://serverprism.com/docs/minecraft/crossplay-getting-started', + support: 'https://serverprism.com/tickets/create', + discord: 'https://serverprism.com/discord' + }, + install: customInstallLocations.plugin_list, + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'Shockbyte', + url: 'https://shockbyte.com/', + updated: '2024-12-23', + links: { + article: 'https://shockbyte.com/billing/knowledgebase/173/Introduction-to-GeyserMCorDragonProxy-How-GeyserMC-Works.html' + }, + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'SimpleGameHosting', + url: 'https://simplegamehosting.com/', + updated: '2026-07-09', + links: { article: 'https://help.simplegamehosting.com/how-to-enable-crossplay-with-geyser-on-your-minecraft-server/' }, + config: { udp: ports.askHost, confirmed: false } + }, + { + name: 'Skynode.pro', + url: 'https://skynode.pro/', + updated: '2025-03-22', + config: { udp: ports.assign, confirmed: false } + }, + { + name: 'Sparked Host', + url: 'https://sparkedhost.com', + updated: '2024-12-23', + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'SRKHOST', + url: 'https://www.srkhost.eu/', + updated: '2025-03-22', + install: translate({ + id: 'providers.provider.srkhost.enable', + message: "Enable Geyser on the version changer page." + }), + config: { preconfigured: true, port: ports.fromHost, confirmed: false } + }, + { + name: 'STIPE', + url: 'https://stipe.com.au/', + updated: '2025-10-29', + config: { udp: ports.newPort, confirmed: false }, + notices: { info: onlyServesRegion('Australia') } + }, + { + name: 'The Minecraft Hosting', + url: 'https://theminecrafthosting.com/', + updated: '2024-12-23', + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'TNAHosting', + url: 'https://tnahosting.net/', + updated: '2024-12-23', + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'UltraServers', + url: 'https://ultraservers.com/', + updated: '2026-07-10', + links: { + article: 'https://docs.ultraservers.com/minecraft/plugins-mods/crossplay-on-java-and-bedrock', + support: 'https://ultraservers.com/contact', + discord: 'https://discord.ultraservers.com/' + }, + install: translate({ + id: 'providers.provider.ultraservers.install', + message: "Select 'Paper + Geyser' in the Change version tab. On existing servers, install Geyser from the Plugins/Minecraft mods tab instead." + }), + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'VemoxHost', + url: 'https://vemoxhost.com/', + updated: '2026-07-10', + links: { + article: 'https://vemoxhost.com/post/como-instalar-y-configurar-geysermc', + discord: 'https://discord.com/invite/NWv4KyQDzg' + }, + install: translate({ + id: 'providers.provider.vemox_hosting.install', + message: "Open the panel options and select the option to enable GeyserMC." + }), + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'VexyHost', + url: 'https://vexyhost.com/', + updated: '2024-12-23', + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'VoltHosting', + url: 'https://www.volthosting.co.uk/', + updated: '2025-10-29', + links: { support: 'https://volthosting.co.uk/contact.html' }, + config: { udp: ports.askHost, confirmed: false } + }, + { + name: 'Vultam', + url: 'https://vultam.net/', + updated: '2025-11-17', + links: { support: 'https://clients.vultam.net/submitticket.php?step=2&deptid=1' }, + config: { udp: ports.assign, confirmed: false } + }, + { + name: 'Wasabi Hosting', + url: 'https://wasabihosting.com', + updated: '2025-10-29', + install: customInstallLocations.plugin_list, + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'Wepwawet', + url: "https://wepwawet.net/", + updated: '2025-03-22', + config: { udp: ports.assign, confirmed: false } + }, + { + name: 'WinterNode', + url: 'https://winternode.com', + updated: '2025-10-29', + config: { udp: ports.askHost, confirmed: false } + }, + { + name: 'WiseHosting', + url: 'https://wisehosting.com', + updated: '2026-07-10', + links: { + article: 'https://wisehosting.com/help/how-to-install-geysermc-to-your-minecraft-server', + support: 'https://wisehosting.com/billing/supporttickets.php', + discord: 'https://discord.gg/9NSbNnTN3J' + }, + install: translate({ + id: 'providers.provider.wisehosting.install', + message: "Install the GeyserMC preset from the `Addons` tab in the Game Panel, then restart your server." + }), + config: { udp: ports.newPort, confirmed: false } + }, + { + name: 'WitherHosting', + url: 'https://witherhosting.com/', + updated: '2026-04-26', + links: { article: 'https://my.witherhosting.com/kb/how-to-install-and-use-geysermc-java' }, + config: { udp: ports.assign, confirmed: false } + }, + { + name: 'ZapHosting', + url: 'https://zap-hosting.com/en/', + updated: '2026-07-10', + links: { support: 'https://zap-hosting.com/en/customer/support/', discord: 'https://discord.gg/zaphosting' }, + install: customInstallLocations.plugin_list, + config: { udp: ports.newPort, confirmed: false } + } +] diff --git a/src/pages/_hosting.tsx b/src/pages/_hosting.tsx new file mode 100644 index 0000000..4161e3c --- /dev/null +++ b/src/pages/_hosting.tsx @@ -0,0 +1,109 @@ +// TODO: the hosting page is hidden until it launches. Rename this file back to hosting.tsx, and restore the links to /hosting. +import React from 'react'; +import Layout from '@theme/Layout'; +import Link from '@docusaurus/Link'; +import Translate, { translate } from '@docusaurus/Translate'; +import ReactMarkdown from 'react-markdown'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import HeroBanner from '@site/src/components/HeroBanner'; +import HeroBackground from '@site/static/img/site/split-background.webp'; +import { hostingPageTiers, openCollaborationProviders, providerSetupLink } from '@site/src/components/Provider'; +import type { HostingProvider, OpenCollaborationTier } from '@site/src/types/providers'; +import styles from './hosting.module.scss'; + +const tierNames: Partial> = { + gold: translate({ id: 'pages.hosting.tier.gold', message: 'Gold supporters' }), + silver: translate({ id: 'pages.hosting.tier.silver', message: 'Silver supporters' }), + bronze: translate({ id: 'pages.hosting.tier.bronze', message: 'Bronze supporters' }), +}; + +const HostCard = ({ provider }: { provider: HostingProvider }) => ( +
    + {provider.open_collaboration!.logo && ( +
    + {provider.name} +
    + )} +

    {provider.name}

    + {provider.open_collaboration!.description && ( +
    + {provider.open_collaboration!.description} +
    + )} +
    + {provider.url && ( + + Website + + )} + + Setup guide + +
    +
    +); + +const HostingPage: React.FC = () => ( + <> + Hosting Providers} + subheading={Hosting providers that support the development of Geyser.} + backgroundImage={HeroBackground} + /> + +
    +

    + Open Collaboration }} + > + {"The hosts below support Geyser and related projects through {openCollaboration}. Their support helps fund work on Geyser, such as keeping up with major changes to Bedrock Edition, like the switch to NetherNet. " + + "All hosts listed below also configure Geyser automatically when installed, making using Geyser easier than ever. We'd like to thank them all for their support."} + +

    +
    + + {openCollaborationProviders.some(p => hostingPageTiers.includes(p.open_collaboration!.tier)) ? hostingPageTiers.map(tier => { + const hosts = openCollaborationProviders.filter(p => p.open_collaboration!.tier === tier); + return hosts.length > 0 && ( +
    +

    {tierNames[tier]}

    +
    + {hosts.map(provider => )} +
    +
    + ); + }) : ( +

    + No hosting providers are listed yet. +

    + )} + +
    +

    Using another host?

    +

    + setup guide }} + > + {"Hosts not being listed here does not mean Geyser won't run there. The {setupGuide} includes community collected notes for many other hosts, and general instructions for those not listed."} + +

    +
    + +); + +export default function Hosting(): JSX.Element { + return ( + +
    +
    + +
    +
    +
    + ); +} diff --git a/src/pages/hosting.module.scss b/src/pages/hosting.module.scss new file mode 100644 index 0000000..05c92ec --- /dev/null +++ b/src/pages/hosting.module.scss @@ -0,0 +1,102 @@ +.intro, +.notes, +.empty { + max-width: 48rem; + margin: 2rem auto; +} + +.empty { + text-align: center; + color: var(--ifm-color-emphasis-700); +} + +.tier { + margin: 2.5rem 0; + + h2 { + text-align: center; + } +} + +// Flex rather than grid, so a row that is not full stays centered +.grid { + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 1.5rem; + + > .card { + flex: 0 1 18rem; + } +} + +.goldGrid > .card { + flex-basis: 26rem; +} + +.card { + display: flex; + flex-direction: column; + gap: 0.75rem; + padding: 1.5rem; + border: 1px solid var(--ifm-color-emphasis-300); + border-radius: var(--ifm-card-border-radius, 0.5rem); + background: var(--ifm-card-background-color); + text-align: center; + + h3 { + margin: 0; + } +} + +.gold { + border: 2px solid #d4af37; + padding: 2rem; + + .logoPlate { + height: 7rem; + } +} + +.silver { + border-color: #a8a9ad; +} + +// Logos sit on a dark plate in both themes, so light and dark artwork both stay readable +.logoPlate { + display: flex; + align-items: center; + justify-content: center; + height: 5.5rem; + padding: 1rem; + border-radius: 0.375rem; + background-color: #1b1b1d; +} + +.logo { + max-height: 100%; + max-width: 100%; + object-fit: contain; +} + +.description { + flex-grow: 1; + + p:last-child { + margin-bottom: 0; + } +} + +// Both buttons share one row: they split the width evenly, with less padding than usual so they fit narrow cards. +// Long translations wrap inside the button instead of pushing it onto a new line. +.links { + display: flex; + gap: 0.5rem; + + > :global(.button) { + flex: 1 1 0; + min-width: 0; + padding-inline: 0.75rem; + white-space: normal; + } +} diff --git a/src/pages/utilities/dump-viewer.tsx b/src/pages/utilities/dump-viewer.tsx index 03c6be7..563d3ec 100644 --- a/src/pages/utilities/dump-viewer.tsx +++ b/src/pages/utilities/dump-viewer.tsx @@ -8,41 +8,68 @@ import { Grid } from '@site/src/components/Grid'; import CodeBlock from '@theme/CodeBlock'; import clsx from 'clsx'; -const PluginList = ({plugins}, {}) => { - const [activePlugin, setActivePlugin] = useState({}); - const pluginPopoverRef = useRef(null); +interface Plugin { + main: string; + name: string; + version: string; + enabled: boolean; + authors: string[]; +} + +interface PluginListProps { + plugins: Plugin[]; +} + +const PluginList = ({ plugins }: PluginListProps) => { + const [activePlugin, setActivePlugin] = useState>({}); + const pluginPopoverRef = useRef(null); useEffect(() => { - const handleClickOutside = (event) => setActivePlugin({}); + const handleClickOutside = (event: MouseEvent) => { + if ( + pluginPopoverRef.current && + !pluginPopoverRef.current.contains(event.target as Node) + ) { + setActivePlugin({}); + } + }; + document.addEventListener("mousedown", handleClickOutside); return () => { document.removeEventListener("mousedown", handleClickOutside); }; - }, [pluginPopoverRef]); + }, []); - return - {plugins.map(plugin => ( -
    -
    setActivePlugin(plugin)} className={styles.pluginName}> - {plugin.name}
    -
    - - {activePlugin?.main === plugin.main ? ( -
    -

    {plugin.name}

    -

    {plugin.version}

    -

    {plugin.enabled ? "Enabled" : "Disabled"}

    - -

    Authors:

    -
      - {plugin.authors.map(author =>
    • {author}
    • )} -
    + return ( + + {plugins.map((plugin: Plugin) => ( +
    +
    setActivePlugin(plugin)} className={styles.pluginName}> + {plugin.name} +
    - ) : undefined} -
    - ))} - + + {activePlugin?.main === plugin.main ? ( +
    +

    {plugin.name}

    +

    {plugin.version}

    +

    + {plugin.enabled ? "Enabled" : "Disabled"} +

    + +

    Authors:

    +
      + {plugin.authors.map((author: string, index: number) => ( +
    • {author}
    • + ))} +
    +
    + ) : undefined} +
    + ))} +
    + ); }; const DumpViewerPage: React.FC = () => { @@ -53,12 +80,15 @@ const DumpViewerPage: React.FC = () => { const urlReg = /^(https?:\/\/)?dump\.geysermc\.org/; useEffect(() => { - // Get the ID from the URL - let id = window.location.href.includes('?') ? window.location.href.split('?').pop() : ''; - if (id === '' || id === undefined) { + // Get the ID from the URL with a fallback for undefined pop results + const queryPart = window.location.href.includes('?') ? window.location.href.split('?').pop() : ''; + let id = queryPart ?? ''; + + if (id === '') { id = window.location.hash.slice(1); } - if (id !== undefined && id !== '') { + + if (id !== '') { setDumpId(id); handleLoad(id); } @@ -72,13 +102,14 @@ const DumpViewerPage: React.FC = () => { let id = dumpId; if (dumpId.match(urlReg)) { - id = dumpId.split('/').pop(); + id = dumpId.split('/').pop() ?? dumpId; } + setDumpId(id); handleLoad(id); } - const handleLoad = async (dumpId) => { + const handleLoad = async (dumpId: string) => { try { // Construct the raw dump URL const url = 'https://dump.geysermc.org/raw/' + dumpId; @@ -97,7 +128,7 @@ const DumpViewerPage: React.FC = () => { } } - const capitalizeFirstLetter = (string) => { + const capitalizeFirstLetter = (string: string) => { return string.charAt(0).toUpperCase() + string.slice(1) } diff --git a/src/plugins/create-providers-json.ts b/src/plugins/create-providers-json.ts deleted file mode 100644 index 03c1036..0000000 --- a/src/plugins/create-providers-json.ts +++ /dev/null @@ -1,134 +0,0 @@ -import fs from 'fs'; -import path from 'path'; -import { LoadContext, Plugin, PluginOptions } from '@docusaurus/types'; -import logger from '@docusaurus/logger'; -import ts from "typescript"; - -// Welcome to hell -const createProvidersJsonPlugin = (_context: LoadContext, _options: PluginOptions): Plugin => { - return { - name: 'docusaurus-plugin-create-providers-json', - - async postBuild({ outDir }) { - const providersFilePath = path.join(__dirname, '../data/providers.ts'); - const providersFileContent = fs.readFileSync(providersFilePath, 'utf-8'); - const providersAst = ts.createSourceFile('providers.ts', providersFileContent, ts.ScriptTarget.Latest, true); - - let providersDataNode: ts.ObjectLiteralExpression | null = null; - let descriptionTemplatesNode: ts.ObjectLiteralExpression | null = null; - - for (const statement of providersAst.statements) { - if (ts.isVariableStatement(statement)) { - for (const decl of statement.declarationList.declarations) { - if ( - ts.isIdentifier(decl.name) && - decl.initializer - ) { - if (decl.name.text === 'providersData' && ts.isObjectLiteralExpression(decl.initializer)) { - providersDataNode = decl.initializer; - } else if (decl.name.text === 'descriptionTemplates' && ts.isObjectLiteralExpression(decl.initializer)) { - descriptionTemplatesNode = decl.initializer; - } - } - } - } - } - - if (!providersDataNode) { - logger.error('Could not find providersData in providers.ts'); - return; - } - - if (!descriptionTemplatesNode) { - logger.error('Could not find defaultDescriptions in providers.ts'); - return; - } - - function parseDescriptionTemplates(node: ts.ObjectLiteralExpression): Record { - const map: Record = {}; - for (const prop of node.properties) { - if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)) { - const key = prop.name.text; - const val = extractDescription(prop.initializer); - map[key] = val || ''; - } - } - return map; - } - - let defaultDescriptionsMap = parseDescriptionTemplates(descriptionTemplatesNode); - - function extractDescription(node: ts.Expression): string { - if (ts.isCallExpression(node)) { - const expr = node.expression; - if (ts.isIdentifier(expr) && expr.text === 'translate') { - const arg = node.arguments[0]; - if (arg && ts.isObjectLiteralExpression(arg)) { - for (const prop of arg.properties) { - if ( - ts.isPropertyAssignment(prop) && - ts.isIdentifier(prop.name) && - prop.name.text === 'message' && - ts.isStringLiteral(prop.initializer) - ) { - return prop.initializer.text; - } - } - } - } - } else if (ts.isPropertyAccessExpression(node)) { - if (ts.isIdentifier(node.expression) && node.expression.text === 'descriptionTemplates') { - const key = node.name.text; - return defaultDescriptionsMap[key] || ''; - } - } - } - - function parseProvidersArray(prop: ts.PropertyAssignment): {name: string; url: string; description: string;}[] { - if (ts.isArrayLiteralExpression(prop.initializer)) { - return prop.initializer.elements - .filter(ts.isObjectLiteralExpression) - .map(element => { - let nameVal = ''; - let urlVal = ''; - let descVal = ''; - - for (const property of element.properties) { - if (ts.isPropertyAssignment(property) && ts.isIdentifier(property.name)) { - const key = property.name.text; - const val = property.initializer; - if (key === 'name' && ts.isStringLiteral(val)) { - nameVal = val.text; - } else if (key === 'url' && ts.isStringLiteral(val)) { - urlVal = val.text; - } else if (key === 'description') { - descVal = extractDescription(val); - } - } - } - - return { name: nameVal, url: urlVal, description: descVal }; - }); - } - return []; - } - - let providersJson = {}; - - for (const prop of providersDataNode.properties) { - if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)) { - providersJson[prop.name.text] = parseProvidersArray(prop); - } - } - - const dataDir = path.join(outDir, 'data'); - if (!fs.existsSync(dataDir)) { - fs.mkdirSync(dataDir, { recursive: true }); - } - const outputFilePath = path.join(dataDir, 'providers.json'); - fs.writeFileSync(outputFilePath, JSON.stringify(providersJson, null, 4), 'utf-8'); - } - }; -}; - -export default createProvidersJsonPlugin; \ No newline at end of file diff --git a/src/plugins/create-versions-json.ts b/src/plugins/create-versions-json.ts index 72cb2e7..35a5fdd 100644 --- a/src/plugins/create-versions-json.ts +++ b/src/plugins/create-versions-json.ts @@ -5,21 +5,21 @@ import logger from '@docusaurus/logger'; import versions from '../data/versions.json'; const createVersionsJsonPlugin = (context: LoadContext, options: PluginOptions): Plugin => { - return { - name: 'docusaurus-plugin-create-versions-json', + return { + name: 'docusaurus-plugin-create-versions-json', - async postBuild({ outDir, routes, plugins }) { - const versionsFilePath = path.join(outDir, 'versions.json'); + async postBuild({ outDir, routes, plugins }) { + const versionsFilePath = path.join(outDir, 'versions.json'); - fs.writeFileSync(versionsFilePath, JSON.stringify({ - "bedrock": { - "protocol": versions.bedrock.latest - } - }, null, 2), 'utf-8'); + fs.writeFileSync(versionsFilePath, JSON.stringify({ + "bedrock": { + "protocol": versions.bedrock.latest + } + }, null, 2), 'utf-8'); - logger.success(`Created versions.json file at ${versionsFilePath}`); - }, - }; + logger.success(`Created versions.json file at ${versionsFilePath}`); + }, + }; }; export default createVersionsJsonPlugin; \ No newline at end of file diff --git a/src/plugins/crowdin-sync.ts b/src/plugins/crowdin-sync.ts new file mode 100644 index 0000000..08d3cd0 --- /dev/null +++ b/src/plugins/crowdin-sync.ts @@ -0,0 +1,591 @@ +import AdmZip from 'adm-zip'; +import { I18nConfig, LoadContext, Plugin, PluginOptions } from '@docusaurus/types'; +import crowdin, { + Credentials, + ResponseObject, + SourceFiles, + SourceFilesModel, + SourceStrings, + SourceStringsModel, + UploadStorage, +} from '@crowdin/crowdin-api-client'; +import path from 'path'; +import fs from 'fs'; +import logger from '@docusaurus/logger'; +import { finished } from "stream/promises"; +import { Readable } from 'stream'; +import { ReadableStream } from 'stream/web'; +import matter from 'gray-matter'; +import { safeGlobby } from '@docusaurus/utils'; +import crypto from 'crypto'; +import retry from 'retry'; + +type TranslationJson = { + [key: string]: { + message: string, + description?: string, + }; +} + +type Locales = { + defaultLocale: string, + locales: string[], + path: string, + localeConfigs: { + [locale: string]: { + path: string + } + }, +} + +type MarkdownFolders = { + path: string, + destination: string, +}[]; + +const PLUGIN_NAME = 'docusaurus-plugin-crowdin-sync'; + +const crowdinSyncPlugin = (context: LoadContext, options: PluginOptions): Plugin => { + return { + name: PLUGIN_NAME, + extendCli(cli) { + cli + .command('crowdin-sync') + .description('Sync translations with Crowdin') + .action(async () => { + const pluginDir = path.join(context.generatedFilesDir, PLUGIN_NAME); + + const credentials: Credentials = { + token: process.env.CROWDIN_TOKEN || '', + organization: process.env.CROWDIN_ORGANIZATION, + }; + const crowdinClient = new crowdin(credentials); + const projectId = options.projectId as number; + + const locales = populateLocales({ i18n: context.siteConfig.i18n }); + const markdownFolders = options.markdownFolders as MarkdownFolders; + + await uploadAction({ context, options, crowdinClient, projectId, pluginDir, locales, markdownFolders }); + logger.info('Uploaded files to Crowdin'); + + await downloadAction({ context, options, crowdinClient, projectId, pluginDir, locales, markdownFolders }); + logger.info('Downloaded translations from Crowdin'); + }) + }, + } +}; + +const uploadAction = async (inp: { + context: LoadContext, + options: PluginOptions, + crowdinClient: crowdin, + projectId: number, + pluginDir: string, + locales: Locales, + markdownFolders: MarkdownFolders, +}) => { + const { context, options, crowdinClient, projectId, pluginDir, locales, markdownFolders } = inp; + const { uploadStorageApi, sourceFilesApi, sourceStringsApi } = crowdinClient; + + const unprocessedFiles = new Set(); + + const markdownFiles = await safeGlobby( + markdownFolders.map(s => path.join(context.siteDir, s.path)), + { expandDirectories: ['**/*.{md,mdx}'] } + ); + + const markdownSyncedMap = new Map(); + + for (const file of markdownFiles) { + let content = fs.readFileSync(file, 'utf8'); + const parsed = matter(content); + const data = parsed.data || {}; + + if (!data.crowdin_page_id) { + data.crowdin_page_id = crypto.randomUUID(); + content = matter.stringify(parsed.content, data); + fs.writeFileSync(file, content); + } + + if (!data.crowdin_sync) continue; + + markdownSyncedMap.set(data.crowdin_page_id, { file, content }); + unprocessedFiles.add(file); + } + + const jsonFolder = path.join(locales.path, locales.localeConfigs[locales.defaultLocale].path); + const jsonFiles = await safeGlobby( + [path.join(context.siteDir, jsonFolder)], + { expandDirectories: ['**/*.json'] } + ); + + for (const file of jsonFiles) { + unprocessedFiles.add(file); + } + + if (!fs.existsSync(pluginDir)) { + fs.mkdirSync(pluginDir, { recursive: true }); + } + + const files = await fetchPaginatedCrowdinData>( + sourceFilesApi.listProjectFiles.bind(sourceFilesApi), + projectId + ); + + const directories = await fetchPaginatedCrowdinData>( + sourceFilesApi.listProjectDirectories.bind(sourceFilesApi), + projectId + ); + + const markdownOptions: { + importOptions: SourceFilesModel.ImportOptions, + exportOptions: SourceFilesModel.ExportOptions, + } = { + importOptions: { + excludedFrontMatterElements: ['permalink', 'page_sidebar', 'hide_title', 'crowdin_page_id', 'crowdin_sync'], + excludeCodeBlocks: true, + }, + exportOptions: { + strongMarker: 'asterisk', + emphasisMarker: 'asterisk', + }, + } + + for (const file of files) { + const filePath = path.join(pluginDir, file.data.path); + const fileDir = path.dirname(filePath); + + if (!fs.existsSync(fileDir)) { + fs.mkdirSync(fileDir, { recursive: true }); + } + + const downloadFileData = await sourceFilesApi.downloadFile(projectId, file.data.id); + await downloadFile({ url: downloadFileData.data.url, filePath }); + + const content = fs.readFileSync(filePath, 'utf8'); + let remove = false; + let crowdinContentHash = ''; + + switch (path.extname(filePath)) { + case '.json': + const relativeJsonPath = file.data.path.slice(1); + if (!unprocessedFiles.delete(relativeJsonPath)) { + remove = true; + break; + } + + await updateCrowdinFileDirectory({ + projectId, + sourceFilesApi, + file, + directories, + finalPath: path.resolve('/', file.data.path), + }); + + crowdinContentHash = crypto.createHash('sha256').update(content).digest('hex'); + const jsonContent = processJsonContent(fs.readFileSync(relativeJsonPath, 'utf8'), options.jsonKeyExclusions as string[]); + const jsonHash = crypto.createHash('sha256').update(jsonContent).digest('hex'); + + if (jsonHash === crowdinContentHash) break; + + await updateCrowdinFile({ + projectId, + sourceFilesApi, + file, + content: jsonContent, + filePath: relativeJsonPath, + uploadStorageApi, + }); + + break; + + case '.md': + case '.mdx': + const parsed = matter(content); + const data = parsed.data || {}; + + if (!data.crowdin_page_id) throw new Error(`Missing crowdin_page_id in MD/MDX frontmatter for ${filePath}`); + + const synced = markdownSyncedMap.get(data.crowdin_page_id); + + if (!synced) { + remove = true; + break; + } + + unprocessedFiles.delete(synced.file); + + await updateCrowdinFileDirectory({ + projectId, + sourceFilesApi, + file, + directories, + finalPath: path.resolve('/', synced.file), + }); + + crowdinContentHash = crypto.createHash('sha256').update(content).digest('hex'); + const syncedHash = crypto.createHash('sha256').update(synced.content).digest('hex'); + + if (syncedHash === crowdinContentHash) break; + + await updateCrowdinFile({ + projectId, + sourceFilesApi, + file, + content: synced.content, + filePath: synced.file, + uploadStorageApi, + ...markdownOptions, + }); + + await hideInlineCodeStrings({ + projectId, + sourceStringsApi, + fileId: file.data.id, + }); + } + + if (remove) { + await sourceFilesApi.deleteFile(projectId, file.data.id); + } + } + + for (const file of unprocessedFiles) { + const filePath = path.join(context.siteDir, file); + + const fileOptions: { + importOptions?: SourceFilesModel.ImportOptions, + exportOptions?: SourceFilesModel.ExportOptions, + type?: SourceFilesModel.FileType, + } = {}; + + let content: string; + switch (path.extname(file)) { + case '.json': + fileOptions.type = 'chrome'; + content = processJsonContent(fs.readFileSync(filePath, 'utf8'), options.jsonKeyExclusions as string[]); + break; + + case '.md': + fileOptions.type = 'md'; + fileOptions.importOptions = markdownOptions.importOptions; + fileOptions.exportOptions = markdownOptions.exportOptions; + content = fs.readFileSync(filePath, 'utf8'); + break; + + case '.mdx': + fileOptions.type = 'mdx_v2' as SourceFilesModel.FileType; + fileOptions.importOptions = markdownOptions.importOptions; + fileOptions.exportOptions = markdownOptions.exportOptions; + content = fs.readFileSync(filePath, 'utf8'); + break; + default: + logger.warn(`Skipping unsupported file type for ${file}`); + continue; + } + + const directoryId = await createCrowdinDirectory({ + projectId, + sourceFilesApi, + directories, + finalDir: path.dirname(file), + }); + + if (directoryId === null) throw new Error(`Failed to create directory for ${file}`); + + const storage = await uploadStorageApi.addStorage(path.basename(file), content); + + const createdFile = await sourceFilesApi.createFile(projectId, { + storageId: storage.data.id, + name: path.basename(file), + directoryId, + ...fileOptions, + }); + + if (path.extname(file) === '.md' || path.extname(file) === '.mdx') { + await hideInlineCodeStrings({ + projectId, + sourceStringsApi, + fileId: createdFile.data.id, + }); + } + } +}; + +const downloadAction = async (inp: { + context: LoadContext, + options: PluginOptions, + crowdinClient: crowdin, + projectId: number, + pluginDir: string, + locales: Locales, + markdownFolders: MarkdownFolders, +}) => { + const { context, options, crowdinClient, projectId, pluginDir, locales, markdownFolders } = inp; + const { translationsApi } = crowdinClient; + + const build = await translationsApi.buildProject(projectId); + + let retries = 0; + + while (retries < 60) { + const status = await translationsApi.checkBuildStatus(projectId, build.data.id); + logger.info(`Translation bundle build status: ${status.data.status}`); + if (status.data.status === 'finished') break; + if (status.data.status === 'failed') { + throw new Error('Translations build failed'); + } + + await new Promise(resolve => setTimeout(resolve, 1000)); + retries++; + } + + const translations = await translationsApi.downloadTranslations(projectId, build.data.id); + const zipPath = path.join(pluginDir, 'translations.zip'); + await downloadFile({ url: translations.data.url, filePath: zipPath }); + const zip = new AdmZip(zipPath); + + + for (const entry of zip.getEntries()) { + if (entry.isDirectory) continue; + + const entryParts = entry.entryName.split('/'); + if (entryParts.length < 2) continue; + + const locale = entryParts[0]; + if (locale === locales.defaultLocale) continue; + + const entryPath = entryParts.slice(1).join('/'); + + if (entryPath.startsWith(path.join(locales.path, '/'))) { + const destinationPath = path.join( + context.siteDir, + locales.path, + locales.localeConfigs[locale].path, + entryPath.slice(locales.path.length + locales.localeConfigs[locales.defaultLocale].path.length + 1) + ); + + const destinationDir = path.dirname(destinationPath); + if (!fs.existsSync(destinationDir)) { + fs.mkdirSync(destinationDir, { recursive: true }); + } + + zip.extractEntryTo(entry, destinationDir, false, true); + continue; + } + + const markdownFolder = markdownFolders.find(f => entryPath.startsWith(path.join(f.path, '/'))); + if (markdownFolder) { + const destinationPath = path.join( + context.siteDir, + locales.path, + locales.localeConfigs[locale].path, + markdownFolder.destination, + entryPath.slice(markdownFolder.path.length) + ); + + const destinationDir = path.dirname(destinationPath); + if (!fs.existsSync(destinationDir)) { + fs.mkdirSync(destinationDir, { recursive: true }); + } + + zip.extractEntryTo(entry, destinationDir, false, true); + continue; + } + } +}; + +const populateLocales = (inp: { i18n: I18nConfig }): Locales => { + const { i18n } = inp; + + const defaultLocale = i18n.defaultLocale ?? 'en'; + const locales = i18n.locales ?? [defaultLocale]; + const localePath = i18n.path ?? 'i18n'; + + const localeConfigs: { [locale: string]: { path: string } } = {}; + for (const locale of locales) { + localeConfigs[locale] = { + path: (i18n.localeConfigs[locale] ?? {}).path ?? locale, + }; + } + + return { + defaultLocale, + locales, + path: localePath, + localeConfigs, + } +}; + +const processJsonContent = (content: string, exclusions: string[] = []): string => { + const jsonContent: TranslationJson = JSON.parse(content); + const includedContent: TranslationJson = {}; + + for (const key in jsonContent) { + if (!jsonContent[key]?.message?.trim()) { + continue; + } + if (exclusions.some(exclusion => key.startsWith(exclusion))) { + continue; + } + includedContent[key] = jsonContent[key]; + } + + return JSON.stringify(includedContent, null, 2); +}; + +const fetchPaginatedCrowdinData = async ( + apiMethod: (projectId: number, params: { limit: number, offset: number }) => Promise<{ data: T[] }>, + projectId: number +): Promise => { + const limit = 500; + let offset = 0; + let remaining = true; + const results: T[] = []; + + while (remaining) { + const response = await apiMethod(projectId, { limit, offset }); + + if (response.data.length < limit) { + remaining = false; + } else { + offset += limit; + } + + results.push(...response.data); + } + + return results; +}; + +const downloadFile = async (inp: { url: string, filePath: string }) => { + const { url, filePath } = inp; + logger.info(`Downloading translation file to ${filePath}`); + const { body } = await fetch(url); + const stream = fs.createWriteStream(filePath); + await finished(Readable.fromWeb(body as ReadableStream).pipe(stream)); +}; + +const updateCrowdinFile = async (inp: { + projectId: number, + sourceFilesApi: SourceFiles, + file: ResponseObject, + content: string, + filePath: string, + uploadStorageApi: UploadStorage, + importOptions?: SourceFilesModel.ImportOptions, + exportOptions?: SourceFilesModel.ExportOptions, +}) => { + const { projectId, sourceFilesApi, file, content, filePath, uploadStorageApi, importOptions, exportOptions } = inp; + + const storage = await uploadStorageApi.addStorage(path.basename(filePath), content); + + await sourceFilesApi.updateOrRestoreFile(projectId, file.data.id, { + storageId: storage.data.id, + name: path.basename(filePath), + updateOption: 'clear_translations_and_approvals', + importOptions, + exportOptions + }) +}; + +const updateCrowdinFileDirectory = async (inp: { + projectId: number, + sourceFilesApi: SourceFiles, + file: ResponseObject, + directories: ResponseObject[], + finalPath: string, +}) => { + const { projectId, sourceFilesApi, file, directories, finalPath } = inp; + + if (finalPath === file.data.path) return; + + const parentDirId = await createCrowdinDirectory({ + projectId, + sourceFilesApi, + directories, + finalDir: path.dirname(finalPath), + }); + + await sourceFilesApi.editFile(projectId, file.data.id, [ + { + op: 'replace', + path: '/directoryId', + value: parentDirId, + } + ]) +}; + +const createCrowdinDirectory = async (inp: { + projectId: number, + sourceFilesApi: SourceFiles, + directories: ResponseObject[], + finalDir: string, +}) => { + const { projectId, sourceFilesApi, directories, finalDir } = inp; + + const pathArr = finalDir.split('/'); + const remainingDirs: string[] = []; + let parentDirId: number | null = null; + + for (let i = pathArr.length; i > 0; i--) { + const dirPath = path.join('/', pathArr.slice(0, i).join('/')); + const dir = directories.find(d => d.data.path === dirPath); + + if (dir) { + parentDirId = dir.data.id; + if (i === pathArr.length) { + return parentDirId; + } + break; + } + + remainingDirs.unshift(pathArr[i - 1]); + } + + for (const dir of remainingDirs) { + const newDir = await sourceFilesApi.createDirectory(projectId, { + name: dir, + directoryId: parentDirId ?? undefined, + }); + + directories.push(newDir); + parentDirId = newDir.data.id; + } + + return parentDirId; +} + +// Matches strings consisting only of `inline code`, whitespace, or Crowdin inline tags like <0/> +const INLINE_CODE_ONLY_REGEX = /^(?:`[^`]+`|\s|<[0-9]+\/>)+$/; + +const hideInlineCodeStrings = async (inp: { + projectId: number, + sourceStringsApi: SourceStrings, + fileId: number, +}) => { + const { projectId, sourceStringsApi, fileId } = inp; + + const strings = await fetchPaginatedCrowdinData>( + (projId, params) => sourceStringsApi.listProjectStrings(projId, { fileId, ...params }), + projectId + ); + + for (const str of strings) { + if ( + typeof str.data.text === 'string' && + !str.data.isHidden && + INLINE_CODE_ONLY_REGEX.test(str.data.text.trim()) + ) { + await sourceStringsApi.editString(projectId, str.data.id, [ + { + op: 'replace', + path: '/isHidden', + value: true, + }, + ]); + } + } +}; + +export default crowdinSyncPlugin; \ No newline at end of file diff --git a/src/plugins/custom_modules/translate.ts b/src/plugins/custom_modules/translate.ts deleted file mode 100644 index bc395c5..0000000 --- a/src/plugins/custom_modules/translate.ts +++ /dev/null @@ -1,4 +0,0 @@ -// This is a fake module that simulates @docusaurus/Translate -export function translate (data) { - return data.message -} diff --git a/src/plugins/modify-webpack.ts b/src/plugins/modify-webpack.ts new file mode 100644 index 0000000..2de8b02 --- /dev/null +++ b/src/plugins/modify-webpack.ts @@ -0,0 +1,17 @@ +import {Plugin, LoadContext, PluginOptions} from '@docusaurus/types'; +const PLUGIN_NAME = 'docusaurus-modify-webpack'; + +const modifyWebpackPlugin = (_context: LoadContext, _options: PluginOptions): Plugin => { + return { + name: PLUGIN_NAME, + configureWebpack() { + return { + infrastructureLogging: { + level: 'error' + } + } + } + } +} + +export default modifyWebpackPlugin; \ No newline at end of file diff --git a/src/plugins/output-locales.ts b/src/plugins/output-locales.ts new file mode 100644 index 0000000..b1c2868 --- /dev/null +++ b/src/plugins/output-locales.ts @@ -0,0 +1,25 @@ +import fs from 'fs'; +import path from 'path'; +import {LoadContext, Plugin, PluginOptions} from '@docusaurus/types'; + +const PLUGIN_NAME = 'docusaurus-plugin-output-locales'; + +const ouputLocalesPlugin = (context: LoadContext, options: PluginOptions): Plugin => { + return { + name: PLUGIN_NAME, + extendCli(cli) { + cli + .command('output-locales') + .description('Sync translations with Crowdin') + .action(async () => { + fs.writeFileSync( + path.join(context.siteDir, 'locales.json'), + JSON.stringify(context.siteConfig.i18n.locales), + 'utf-8' + ) + }); + } + }; +} + +export default ouputLocalesPlugin; \ No newline at end of file diff --git a/src/renderer/ImageRenderers.ts b/src/renderer/ImageRenderers.ts index 9bd0884..eddf6a7 100644 --- a/src/renderer/ImageRenderers.ts +++ b/src/renderer/ImageRenderers.ts @@ -7,7 +7,7 @@ import { faDownload, faHouse, faBlog, faBook, IconDefinition } from '@fortawesom const geyserLogo = join(__dirname, '../../static/img/icons/geyser.png'); const geyserLogoBase64 = `data:image/png;base64,${readFileSync(geyserLogo).toString('base64')}`; -const titleElement = ({ children }) => React.createElement( +const titleElement = ({ children }: { children: React.ReactNode }) => React.createElement( 'label', { style: { @@ -109,7 +109,7 @@ export const blogOgRenderer: ImageRenderer = async (data, context) const authorImages = data.data.metadata.authors.map(async author => React.createElement( 'img', { - src: await encodeRemoteImage(author.imageURL), + src: await encodeRemoteImage(author.imageURL || geyserLogoBase64), style: { width: 112.5, height: 112.5, @@ -154,8 +154,15 @@ export const pageOgRenderer: ImageRenderer = async (data, context) => const extraTitleLength = (' ' + context.siteConfig.titleDelimiter + ' ' + context.siteConfig.title).length; await data.document.load(); - const title = (data.document.loaded && data.document.root.querySelector('title')?.textContent).slice(0, -extraTitleLength) || context.siteConfig.title; - const description = (data.document.loaded && data.document.root.querySelector('meta[name="description"]').getAttribute('content')) || context.siteConfig.tagline; + const root = data?.document?.loaded ? data.document.root : null; + + const title = + root?.querySelector('title')?.textContent?.slice(0, -extraTitleLength) || + context?.siteConfig?.title; + + const description = + root?.querySelector('meta[name="description"]')?.getAttribute('content') || + context?.siteConfig?.tagline; const element = React.createElement( 'div', @@ -236,6 +243,8 @@ async function getTtfFont(family: string, axes: string[], value: number[]): Prom const css = await cssCall.text(); const ttfUrl = css.match(/url\(([^)]+)\)/)?.[1]; + if (!ttfUrl) throw new Error("Could not find TTF URL in CSS"); + return await fetch(ttfUrl).then(res => res.arrayBuffer()); } diff --git a/src/types/providers.ts b/src/types/providers.ts index 78c18a3..b526d0b 100644 --- a/src/types/providers.ts +++ b/src/types/providers.ts @@ -1,15 +1,61 @@ -import React from "react"; +// Where a port comes from: either same as java server, a number, or instructions to obtain it. +export type PortSource = 'java' | number | { obtain: string }; +// The Geyser config changes a user makes on a host that does not configure Geyser itself. +export type ManualConfig = { + preconfigured?: false; + // The UDP port NetherNet (WebRTC) traffic uses. This is required for any NetherNet connection. + udp: PortSource; + // The TCP port Geyser can run built-in signaling on. Omit if the host does not give out a TCP port that is free + // for Geyser; players then connect through an external signaling service instead. + // This cannot be the Java port. Use 'same_as_udp' when the UDP port above is also open on TCP (e.g. Pterodactyl allocations). + builtin_signaling?: Exclude | 'same_as_udp'; + // External signaling (NXS). Geyser uses Warden (https://warden.cloud) by default. + // Set an object if the host runs its own NXS-compatible signaling service, or false if the host blocks external signaling. + external_signaling?: false | { + endpoint: string; + token_instruction?: string; // how to get the token for this endpoint + }; +} + +// The host configures transport, signaling and ports itself (e.g. through system properties), so no config changes are needed. +export type Preconfigured = { + preconfigured: true; + port: PortSource; // The port players connect with +} + +export type GeyserConfig = (ManualConfig | Preconfigured) & { + confirmed?: false; // Set while the host has not confirmed these details; leave it out once they have. + notes?: string[]; // Shown below the config, e.g. which Bedrock address to use, or alternatives to the default port +} + +export type OpenCollaborationTier = 'bronze' | 'silver' | 'gold'; + +// Properties are grouped in the order the setup guide shows them. export type HostingProvider = { name: string; - url: string; - description: React.ReactNode; -} - -export type ProviderType = "built_in" | "support" | "no_support"; - -export type Providers = { - built_in: HostingProvider[]; - support: HostingProvider[]; - no_support: HostingProvider[]; + url: string | null; + updated?: string; // When these instructions were last added or edited, as 'YYYY-MM-DD'. Shown at the top of the setup guide. + links?: { // All optional + article?: string; // host article for Geyser + support?: string; // link to host support, can show when setup help fails + discord?: string; // host discord server + }; + // Set for hosts that support Geyser through Open Collaboration. + // Silver and gold hosts are highlighted on /hosting and in the setup guide + open_collaboration?: { + tier: OpenCollaborationTier; + logo?: string; // e.g. '/img/hosts/example.webp', placed in static/img/hosts + description?: string; // a short blurb for the hosting page + }; + install?: string; // Step 1: replaces the download steps, e.g. aternos installs Geyser through its plugin list + config: GeyserConfig; // Step 2: NetherNet network details, and what to change in the Geyser config + extra_step?: string; // Step 3: e.g.: must enable udp in settings/enable geyser mode, usually some step in panel + connect?: string; // Step 4: overrides the generated instructions on what players must input to connect + notices?: { + info?: string; // Additional information. Displayed in info bubble. + warn?: string; // shaming server hosting providers with issues. + unsupported?: string; // If set, Geyser does not work on this host, and this is the reason. + }; + proxies_banned?: boolean; // If the provider does not allow proxies, we hide proxy setup instructions (e.g. Aternos) } diff --git a/static/img/icons/bungeecord.png b/static/img/icons/bungeecord.png new file mode 100644 index 0000000..30d079f Binary files /dev/null and b/static/img/icons/bungeecord.png differ diff --git a/tsconfig.json b/tsconfig.json index a4bca0c..b65a9b2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,10 +1,11 @@ { "extends": "@docusaurus/tsconfig", - "esModuleInterop": true, "compilerOptions": { "lib": ["DOM", "DOM.Iterable", "ESNext"], "target": "ESNext", - "baseUrl": "." + "ignoreDeprecations": "6.0", + "baseUrl": ".", + "esModuleInterop": true }, "exclude": [ "**/node_modules", diff --git a/wiki/api/api.geysermc.org/global-api-web-api-health-controller-health.ParamsDetails.json b/wiki/api/api.geysermc.org/global-api-web-api-health-controller-health.ParamsDetails.json new file mode 100644 index 0000000..9154eff --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-health-controller-health.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[]} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-health-controller-health.RequestSchema.json b/wiki/api/api.geysermc.org/global-api-web-api-health-controller-health.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-health-controller-health.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-health-controller-health.StatusCodes.json b/wiki/api/api.geysermc.org/global-api-web-api-health-controller-health.StatusCodes.json new file mode 100644 index 0000000..16a9e64 --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-health-controller-health.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"204":{"description":"The server is online"}}} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-health-controller-health.api.mdx b/wiki/api/api.geysermc.org/global-api-web-api-health-controller-health.api.mdx index 2d991fd..81d1923 100644 --- a/wiki/api/api.geysermc.org/global-api-web-api-health-controller-health.api.mdx +++ b/wiki/api/api.geysermc.org/global-api-web-api-health-controller-health.api.mdx @@ -9,21 +9,17 @@ api: eJyFkDFPwzAQhf9KdLOVlIopW4VQYaaIAXW4pEdt1bHN+VpRRf7v6JJSFRYmyyd9T+97I/TofYf sidebar_class_name: "get api-method" info_path: wiki/api/api.geysermc.org/global-api custom_edit_url: null +crowdin_page_id: bce0021b-1c90-461b-a658-2bbc9632de90 --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; @@ -47,31 +44,27 @@ Simple server online check id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    -
    - - -
    - - - The server is online - - -
    - -
    -
    -
    -
    -
    + + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-1.ParamsDetails.json b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-1.ParamsDetails.json new file mode 100644 index 0000000..6fe35a5 --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-1.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[{"description":"Bedrock xuid","example":"2535432196048835","in":"path","name":"xuid","required":true,"schema":{"type":"string"}}]} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-1.RequestSchema.json b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-1.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-1.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-1.StatusCodes.json b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-1.StatusCodes.json new file mode 100644 index 0000000..805bb9b --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-1.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"400":{"description":"Deprecated"}}} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-1.api.mdx b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-1.api.mdx index c11009f..a2962fe 100644 --- a/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-1.api.mdx +++ b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-1.api.mdx @@ -6,24 +6,20 @@ sidebar_label: "GlobalApiWeb.Api.LinkController.get_bedrock_link_v1" hide_title: true hide_table_of_contents: true api: eJydkk2L2zAQhv+KeU8tCDufZatb+sFS6Km09BBCkO1ZW0SWtJIcEoz+e5HjbDbbnnqyLd6R53lmBlRCqVJUBw8+RIaarKNKBKrBg+uJwVhyIkijv9XgeFSmFGpj5W8q842V+XepD5+NDs4oRS5vKOxLqp2pDnsl9WF/nIPBCic6CuQ8+HZATb5y0qZLwfHpEs9OvazBQCfRWUXgWKyX69VyMf/4YbZ6eFiuwSBTgRWhBYMWXUpNZY6ee+lubfuqpU6ADwhnm3I+OKkbxLhLYW+N9pSgsZrN0uO+qS83DzEyBNGk1pGQsGNvwv8npaPQmuS0oTA6Ci04iuO8SJliKiiGBBjB4MkdrwZ7p8DRhmA9LwphZd7Q2ZPrqty4BgxH4aQo1Ug4InuqeifDGXy7Sx6fzOhGhlH1hSDbWJlqyfkL2Dyf5QtEBmt86IROJZP2W0X2mjq7x84miiwhZSP2nbqX6QQ6hcIqIXX63Yg3TEq2GOtG9QzThWDg4+R3DK3xIcWGoRSefjkVYzp+7slNuFcbl+2TPr3X4E9Cefqro8roQDqA492PaaneZ2+W9J9dT4dCn8cBqD59geFA5+uexl18NfjHrz8R4x+wDjDB -sidebar_class_name: "get api-method" +sidebar_class_name: "get api-method menu__list-item--deprecated" info_path: wiki/api/api.geysermc.org/global-api custom_edit_url: null +crowdin_page_id: 298a24e1-beed-45b2-a4af-a1ec7e5ab1f6 --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; -:::caution deprecated - +:::caution[deprecated] +This endpoint has been deprecated and may be replaced or removed in future versions of the API. ::: @@ -51,55 +48,27 @@ GlobalApiWeb.Api.LinkController.get_bedrock_link_v1 id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    - -

    - Path Parameters -

    -
    -
      - - - -
    -
    -
    -
    - - -
    - - - Deprecated - - -
    - -
    -
    -
    -
    -
    + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-2.ParamsDetails.json b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-2.ParamsDetails.json new file mode 100644 index 0000000..6fe35a5 --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-2.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[{"description":"Bedrock xuid","example":"2535432196048835","in":"path","name":"xuid","required":true,"schema":{"type":"string"}}]} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-2.RequestSchema.json b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-2.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-2.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-2.StatusCodes.json b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-2.StatusCodes.json new file mode 100644 index 0000000..917b2d0 --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-2.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"200":{"content":{"application/json":{"schema":{"description":"A link between a Java and a Bedrock account","properties":{"bedrock_id":{"description":"xuid of the Bedrock player","example":2535432196048835,"format":"int64","type":"integer"},"java_id":{"description":"UUID of the Java player","example":"d34eb447-6e90-4c78-9281-600df88aef1d","format":"uuid","type":"string"},"java_name":{"description":"Username of the Java player","example":"Tim203","type":"string"},"last_name_update":{"description":"Unix millis of the last Java name update check","format":"int64","type":"integer"}},"required":["bedrock_id","java_id","java_name","last_name_update"],"title":"Link","type":"object"}}},"description":"Linked accounts or an empty object if there is no account linked"},"400":{"content":{"application/json":{"schema":{"description":"Generic format for pretty much every error","required":["message"],"properties":{"message":{"description":"The error message","type":"string"}},"title":"Error","type":"object"}}},"description":"No xuid provided or invalid"}}} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-2.api.mdx b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-2.api.mdx index 1bec6c5..7148e2d 100644 --- a/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-2.api.mdx +++ b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-bedrock-link-v-2.api.mdx @@ -9,21 +9,17 @@ api: eJylVU1v4zYQ/SvEnLqAYju2k3V0c9tFsEXRQ5Ggh8AIxtTYYkyRXJJyYxj674uhJMdfwHbRk75 sidebar_class_name: "get api-method" info_path: wiki/api/api.geysermc.org/global-api custom_edit_url: null +crowdin_page_id: c2e0453a-eac1-4481-adbe-6bd6cc05d317 --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; @@ -47,215 +44,27 @@ Get linked Java account from Bedrock xuid id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    - -

    - Path Parameters -

    -
    -
      - - - -
    -
    -
    -
    - - -
    - - - Linked accounts or an empty object if there is no account linked - - -
    - - - - -
    - - - Schema - -
    - -
      - - - - - - - - - -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    - - - No xuid provided or invalid - - -
    - - - - -
    - - - Schema - -
    - -
      - - - -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    -
    -
    + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-1.ParamsDetails.json b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-1.ParamsDetails.json new file mode 100644 index 0000000..e7bb684 --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-1.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[{"description":"Java UUID","example":"d34eb447-6e90-4c78-9281-600df88aef1d","in":"path","name":"uuid","required":true,"schema":{"type":"string"}}]} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-1.RequestSchema.json b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-1.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-1.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-1.StatusCodes.json b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-1.StatusCodes.json new file mode 100644 index 0000000..805bb9b --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-1.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"400":{"description":"Deprecated"}}} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-1.api.mdx b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-1.api.mdx index 4bbffd6..590965e 100644 --- a/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-1.api.mdx +++ b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-1.api.mdx @@ -6,24 +6,20 @@ sidebar_label: "GlobalApiWeb.Api.LinkController.get_java_link_v1" hide_title: true hide_table_of_contents: true api: eJydksFu2zAMhl/F+E8boNhJF7SpbsU6FB12GlbsEAQBYzOJFtlWJTloYOjdBzpJ02477WRbJil+H9mjJGtXVO4CdJ8UKnaeS4pcQUffsULr2FM0bfNYQePBtiuyd8785FV+50z+zTS7z20TfWst+3zDcfmL9rS0ptkt9xMoOPJUc2QfoOc9Kg6lN04qQuMr7Sl7enq8hwK/UO0sQ6P6NOXVdHozuubb8Wha3sxGt1ezyeh6PK7WsxnxelJBwUgFR3ELhYZqyew6I388P3fGXyBCueWaoHvEg5O4EL1pNkhpIcHBtU1gUYDpeCyP913eX6ykpBBpIywQRizUH8H/oajmuG1F74bjYCxuoVHsJ4XEFBJd9IKWoBDY788yO2+hsY3RBV0U5Ey+4UNgX5d56zdQ2JM3tLID2wAbuOy8iQfo+UIMrtvBiomD+GPv2Z0zkss+HJEm+Ti/QlJwbYg1NZJyEn7JyN7yZu+BM0HIBCYbgN8Zex1K5JdYOEumkbsGtv4kY44hbzCuINWgoIdpLxS2bYgS0/crCvzkbUpy/NyxP4GePRxX0AR5r6DXZAP/1U7ZNpGbCI0P30+L9DF7u6n/7Pd0SM1h8G47+YLCjg/nxUyL9GbYD19+IKXfOi4tNw== -sidebar_class_name: "get api-method" +sidebar_class_name: "get api-method menu__list-item--deprecated" info_path: wiki/api/api.geysermc.org/global-api custom_edit_url: null +crowdin_page_id: 40d851f9-4ff4-456f-86e7-3fe51707d109 --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; -:::caution deprecated - +:::caution[deprecated] +This endpoint has been deprecated and may be replaced or removed in future versions of the API. ::: @@ -51,55 +48,27 @@ GlobalApiWeb.Api.LinkController.get_java_link_v1 id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    - -

    - Path Parameters -

    -
    -
      - - - -
    -
    -
    -
    - - -
    - - - Deprecated - - -
    - -
    -
    -
    -
    -
    + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-2.ParamsDetails.json b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-2.ParamsDetails.json new file mode 100644 index 0000000..e7bb684 --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-2.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[{"description":"Java UUID","example":"d34eb447-6e90-4c78-9281-600df88aef1d","in":"path","name":"uuid","required":true,"schema":{"type":"string"}}]} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-2.RequestSchema.json b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-2.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-2.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-2.StatusCodes.json b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-2.StatusCodes.json new file mode 100644 index 0000000..b7dfee5 --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-2.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"200":{"content":{"application/json":{"schema":{"description":"Response schema for a list of links","items":{"description":"A link between a Java and a Bedrock account","properties":{"bedrock_id":{"description":"xuid of the Bedrock player","example":2535432196048835,"format":"int64","type":"integer"},"java_id":{"description":"UUID of the Java player","example":"d34eb447-6e90-4c78-9281-600df88aef1d","format":"uuid","type":"string"},"java_name":{"description":"Username of the Java player","example":"Tim203","type":"string"},"last_name_update":{"description":"Unix millis of the last Java name update check","format":"int64","type":"integer"}},"required":["bedrock_id","java_id","java_name","last_name_update"],"title":"Link","type":"object"},"title":"LinkList","type":"array"}}},"description":"Linked account or an empty object if there is no account linked"},"400":{"content":{"application/json":{"schema":{"description":"Generic format for pretty much every error","required":["message"],"properties":{"message":{"description":"The error message","type":"string"}},"title":"Error","type":"object"}}},"description":"No UUID provided or invalid"}}} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-2.api.mdx b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-2.api.mdx index 1efeed8..757f630 100644 --- a/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-2.api.mdx +++ b/wiki/api/api.geysermc.org/global-api-web-api-link-controller-get-java-link-v-2.api.mdx @@ -9,21 +9,17 @@ api: eJylVd9v4kYQ/ldW89RKDhAgOeI32p6iq059OCXqQ4TQsB7whvXu3u6axkL+30+zxgQCUq/qE8b sidebar_class_name: "get api-method" info_path: wiki/api/api.geysermc.org/global-api custom_edit_url: null +crowdin_page_id: 65c611e3-464a-449f-97ff-d0e7f800a36d --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; @@ -47,227 +44,27 @@ Get linked Bedrock account from Java UUID id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    - -

    - Path Parameters -

    -
    -
      - - - -
    -
    -
    -
    - - -
    - - - Linked account or an empty object if there is no account linked - - -
    - - - - -
    - - - Schema - -
    - -
      -
    • -
      - Array [ -
      -
    • - - - - - - - -
    • -
      - ] -
      -
    • -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    - - - No UUID provided or invalid - - -
    - - - - -
    - - - Schema - -
    - -
      - - - -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    -
    -
    + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-front-texture.ParamsDetails.json b/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-front-texture.ParamsDetails.json new file mode 100644 index 0000000..d550c39 --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-front-texture.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[{"description":"Java texture id","example":"a90790c57e181ed13aded14c47ee2f7c8de3533e017ba957af7bdf9df1bde94f","in":"path","name":"texture_id","required":true,"schema":{"type":"string"}}]} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-front-texture.RequestSchema.json b/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-front-texture.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-front-texture.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-front-texture.StatusCodes.json b/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-front-texture.StatusCodes.json new file mode 100644 index 0000000..913b28f --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-front-texture.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"200":{"description":"ok"}}} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-front-texture.api.mdx b/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-front-texture.api.mdx index c74e3e3..430bebb 100644 --- a/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-front-texture.api.mdx +++ b/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-front-texture.api.mdx @@ -9,21 +9,17 @@ api: eJydkk2L2zAQhv+KmVMLwrHzgTe6hVKW9ri09BBCkK1xLNaWtCM5bDD670WKt9l0e+rJ8uidGT3 sidebar_class_name: "get api-method" info_path: wiki/api/api.geysermc.org/global-api custom_edit_url: null +crowdin_page_id: b7b6a585-5378-4a46-ac7b-02f9b80b3c4b --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; @@ -47,55 +44,27 @@ GlobalApiWeb.Api.RenderController.get_front_texture id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    - -

    - Path Parameters -

    -
    -
      - - - -
    -
    -
    -
    - - -
    - - - ok - - -
    - -
    -
    -
    -
    -
    + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-raw-texture.ParamsDetails.json b/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-raw-texture.ParamsDetails.json new file mode 100644 index 0000000..d550c39 --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-raw-texture.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[{"description":"Java texture id","example":"a90790c57e181ed13aded14c47ee2f7c8de3533e017ba957af7bdf9df1bde94f","in":"path","name":"texture_id","required":true,"schema":{"type":"string"}}]} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-raw-texture.RequestSchema.json b/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-raw-texture.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-raw-texture.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-raw-texture.StatusCodes.json b/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-raw-texture.StatusCodes.json new file mode 100644 index 0000000..913b28f --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-raw-texture.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"200":{"description":"ok"}}} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-raw-texture.api.mdx b/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-raw-texture.api.mdx index a0c4b2f..25b0098 100644 --- a/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-raw-texture.api.mdx +++ b/wiki/api/api.geysermc.org/global-api-web-api-render-controller-get-raw-texture.api.mdx @@ -9,21 +9,17 @@ api: eJydkk1v2zAMhv+KwdMGCP7IB9zoFgxDsR2LDTsEQUBbdCzUtlRKThoY/u+DHHdp1p12kkSRot7 sidebar_class_name: "get api-method" info_path: wiki/api/api.geysermc.org/global-api custom_edit_url: null +crowdin_page_id: e7a8b799-aab4-45fd-830e-7777ab087b76 --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; @@ -47,55 +44,27 @@ GlobalApiWeb.Api.RenderController.get_raw_texture id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    - -

    - Path Parameters -

    -
    -
      - - - -
    -
    -
    -
    - - -
    - - - ok - - -
    - -
    -
    -
    -
    -
    + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads-page.ParamsDetails.json b/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads-page.ParamsDetails.json new file mode 100644 index 0000000..c5b3a23 --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads-page.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[{"description":"Number between 1 - page limit. Defaults to 1","example":1,"in":"path","name":"page","required":true,"schema":{"type":"string"}}]} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads-page.RequestSchema.json b/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads-page.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads-page.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads-page.StatusCodes.json b/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads-page.StatusCodes.json new file mode 100644 index 0000000..98918bf --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads-page.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"200":{"content":{"application/json":{"schema":{"description":"List of most recently converted skins. Ordered by most recently converted","properties":{"data":{"items":{"description":"The most basic info required to show a Java skin on the site","properties":{"id":{"description":"The converted skin id","type":"integer"},"texture_id":{"description":"The texture id used by Minecraft","type":"string"}},"required":["id","texture_id"],"title":"RecentConvertedSkinReference","type":"object"},"type":"array"},"total_pages":{"description":"The amount of pages available","type":"integer"}},"title":"RecentConvertedSkinList","type":"object"}}},"description":"The most recently uploaded skins. First element has been uploaded most recently etc."},"400":{"content":{"application/json":{"schema":{"description":"Generic format for pretty much every error","required":["message"],"properties":{"message":{"description":"The error message","type":"string"}},"title":"Error","type":"object"}}},"description":"Invalid page number (e.g. negative, decimal, too large)"}}} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads-page.api.mdx b/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads-page.api.mdx index 15898a5..212690d 100644 --- a/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads-page.api.mdx +++ b/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads-page.api.mdx @@ -9,21 +9,17 @@ api: eJylVdtu3EYM/RWCTwmgam2jT3ozktRI0QuQpuiDYRiUxJUmHs1MONQmi4X+vaCkXdux3SDoky7 sidebar_class_name: "get api-method" info_path: wiki/api/api.geysermc.org/global-api custom_edit_url: null +crowdin_page_id: 3063ffe0-6e7b-487d-8a37-fe153e3d8c91 --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; @@ -47,248 +44,27 @@ Get a list of the most recently uploaded skins id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    - -

    - Path Parameters -

    -
    -
      - - - -
    -
    -
    -
    - - -
    - - - The most recently uploaded skins. First element has been uploaded most recently etc. - - -
    - - - - -
    - - - Schema - -
    - -
      - -
      - - - - data - - object[] - - -
      -
    • -
      - Array [ -
      -
    • - - - -
    • -
      - ] -
      -
    • -
      -
      -
      - - -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    - - - Invalid page number (e.g. negative, decimal, too large) - - -
    - - - - -
    - - - Schema - -
    - -
      - - - -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    -
    -
    + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads.RequestSchema.json b/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads.StatusCodes.json b/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads.StatusCodes.json new file mode 100644 index 0000000..98918bf --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"200":{"content":{"application/json":{"schema":{"description":"List of most recently converted skins. Ordered by most recently converted","properties":{"data":{"items":{"description":"The most basic info required to show a Java skin on the site","properties":{"id":{"description":"The converted skin id","type":"integer"},"texture_id":{"description":"The texture id used by Minecraft","type":"string"}},"required":["id","texture_id"],"title":"RecentConvertedSkinReference","type":"object"},"type":"array"},"total_pages":{"description":"The amount of pages available","type":"integer"}},"title":"RecentConvertedSkinList","type":"object"}}},"description":"The most recently uploaded skins. First element has been uploaded most recently etc."},"400":{"content":{"application/json":{"schema":{"description":"Generic format for pretty much every error","required":["message"],"properties":{"message":{"description":"The error message","type":"string"}},"title":"Error","type":"object"}}},"description":"Invalid page number (e.g. negative, decimal, too large)"}}} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads.api.mdx b/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads.api.mdx index e7d3214..8b660da 100644 --- a/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads.api.mdx +++ b/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-recent-uploads.api.mdx @@ -9,21 +9,17 @@ api: eJylVMGO3DYM/RWBpxYwPJtFT74tgnSRoEWBNEUPi8WCljm2MrKkULRbY+B/LyjPZDDZ3QZoT7Y sidebar_class_name: "get api-method" info_path: wiki/api/api.geysermc.org/global-api custom_edit_url: null +crowdin_page_id: 2e681311-4b47-46f2-ac3b-f03f000e582a --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; @@ -43,220 +40,21 @@ import TabItem from "@theme/TabItem"; Get a list of the most recently uploaded skins -
    -
    - - -
    - - - The most recently uploaded skins. First element has been uploaded most recently etc. - - -
    - - - - -
    - - - Schema - -
    - -
      - -
      - - - - data - - object[] - - -
      -
    • -
      - Array [ -
      -
    • - - - -
    • -
      - ] -
      -
    • -
      -
      -
      - - -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    - - - Invalid page number (e.g. negative, decimal, too large) - - -
    - - - - -
    - - - Schema - -
    - -
      - - - -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    -
    -
    + + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-skin.ParamsDetails.json b/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-skin.ParamsDetails.json new file mode 100644 index 0000000..6fe35a5 --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-skin.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[{"description":"Bedrock xuid","example":"2535432196048835","in":"path","name":"xuid","required":true,"schema":{"type":"string"}}]} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-skin.RequestSchema.json b/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-skin.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-skin.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-skin.StatusCodes.json b/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-skin.StatusCodes.json new file mode 100644 index 0000000..30276d8 --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-skin.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"200":{"content":{"application/json":{"schema":{"description":"Data representing a skin that has been converted and uploaded to Java Edition","properties":{"hash":{"description":"The hash of the skin bytes","type":"string"},"is_steve":{"description":"If the skin is a Steve or an Alex","type":"boolean"},"signature":{"description":"The signature of the skin data used by Minecraft","type":"string"},"texture_id":{"description":"The texture id used by Minecraft","type":"string"},"value":{"description":"The value of the skin data used by Minecraft","type":"string"}},"required":["hash","texture_id","value","singature","is_steve"],"title":"ConvertedSkin","type":"object"}}},"description":"Converted skin or an empty object if there is no skin stored for that player"},"400":{"content":{"application/json":{"schema":{"description":"Generic format for pretty much every error","required":["message"],"properties":{"message":{"description":"The error message","type":"string"}},"title":"Error","type":"object"}}},"description":"Invalid xuid (not an int)"}}} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-skin.api.mdx b/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-skin.api.mdx index f41fb6a..d45deda 100644 --- a/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-skin.api.mdx +++ b/wiki/api/api.geysermc.org/global-api-web-api-skin-controller-get-skin.api.mdx @@ -9,21 +9,17 @@ api: eJylVcFu2zgQ/RViTi0g2KmTLFrdvN0gyAJ72XSxh8AIRtJYYk2R7HBkRDD07wtSktdOvGixPUk sidebar_class_name: "get api-method" info_path: wiki/api/api.geysermc.org/global-api custom_edit_url: null +crowdin_page_id: dca16ce8-080c-4bbd-8dd9-1cfa24022916 --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; @@ -47,224 +44,27 @@ Get the most recently converted skin of a Bedrock player id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    - -

    - Path Parameters -

    -
    -
      - - - -
    -
    -
    -
    - - -
    - - - Converted skin or an empty object if there is no skin stored for that player - - -
    - - - - -
    - - - Schema - -
    - -
      - - - - - - - - - - - -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    - - - Invalid xuid (not an int) - - -
    - - - - -
    - - - Schema - -
    - -
      - - - -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    -
    -
    + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats-2.ParamsDetails.json b/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats-2.ParamsDetails.json new file mode 100644 index 0000000..9154eff --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats-2.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[]} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats-2.RequestSchema.json b/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats-2.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats-2.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats-2.StatusCodes.json b/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats-2.StatusCodes.json new file mode 100644 index 0000000..eb3b4f3 --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats-2.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"200":{"content":{"application/json":{"schema":{"description":"All publicly available statistics","properties":{"pre_upload_queue":{"properties":{"length":{"description":"The amount of skins in the pre-upload queue","type":"integer"}},"type":"object"},"upload_queue":{"properties":{"estimated_duration":{"description":"Estimated duration to upload 'length' amount of skins","format":"decimal","type":"number"},"length":{"description":"The amount of skins in the upload queue","type":"integer"}},"type":"object"}},"title":"Statistics","type":"object"}}},"description":"Statistics"}}} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats-2.api.mdx b/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats-2.api.mdx index 6d928ad..f36c2c3 100644 --- a/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats-2.api.mdx +++ b/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats-2.api.mdx @@ -9,21 +9,17 @@ api: eJydU8Fu2zAM/RWBl26A52Q5+hYMRbBzO+xQBAEtM7YaWVIlOlhg+N8H2nGbJsWA9WT5mdbje3z sidebar_class_name: "get api-method" info_path: wiki/api/api.geysermc.org/global-api custom_edit_url: null +crowdin_page_id: d53b7919-26d6-41d1-84ff-17bb639b5d91 --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; @@ -47,169 +44,27 @@ Get all publicly available Global Api statistics id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    -
    - - -
    - - - Statistics - - -
    - - - - -
    - - - Schema - -
    - -
      - -
      - - - - pre_upload_queue - - object - - -
      - - - -
      -
      -
      -
      - - - - upload_queue - - object - - -
      - - - - - -
      -
      -
      -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    -
    -
    + + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats.ParamsDetails.json b/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats.ParamsDetails.json new file mode 100644 index 0000000..9154eff --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[]} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats.RequestSchema.json b/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats.StatusCodes.json b/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats.StatusCodes.json new file mode 100644 index 0000000..eb3b4f3 --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"200":{"content":{"application/json":{"schema":{"description":"All publicly available statistics","properties":{"pre_upload_queue":{"properties":{"length":{"description":"The amount of skins in the pre-upload queue","type":"integer"}},"type":"object"},"upload_queue":{"properties":{"estimated_duration":{"description":"Estimated duration to upload 'length' amount of skins","format":"decimal","type":"number"},"length":{"description":"The amount of skins in the upload queue","type":"integer"}},"type":"object"}},"title":"Statistics","type":"object"}}},"description":"Statistics"}}} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats.api.mdx b/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats.api.mdx index 28c1a04..3edfb88 100644 --- a/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats.api.mdx +++ b/wiki/api/api.geysermc.org/global-api-web-api-stats-controller-get-all-stats.api.mdx @@ -9,21 +9,17 @@ api: eJydU8Fu2zAM/RWBl148O+nRt2Aoip3bYYciCGiZsdXIkirRwQLD/z7Qjts0GQasJ8vPNPne0+M sidebar_class_name: "get api-method" info_path: wiki/api/api.geysermc.org/global-api custom_edit_url: null +crowdin_page_id: f9c3bc8c-34bd-4ef0-bbb2-c509eae2f03f --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; @@ -47,169 +44,27 @@ Get all publicly available Global Api statistics id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    -
    - - -
    - - - Statistics - - -
    - - - - -
    - - - Schema - -
    - -
      - -
      - - - - pre_upload_queue - - object - - -
      - - - -
      -
      -
      -
      - - - - upload_queue - - object - - -
      - - - - - -
      -
      -
      -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    -
    -
    + + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-utils-controller-get-bedrock-or-java-uuid.ParamsDetails.json b/wiki/api/api.geysermc.org/global-api-web-api-utils-controller-get-bedrock-or-java-uuid.ParamsDetails.json new file mode 100644 index 0000000..c240a32 --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-utils-controller-get-bedrock-or-java-uuid.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[{"description":"The username of the Minecraft player","examples":{"bedrock":{"value":".Tim203"},"java":{"value":"Tim203"}},"in":"path","name":"username","required":true,"schema":{"type":"string"}},{"description":"The prefix used in your Floodgate config","example":".","in":"query","name":"prefix","required":true,"schema":{"type":"string"}}]} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-utils-controller-get-bedrock-or-java-uuid.RequestSchema.json b/wiki/api/api.geysermc.org/global-api-web-api-utils-controller-get-bedrock-or-java-uuid.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-utils-controller-get-bedrock-or-java-uuid.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-utils-controller-get-bedrock-or-java-uuid.StatusCodes.json b/wiki/api/api.geysermc.org/global-api-web-api-utils-controller-get-bedrock-or-java-uuid.StatusCodes.json new file mode 100644 index 0000000..1c549d3 --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-utils-controller-get-bedrock-or-java-uuid.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"200":{"content":{"application/json":{"schema":{"description":"Username to Floodgate UUID in Mojang Minecraft profile format","properties":{"id":{"description":"The Floodgate UUID of the Bedrock player","example":"0000000000000000000901f64f65c7c3","format":"uuid","type":"string"},"name":{"description":"The Floodgate username","example":".Tim203","type":"string"}},"required":["id","name"],"title":"UsernameProfile","type":"object"}}},"description":"The Bedrock xuid in Floodgate UUID format and username. Response made to be identical to the Mojang endpoint"},"204":{"description":"Either the gamertag is too long or too short once the prefix was removed or there is no Xbox account registered to the gamertag"},"302":{"description":"The player is a Java player and we'll redirect you to the Mojang endpoint for that username"},"400":{"content":{"application/json":{"schema":{"description":"Generic format for pretty much every error","required":["message"],"properties":{"message":{"description":"The error message","type":"string"}},"title":"Error","type":"object"}}},"description":"Invalid prefix (no prefix, empty or too long)"},"503":{"content":{"application/json":{"schema":{"description":"Generic format for pretty much every error","required":["message"],"properties":{"message":{"description":"The error message","type":"string"}},"title":"Error","type":"object"}}},"description":"The requested account was not cached and we were not able to call the Xbox Live API (rate limited / not setup)"}}} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-utils-controller-get-bedrock-or-java-uuid.api.mdx b/wiki/api/api.geysermc.org/global-api-web-api-utils-controller-get-bedrock-or-java-uuid.api.mdx index 91ed9d9..6e7f421 100644 --- a/wiki/api/api.geysermc.org/global-api-web-api-utils-controller-get-bedrock-or-java-uuid.api.mdx +++ b/wiki/api/api.geysermc.org/global-api-web-api-utils-controller-get-bedrock-or-java-uuid.api.mdx @@ -9,21 +9,17 @@ api: eJzlVk1v4zYQ/SvEXJoAgu11sltUt7RNgxRdYLFI0AJBENDUWGJCkdrhyBvD0H9fDCU5ju1+LHJ sidebar_class_name: "get api-method" info_path: wiki/api/api.geysermc.org/global-api custom_edit_url: null +crowdin_page_id: 4f65e783-7bd0-4c91-8387-d29b6dcb7d47 --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; @@ -47,320 +44,27 @@ Utility endpoint to get either a Java UUID or a Bedrock xuid id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    - -

    - Path Parameters -

    -
    -
      - - - -
    -
    -
    + + - -

    - Query Parameters -

    -
    -
      - - - -
    -
    -
    -
    - - -
    - - - The Bedrock xuid in Floodgate UUID format and username. Response made to be identical to the Mojang endpoint - - -
    - - - - -
    - - - Schema - -
    - -
      - - - - - -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    - - - Either the gamertag is too long or too short once the prefix was removed or there is no Xbox account registered to the gamertag - - -
    - -
    -
    -
    - - - The player is a Java player and we'll redirect you to the Mojang endpoint for that username - - -
    - -
    -
    -
    - - - Invalid prefix (no prefix, empty or too long) - - -
    - - - - -
    - - - Schema - -
    - -
      - - - -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    - - - The requested account was not cached and we were not able to call the Xbox Live API (rate limited / not setup) - - -
    - - - - -
    - - - Schema - -
    - -
      - - - -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    -
    -
    + + + + + + + + \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-1.ParamsDetails.json b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-1.ParamsDetails.json new file mode 100644 index 0000000..6fe35a5 --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-1.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[{"description":"Bedrock xuid","example":"2535432196048835","in":"path","name":"xuid","required":true,"schema":{"type":"string"}}]} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-1.RequestSchema.json b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-1.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-1.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-1.StatusCodes.json b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-1.StatusCodes.json new file mode 100644 index 0000000..805bb9b --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-1.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"400":{"description":"Deprecated"}}} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-1.api.mdx b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-1.api.mdx index ebc15b6..e274ed3 100644 --- a/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-1.api.mdx +++ b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-1.api.mdx @@ -6,24 +6,20 @@ sidebar_label: "GlobalApiWeb.Api.XboxController.get_gamertag_v1" hide_title: true hide_table_of_contents: true api: eJyVkkuL2zAUhf+KOasWhJ1nmWqXPhi6LS0tDGGQ7TuOiGxppOuQYPTfi5x4Mpl205VlcY50zqc7oFLGlKraB8ghCtTkPFWKqYZk35OAdeQVa9t9qyFxb2ypzMbpX1TmG6fz36U9frYde2sM+bwhfmxUS55V83iYQ8Apr1pi8gHyYUBNofLapQMh8Ylqb6t9dux1DQE6qtYZgsRivVyvlov5xw+z1d3dcg0BnQxO8Q4CnWqT6mLz9Nxrf40cqh21CnIAn1zSBfa6axDjNomDs12gVBir2Sx9bkN9uTKIUYBVk6LjWNojtuKN+P+BtMQ7m1g2xCMf3kGiOMyLdEMxiYshtYsQCOQPE77eG0jsmF2QRaGczhs6BfJtlVvfQOCgvFalGeuNfQNVvdd8gnzYJohPdgSjeeR8jp9tnE5e8uHcap7P8gWigLOBW9Uly4X51ZG9rpzdds6mGtnY+YbZy7MwHblwRukuXTVWGy48HjD6RuYC02EQkOObbwV2NnDSDUOpAv30Jsa0/dyTv3SdUJznToe0riGflAn0V6TKdkwdQ+Ld98s4vc/ejOc/Y182VXca6Zs+/UFgT6dpQuM2vnr2+68/EOMfdQMtcQ== -sidebar_class_name: "get api-method" +sidebar_class_name: "get api-method menu__list-item--deprecated" info_path: wiki/api/api.geysermc.org/global-api custom_edit_url: null +crowdin_page_id: e129a1b4-9828-4f00-a7ef-66ff14acb03b --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; -:::caution deprecated - +:::caution[deprecated] +This endpoint has been deprecated and may be replaced or removed in future versions of the API. ::: @@ -51,55 +48,27 @@ GlobalApiWeb.Api.XboxController.get_gamertag_v1 id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    - -

    - Path Parameters -

    -
    -
      - - - -
    -
    -
    -
    - - -
    - - - Deprecated - - -
    - -
    -
    -
    -
    -
    + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-2.ParamsDetails.json b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-2.ParamsDetails.json new file mode 100644 index 0000000..86b2a90 --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-2.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[{"description":"The xuid of the Bedrock player","in":"path","name":"xuid","required":true,"schema":{"type":"string"}}]} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-2.RequestSchema.json b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-2.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-2.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-2.StatusCodes.json b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-2.StatusCodes.json new file mode 100644 index 0000000..ced2a56 --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-2.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"200":{"content":{"application/json":{"schema":{"description":"Get gamertag from xuid result","required":["gamertag"],"properties":{"gamertag":{"description":"The gamertag","example":"Tim203","type":"string"}},"title":"XboxGamertagResult","type":"object"}}},"description":"The gamertag associated with the xuid or an empty object if there is account with the given xuid"},"400":{"content":{"application/json":{"schema":{"description":"Generic format for pretty much every error","required":["message"],"properties":{"message":{"description":"The error message","type":"string"}},"title":"Error","type":"object"}}},"description":"The xuid is invalid (not an int)"},"503":{"content":{"application/json":{"schema":{"description":"Generic format for pretty much every error","required":["message"],"properties":{"message":{"description":"The error message","type":"string"}},"title":"Error","type":"object"}}},"description":"The requested account was not cached and we were not able to call the Xbox Live API (rate limited / not setup)"}}} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-2.api.mdx b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-2.api.mdx index bb2299b..4164745 100644 --- a/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-2.api.mdx +++ b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-gamertag-v-2.api.mdx @@ -9,21 +9,17 @@ api: eJzlVcGK5DYQ/RVRpxkw7U5vcvGtE5ZhIYewTEhgaBa1XG1rR5a0pXJPG+N/DyXbnZn0JhvIMSf sidebar_class_name: "get api-method" info_path: wiki/api/api.geysermc.org/global-api custom_edit_url: null +crowdin_page_id: f2b9bbb1-b210-4c3f-80da-7ca16deec611 --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; @@ -47,261 +44,27 @@ Get the gamertag from a xuid id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    - -

    - Path Parameters -

    -
    -
      - - - -
    -
    -
    -
    - - -
    - - - The gamertag associated with the xuid or an empty object if there is account with the given xuid - - -
    - - - - -
    - - - Schema - -
    - -
      - - - -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    - - - The xuid is invalid (not an int) - - -
    - - - - -
    - - - Schema - -
    - -
      - - - -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    - - - The requested account was not cached and we were not able to call the Xbox Live API (rate limited / not setup) - - -
    - - - - -
    - - - Schema - -
    - -
      - - - -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    -
    -
    + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-1.ParamsDetails.json b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-1.ParamsDetails.json new file mode 100644 index 0000000..9b805fe --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-1.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[{"description":"The gamertag of the Bedrock player","in":"path","name":"gamertag","required":true,"schema":{"type":"string"}}]} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-1.RequestSchema.json b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-1.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-1.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-1.StatusCodes.json b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-1.StatusCodes.json new file mode 100644 index 0000000..805bb9b --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-1.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"400":{"description":"Deprecated"}}} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-1.api.mdx b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-1.api.mdx index 426f75a..d7ebca8 100644 --- a/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-1.api.mdx +++ b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-1.api.mdx @@ -6,24 +6,20 @@ sidebar_label: "GlobalApiWeb.Api.XboxController.get_xuid_v1" hide_title: true hide_table_of_contents: true api: eJyVkk2L2zAQhv+KeE8tCDspPemWfrD0Wra0EMIi2xNbRLa00jjEGP33Im++tt1De7It3pHneWZm1NraSteHCDUniYZ8oFozNVAcRpJwnoJm44ZvDRQerKu03Xjzk6pi403xq3Knz27g4KylULTET6fRNE/HNSS8DronphChtjMainUwPl8GhceORKt7Cqxb4faCOxKfqAmuPghv9UQBEiYnveYOEoPuCQqXGkgEeh5NuPUa6456DTWDJ5+zkYMZWqS0y+Ho3RApk+LjapUfrzv6coNPSYJ1m/vGqXIn7OQf4f8z0RN3LgtsiRcx3EGhPK7LfHuZg+V8IUuQiBSOF29jsFDomH1UZam9KVqaIoW+LlzIHo46GF3ZBW1hjVSPwfAEtd1liXu3SDFs6dq62HiTaynEF6J1sSo+IEl4F7nXQy45O79ViHtc8ZpXZAyx8L5ydR0H04lLb7UZ8m8WrPnsYoulbnEtkS+ChLrOeifRucg5N8+VjvQj2JTy8fNI4cx50fCybCbm9wZqr22kv1qq3cA0MBTefT+v0XvxTzv5Jsz5UA/TMg875i9IHGi639m0S3fL8PD1ESn9BuA2NGk= -sidebar_class_name: "get api-method" +sidebar_class_name: "get api-method menu__list-item--deprecated" info_path: wiki/api/api.geysermc.org/global-api custom_edit_url: null +crowdin_page_id: 53744e91-585f-4627-bb2a-a67e633e73c9 --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; -:::caution deprecated - +:::caution[deprecated] +This endpoint has been deprecated and may be replaced or removed in future versions of the API. ::: @@ -51,55 +48,27 @@ GlobalApiWeb.Api.XboxController.get_xuid_v1 id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    - -

    - Path Parameters -

    -
    -
      - - - -
    -
    -
    -
    - - -
    - - - Deprecated - - -
    - -
    -
    -
    -
    -
    + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-2.ParamsDetails.json b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-2.ParamsDetails.json new file mode 100644 index 0000000..9b805fe --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-2.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[{"description":"The gamertag of the Bedrock player","in":"path","name":"gamertag","required":true,"schema":{"type":"string"}}]} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-2.RequestSchema.json b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-2.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-2.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-2.StatusCodes.json b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-2.StatusCodes.json new file mode 100644 index 0000000..0cd4ee5 --- /dev/null +++ b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-2.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"200":{"content":{"application/json":{"schema":{"description":"Get xuid from gamertag result","required":["xuid"],"properties":{"xuid":{"description":"The xuid","example":2535432196048835,"format":"int64","type":"integer"}},"title":"XboxXuidResult","type":"object"}}},"description":"The xuid associated with the gamertag or an empty object if there is account with the given gamertag"},"400":{"content":{"application/json":{"schema":{"description":"Generic format for pretty much every error","required":["message"],"properties":{"message":{"description":"The error message","type":"string"}},"title":"Error","type":"object"}}},"description":"The gamertag is invalid (empty or longer than 16 chars)"},"503":{"content":{"application/json":{"schema":{"description":"Generic format for pretty much every error","required":["message"],"properties":{"message":{"description":"The error message","type":"string"}},"title":"Error","type":"object"}}},"description":"The requested account was not cached and we were not able to call the Xbox Live API (rate limited / not setup)"}}} \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-2.api.mdx b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-2.api.mdx index ee72a53..7fa9dc0 100644 --- a/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-2.api.mdx +++ b/wiki/api/api.geysermc.org/global-api-web-api-xbox-controller-get-xuid-v-2.api.mdx @@ -9,21 +9,17 @@ api: eJzlVd+L40YM/leEnnbBJNnsD65+S8uxHPShHFd6sIRjMlbsuR3PzGnkbELw/17kONlss9CDPvb sidebar_class_name: "get api-method" info_path: wiki/api/api.geysermc.org/global-api custom_edit_url: null +crowdin_page_id: d331f5a1-ee39-4d41-8743-b6fd48353e01 --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; @@ -47,261 +44,27 @@ Get the xuid from a gamertag id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    - -

    - Path Parameters -

    -
    -
      - - - -
    -
    -
    -
    - - -
    - - - The xuid associated with the gamertag or an empty object if there is account with the given gamertag - - -
    - - - - -
    - - - Schema - -
    - -
      - - - -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    - - - The gamertag is invalid (empty or longer than 16 chars) - - -
    - - - - -
    - - - Schema - -
    - -
      - - - -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    - - - The requested account was not cached and we were not able to call the Xbox Live API (rate limited / not setup) - - -
    - - - - -
    - - - Schema - -
    - -
      - - - -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    -
    -
    + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/api.geysermc.org/global-api.info.mdx b/wiki/api/api.geysermc.org/global-api.info.mdx index b09603e..5d01e50 100644 --- a/wiki/api/api.geysermc.org/global-api.info.mdx +++ b/wiki/api/api.geysermc.org/global-api.info.mdx @@ -6,6 +6,7 @@ sidebar_label: Introduction sidebar_position: 0 hide_title: true custom_edit_url: null +crowdin_page_id: 42a09894-7b62-4c3e-ab50-9980dceb63ed --- import ApiLogo from "@theme/ApiLogo"; @@ -27,11 +28,9 @@ import Export from "@theme/ApiExplorer/Export"; >
    -The Global API is available for every server. It currently includes: [Global Linking](/wiki/floodgate/linking/#what-is-global-linking), [skin uploading](/wiki/floodgate/features/#what-is-skin-uploading), getting a xuid by gamertag, and getting a gamertag by xuid. -We don't store anything else than you can access by the Global API, except for some non-identifiable metrics. The source code of the Global API is available [here](https://github.com/GeyserMC/global_api) and the source code of the Global Linking server is available [here](https://github.com/GeyserMC/GlobalLinkServer). -As a user of the API, you can get various info about Geyser (or specifically, Floodgate players) that joined any Geyser + Floodgate server before. This includes: -- Conversion methods from a Bedrock gamertag to Bedrock xuid, and vice-versa. Only provides info for players who are in Geyser's cache.
    - If you need them for all players, you can use a third-party API, e.g. https://mcprofile.io/endpoints, which also provides info from the Geyser Global API. -- Skin info: Whenever a Bedrock player joins via Floodgate, their skin gets converted & uploaded to mineskin. If you want to grab that converted skin, use the xuid of the Bedrock player in this endpoint to get a texture id, or a base64 encoded "value", which you could use directly in e.g. player heads. + + + + \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/build-latest.ParamsDetails.json b/wiki/api/downloads.geysermc.org/build-latest.ParamsDetails.json new file mode 100644 index 0000000..e4b3ea2 --- /dev/null +++ b/wiki/api/downloads.geysermc.org/build-latest.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[{"name":"project","in":"path","description":"The project identifier.","required":true,"schema":{"pattern":"[a-z]+","type":"string"},"example":"geyser"},{"name":"version","in":"path","description":"A version of the project.","required":true,"schema":{"pattern":"(?:latest|[0-9.]+-?(?:pre|SNAPSHOT)?(?:[0-9.]+)?)?","type":"string"}}]} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/build-latest.RequestSchema.json b/wiki/api/downloads.geysermc.org/build-latest.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/downloads.geysermc.org/build-latest.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/build-latest.StatusCodes.json b/wiki/api/downloads.geysermc.org/build-latest.StatusCodes.json new file mode 100644 index 0000000..33141d8 --- /dev/null +++ b/wiki/api/downloads.geysermc.org/build-latest.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"302":{"description":"Found","content":{"application/json":{"schema":{"type":"object"}}}}}} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/build-latest.api.mdx b/wiki/api/downloads.geysermc.org/build-latest.api.mdx index 799f651..6cc51f8 100644 --- a/wiki/api/downloads.geysermc.org/build-latest.api.mdx +++ b/wiki/api/downloads.geysermc.org/build-latest.api.mdx @@ -9,21 +9,17 @@ api: eJydVE1v2zAM/SsGTw2qxFl3mi5BgG1dgWEr1u4U+KBYTKxOllRJzpq5/u8DFSXpx1Zs9cUSRVP sidebar_class_name: "get api-method" info_path: wiki/api/downloads.geysermc.org/downloads-api custom_edit_url: null +crowdin_page_id: 40138626-51ea-4349-8fa2-fa39bbc07f62 --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; @@ -47,119 +44,27 @@ Gets information related to a specific build. id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    - -

    - Path Parameters -

    -
    -
      - - - - - -
    -
    -
    -
    - - -
    - - - Found - - -
    - - - - -
    - - - Schema - -
    - -
      -
      - - - object - - -
      -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    -
    -
    + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/build-specific.ParamsDetails.json b/wiki/api/downloads.geysermc.org/build-specific.ParamsDetails.json new file mode 100644 index 0000000..e6be2c9 --- /dev/null +++ b/wiki/api/downloads.geysermc.org/build-specific.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[{"name":"project","in":"path","description":"The project identifier.","required":true,"schema":{"pattern":"[a-z]+","type":"string"},"example":"geyser"},{"name":"version","in":"path","description":"A version of the project.","required":true,"schema":{"pattern":"(?:latest|[0-9.]+-?(?:pre|SNAPSHOT)?(?:[0-9.]+)?)?","type":"string"}},{"name":"build","in":"path","description":"A build of the version.","required":true,"schema":{"type":"integer","format":"int32"}}]} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/build-specific.RequestSchema.json b/wiki/api/downloads.geysermc.org/build-specific.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/downloads.geysermc.org/build-specific.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/build-specific.StatusCodes.json b/wiki/api/downloads.geysermc.org/build-specific.StatusCodes.json new file mode 100644 index 0000000..61fabcb --- /dev/null +++ b/wiki/api/downloads.geysermc.org/build-specific.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"pattern":"[a-z]+","type":"string","example":"geyser"},"project_name":{"type":"string","example":"Geyser"},"version":{"pattern":"(?:latest|[0-9.]+-?(?:pre|SNAPSHOT)?(?:[0-9.]+)?)?","type":"string","example":"2.1.0"},"build":{"pattern":"\\d+","type":"integer","format":"int32","example":30},"time":{"type":"string","format":"date-time"},"channel":{"type":"string","enum":["default","experimental"]},"promoted":{"type":"boolean"},"changes":{"type":"array","items":{"type":"object","properties":{"commit":{"type":"string"},"summary":{"type":"string"},"message":{"type":"string"}},"title":"Change"}},"downloads":{"type":"object","additionalProperties":{"type":"object","properties":{"name":{"pattern":"[a-z0-9._-]+","type":"string","example":"Geyser-Spigot.jar"},"sha256":{"pattern":"[a-f0-9]{64}","type":"string","example":"9ecc7374c2110a077f6c288fa4ad53a6812c09d5690dae0bc96508f939d4cb8a"}},"title":"Download"}}},"title":"BuildResponse"}}}}}} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/build-specific.api.mdx b/wiki/api/downloads.geysermc.org/build-specific.api.mdx index 9ceb7d8..35d13b3 100644 --- a/wiki/api/downloads.geysermc.org/build-specific.api.mdx +++ b/wiki/api/downloads.geysermc.org/build-specific.api.mdx @@ -9,21 +9,17 @@ api: eJytVt9z4jYQ/lc8+5TMGWwgIeAXJv0x6U1neplL+sQxN4u1BqW25JMEPerz/95Z2RAohFzTPtl sidebar_class_name: "get api-method" info_path: wiki/api/downloads.geysermc.org/downloads-api custom_edit_url: null +crowdin_page_id: 140f1140-d915-455a-922d-ebeec613be1c --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; @@ -47,326 +44,27 @@ Gets information related to a specific build. id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    - -

    - Path Parameters -

    -
    -
      - - - - - - - -
    -
    -
    -
    - - -
    - - - OK - - -
    - - - - -
    - - - Schema - -
    - -
      - - - - - - - - - - - - - - - -
      - - - - changes - - object[] - - -
      -
    • -
      - Array [ -
      -
    • - - - - - -
    • -
      - ] -
      -
    • -
      -
      -
      -
      - - - - downloads - - object - - -
      - -
      - - - - property name* - - Download - - -
      - - - - - -
      -
      -
      -
      -
      -
      -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    -
    -
    + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/builds.ParamsDetails.json b/wiki/api/downloads.geysermc.org/builds.ParamsDetails.json new file mode 100644 index 0000000..e4b3ea2 --- /dev/null +++ b/wiki/api/downloads.geysermc.org/builds.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[{"name":"project","in":"path","description":"The project identifier.","required":true,"schema":{"pattern":"[a-z]+","type":"string"},"example":"geyser"},{"name":"version","in":"path","description":"A version of the project.","required":true,"schema":{"pattern":"(?:latest|[0-9.]+-?(?:pre|SNAPSHOT)?(?:[0-9.]+)?)?","type":"string"}}]} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/builds.RequestSchema.json b/wiki/api/downloads.geysermc.org/builds.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/downloads.geysermc.org/builds.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/builds.StatusCodes.json b/wiki/api/downloads.geysermc.org/builds.StatusCodes.json new file mode 100644 index 0000000..b4466e9 --- /dev/null +++ b/wiki/api/downloads.geysermc.org/builds.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"pattern":"[a-z]+","type":"string","example":"geyser"},"project_name":{"type":"string","example":"Geyser"},"version":{"pattern":"(?:latest|[0-9.]+-?(?:pre|SNAPSHOT)?(?:[0-9.]+)?)?","type":"string","example":"2.1.0"},"builds":{"type":"array","items":{"type":"object","properties":{"build":{"pattern":"\\d+","type":"integer","format":"int32","example":30},"time":{"type":"string","format":"date-time"},"channel":{"type":"string","enum":["default","experimental"]},"promoted":{"type":"boolean"},"changes":{"type":"array","items":{"type":"object","properties":{"commit":{"type":"string"},"summary":{"type":"string"},"message":{"type":"string"}},"title":"Change"}},"downloads":{"type":"object","additionalProperties":{"type":"object","properties":{"name":{"pattern":"[a-z0-9._-]+","type":"string","example":"Geyser-Spigot.jar"},"sha256":{"pattern":"[a-f0-9]{64}","type":"string","example":"9ecc7374c2110a077f6c288fa4ad53a6812c09d5690dae0bc96508f939d4cb8a"}},"title":"Download"}}},"title":"VersionBuild"}}},"title":"BuildsResponse"}}}}}} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/builds.api.mdx b/wiki/api/downloads.geysermc.org/builds.api.mdx index 1100ed9..cb4c6c5 100644 --- a/wiki/api/downloads.geysermc.org/builds.api.mdx +++ b/wiki/api/downloads.geysermc.org/builds.api.mdx @@ -9,21 +9,17 @@ api: eJytVttu4zYQ/RVhXppgJUu2E8fWi5FekC4KdINN2hevsRiLI5spRWpJ2l1Xq38vSEm+1K53kfb sidebar_class_name: "get api-method" info_path: wiki/api/downloads.geysermc.org/downloads-api custom_edit_url: null +crowdin_page_id: b00c70b8-bfc3-4f45-b4fc-54606ab3ffb2 --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; @@ -47,363 +44,27 @@ Gets all available builds for a project's version. id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    - -

    - Path Parameters -

    -
    -
      - - - - - -
    -
    -
    -
    - - -
    - - - OK - - -
    - - - - -
    - - - Schema - -
    - -
      - - - - - - - -
      - - - - builds - - object[] - - -
      -
    • -
      - Array [ -
      -
    • - - - - - - - - -
      - - - - changes - - object[] - - -
      -
    • -
      - Array [ -
      -
    • - - - - - -
    • -
      - ] -
      -
    • -
      -
      -
      -
      - - - - downloads - - object - - -
      - -
      - - - - property name* - - Download - - -
      - - - - - -
      -
      -
      -
      -
      -
    • -
      - ] -
      -
    • -
      -
      -
      -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    -
    -
    + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/download-latest.ParamsDetails.json b/wiki/api/downloads.geysermc.org/download-latest.ParamsDetails.json new file mode 100644 index 0000000..4d0af21 --- /dev/null +++ b/wiki/api/downloads.geysermc.org/download-latest.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[{"name":"project","in":"path","description":"The project identifier.","required":true,"schema":{"pattern":"[a-z]+","type":"string"},"example":"geyser"},{"name":"version","in":"path","description":"A version of the project.","required":true,"schema":{"pattern":"(?:latest|[0-9.]+-?(?:pre|SNAPSHOT)?(?:[0-9.]+)?)?","type":"string"}},{"name":"download","in":"path","description":"A download of the build.","required":true,"schema":{"pattern":"[a-zA-Z0-9._-]+","type":"string"}}]} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/download-latest.RequestSchema.json b/wiki/api/downloads.geysermc.org/download-latest.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/downloads.geysermc.org/download-latest.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/download-latest.StatusCodes.json b/wiki/api/downloads.geysermc.org/download-latest.StatusCodes.json new file mode 100644 index 0000000..33141d8 --- /dev/null +++ b/wiki/api/downloads.geysermc.org/download-latest.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"302":{"description":"Found","content":{"application/json":{"schema":{"type":"object"}}}}}} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/download-latest.api.mdx b/wiki/api/downloads.geysermc.org/download-latest.api.mdx index 7f011b8..fa5f8c6 100644 --- a/wiki/api/downloads.geysermc.org/download-latest.api.mdx +++ b/wiki/api/downloads.geysermc.org/download-latest.api.mdx @@ -9,21 +9,17 @@ api: eJylVMtu2zAQ/BVhL40R2nLTU3kxDPQVoGiDJr3UEApaWltMKZIhKTeuon8vVqZkp3m0SX0xtVx sidebar_class_name: "get api-method" info_path: wiki/api/downloads.geysermc.org/downloads-api custom_edit_url: null +crowdin_page_id: a01a47e6-1905-43e4-a05b-660ed379f07c --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; @@ -47,124 +44,27 @@ Downloads the given file from a build's data. id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    - -

    - Path Parameters -

    -
    -
      - - - - - - - -
    -
    -
    -
    - - -
    - - - Found - - -
    - - - - -
    - - - Schema - -
    - -
      -
      - - - object - - -
      -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    -
    -
    + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/download-specific.ParamsDetails.json b/wiki/api/downloads.geysermc.org/download-specific.ParamsDetails.json new file mode 100644 index 0000000..c072477 --- /dev/null +++ b/wiki/api/downloads.geysermc.org/download-specific.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[{"name":"project","in":"path","description":"The project identifier.","required":true,"schema":{"pattern":"[a-z]+","type":"string"},"example":"geyser"},{"name":"version","in":"path","description":"A version of the project.","required":true,"schema":{"pattern":"(?:latest|[0-9.]+-?(?:pre|SNAPSHOT)?(?:[0-9.]+)?)?","type":"string"}},{"name":"build","in":"path","description":"A build of the version.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"download","in":"path","description":"A download of the build.","required":true,"schema":{"pattern":"[a-zA-Z0-9._-]+","type":"string"}}]} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/download-specific.RequestSchema.json b/wiki/api/downloads.geysermc.org/download-specific.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/downloads.geysermc.org/download-specific.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/download-specific.StatusCodes.json b/wiki/api/downloads.geysermc.org/download-specific.StatusCodes.json new file mode 100644 index 0000000..a6e7455 --- /dev/null +++ b/wiki/api/downloads.geysermc.org/download-specific.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"200":{"description":"OK","headers":{"ETag":{"description":"An identifier for a specific version of a resource. It lets caches be more efficient and save bandwidth, as a web server does not need to resend a full response if the content has not changed.","style":"simple","schema":{"type":"string"}},"Content-Disposition":{"description":"A header indicating that the content is expected to be displayed as an attachment, that is downloaded and saved locally.","style":"simple","schema":{"type":"string"}},"Last-Modified":{"description":"The date and time at which the origin server believes the resource was last modified.","style":"simple","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object"}},"*/*":{"schema":{"type":"object"}}}}}} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/download-specific.api.mdx b/wiki/api/downloads.geysermc.org/download-specific.api.mdx index 106315a..8017d83 100644 --- a/wiki/api/downloads.geysermc.org/download-specific.api.mdx +++ b/wiki/api/downloads.geysermc.org/download-specific.api.mdx @@ -9,21 +9,17 @@ api: eJylVd1z2zYM/1dweFnSylaWPU0vOd/a23L7aG/JXubz7WARsthRpErCTl1V//uOlOQk5yRd0id sidebar_class_name: "get api-method" info_path: wiki/api/downloads.geysermc.org/downloads-api custom_edit_url: null +crowdin_page_id: 932d21f7-0075-4eff-a5ab-35646f64a9a6 --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; @@ -47,272 +44,27 @@ Downloads the given file from a build's data. id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    - -

    - Path Parameters -

    -
    -
      - - - - - - - - - -
    -
    -
    -
    - - -
    - - - OK - - -
    - - - Response Headers - -
      -
    • - - - ETag - - string - -
      -
      - - - An identifier for a specific version of a resource. It lets caches be more efficient and save bandwidth, as a web server does not need to resend a full response if the content has not changed. - - -
      -
      -
    • - - - Content-Disposition - - string - -
      -
      - - - A header indicating that the content is expected to be displayed as an attachment, that is downloaded and saved locally. - - -
      -
      -
    • - - - Last-Modified - - string - -
      -
      - - - The date and time at which the origin server believes the resource was last modified. - - -
      -
      -
    • -
    -
    - - - - -
    - - - Schema - -
    - -
      -
      - - - object - - -
      -
    -
    -
    - - - - -
    -
    - - -
    - - - Schema - -
    - -
      -
      - - - object - - -
      -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    -
    -
    + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/downloads-api.info.mdx b/wiki/api/downloads.geysermc.org/downloads-api.info.mdx index e4fed33..0f8e08c 100644 --- a/wiki/api/downloads.geysermc.org/downloads-api.info.mdx +++ b/wiki/api/downloads.geysermc.org/downloads-api.info.mdx @@ -6,6 +6,7 @@ sidebar_label: Introduction sidebar_position: 0 hide_title: true custom_edit_url: null +crowdin_page_id: f002a73b-adaf-4b24-880d-8d1f6789adb4 --- import ApiLogo from "@theme/ApiLogo"; diff --git a/wiki/api/downloads.geysermc.org/project.ParamsDetails.json b/wiki/api/downloads.geysermc.org/project.ParamsDetails.json new file mode 100644 index 0000000..b9e1229 --- /dev/null +++ b/wiki/api/downloads.geysermc.org/project.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[{"name":"project","in":"path","description":"The project identifier.","required":true,"schema":{"pattern":"[a-z]+","type":"string"},"example":"geyser"}]} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/project.RequestSchema.json b/wiki/api/downloads.geysermc.org/project.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/downloads.geysermc.org/project.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/project.StatusCodes.json b/wiki/api/downloads.geysermc.org/project.StatusCodes.json new file mode 100644 index 0000000..5c76214 --- /dev/null +++ b/wiki/api/downloads.geysermc.org/project.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"pattern":"[a-z]+","type":"string","example":"geyser"},"project_name":{"type":"string","example":"Geyser"},"versions":{"type":"array","items":{"type":"string"}}},"title":"ProjectResponse"}}}}}} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/project.api.mdx b/wiki/api/downloads.geysermc.org/project.api.mdx index 94f22ea..47480f3 100644 --- a/wiki/api/downloads.geysermc.org/project.api.mdx +++ b/wiki/api/downloads.geysermc.org/project.api.mdx @@ -9,21 +9,17 @@ api: eJyNU8Fu2zAM/RXjnTZMjbMcfSuwISh2WFF0pyAYFJuN1dmSS9FZM8P/PtB2jATphp4si+TTe49 sidebar_class_name: "get api-method" info_path: wiki/api/downloads.geysermc.org/downloads-api custom_edit_url: null +crowdin_page_id: fa0c246d-f608-4b11-9705-b95d29499a94 --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; @@ -47,133 +44,27 @@ Gets information about a project. id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    - -

    - Path Parameters -

    -
    -
      - - - -
    -
    -
    -
    - - -
    - - - OK - - -
    - - - - -
    - - - Schema - -
    - -
      - - - - - - - -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    -
    -
    + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/projects.RequestSchema.json b/wiki/api/downloads.geysermc.org/projects.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/downloads.geysermc.org/projects.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/projects.StatusCodes.json b/wiki/api/downloads.geysermc.org/projects.StatusCodes.json new file mode 100644 index 0000000..3e31ac4 --- /dev/null +++ b/wiki/api/downloads.geysermc.org/projects.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"projects":{"type":"array","items":{"type":"string"}}},"title":"ProjectsResponse"}}}}}} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/projects.api.mdx b/wiki/api/downloads.geysermc.org/projects.api.mdx index 4c5d46f..d8793aa 100644 --- a/wiki/api/downloads.geysermc.org/projects.api.mdx +++ b/wiki/api/downloads.geysermc.org/projects.api.mdx @@ -7,23 +7,19 @@ hide_title: true hide_table_of_contents: true api: eJyVUj1v2zAQ/SvCmxnJ9cgtQIsg6NAgaCfDw1m6SEwpkSXPagWB/7042XWTbp1I3j3e+yBXCPUZ9oCYwiu3ku/aMEkK3nPC0SBETiQuTI8d7A0Eg8Q5hilzhl2x3+106Ti3yUWFw+LLZxjoNJ5EuxSjd+02rHnNClmR24FH0p0skWERTkoAo1SRk7gLwY34L5JSogUGTnh8W8+S3NSjlGIgTrzWnq7Xn6+itav994IfWHJFlXdZqvBSkfcVzeQ8nTxXfxTUMBhZhqB59LxJJRlg0cz75k1AmdPMSbNdcU4eFoNIzLZpuvBz8oG6uuclcxrbOqQe5WjgppewWbnq/nhF5ur+6REGOvCi9UO9q3coBjFkGWkLc6KR/8fGO/e3/IR/SRM9uUnHb8rXq8UD5v3laS4mjwZDyKKNdT1R5m/Jl6LlH2dOC+zhaDBTckqtp2IwMHWctlS+8wKL+7blqDHO5M/bw/77TzSZW+QPn76ilN9O0+6q sidebar_class_name: "get api-method" -info_path: api/downloads.geysermc.org/downloads-api +info_path: wiki/api/downloads.geysermc.org/downloads-api custom_edit_url: null +crowdin_page_id: 53fcd6b9-66b1-4f68-9f65-816c0744affc --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; @@ -43,87 +40,21 @@ import TabItem from "@theme/TabItem"; Gets a list of all available projects. -
    -
    - - -
    - - - OK - - -
    - - - - -
    - - - Schema - -
    - -
      - - - -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    -
    -
    + + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/version.ParamsDetails.json b/wiki/api/downloads.geysermc.org/version.ParamsDetails.json new file mode 100644 index 0000000..e4b3ea2 --- /dev/null +++ b/wiki/api/downloads.geysermc.org/version.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[{"name":"project","in":"path","description":"The project identifier.","required":true,"schema":{"pattern":"[a-z]+","type":"string"},"example":"geyser"},{"name":"version","in":"path","description":"A version of the project.","required":true,"schema":{"pattern":"(?:latest|[0-9.]+-?(?:pre|SNAPSHOT)?(?:[0-9.]+)?)?","type":"string"}}]} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/version.RequestSchema.json b/wiki/api/downloads.geysermc.org/version.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/wiki/api/downloads.geysermc.org/version.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/version.StatusCodes.json b/wiki/api/downloads.geysermc.org/version.StatusCodes.json new file mode 100644 index 0000000..713b3da --- /dev/null +++ b/wiki/api/downloads.geysermc.org/version.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"pattern":"[a-z]+","type":"string","example":"geyser"},"project_name":{"type":"string","example":"Geyser"},"version":{"pattern":"(?:latest|[0-9.]+-?(?:pre|SNAPSHOT)?(?:[0-9.]+)?)?","type":"string","example":"2.1.0"},"builds":{"type":"array","items":{"type":"integer","format":"int32"}}},"title":"VersionResponse"}}}}}} \ No newline at end of file diff --git a/wiki/api/downloads.geysermc.org/version.api.mdx b/wiki/api/downloads.geysermc.org/version.api.mdx index 8e4395b..421da21 100644 --- a/wiki/api/downloads.geysermc.org/version.api.mdx +++ b/wiki/api/downloads.geysermc.org/version.api.mdx @@ -9,21 +9,17 @@ api: eJytVE1v2zAM/SsGTw2q2Gl2mi9BgA1dMWAt2m6XwBgUm4nV2ZYq0Vkz1/+9oC27KfqBotjJMim sidebar_class_name: "get api-method" info_path: wiki/api/downloads.geysermc.org/downloads-api custom_edit_url: null +crowdin_page_id: 93c4860b-a22b-4b2c-975c-2d5f388d0301 --- -import ApiTabs from "@theme/ApiTabs"; -import DiscriminatorTabs from "@theme/DiscriminatorTabs"; import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import MimeTabs from "@theme/MimeTabs"; -import ParamsItem from "@theme/ParamsItem"; -import ResponseSamples from "@theme/ResponseSamples"; -import SchemaItem from "@theme/SchemaItem"; -import SchemaTabs from "@theme/SchemaTabs"; -import Markdown from "@theme/Markdown"; -import Heading from "@theme/Heading"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; import OperationTabs from "@theme/OperationTabs"; import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; @@ -47,147 +44,27 @@ Gets information about a version. id={"request"} as={"h2"} className={"openapi-tabs__heading"} - children={"Request"} > + Request -
    - -

    - Path Parameters -

    -
    -
      - - - - - -
    -
    -
    -
    - - -
    - - - OK - - -
    - - - - -
    - - - Schema - -
    - -
      - - - - - - - - - -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    -
    -
    + + + + + + + + + + + + \ No newline at end of file diff --git a/wiki/api/index.mdx b/wiki/api/index.mdx index 8d46c4b..b1fad33 100644 --- a/wiki/api/index.mdx +++ b/wiki/api/index.mdx @@ -1,7 +1,8 @@ --- title: Overview permalink: /api/ -description: 'These REST APIs provide web endpoints to query different information.' +description: These REST APIs provide web endpoints to query different information. +crowdin_page_id: f46c6004-abe9-42f2-b7a4-600f642b745c --- import DocCardList from '@theme/DocCardList' @@ -25,4 +26,4 @@ Currently, there are two different Rest APIs you can use. "href": "/wiki/api/downloads", "unlisted": false } -]} /> \ No newline at end of file +]} /> diff --git a/wiki/floodgate/api.md b/wiki/floodgate/api.md index b96b8d1..6542361 100644 --- a/wiki/floodgate/api.md +++ b/wiki/floodgate/api.md @@ -1,6 +1,10 @@ --- title: Floodgate API -description: Floodgate has an API to allow servers to get information about the Bedrock client. It also allows plugins access to Cumulus, an API to send and collect form data from Bedrock players. +description: >- + Floodgate has an API to allow servers to get information about the Bedrock + client. It also allows plugins access to Cumulus, an API to send and collect + form data from Bedrock players. +crowdin_page_id: a610e670-c667-4028-9d22-dfd79e299424 --- Floodgate has an API to extend what is possible and allow servers to get information about the Bedrock client. It also allows other plugins access to [Cumulus](/wiki/geyser/forms/) diff --git a/wiki/floodgate/commands.md b/wiki/floodgate/commands.md index 51341d5..e0f71c0 100644 --- a/wiki/floodgate/commands.md +++ b/wiki/floodgate/commands.md @@ -1,6 +1,7 @@ --- title: Commands description: Commands and their associated permission nodes for Floodgate. +crowdin_page_id: c94605f1-a355-43ed-9f76-fe2acb30dc3f --- | Command | Permission | Description | diff --git a/wiki/floodgate/faq.mdx b/wiki/floodgate/faq.mdx index a1e6565..80faa75 100644 --- a/wiki/floodgate/faq.mdx +++ b/wiki/floodgate/faq.mdx @@ -1,6 +1,10 @@ --- title: FAQ -description: Frequently asked questions about Floodgate such as changing prefixes, obtaining Bedrock player UUIDs, and using Floodgate with PlaceholderAPI and Skript. +description: >- + Frequently asked questions about Floodgate such as changing prefixes, + obtaining Bedrock player UUIDs, and using Floodgate with PlaceholderAPI and + Skript. +crowdin_page_id: 7a0d836f-f6fa-4091-b97c-c60c355b0acd --- import { Questions, Q, A } from "@site/src/components/Questions"; @@ -38,4 +42,4 @@ Here you can find answers to frequently asked questions about Floodgate - if you If you're using the Spigot version of Floodgate, there is an unofficial plugin that adds Skript support [here](https://github.com/kejonaMC/floodgate-skript). - \ No newline at end of file + diff --git a/wiki/floodgate/features.md b/wiki/floodgate/features.md index 5c6de66..dade60e 100644 --- a/wiki/floodgate/features.md +++ b/wiki/floodgate/features.md @@ -1,6 +1,9 @@ --- title: Features -description: Learn about the features of Floodgate 2.0, including the whitelist command and skin uploading. +description: >- + Learn about the features of Floodgate 2.0, including the whitelist command and + skin uploading. +crowdin_page_id: 92f27f70-d154-493d-ad49-adc7e35e6953 --- ## Whitelist command {#whitelist-command} diff --git a/wiki/floodgate/index.md b/wiki/floodgate/index.md index b17287d..5e2c4de 100644 --- a/wiki/floodgate/index.md +++ b/wiki/floodgate/index.md @@ -1,7 +1,11 @@ --- title: Overview permalink: /floodgate/ -description: 'Floodgate is a hybrid mode plugin that allows Minecraft: Bedrock Accounts to join Minecraft: Java Edition servers without needing a Minecraft: Java Edition account.' +description: >- + Floodgate is a hybrid mode plugin that allows Minecraft: Bedrock Accounts to + join Minecraft: Java Edition servers without needing a Minecraft: Java Edition + account. +crowdin_page_id: 8305f35d-f481-4fd7-92cb-0f8203151788 --- # Overview diff --git a/wiki/floodgate/issues.md b/wiki/floodgate/issues.md index 89efb57..cc28155 100644 --- a/wiki/floodgate/issues.md +++ b/wiki/floodgate/issues.md @@ -1,6 +1,9 @@ --- title: Issues -description: Troubleshoot common Floodgate issues. Get solutions for connection problems, configuration errors, and known limitations. +description: >- + Troubleshoot common Floodgate issues. Get solutions for connection problems, + configuration errors, and known limitations. +crowdin_page_id: 6fd6afc9-31c3-411a-a94b-d0defa0a7f17 --- # Known Issues & Caveats diff --git a/wiki/floodgate/linking.md b/wiki/floodgate/linking.md index b35d490..fb25d4f 100644 --- a/wiki/floodgate/linking.md +++ b/wiki/floodgate/linking.md @@ -1,6 +1,9 @@ --- title: Linking -description: Learn how to link your Java and Bedrock Minecraft accounts for crossplay. Understand builtin Global Linking or how to set up optional local linking. +description: >- + Learn how to link your Java and Bedrock Minecraft accounts for crossplay. + Understand builtin Global Linking or how to set up optional local linking. +crowdin_page_id: 34a0347b-bc2a-4239-a663-1a831e503ad6 --- ## What is Global Linking? {#what-is-global-linking} diff --git a/wiki/floodgate/player.md b/wiki/floodgate/player.md index 74c93de..b660adb 100644 --- a/wiki/floodgate/player.md +++ b/wiki/floodgate/player.md @@ -1,6 +1,7 @@ --- title: FloodgatePlayer description: FloodgatePlayer is the main class for accessing bedrock player data. +crowdin_page_id: dda466f5-f41f-47f1-b7b6-2463ce1e988f --- FloodgatePlayer is something that every player who's connect through Floodgate has. diff --git a/wiki/floodgate/setup.mdx b/wiki/floodgate/setup.mdx index 869ae6f..3f425e3 100644 --- a/wiki/floodgate/setup.mdx +++ b/wiki/floodgate/setup.mdx @@ -1,7 +1,10 @@ --- title: Floodgate Setup page_sidebar: false -description: Set up Floodgate to allow Bedrock users to authenticate with their Bedrock account on your Java Minecraft server. +description: >- + Set up Floodgate to allow Bedrock users to authenticate with their Bedrock + account on your Java Minecraft server. +crowdin_page_id: f8f4bb4f-1a7e-48f8-8df1-44ff18cb2b71 --- import Tabs from "@theme/Tabs"; @@ -20,21 +23,24 @@ import PaperSpigotIcon from '@site/static/img/icons/paper.png'; import ViaProxyIcon from '@site/static/img/icons/viaproxy.png'; import StandaloneIcon from '@site/static/img/icons/geyser.png'; +import { MDXTranslatable } from "@site/src/components/MDXTranslatable"; + +````mdx-code-block - } default> + }/>} default> - }> + }/>}> - }> + }/>}> - }> + }/>}> - }> + }/>}> - +```` diff --git a/wiki/floodgate/setup/modded.mdx b/wiki/floodgate/setup/modded.mdx index 364b40e..a47dc89 100644 --- a/wiki/floodgate/setup/modded.mdx +++ b/wiki/floodgate/setup/modded.mdx @@ -2,6 +2,7 @@ title: Modded Fabric Setup description: Learn how to set up Floodgate on your Fabric / NeoForge server. hide_title: true +crowdin_page_id: 478270f7-1e28-4d1b-b850-334ff7f883e2 --- 1. Download the mod from the [modrinth page](https://modrinth.com/mod/floodgate). **Fabric servers also need the [FabricAPI](https://modrinth.com/mod/fabric-api) mod.** @@ -12,4 +13,4 @@ hide_title: true :::note Note for Fabric servers running behind a Velocity proxy You will need to configure FabricProxyLite to allow the Fabric server to receive data from Velocity. -::: \ No newline at end of file +::: diff --git a/wiki/floodgate/setup/paper-spigot.mdx b/wiki/floodgate/setup/paper-spigot.mdx index cc52777..5fb934d 100644 --- a/wiki/floodgate/setup/paper-spigot.mdx +++ b/wiki/floodgate/setup/paper-spigot.mdx @@ -2,9 +2,10 @@ title: Floodgate Paper / Spigot Setup description: Learn how to set up Floodgate on your Paper or Spigot server. hide_title: true +crowdin_page_id: 1d828012-ce75-48d5-aaa5-1b18daaf2e69 --- 1. Download Floodgate-Spigot from the [download page](/download/?project=floodgate). 2. Place the Floodgate-Spigot.jar in the `plugins` folder, and restart the server. 3. Change `auth-type` in Geyser's config to `floodgate`. -4. Restart the server. \ No newline at end of file +4. Restart the server. diff --git a/wiki/floodgate/setup/proxy-servers.mdx b/wiki/floodgate/setup/proxy-servers.mdx index af4f812..3c4d8cc 100644 --- a/wiki/floodgate/setup/proxy-servers.mdx +++ b/wiki/floodgate/setup/proxy-servers.mdx @@ -1,7 +1,8 @@ --- title: Floodgate Proxy Servers Setup -description: Learn how to set up Floodgate on your Bungee, Waterfall, or Velocity server. +description: 'Learn how to set up Floodgate on your Bungee, Waterfall, or Velocity server.' hide_title: true +crowdin_page_id: 067d8db3-5c74-4da0-aa12-cfe8517617b9 --- :::info diff --git a/wiki/floodgate/setup/standalone.mdx b/wiki/floodgate/setup/standalone.mdx index 6daaaee..b74ee97 100644 --- a/wiki/floodgate/setup/standalone.mdx +++ b/wiki/floodgate/setup/standalone.mdx @@ -2,6 +2,7 @@ title: Floodgate Geyser Standalone Setup description: Learn how to set up Floodgate with Geyser Standalone. hide_title: true +crowdin_page_id: ee83157d-b355-4409-9f5f-476b47fd1738 --- :::info diff --git a/wiki/floodgate/setup/viaproxy.mdx b/wiki/floodgate/setup/viaproxy.mdx index 79315a6..43821eb 100644 --- a/wiki/floodgate/setup/viaproxy.mdx +++ b/wiki/floodgate/setup/viaproxy.mdx @@ -2,6 +2,7 @@ title: Floodgate ViaProxy Setup description: Learn how to set up Floodgate with ViaProxy. hide_title: true +crowdin_page_id: 9b09b7d7-9565-49a0-a8a4-cea776b692c6 --- :::info diff --git a/wiki/geyser/anticheat-compatibility.md b/wiki/geyser/anticheat-compatibility.md index 5dd2e07..333f852 100644 --- a/wiki/geyser/anticheat-compatibility.md +++ b/wiki/geyser/anticheat-compatibility.md @@ -1,6 +1,9 @@ --- title: Anticheat Compatibility -description: A list of community compiled list of Anticheats and their compatibility with Geyser. +description: >- + A list of community compiled list of Anticheats and their compatibility with + Geyser. +crowdin_page_id: 9c8e7b0f-1b55-438e-b52f-0f13a26697b6 --- :::caution diff --git a/wiki/geyser/api.md b/wiki/geyser/api.md index ae5f849..c41f417 100644 --- a/wiki/geyser/api.md +++ b/wiki/geyser/api.md @@ -1,6 +1,9 @@ --- title: Geyser API -description: The Geyser API allows you to interact with Geyser in your own plugins, mods, or extensions. +description: >- + The Geyser API allows you to interact with Geyser in your own plugins, mods, + or extensions. +crowdin_page_id: c269f34d-2b0c-4da2-8997-162dd75f4c3f --- Geyser has an API to extend what is possible with Geyser, and to allow you to interact with Geyser in your own plugins, mods, or extensions. @@ -20,9 +23,10 @@ The Geyser API offers events to subscribe to, or information on whether a player (soon, blocks and entities too). It can be used easily in Geyser Extensions, see [here](/wiki/geyser/extensions) for details on those. -**Quick overview:** +**Quick overview:** + :::info - Javadocs can be found here. + Javadocs can be found [here](https://repo.opencollab.dev/javadoc/maven-snapshots/org/geysermc/geyser/api/latest). ::: #### [GeyserApi](https://github.com/GeyserMC/Geyser/blob/master/api/src/main/java/org/geysermc/geyser/api/GeyserApi.java): {#geyserapi} diff --git a/wiki/geyser/commands.md b/wiki/geyser/commands.md index 03e2435..1fe5e50 100644 --- a/wiki/geyser/commands.md +++ b/wiki/geyser/commands.md @@ -1,6 +1,8 @@ --- title: Commands and Permissions description: Commands and their associated permission nodes for Geyser. +crowdin_sync: true +crowdin_page_id: cd92ff4f-9105-46a2-8696-8b0e2f8b9d31 --- # Commands and Permissions @@ -9,7 +11,7 @@ Geyser features many built-in commands that can be used by players or server own :::info -When using BungeeCord and Velocity, you will need to use a permission plugin such as LuckPerms +When using BungeeCord and Velocity, you will need to use a permission plugin such as [LuckPerms](https://luckperms.net/) on the proxy server to assign permissions to players. Assigning permissions on the backend servers will not work. ::: @@ -23,6 +25,7 @@ on the proxy server to assign permissions to players. Assigning permissions on t | `geyser advancements` | `geyser.command.advancements` | Open the Java advancements menu. | | `geyser dump` | `geyser.command.dump` | Dumps Geyser debug information for bug reports. | | `geyser list` | `geyser.command.list` | List all players connected through Geyser. | +| `geyser nethernet` | `geyser.command.nethernet` | Shows NetherNet signaling status and diagnostics, for use with external signaling. | | `geyser offhand` | `geyser.command.offhand` | Puts an item in your offhand. | | `geyser reload` | `geyser.command.reload` | Reloads the Geyser configurations. Kicks all players when used! | | `geyser settings` | `geyser.command.settings` | Opens a settings menu allowing you to modify aspects of the world. | diff --git a/wiki/geyser/common-issues.md b/wiki/geyser/common-issues.md index fd8917f..9ac6e2b 100644 --- a/wiki/geyser/common-issues.md +++ b/wiki/geyser/common-issues.md @@ -1,6 +1,9 @@ --- title: Common Issues -description: Common issues that people may encounter with Geyser and potential fixes for them. +description: >- + Common issues that people may encounter with Geyser and potential fixes for + them. +crowdin_page_id: 301468c5-271b-4c31-b7a3-35fa55db0bf2 --- # Common Issues @@ -18,10 +21,10 @@ To fix "Unable to connect to world" with no console errors, see [here](/wiki/gey ## If the server doesn't show up in the friends list {#if-the-server-doesnt-show-up-in-the-friends-list} -* *If using Windows 10, iOS, or Android*: try adding the server to the Servers list in-game. -* *If using Xbox One*: try connecting with [BedrockConnect](/wiki/geyser/using-geyser-with-consoles/). -* *If using PS4*: [try using a LAN proxy.](/wiki/geyser/using-geyser-with-consoles#playstation-4) -* *If using Nintendo Switch*: there is currently no way for local servers to show up in the Friends tab, but you can still connect using [BedrockConnect](/wiki/geyser/using-geyser-with-consoles/). +- *If using Windows 10, iOS, or Android*: try adding the server to the Servers list in-game. +- *If using Xbox One*: try connecting with [BedrockConnect](/wiki/geyser/using-geyser-with-consoles/). +- *If using PS4*: [try using a LAN proxy.](/wiki/geyser/using-geyser-with-consoles#playstation-4) +- *If using Nintendo Switch*: there is currently no way for local servers to show up in the Friends tab, but you can still connect using [BedrockConnect](/wiki/geyser/using-geyser-with-consoles/). *If the Geyser instance is locally hosted:* try using `localhost` or `0.0.0.0` as the IP address. *If that doesn't work, or your Geyser instance is on another computer in the network*: use your **local** IPv4 address. @@ -71,7 +74,7 @@ This message can occur with a Floodgate setup. Usually, it means that a misconfi If you have your configuration set up like this, put simply, it won't work. If authentication for the Java server is set to online, it is expected Geyser is configured the same way. The server requires a valid Minecraft: Java Edition account, and if you aren't logging into one with Geyser, then you will be unable to join the server. If your configuration is set up properly and you're still getting this issue, it could be that your credentials are invalid. -### Connection Refused: \ {#connection-refused-insert-ip-andor-domain} +### Connection Refused: [INSERT IP AND/OR DOMAIN] {#connection-refused-insert-ip-andor-domain} Connection Refused usually means that a Java server could not be found on that port, or the server denied access to the connection on a network level. The latter can happen with anti-DDOS plugins such as TCPShield, but otherwise ensure that the server you're trying to connect to is spelled correctly in the config, is up and is port forwarded correctly. @@ -118,6 +121,6 @@ If you use floodgate ensure that it is installed on all of your Spigot backend s And so on. -* Please also make sure that you have the same `key.pem` and `config.yml` on all of your servers. +- Please also make sure that you have the same `key.pem` and `config.yml` on all of your servers. If your players can't connect from the lobby to another backend server, check console. diff --git a/wiki/geyser/creating-a-startup-script.md b/wiki/geyser/creating-a-startup-script.md index 330c5ab..ae2812d 100644 --- a/wiki/geyser/creating-a-startup-script.md +++ b/wiki/geyser/creating-a-startup-script.md @@ -1,6 +1,7 @@ --- title: Creating a Startup Script description: Learn how to create a startup script for Geyser-Standalone. +crowdin_page_id: 0d187a8f-ad87-4d07-b122-4ae5f990e2cb --- # Creating a Startup Script for Geyser-Standalone @@ -14,7 +15,7 @@ In order for this to work, you MUST have Java 21 (or higher) installed! Once you have downloaded and placed Geyser into its own folder, you will need to create a startup script; similar to how you'd run a Bukkit/Spigot/Paper server. ### Windows {#windows} -* Create a new text file in the same location as the Geyser-Standalone jar file, and call it `run.bat`. Open this with a text editor (preferably Notepad++), and insert the text below: +- Create a new text file in the same location as the Geyser-Standalone jar file, and call it `run.bat`. Open this with a text editor (preferably Notepad++), and insert the text below: ```batch title="run.bat" @echo off @@ -22,10 +23,10 @@ java -Xms1024M -jar Geyser-Standalone.jar pause ``` -* Double-click the **run.bat**, and Geyser should start up. Geyser will generate all the needed files. +- Double-click the **run.bat**, and Geyser should start up. Geyser will generate all the needed files. ### macOS {#macos} -* Create a text file called **run.command**, and open it with a text editor such as TextEdit or TextMate. Type the text below into the **run.command** file: +- Create a text file called **run.command**, and open it with a text editor such as TextEdit or TextMate. Type the text below into the **run.command** file: ```sh title="run.command" #!/bin/bash @@ -33,16 +34,16 @@ cd "$( dirname "$0" )" java -Xms1024M -jar Geyser-Standalone.jar ``` -* Open Terminal, and type in `chmod a+x` **(Do NOT press return!)**, and drag your *run.command* file into the Terminal. -* Press return on your keyboard, and Geyser will start up. Geyser will generate all the needed files. +- Open Terminal, and type in `chmod a+x` **(Do NOT press return!)**, and drag your *run.command* file into the Terminal. +- Press return on your keyboard, and Geyser will start up. Geyser will generate all the needed files. ### Linux {#linux} -* Create a file called *run.sh*, and open it with a text editor. Type the text below into your `run.sh` file: +- Create a file called *run.sh*, and open it with a text editor. Type the text below into your `run.sh` file: ```sh title="run.sh" #!/bin/sh cd "$( dirname "$0" )" java -Xms1024M -jar Geyser-Standalone.jar ``` -* In your default terminal application, make the file executable by running `chmod +x ~(dir)/run.sh` where `dir` is the name of the folder Geyser is in, or by changing the file permissions; -* Open your default terminal application, and type `./run.sh` to run Geyser. Geyser will generate all the needed files. +- In your default terminal application, make the file executable by running `chmod +x ~(dir)/run.sh` where `dir` is the name of the folder Geyser is in, or by changing the file permissions; +- Open your default terminal application, and type `./run.sh` to run Geyser. Geyser will generate all the needed files. diff --git a/wiki/geyser/current-limitations.md b/wiki/geyser/current-limitations.md index 0973eaf..4d1430a 100644 --- a/wiki/geyser/current-limitations.md +++ b/wiki/geyser/current-limitations.md @@ -1,6 +1,7 @@ --- title: Current Limitations description: Current known limitations of Geyser. +crowdin_page_id: f58bc543-fe55-45d5-a896-d2651c1f2827 --- # Current Limitations diff --git a/wiki/geyser/custom-blocks.md b/wiki/geyser/custom-blocks.md index 916b8b0..a35ab99 100644 --- a/wiki/geyser/custom-blocks.md +++ b/wiki/geyser/custom-blocks.md @@ -1,6 +1,9 @@ --- title: Custom Blocks -description: Geysers allows custom blocks to be mapped to Vanilla Java blockstates or modded blocks to allow custom block models. +description: >- + Geysers allows custom blocks to be mapped to Vanilla Java blockstates or + modded blocks to allow custom block models. +crowdin_page_id: 44954bd0-b952-447f-bf94-088e679a2d0f --- To setup custom blocks in geyser, you have to choose how you are going to register your blocks. The easiest is [using a json file](#json-mappings) but you can also [use a Geyser extension](#geyser-extensions). diff --git a/wiki/geyser/custom-content.md b/wiki/geyser/custom-content.md index dc2e539..6d742dc 100644 --- a/wiki/geyser/custom-content.md +++ b/wiki/geyser/custom-content.md @@ -1,6 +1,7 @@ --- title: Custom Content description: How to use custom content (requiring resource packs) with Geyser. +crowdin_page_id: 13c1e818-62db-4e39-9791-f865cabae693 --- Geyser supports mapping various custom additions to the game via resource packs and mappings, such as custom items, blocks, and skulls. See: diff --git a/wiki/geyser/custom-entities.md b/wiki/geyser/custom-entities.md index 2389796..41078bc 100644 --- a/wiki/geyser/custom-entities.md +++ b/wiki/geyser/custom-entities.md @@ -1,6 +1,9 @@ --- title: Geyser Entity API -description: Geyser extensions can register custom Bedrock entity definitions, modify existing entities, and replace built-in types in entity spawning events. +description: >- + Geyser extensions can register custom Bedrock entity definitions, modify + existing entities, and replace built-in types in entity spawning events. +crowdin_page_id: b7d6246b-1821-48ee-9f97-a1f56f42efd7 --- :::warning Experimental API @@ -231,4 +234,4 @@ public class MyExtension implements Extension { } } ``` - \ No newline at end of file + diff --git a/wiki/geyser/custom-items-old.mdx b/wiki/geyser/custom-items-old.mdx index 4321f5c..32688ba 100644 --- a/wiki/geyser/custom-items-old.mdx +++ b/wiki/geyser/custom-items-old.mdx @@ -1,6 +1,7 @@ --- title: Custom Items (v1) description: Legacy documentation for the first version of the custom item API +crowdin_page_id: 85965b69-f5a7-4436-9b6e-93d91d321b23 --- import Tabs from '@theme/Tabs'; diff --git a/wiki/geyser/custom-items.mdx b/wiki/geyser/custom-items.mdx index 5d8614b..41af2e0 100644 --- a/wiki/geyser/custom-items.mdx +++ b/wiki/geyser/custom-items.mdx @@ -1,6 +1,9 @@ --- title: Custom Items -description: Geyser allows custom Bedrock items to be added for an equivalency to Vanilla Java item predicates or modded items. +description: >- + Geyser allows custom Bedrock items to be added for an equivalency to Vanilla + Java item predicates or modded items. +crowdin_page_id: 9fc395f8-d2b8-4be3-9d35-8fa573e78c8d --- import Tabs from '@theme/Tabs'; diff --git a/wiki/geyser/custom-skulls.mdx b/wiki/geyser/custom-skulls.mdx index 545a822..557ef2d 100644 --- a/wiki/geyser/custom-skulls.mdx +++ b/wiki/geyser/custom-skulls.mdx @@ -1,6 +1,7 @@ --- title: Custom Skulls description: Geyser allows mapping of custom skulls to custom blocks for use in inventories and on entities. +crowdin_page_id: 87fb6484-9500-4cf8-b37c-745959a88072 --- import Tabs from "@theme/Tabs"; diff --git a/wiki/geyser/custom-waypoints.mdx b/wiki/geyser/custom-waypoints.mdx index 61bb425..72e40a7 100644 --- a/wiki/geyser/custom-waypoints.mdx +++ b/wiki/geyser/custom-waypoints.mdx @@ -1,6 +1,9 @@ --- title: Custom Waypoint Icons -description: Geyser supports custom locator bar icons (also known as waypoint icons), though they have to be mapped manually. +description: >- + Geyser supports custom locator bar icons (also known as waypoint icons), + though they have to be mapped manually. +crowdin_page_id: eb3b4451-28ab-45e6-a683-d7857bc2002a --- import Tabs from "@theme/Tabs"; diff --git a/wiki/geyser/events.md b/wiki/geyser/events.md index c665a1f..241bc81 100644 --- a/wiki/geyser/events.md +++ b/wiki/geyser/events.md @@ -1,6 +1,10 @@ --- title: Geyser Events -description: Geyser has a powerful event system that allows you to listen to events that are sent by Geyser. Events are at the heart of Geyser Extensions, and can be used by plugins and mods as well. +description: >- + Geyser has a powerful event system that allows you to listen to events that + are sent by Geyser. Events are at the heart of Geyser Extensions, and can be + used by plugins and mods as well. +crowdin_page_id: 77de57f3-e693-49a4-af6a-215f6ee6d42a --- # Geyser Events diff --git a/wiki/geyser/extensions.md b/wiki/geyser/extensions.md index b8c9d8e..8521fce 100644 --- a/wiki/geyser/extensions.md +++ b/wiki/geyser/extensions.md @@ -1,6 +1,11 @@ --- title: Geyser Extensions -description: Geyser Extensions are the equivalent of "plugins", but specifically for the Geyser platform. This brings the advantage of them being platform-agnostic, meaning that you won't have to worry about supporting all platforms individually. +description: >- + Geyser Extensions are the equivalent of "plugins", but specifically for the + Geyser platform. This brings the advantage of them being platform-agnostic, + meaning that you won't have to worry about supporting all platforms + individually. +crowdin_page_id: 72a25d96-4c07-49d4-a661-56d65f68188d --- # Geyser Extensions diff --git a/wiki/geyser/faq.mdx b/wiki/geyser/faq.mdx index e4de7cc..987887c 100644 --- a/wiki/geyser/faq.mdx +++ b/wiki/geyser/faq.mdx @@ -1,10 +1,12 @@ --- title: Frequently Asked Questions -description: Frequently asked questions about Geyser, including how it works, what plugins are incompatible, and more. +description: >- + Frequently asked questions about Geyser, including how it works, what plugins + are incompatible, and more. +crowdin_page_id: bb14391a-47cb-4d04-bbc0-05c4466272a6 --- import { Questions, Q, A } from "@site/src/components/Questions"; -import { Versions } from '@site/src/components/Versions' ### General Questions \{#general-questions} @@ -34,18 +36,18 @@ Here you can find answers to frequently asked questions about Geyser - if you ha Geyser should generally work fine with plugins, as we emulate a Java client. There are exceptions, though: - * [TCPShield](https://tcpshield.com/) requires `only-allow-proxy-connections` disabled without a paid plan. However, their "Premium" plan will allow the support of Geyser - please see [here](https://docs.tcpshield.com/miscellaneous/geyser) for setup instructions. + - [TCPShield](https://tcpshield.com/) requires `only-allow-proxy-connections` disabled without a paid plan. However, their "Premium" plan will allow the support of Geyser - please see [here](https://docs.tcpshield.com/miscellaneous/geyser) for setup instructions. Floodgate can cause issues with plugins as it modifies the login process. *Please note that any offline mode authenticator plugins are only here for documentation; Geyser does not support offline mode usage.* - * [DynamicBungeeAuth](https://www.spigotmc.org/resources/27480/) Currently working on latest version 10.28B+ (10.27B and older versions produces invalid credentials for Bedrock players) - * [FastLogin](https://www.spigotmc.org/resources/14153/) does not let floodgate add player prefix. - * [ExploitFixer](https://www.spigotmc.org/resources/62842/) thinks that Floodgate users are UUID spoofing - disable the `uuidspoof` setting in ExploitFixer's config. - * [JPremium](https://www.spigotmc.org/resources/27766/) alters the UUID of a player, causing Floodgate not to be able to get the Bedrock data from its map. - * [LibHatesMods](https://www.spigotmc.org/resources/78202/) causes authentication to fail with `com.github.steveice10.mc.auth.exception.request.InvalidCredentialsException` - * [ProtocolSupport](https://www.spigotmc.org/resources/7201/) ~~is currently incompatible with Floodgate.~~ Works with Floodgate, but we recommend using [ViaBackwards](https://viaversion.com/viabackwards) instead. - * [ProtocolSupportBungee](https://www.spigotmc.org/resources/8733/) changes how the login process works and therefore breaks the Floodgate injection code. - * [SayNoToMcLeaks](https://www.spigotmc.org/resources/40906/) prevents Floodgate from finishing its login system. + - [DynamicBungeeAuth](https://www.spigotmc.org/resources/27480/) Currently working on latest version 10.28B+ (10.27B and older versions produces invalid credentials for Bedrock players) + - [FastLogin](https://www.spigotmc.org/resources/14153/) does not let floodgate add player prefix. + - [ExploitFixer](https://www.spigotmc.org/resources/62842/) thinks that Floodgate users are UUID spoofing - disable the `uuidspoof` setting in ExploitFixer's config. + - [JPremium](https://www.spigotmc.org/resources/27766/) alters the UUID of a player, causing Floodgate not to be able to get the Bedrock data from its map. + - [LibHatesMods](https://www.spigotmc.org/resources/78202/) causes authentication to fail with `com.github.steveice10.mc.auth.exception.request.InvalidCredentialsException` + - [ProtocolSupport](https://www.spigotmc.org/resources/7201/) ~~is currently incompatible with Floodgate.~~ Works with Floodgate, but we recommend using [ViaBackwards](https://viaversion.com/viabackwards) instead. + - [ProtocolSupportBungee](https://www.spigotmc.org/resources/8733/) changes how the login process works and therefore breaks the Floodgate injection code. + - [SayNoToMcLeaks](https://www.spigotmc.org/resources/40906/) prevents Floodgate from finishing its login system. If you come across any more, please let us know via [Discord](https://discord.gg/geysermc). @@ -60,18 +62,18 @@ Here you can find answers to frequently asked questions about Geyser - if you ha Which plugin version of Geyser do I need? This is a non-complete list of what platform each plugin version of Geyser is for, and the standalone version can be used for any as it isn't a plugin. - * Geyser-Spigot works with: - * [Spigot](https://www.spigotmc.org/) - * [Paper](https://papermc.io/downloads/paper) (recommended) - * Any other forks of the above - * Geyser-Bungee works with: - * [BungeeCord](https://www.spigotmc.org/wiki/bungeecord/) - * [Waterfall](https://papermc.io/downloads/Waterfall) - * Any other forks of the above - * Geyser-Velocity works with [Velocity](https://www.velocitypowered.com/) - * Geyser-Fabric works with [Fabric](https://www.fabricmc.net/), and requires FabricAPI to be installed on the server as well. - * Geyser-NeoForge works with [NeoForge](https://neoforged.net/), - * Geyser-ViaProxy works with [ViaProxy](https://viaversion.com/viaproxy). + - Geyser-Spigot works with: + - [Spigot](https://www.spigotmc.org/) + - [Paper](https://papermc.io/downloads/paper) (recommended) + - Any other forks of the above + - Geyser-Bungee works with: + - [BungeeCord](https://www.spigotmc.org/wiki/bungeecord/) + - [Waterfall](https://papermc.io/downloads/Waterfall) + - Any other forks of the above + - Geyser-Velocity works with [Velocity](https://www.velocitypowered.com/) + - Geyser-Fabric works with [Fabric](https://www.fabricmc.net/), and requires FabricAPI to be installed on the server as well. + - Geyser-NeoForge works with [NeoForge](https://neoforged.net/), + - Geyser-ViaProxy works with [ViaProxy](https://viaversion.com/viaproxy). diff --git a/wiki/geyser/fixing-unable-to-connect-to-world.md b/wiki/geyser/fixing-unable-to-connect-to-world.md index bf79d0f..3711f54 100644 --- a/wiki/geyser/fixing-unable-to-connect-to-world.md +++ b/wiki/geyser/fixing-unable-to-connect-to-world.md @@ -1,6 +1,7 @@ --- title: Fixing 'Unable to Connect to World' description: Common issues and solutions for the 'Unable to Connect to World' error. +crowdin_page_id: e55f0045-e209-470e-8b24-222418e46756 --- ## Fixing 'Unable to Connect to World' errors {#fixing-unable-to-connect-to-world-errors} @@ -52,7 +53,7 @@ You should be connecting with the Java server IP and the Bedrock port (set in th ### I'm using a hosting provider or VPS! {#im-using-a-hosting-provider-or-vps} -Please read [this page on supported hosting providers](/wiki/geyser/supported-hosting-providers/) to see if there are extra configuration steps required for your hosting or server provider. +Please select your hosting provider in the [setup guide](/wiki/geyser/setup/) to see if there are extra configuration steps required for your hosting or server provider. Some VPS/KVM providers may require further setup, such as OVH, SoYouStart, and Oracle Cloud. Please read this [note](/wiki/geyser/port-forwarding#issues-with-specific-vpskvm-providers) for more information. ### Issues using Docker or Pterodactyl {#issues-using-docker-or-pterodactyl} diff --git a/wiki/geyser/forms.md b/wiki/geyser/forms.md index d05b399..d2225fd 100644 --- a/wiki/geyser/forms.md +++ b/wiki/geyser/forms.md @@ -1,6 +1,9 @@ --- title: Forms and Cumulus -description: Cumulus is the Forms API used in Geyser and Floodgate, and is available for use in projects that extend Geyser or Floodgate. +description: >- + Cumulus is the Forms API used in Geyser and Floodgate, and is available for + use in projects that extend Geyser or Floodgate. +crowdin_page_id: 14f7c849-caea-462d-bcbb-2d987cca37f4 --- # What is Cumulus? @@ -10,9 +13,9 @@ Cumulus is the Forms API that we use in Geyser and Floodgate. The source code is available [here](https://github.com/GeyserMC/Cumulus). You can access the Cumulus API through the [Floodgate API](/wiki/floodgate/api/), or the [Geyser API](/wiki/geyser/api). Bedrock knows three types of Forms: -* ModalForm -* SimpleForm -* CustomForm +- ModalForm +- SimpleForm +- CustomForm We'll discuss them one by one starting with the easiest and ending with the least easy form type. After that, you get an overview of every single component. diff --git a/wiki/geyser/getting-started-with-the-api.md b/wiki/geyser/getting-started-with-the-api.md index 08d5a88..0d478db 100644 --- a/wiki/geyser/getting-started-with-the-api.md +++ b/wiki/geyser/getting-started-with-the-api.md @@ -1,6 +1,7 @@ --- title: Getting Started with the API -description: 'A primer on how to use the Geyser and Floodgate APIs.' +description: A primer on how to use the Geyser and Floodgate APIs. +crowdin_page_id: 688d71d9-4619-4d95-a498-fdcf443bc267 --- To start, add the Open Collaboration repository to your project: diff --git a/wiki/geyser/geyser-command-line-arguments-and-system-properties.md b/wiki/geyser/geyser-command-line-arguments-and-system-properties.md index 641be25..d471400 100644 --- a/wiki/geyser/geyser-command-line-arguments-and-system-properties.md +++ b/wiki/geyser/geyser-command-line-arguments-and-system-properties.md @@ -1,6 +1,9 @@ --- title: Geyser Command Line Arguments and System Properties -description: Geyser offers a few command line arguments/system properties to allow you to configure Geyser without editing the config files. +description: >- + Geyser offers a few command line arguments/system properties to allow you to + configure Geyser without editing the config files. +crowdin_page_id: 20df42ef-b997-4185-9408-f1188333b504 --- # Geyser Command Line Arguments and System Properties @@ -23,14 +26,46 @@ The Geyser specific properties are prioritized over the plugin properties! - ```-1``` means UDP is not supported and will forcibly stop Geyser. - ```server``` means to match the port of the TCP server. - any other number means to use that specific port + - This sets the Bedrock `port`, used as the RakNet port, the built-in signaling (TCP) port, and/or the NetherNet (WebRTC) port. + With `server`, the signaling port is the Java server's port, so built-in signaling cannot run and Geyser uses external signaling instead, unless `-DgeyserSignalingPort` sets a separate port. - ```-DgeyserUdpAddress=server``` or ```-DpluginUdpAddress=server``` - ```server``` means to match the bind address of the TCP server - any other string will be used as-is for the bind address. + - This address is also used for built-in signaling and NetherNet. NetherNet does not work on a loopback address such as `127.0.0.1`. + +- `-DgeyserTransport=nethernet` + - One of: `nethernet`, `both` (NetherNet and RakNet), or `raknet`. Overrides `transport` in the `bedrock` section. + - With `both`, RakNet and NetherNet each need their own UDP port, so also set `-DgeyserWebrtcPort` (or `-DgeyserRaknetPort`). + +- `-DgeyserSignalingMode=builtin` + - One of: `builtin` (Geyser runs signaling itself, over TCP), `nxs` (an external signaling service, Warden by default), or `hybrid` (both). Overrides `mode` in the `signaling` section. + - If the built-in signaling port is the Java server's port, Geyser uses external signaling instead. + +- `-DgeyserWebrtcPort=19133` + - The UDP port NetherNet (WebRTC) connections use. Overrides `webrtc-port`. + - When not set, and the transport is `nethernet`, the NetherNet port follows `-DgeyserUdpPort`. With `both`, RakNet keeps that port, so this has to be set to a different port. + +- `-DgeyserSignalingPort=19134` + - The TCP port built-in signaling (HTTP, or HTTPS if configured) listens on. + - Use this to give signaling its own TCP port, for example when the Bedrock port is the Java server's port. + - When not set, built-in signaling uses the Bedrock port (`-DgeyserUdpPort`). + +- `-DgeyserAdvertiseAddresses=203.0.113.5,198.51.100.7` + - A comma-separated list of public addresses that built-in signaling tells players to connect to, for servers behind a NAT or in a container without a public address. Without a port, the NetherNet (WebRTC) port is used; add one (e.g. `203.0.113.5:19133`) if players reach it on a different port number. Port forwarding is not set up for you. + - Overrides `advertise-addresses` in the `builtin` part of the `signaling` section. For external signaling, use `advertise-addresses` in the `nxs` section of the config. + + + +No longer relevant with Nethernet, and due for removal: - ```-DgeyserBroadcastPort=19132``` - - This can be used in cases where the port Geyser runs on does not match the port players use to connect to (e.g. due to port forwarding routings). - - When not set or set to 0, it defaults to the same port that Geyser runs on + - This can be used in cases where the port Geyser runs on does not match the port players use to connect to (e.g. due to port forwarding routings). + - When not set, it defaults to the same port that Geyser runs on. + - This system property is RakNet only, and will be removed once RakNet is no longer supported by any version supported by Geyser + +- `-DgeyserRaknetPort=19132` + - The UDP port RakNet listens on. Defaults to the Bedrock `port` (or `-DgeyserUdpPort`), which stays the port players connect with. ## Disabling warnings and advanced configuration {#disabling-warnings-and-advanced-configuration} You may disable some warnings that may be printed to the console by using the following command line arguments. The values shown are the defaults used by Geyser, unless otherwise noted. diff --git a/wiki/geyser/index.mdx b/wiki/geyser/index.mdx index f5e2c5d..09478b8 100644 --- a/wiki/geyser/index.mdx +++ b/wiki/geyser/index.mdx @@ -1,7 +1,10 @@ --- title: Overview permalink: /geyser/ -description: 'Geyser is a bridge between Minecraft: Bedrock Edition and Minecraft: Java Edition, closing the gap from those wanting to play true cross-platform.' +description: >- + Geyser is a bridge between Minecraft: Bedrock Edition and Minecraft: Java + Edition, closing the gap from those wanting to play true cross-platform. +crowdin_page_id: 79ac5abd-e047-47cd-8e3c-106be7d9d090 --- import { Versions } from '@site/src/components/Versions' @@ -16,10 +19,11 @@ import DocCardList from '@theme/DocCardList' _A bridge between Minecraft: Bedrock Edition and Minecraft: Java Edition._ -**Currently, supporting Minecraft Bedrock and Minecraft Java ** +**Currently, supporting Minecraft Bedrock and Minecraft Java ** Here are a few selected guides that will help you get started with Geyser! +````mdx-code-block \ No newline at end of file +})} /> +```` diff --git a/wiki/geyser/nethernet-https.mdx b/wiki/geyser/nethernet-https.mdx new file mode 100644 index 0000000..f40b431 --- /dev/null +++ b/wiki/geyser/nethernet-https.mdx @@ -0,0 +1,376 @@ +--- +title: HTTPS for NetherNet +description: >- + Remove the "trust on first use" prompt for Bedrock players by serving Geyser's + NetherNet signaling over HTTPS, with Caddy, nginx, or Geyser itself. +crowdin_page_id: fda8d3de-ab72-4d59-bc5c-ec34df34b9be +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# HTTPS for NetherNet + +Geyser's built-in signaling server uses plain HTTP by default. Over plain HTTP, Minecraft cannot verify which server it is talking to, +so it prompts each Bedrock player on the first join whether they want to trust the server the first time they join ("trust on first use"). +Over HTTPS, the server's certificate proves its identity, so Minecraft does not show this prompt. + +This page is for people who **host Geyser themselves**. When using a hosting provider, ask your host instead for how you could use HTTPS. +To learn what signaling is, read [Preparing your Geyser server for NetherNet](/blog/preparing-for-nethernet). + +:::info Only for built-in signaling +This page only matters if Geyser is configured to use **built-in signaling**: `mode` in the `signaling` section is `builtin` (the default) or `hybrid`. +::: + +## What you need {#what-you-need} + +1. **A domain name** that points to your server, like `play.example.com`. + Players must connect with this name, not with an IP address, because the certificate is made for the name. + If you do not have a domain, you could use a DDNS provider such as [DuckDNS](https://www.duckdns.org) to obtain a free one, like `myserver.duckdns.org`. +2. **A working NetherNet setup** without HTTPS. Make sure players can join first, then add HTTPS. +3. **A certificate for that domain.** If you already have one, you can use it as is. + Otherwise, you could use [Let's Encrypt](https://letsencrypt.org) to obtain one for free. The steps below do this with Caddy, certbot or win-acme, + which need TCP port 80 to be reachable from the internet while obtaining and renewing certificates. + Forward it in your router like your Geyser port. Let's Encrypt's DNS challenge works without port 80, but is not covered here. + +## Setting up HTTPS {#setting-up-https} + +Geyser can serve HTTPS itself with a certificate set in its config. Alternatively, a reverse proxy such as Caddy or nginx can handle HTTPS in front of Geyser. +If you would rather not manage a certificate at all, [external signaling](/wiki/geyser/geyser-command-line-arguments-and-system-properties#nethernet-system-properties) (`mode: nxs`) is an option as well, if the signaling service provides HTTPS: [Warden](https://warden.cloud) does, but not every service does. + + + + +Geyser serves HTTPS on the same port as HTTP, so no extra port is needed. Geyser reads the certificate when it starts, so it needs a restart or run of `geyser reload` after every renewal. + +**1. Obtain a certificate** + +If you already have a certificate for your domain, skip this step. +Otherwise, you could use [Let's Encrypt](https://letsencrypt.org) to obtain one, for example with certbot or win-acme. These need TCP port 80 to be reachable. + + + + +On Linux, certbot is the recommended way to obtain certificates from Let's Encrypt. Follow the instructions over at [certbot's website](https://certbot.eff.org/instructions) to see how. + + + + +Certbot [no longer supports Windows](https://community.letsencrypt.org/t/certbot-discontinuing-windows-beta-support-in-2024/208101), so use win-acme instead. +Follow the instructions over at [win-acme's website](https://www.win-acme.com) to see how. +Store the certificate as PEM encoded files, so Geyser can read them. + + + + +On macOS, certbot is the recommended way to obtain certificates from Let's Encrypt. Follow the instructions over at [certbot's website](https://certbot.eff.org/instructions) to see how. + + + + +**2. Configure Geyser** + +Set the files in the `signaling` section of the Geyser config. With win-acme, use the `-chain.pem` and `-key.pem` files instead. +Make sure Geyser can read these files. On Linux, certbot's files in `/etc/letsencrypt` can only be read by root, so if Geyser runs as another user, give it access to them, or copy them somewhere Geyser can read them after every renewal. + +```yaml +bedrock: + signaling: + builtin: + https: + certificate: /path/to/fullchain.pem + private-key: /path/to/privkey.pem + password: '' +``` + +- Paths can be relative to Geyser's config folder, or absolute. +- A PKCS12 file (`.p12` or `.pfx`) works as well: put it in `certificate`, leave `private-key` empty, and set its `password`. + Use `file:/path/to/password.txt` to keep the password out of the config. + +:::caution Restart or reload after renewing + +After a renewal, restart the server or run `geyser reload`, or players will get an expired certificate. + +::: + + + + +A reverse proxy sits in front of Geyser. It handles HTTPS, and passes signaling on to Geyser. +Gameplay (UDP) still goes straight to Geyser. + +```mermaid +flowchart LR + Player([Player]) + Proxy[Caddy / nginx] + Geyser[Geyser] + + Player -- "TCP 19132 (HTTPS)" --> Proxy + Proxy -- "TCP 19133 (HTTP)" --> Geyser + Player -. "UDP 19132 (playing)" .-> Geyser +``` + +**1. Prepare Geyser** + +The reverse proxy uses TCP port 19132, so Geyser's signaling has to move to another port, like 19133. Players keep using port 19132. +The ports you forward stay the same: port 19133 is only used on your machine, so do not open it. + +Set these values in the `bedrock` section of the Geyser config: + +```yaml +bedrock: + port: 19133 + webrtc-port: 19132 +``` + +`port` is now the port signaling used behind the proxy, and `webrtc-port` keeps gameplay on UDP 19132. + +Then tell Geyser to trust the proxy, so it reads each player's real address from the `X-Forwarded-For` header. Add this to the `advanced` section of the config: + +```yaml +advanced: + bedrock: + signaling-trusted-proxies: + - 127.0.0.1 +``` + +Leave `address` in the `bedrock` section at `0.0.0.0`. NetherNet does not work if Geyser only listens on `127.0.0.1`. + +**2. Set up the proxy** + + + + +Caddy can obtain and renew certificates from Let's Encrypt by itself. + +**2.1. Install Caddy** + +You can install Caddy by following its [installation guide](https://caddyserver.com/docs/install). + +**2.2. Write the Caddyfile** + +Save this as `/etc/caddy/Caddyfile` on Linux, as `$(brew --prefix)/etc/Caddyfile` on macOS, or as `C:\caddy\Caddyfile` next to `caddy.exe` on Windows. +Replace `play.example.com` with your domain: + +```caddyfile title="Caddyfile" +{ + servers { + # Caddy would otherwise use UDP 19132 for HTTP/3, which Geyser needs for playing + protocols h1 h2 + } +} + +play.example.com:19132 { + reverse_proxy 127.0.0.1:19133 +} +``` + +On its first start, Caddy will attempt to obtain a certificate for your domain, and will renew it automatically when necessary. This requires port 80 to be reachable. +To use an existing certificate instead, add `tls /path/to/fullchain.pem /path/to/privkey.pem` inside the `play.example.com:19132` block. + +**2.3. Start Caddy** + + + + +```bash +sudo systemctl enable --now caddy +# after changing the Caddyfile: +sudo systemctl reload caddy +# to see what Caddy is doing: +journalctl -xb -u caddy +``` + + + + +In a PowerShell window opened with **Run as administrator**, from the folder with `caddy.exe`: + +```powershell +.\caddy.exe run +``` + +To start Caddy automatically with Windows, install it as a service: + +```powershell +sc.exe create caddy start= auto binPath= "C:\caddy\caddy.exe run --config C:\caddy\Caddyfile" +sc.exe start caddy +``` + + + + +```bash +brew services start caddy +# after changing the Caddyfile: +brew services restart caddy +``` + + + + + + + +nginx does not obtain certificates by itself. If you do not have one yet, you could use certbot or win-acme to obtain one from Let's Encrypt. + +**2.1. Install nginx, and obtain a certificate** + + + + +Follow nginx's [installation guide](https://nginx.org/en/docs/install.html), you likely want to install nginx from a package using your distribution's package manager. + +If you need a certificate, certbot is the recommended way to obtain certificates from Let's Encrypt on Linux. Follow the instructions over at [certbot's website](https://certbot.eff.org/instructions) to see how. Select "Nginx" as software. + + + + +Follow nginx's [guide for Windows](https://nginx.org/en/docs/windows.html) to install it. The steps below assume it is in `C:\nginx`. + +If you need a certificate, certbot no longer supports Windows, so use win-acme instead. Follow the instructions over at [win-acme's website](https://www.win-acme.com) to see how, +and store the certificate as PEM encoded files in `C:\nginx\certs`. After a renewal, reload nginx with `C:\nginx\nginx.exe -s reload`. + + + + +Install nginx on macOS using the Homebrew package manager: + +```bash +brew install nginx +``` + +If you need a certificate, certbot is the recommended way to obtain certificates from Let's Encrypt on macOS. Follow the instructions over at [certbot's website](https://certbot.eff.org/instructions) to see how. Select "Nginx" as software. +Your nginx config folder can be found by running: + +```bash +echo "$(brew --prefix)/etc/nginx/servers/" +``` + + + + +**2.2. Configure nginx** + + + + +Create a file called `geyser.conf` in `/etc/nginx/conf.d/`. If you already have a certificate, point `ssl_certificate` and `ssl_certificate_key` to its files. + +```nginx title="geyser.conf" +server { + listen 19132 ssl; + server_name play.example.com; + + ssl_certificate /etc/letsencrypt/live/play.example.com/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/play.example.com/privkey.pem; + + location / { + proxy_pass http://127.0.0.1:19133; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } +} +``` + + + + +Create a file called `geyser.conf` in `C:\nginx\conf\`, then add `include geyser.conf;` inside the `http { }` block of `C:\nginx\conf\nginx.conf`. If you already have a certificate, point `ssl_certificate` and `ssl_certificate_key` to its files. + +```nginx title="geyser.conf" +server { + listen 19132 ssl; + server_name play.example.com; + + ssl_certificate C:/nginx/certs/play.example.com-chain.pem; + ssl_certificate_key C:/nginx/certs/play.example.com-key.pem; + + location / { + proxy_pass http://127.0.0.1:19133; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } +} +``` + + + + +Create a file called `geyser.conf` in `$(brew --prefix)/etc/nginx/servers/`. If you already have a certificate, point `ssl_certificate` and `ssl_certificate_key` to its files. + +```nginx title="geyser.conf" +server { + listen 19132 ssl; + server_name play.example.com; + + ssl_certificate /etc/letsencrypt/live/play.example.com/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/play.example.com/privkey.pem; + + location / { + proxy_pass http://127.0.0.1:19133; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } +} +``` + + + + +Do not add `quic` or `http3` to the `listen` line: Geyser needs UDP 19132 for playing. + +**2.3. Reload nginx** + +Use the following commands to reload nginx and activate the new configuration: + + + + +```bash +sudo nginx -t && sudo systemctl reload nginx +``` + + + + +```powershell +cd C:\nginx +.\nginx.exe -t +.\nginx.exe -s reload +``` + + + + +```bash +nginx -t && brew services restart nginx +``` + + + + + + + + + + +## Checking that it works {#checking} + +1. Look at the Geyser console. With a certificate in the Geyser config, it says `Built-in signaling started on https://`. + When using a reverse proxy, it says `Built-in signaling started on http://` with port 19133. +2. On Bedrock, add the server with your **domain name** and port `19132`. Join it: Minecraft should not ask whether you trust the server. + +| What you see | What to do | +|---|---| +| Players still get the trust prompt | Make sure they use the domain name, not the IP address. | +| Console: "Built-in signaling could not start. Make sure no other program is using TCP port …" after adding a certificate | Usually a wrong file path or password. Turn on `debug-mode` in the config and restart to see the real reason. | +| Caddy or certbot cannot get a certificate | Check that TCP port 80 is forwarded to this machine, and that your domain points to your current IP. | +| Server shows up, but joining times out | UDP 19132 is not reachable, or Caddy uses it. Check the `protocols h1 h2` line, and your firewall. | diff --git a/wiki/geyser/packs.md b/wiki/geyser/packs.md index e900e95..06fa3b5 100644 --- a/wiki/geyser/packs.md +++ b/wiki/geyser/packs.md @@ -1,6 +1,7 @@ --- title: Using Resource Packs with Geyser description: This page explains how to use resource packs with Geyser. +crowdin_page_id: 2bdcbcca-710e-4066-aa1f-1938be452783 --- # Introduction diff --git a/wiki/geyser/playit-gg.md b/wiki/geyser/playit-gg.md index 1f64cec..11fda3d 100644 --- a/wiki/geyser/playit-gg.md +++ b/wiki/geyser/playit-gg.md @@ -1,6 +1,8 @@ --- title: playit.gg Setup description: How to set up playit.gg to use Geyser without port forwarding. +crowdin_sync: true +crowdin_page_id: 3aee52d0-b943-4e37-8797-4a83ef55e42a --- ## Prerequisites {#prerequisites} @@ -13,6 +15,10 @@ You must be able to connect to your Geyser instance locally! The playit.gg Minecraft server plugin does not support UDP tunnels. You will need to use the program agent instead! ::: +:::caution +This guide was written for RakNet, and does not cover NetherNet. For NetherNet, see [playit.gg's progress on NetherNet support](https://status.playit.gg/3/adding-nethernet-support). +::: + ## Setup {#setup} 1. Head over to [playit.gg's website](https://playit.gg/) - download the program & run it. 2. The program will provide a claiming link. Visit that link, log in. diff --git a/wiki/geyser/port-forwarding.md b/wiki/geyser/port-forwarding.md index f82be6a..b02ee8e 100644 --- a/wiki/geyser/port-forwarding.md +++ b/wiki/geyser/port-forwarding.md @@ -1,9 +1,11 @@ --- title: Port forwarding -description: Information on how to set up UDP port forwarding required for Geyser. +description: Information on how to set up port forwarding required for Geyser. +crowdin_sync: true +crowdin_page_id: be7c5a22-1e8e-4ffe-8d13-7d763dd75886 --- -# Port forwarding +# Port forwarding {#port-forwarding} This page contains information on how to set up port forwarding required for Geyser to work when self-hosting. There are also guides for specific configurations, such as Docker/Pterodactyl, or on specific VPS/KVM providers, such as OVH or Oracle Cloud. @@ -13,9 +15,16 @@ If you are using a Minecraft server hosting provider (e.g. Aternos, or Nodecraft ::: +:::info Ports that need to be opened +With NetherNet, the Geyser port (by default 19132) has to be open for **both TCP and UDP**: players find the server over TCP (signaling), and play on it over UDP. +If you use the "NetherNet and RakNet" option, also open the `webrtc-port` for UDP. +With external signaling, such as [Warden](https://warden.cloud), only UDP for WebRTC is needed. +::: + ## Port forwarding on Linux/Windows/macOS {#port-forwarding-on-linuxwindowsmacos} To allow others to play on your server, you will need to set up port forwarding on the device hosting Geyser. Additionally, you will need to port forward the port on your router/modem (in other words, allow and route traffic on that port to the proper machine) if you want the server to be accessible outside your own home network. +Forward it for both TCP and UDP; many routers offer a "TCP/UDP" or "Both" option for this. See [here](https://www.howtogeek.com/66214/how-to-forward-ports-on-your-router/) or [here](https://www.lifewire.com/how-to-port-forward-4163829) for helpful guides. Do note: if you do not have a static IP address, your IP address may change over time. @@ -23,7 +32,7 @@ Do note: if you do not have a static IP address, your IP address may change over Some ISPs (Internet Service Providers) block certain ports, or don't allow you to open ports (e.g. by using CGNAT, which doesn't allow you to open a port with a dynamic IP). Other ISPs may require you to pay extra for a static IP address. -As an alternative to port forwarding, you can use playit.gg to create a tunnel. +As an alternative to port forwarding, you can use [playit.gg](/wiki/geyser/playit-gg/) to create a tunnel. ::: @@ -32,11 +41,12 @@ To open a port on Windows, you will need to open the port through the Windows Fi - `Powershell` (recommended) - To open a port on UDP (in our example, port 19132), run the following command in an administrator Powershell: + To open a port on TCP and UDP (in our example, port 19132), run the following commands in an administrator Powershell: ```powershell - New-NetFirewallRule -DisplayName "Geyser" -Direction Inbound -Protocol UDP -LocalPort 19132 -Action Allow + New-NetFirewallRule -DisplayName "Geyser (TCP)" -Direction Inbound -Protocol TCP -LocalPort 19132 -Action Allow + New-NetFirewallRule -DisplayName "Geyser (UDP)" -Direction Inbound -Protocol UDP -LocalPort 19132 -Action Allow ``` - Running this command creates a rule named "Geyser" that allows UDP traffic on port 19132. + Running these commands creates two rules that allow TCP and UDP traffic on port 19132. - Windows Defender Firewall with Advanced Security (GUI) @@ -47,27 +57,31 @@ To open a port on Windows, you will need to open the port through the Windows Fi 5. Select "UDP" and "Specific local ports", and enter the port you want to open (in our example, 19132). Click "Next". ([Example](/img/wiki/port-forwarding/windows-4.png)) 6. Select "Allow the connection" and click "Next". ([Example](/img/wiki/port-forwarding/windows-5.png)) 7. Select the profiles you want to apply the rule to (e.g. "Domain", "Private", "Public"), and click "Next". ([Example](/img/wiki/port-forwarding/windows-6.png)) - 8. Enter a name for the rule (e.g. "Geyser"), and click "Finish". ([Image](/img/wiki/port-forwarding/windows-7.png)) + 8. Enter a name for the rule (e.g. "Geyser (UDP)"), and click "Finish". ([Image](/img/wiki/port-forwarding/windows-7.png)) + 9. Repeat these steps, selecting "TCP" in step 5 and naming the rule e.g. "Geyser (TCP)". ### Linux {#linux} Different Linux distributions, even different VPS providers ship and configure different firewalls. In the following examples, we will use `19132` as the port to open, but you should replace this with the port you are using for Geyser. -- `ufw` is a simple firewall front-end for iptables that is commonly used on Ubuntu and Debian. To open a port on UDP, run the following command: +- `ufw` is a simple firewall front-end for iptables that is commonly used on Ubuntu and Debian. To open a port on TCP and UDP, run the following commands: ```bash + sudo ufw allow 19132/tcp sudo ufw allow 19132/udp ``` Then, reload the firewall with `sudo ufw reload`, and see all open rules with `sudo ufw status`. Further helpful guides: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server), [Baeldung](https://www.baeldung.com/linux/uncomplicated-firewall) -- `firewalld` Add a port on UDP by running: +- `firewalld` Add a port on TCP and UDP by running: ```bash + sudo firewall-cmd --zone=public --permanent --add-port=19132/tcp sudo firewall-cmd --zone=public --permanent --add-port=19132/udp ``` Then, reload the firewall with `sudo firewall-cmd --reload`, and see all open rules with `sudo firewall-cmd --list-all`. Further helpful guides: [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7) -- `iptables` is a common firewall that is used on many Linux distributions. To open a port on UDP, run the following command: +- `iptables` is a common firewall that is used on many Linux distributions. To open a port on TCP and UDP, run the following commands: ```bash + sudo iptables -A INPUT -p tcp --dport 19132 -j ACCEPT sudo iptables -A INPUT -p udp --dport 19132 -j ACCEPT ``` Then, save the firewall with `sudo iptables-save`, and see all open rules with `sudo iptables -L`. @@ -82,7 +96,7 @@ If you are still facing issues, see Apple's official guide [here](https://suppor In addition to port forwarding the port in your server's firewall (and, if applicable, your router/modem), you will need to assign the port in Docker/Pterodactyl. ### Pterodactyl {#pterodactyl} -Make sure to allocate the port to the server in the Pterodactyl panel's `Network` tab, additionally to port forwarding the port. +Make sure to allocate the port(s) to the server in the Pterodactyl panel's `Network` tab, additionally to port forwarding the port(s). See [here](https://pterodactyl.io/community/games/minecraft.html#allocations-in-the-panel) for more information. ![Pterodactyl panel, Network section](/img/wiki/port-forwarding/pterodactyl-1.png) @@ -96,26 +110,24 @@ If you are not able to allocate ports in the Pterodactyl panel, you will need to ::: ### Docker {#docker} -For Geyser to work under Docker (e.g. using [Itzg's Docker image](https://github.com/itzg/docker-minecraft-server)), you will need to add the Geyser port on UDP to the docker-compose file. This is done by adding the following to the `ports` section: +For Geyser to work under Docker (e.g. using [Itzg's Docker image](https://github.com/itzg/docker-minecraft-server)), you will need to add the Geyser port on TCP and UDP to the docker-compose file. This is done by adding the following to the `ports` section: ```yaml ports: - "25565:25565" + - "19132:19132" - "19132:19132/udp" ``` -The additional `/udp` suffix is required so that the port is exposed on UDP. If you want to run the Java server and Geyser on the same port, the following would work: -```yaml -ports: - - "25565:25565" - - "25565:25565/udp" -``` -Alternatively, add another port with the `-p 19132:19132/udp` flag to the docker run command. +Without a suffix, Docker exposes the port on TCP. The additional `/udp` suffix exposes it on UDP. +Alternatively, add the ports with the `-p 19132:19132 -p 19132:19132/udp` flags to the docker run command. ## Issues with specific VPS/KVM providers {#issues-with-specific-vpskvm-providers} -Some providers, such as OVH, Oracle Cloud, and SoYouStart, have a firewall that blocks UDP ports by default/in most cases. +Some providers, such as OVH, Oracle Cloud, and SoYouStart, have a firewall that blocks the ports Geyser needs by default/in most cases. ### OVH and SoYouStart {#ovh-and-soyoustart} -By default, OVHs firewall requires a TCP ping to the server before allowing UDP connections. This is not possible with Geyser, so you will need to disable the firewall. +OVH's GAME firewall filters traffic with rules made for specific games. The Minecraft Bedrock and Minecraft Pocket Edition rules currently only support RakNet, the protocol Bedrock used before NetherNet. +With NetherNet, players find the server over HTTP (TCP) and play over WebRTC (UDP), which these rules currently do not support. +For now, use the `Other` rule for the Geyser port(s) instead. :::caution @@ -123,34 +135,21 @@ If you do not have access to these firewall settings, but got linked to this pag ::: -**To verify/temporary work around it:** - -Attempt to connect to your servers IP and port through a web browser - for example, `http://test.geysermc.org:19132`. Connecting won't work, but then try connecting through Bedrock on that same device, and it should work. -Alternatively, try connecting to the server first on Java edition, then on Bedrock with the same device. - **To resolve it:** OVH: 1. Navigate to `Network interfaces` -2. Click on the `...` button on the table for your IP -> then `...` and `Configure the GAME firewall` -> `Add rule` -> `Other protocol` ~~(or `minecraftPocketEdition` if available)~~ -3. Add your Geyser port into `outgoing port`. +2. Click on the `...` button on the table for your IP -> then `...` and `Configure the GAME firewall` -> `Add rule` -> `Other protocol` +3. Add your Geyser port into `outgoing port`. If you use the "NetherNet and RakNet" option, add a rule for the `webrtc-port` as well. +4. If you use OVH's Edge Network Firewall, make sure it allows the Geyser port over both TCP and UDP. SoYouStart (subsidiary of OVH): 1. Click the IP tab. 2. Click the gear at the right of the public IP address; select "Game mitigation". 3. Pick "Add a rule". -4. Select "minecraftPocketEdition" in the dropdown list and enter the target UDP ports. +4. Select "Other" in the dropdown list and enter the Geyser port. If you use the "NetherNet and RakNet" option, add the `webrtc-port` as well. 5. Save and wait a few seconds for the changes to come into effect. -#### OVH/SoYouStart Game Firewall Incompatibility Issue -The OVH GAME filter type `minecraftPocketEdition` currently does not work and you must use the `Other` type. - -If you would like to continue using the filter type `minecraftPocketEdition`, you may disable the incompatible security feature by adding `-DGeyser.RakSendCookie=false` to your Java server's (or Geyser Standalone proxy's) startup flags. - -For more information see: - - [This issue on OVH's infrastructure roadmap](https://github.com/ovh/infrastructure-roadmap/issues/186) - - [The pull request which implemented the security feature that caused the incompatibility](https://github.com/GeyserMC/Geyser/pull/4554) - ### Oracle Cloud/OCI {#oracle-cloudoci} By default, Oracle Cloud will block all incoming traffic except for SSH and RDP. This must be resolved within Oracle Cloud itself and the Compute Instance running Geyser. @@ -165,10 +164,11 @@ The steps below assume that you are using the default ports for the Java server - Set "Source CIDR" to `0.0.0.0/0` - Set "Destination Port Range" to `25565-25565` - Select "Another Ingress Rule" -7. Configure rules for Geyser +7. Configure rules for Geyser, once for TCP and once for UDP - Set "Source CIDR" to `0.0.0.0/0` - Set "Destination Port Range" to `19132-19132` - - Set "IP Protocol" to UDP + - Set "IP Protocol" to TCP + - Select "Another Ingress Rule", and repeat with "IP Protocol" set to UDP 8. Select "Add Ingress Rules" #### Oracle Linux {#oracle-linux} @@ -177,6 +177,7 @@ Run the following commands to allow Minecraft and Geyser through the OS firewall ```bash sudo firewall-cmd --add-port=25565/tcp --permanent +sudo firewall-cmd --add-port=19132/tcp --permanent sudo firewall-cmd --add-port=19132/udp --permanent sudo firewall-cmd --reload ``` @@ -187,5 +188,6 @@ Run the following commands to allow Minecraft and Geyser through the OS firewall ```bash sudo ufw allow 25565/tcp +sudo ufw allow 19132/tcp sudo ufw allow 19132/udp ``` diff --git a/wiki/geyser/secure-chat.md b/wiki/geyser/secure-chat.md index 636b03f..df56d93 100644 --- a/wiki/geyser/secure-chat.md +++ b/wiki/geyser/secure-chat.md @@ -1,6 +1,9 @@ --- title: Geyser and Secure Chat -description: Information about disabling secure chat to allow Bedrock players to chat on Java servers. +description: >- + Information about disabling secure chat to allow Bedrock players to chat on + Java servers. +crowdin_page_id: 09dff783-e1b8-4217-a706-cbf08cd699fd --- In the 1.19 Java Edition updates, a mechanism for reporting player chat messages to Mojang was implemented. diff --git a/wiki/geyser/setup.mdx b/wiki/geyser/setup.mdx index 7f3e190..4135ee4 100644 --- a/wiki/geyser/setup.mdx +++ b/wiki/geyser/setup.mdx @@ -2,62 +2,93 @@ title: Setup page_sidebar: false description: Guides to setup Geyser on all supported platforms +crowdin_page_id: c0450f30-546a-4420-a3a6-5ff077a6a924 --- -import Tabs from "@theme/Tabs"; -import TabItem from "@theme/TabItem"; +import Tabs from '@theme/Tabs' +import TabItem from '@theme/TabItem' +import Admonition from '@theme/Admonition'; +import Translate from "@docusaurus/Translate"; -import ModdedServers from './setup/provider/modded-servers.mdx'; -import ProxyServers from './setup/provider/proxy-servers.mdx'; -import PaperSpigot from './setup/provider/paper-spigot.mdx'; - -import ModdedServersSelf from './setup/self/modded-servers.mdx'; -import ProxyServersSelf from './setup/self/proxy-servers.mdx'; -import PaperSpigotSelf from './setup/self/paper-spigot.mdx'; -import ViaProxy from './setup/self/viaproxy.mdx'; -import Standalone from './setup/self/standalone.mdx'; +import { HostedGuide, SelfHostGuide } from '@site/src/components/SetupGuide' import PlatformIcon from '@site/src/components/PlatformIcon' -import ModIcon from '@site/static/img/icons/fabric.png'; -import ProxyServersIcon from '@site/static/img/icons/velocity.png'; -import PaperSpigotIcon from '@site/static/img/icons/paper.png'; -import ViaProxyIcon from '@site/static/img/icons/viaproxy.png'; -import StandaloneIcon from '@site/static/img/icons/geyser.png'; +import FabricIcon from '@site/static/img/icons/fabric.png' +import NeoForgeIcon from '@site/static/img/icons/neoforge.png' +import VelocityIcon from '@site/static/img/icons/velocity.png' +import BungeeCordIcon from '@site/static/img/icons/bungeecord.png' +import PaperSpigotIcon from '@site/static/img/icons/paper.png' +import ViaProxyIcon from '@site/static/img/icons/viaproxy.png' +import StandaloneIcon from '@site/static/img/icons/geyser.png' -import { ProviderSelector } from "@site/src/components/Provider"; - - - - - } default> - +import { ProviderSelector, SelectedProvider } from '@site/src/components/Provider' +import { MDXTranslatable } from '@site/src/components/MDXTranslatable' +import { useState } from 'react' + +````mdx-code-block +export const SetupGuide = () => { + const [provider, setProvider] = useState(null) + return ( + + } default> + + {provider ? ( + + {!provider.notices?.unsupported ? ( + + } />} default> + + + } />}> + + + } />}> + + + {!provider.proxies_banned && ( + } />}> + + + )} + {!provider.proxies_banned && ( + } />}> + + + )} + + ) : (Not supported}>{provider.notices.unsupported})} + + ) : null} - }> - - - }> - + }> + + } />} default> + + + } />}> + + + } />}> + + + } />}> + + + } />}> + + + } />}> + + + } />}> + + + - - - - } default> - - - }> - - - }> - - - }> - - - }> - - - - - \ No newline at end of file + ) +} + + +```` \ No newline at end of file diff --git a/wiki/geyser/setup/provider/modded-servers.mdx b/wiki/geyser/setup/provider/modded-servers.mdx deleted file mode 100644 index 1414adc..0000000 --- a/wiki/geyser/setup/provider/modded-servers.mdx +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Geyser Hosting Provider Modded Setup -description: Learn how to set up Geyser on your Fabric or NeoForge server from a hosting provider. ---- - -import { Versions } from '@site/src/components/Versions' - -:::caution -Geyser-Fabric and Geyser-NeoForge run **only** on a server. -See [this page](/wiki/geyser/supported-versions#fabric-neoforge-servers) for more details. -::: - -:::info -Geyser only works with **server-side** mods. Mods that require a client-side install will not work! -::: - -1. Select your server hosting provider in the dropdown above. -2. Download the mod from [the download page](/download). -3. Place the Geyser mod jar in the `mods` folder, and restart the server. **For Fabric, you will also need [FabricAPI](https://modrinth.com/mod/fabric-api).** -4. Open your Geyser config, located in `/config/Geyser-Fabric/config.yml` (or `/config/Geyser-NeoForge/config.yml`), and find the following: - - ```yaml - bedrock: - # The IP address that will listen for connections. - # Generally, you should only change this if you want to limit what IPs can connect to your server. - address: 0.0.0.0 - - # The port that will Geyser will listen on for incoming Bedrock connections. - # Since Minecraft: Bedrock Edition uses UDP, this port must allow UDP traffic. - port: 19132 - - # Some hosting services change your Java port everytime you start the server and require the same port to be used for Bedrock. - # This option makes the Bedrock port the same as the Java port every time you start the server. - clone-remote-port: false - ``` - The vital part is the port. This is the port that Bedrock players will use to connect to your server. - Follow the instructions in the provider selector - change the port, and if necessary, `clone-remote-port` & `address`. - If `clone-remote-port` is enabled, the bedrock port will be overwritten with the Java port! - **Important**: Other services/mods that rely on ports with UDP, such as Voice Chats or Query, cannot share the port with Geyser. - -5. Verify whether connections are possible by running `geyser connectiontest ` in the console. - -:::info -To allow Bedrock Edition players to join your server without needing to log in to a paid Java Edition account, you can use Floodgate. -::: \ No newline at end of file diff --git a/wiki/geyser/setup/provider/paper-spigot.mdx b/wiki/geyser/setup/provider/paper-spigot.mdx deleted file mode 100644 index 3c8bb08..0000000 --- a/wiki/geyser/setup/provider/paper-spigot.mdx +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Geyser Hosting Provider Paper / Spigot Setup -description: Learn how to set up Geyser on a Paper or Spigot server from a hosting provider. -hide_title: true ---- - -import { Versions } from '@site/src/components/Versions' - -:::info -If your server is running a version older than , you will need to install ViaVersion. -See also [this page](/wiki/geyser/supported-versions/) on supported versions. -::: - -1. Select your server hosting provider in the dropdown above. -2. Download the plugin from [the download page](/download). -3. Place the Geyser-Spigot.jar in the `plugins` folder, and restart the server. -4. Open your Geyser config, located in `/plugins/Geyser-Spigot/config.yml`, and find the following: - - ```yaml - bedrock: - # The IP address that will listen for connections. - # Generally, you should only change this if you want to limit what IPs can connect to your server. - address: 0.0.0.0 - - # The port that will Geyser will listen on for incoming Bedrock connections. - # Since Minecraft: Bedrock Edition uses UDP, this port must allow UDP traffic. - port: 19132 - - # Some hosting services change your Java port everytime you start the server and require the same port to be used for Bedrock. - # This option makes the Bedrock port the same as the Java port every time you start the server. - clone-remote-port: false - ``` - The vital part is the port. This is the port that Bedrock players will use to connect to your server. - Follow the instructions in the provider selector - change the port, and if necessary, `clone-remote-port` & `address`. - If `clone-remote-port` is enabled, the bedrock port will be overwritten with the Java port! - **Important**: Other services/plugins that rely on ports with UDP, such as Voice Chats or Query, cannot share the port with Geyser. - -5. Verify whether connections are possible by running `geyser connectiontest ` in the console. - -:::info -To allow Bedrock Edition players to join your server without needing to log in to a paid Java Edition account, you can use Floodgate. -::: diff --git a/wiki/geyser/setup/provider/proxy-servers.mdx b/wiki/geyser/setup/provider/proxy-servers.mdx deleted file mode 100644 index 7c3a262..0000000 --- a/wiki/geyser/setup/provider/proxy-servers.mdx +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Geyser Hosting Provider Proxy Servers Setup -description: Learn how to set up Geyser on your Bungee, Waterfall, or Velocity server from a hosting provider. -hide_title: true ---- - -import { Versions } from '@site/src/components/Versions' - -:::info -- Install Geyser **only** on the proxy server! You can install Floodgate on all servers for better skin support & - network-wide Floodgate API availability for other plugins. -- All servers on the network must accept Java clients, as Geyser imitates one. -::: - -1. Select your server hosting provider in the dropdown above. -2. Download the plugin for your proxy software from [the download page](/download). -3. Place the Geyser jar in the `plugins` folder, and restart the server. -4. Open your Geyser config, located in `/plugins/Geyser-xyz/config.yml`, and find the following: - - ```yaml - bedrock: - # The IP address that will listen for connections. - # Generally, you should only change this if you want to limit what IPs can connect to your server. - address: 0.0.0.0 - - # The port that will Geyser will listen on for incoming Bedrock connections. - # Since Minecraft: Bedrock Edition uses UDP, this port must allow UDP traffic. - port: 19132 - - # Some hosting services change your Java port everytime you start the server and require the same port to be used for Bedrock. - # This option makes the Bedrock port the same as the Java port every time you start the server. - clone-remote-port: false - ``` - The vital part is the port. This is the port that Bedrock players will use to connect to your server. - Follow the instructions in the provider selector - change the port, and if necessary, `clone-remote-port` & `address`. - If `clone-remote-port` is enabled, the bedrock port will be overwritten with the Java port! - **Important**: Other services/plugins that rely on ports with UDP, such as Voice Chats or Query, cannot share the port with Geyser. - -5. Verify whether connections are possible by running `geyser connectiontest ` in the console. - -:::info -To allow Bedrock Edition players to join your server without needing to log in to a paid Java Edition account, you can use Floodgate. -::: \ No newline at end of file diff --git a/wiki/geyser/setup/self/modded-servers.mdx b/wiki/geyser/setup/self/modded-servers.mdx deleted file mode 100644 index b0da55d..0000000 --- a/wiki/geyser/setup/self/modded-servers.mdx +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Geyser Self-Hosted Modded Setup -description: Learn how to set up Geyser on your self-hosted Fabric or NeoForge server. -hide_title: true ---- - -import { Versions } from '@site/src/components/Versions' - -:::caution -Geyser-Fabric and Geyser-NeoForge run **only** on a server. -See [this page](/wiki/geyser/supported-versions#fabric-neoforge-servers) for more details. -::: - -:::info -Geyser only works with **server-side** mods. Mods that require a client-side install will not work! -::: - -1. Download the mod from [the download page](/download). -2. Place the Geyser mod jar in the `mods` folder, and restart the server. **For Fabric, you will also need [FabricAPI](https://modrinth.com/mod/fabric-api).** -3. Open your Geyser config, located in `/config/Geyser-Fabric/config.yml` (or `/config/Geyser-NeoForge/config.yml`), and find the following: - - ```yaml - bedrock: - # The IP address that will listen for connections. - # Generally, you should only change this if you want to limit what IPs can connect to your server. - address: 0.0.0.0 - - # The port that will Geyser will listen on for incoming Bedrock connections. - # Since Minecraft: Bedrock Edition uses UDP, this port must allow UDP traffic. - port: 19132 - - # Some hosting services change your Java port everytime you start the server and require the same port to be used for Bedrock. - # This option makes the Bedrock port the same as the Java port every time you start the server. - clone-remote-port: false - ``` - The vital part is the port. This is the port that Bedrock players will use to connect to your server! - If you enable `clone-remote-port`, the port will be overridden and the Java port is used. - Since you are self-hosting, you can choose the port freely - the default port is 19132. - **Important**: Other services/mods that rely on ports with UDP, such as Voice Chats or Query, cannot share the port with Geyser. - -4. Connecting to your server - - **Connecting locally in the same network** - On the same device as the server, you can connect using `localhost`, or `127.0.0.1` as the address. - Do note: When hosting and playing on the same Windows device, you will need the [loopback fix](/wiki/geyser/fixing-unable-to-connect-to-world#using-geyser-on-the-same-computer). - Other devices in the same local network can use your local IPv4 to connect - it starts with `10.` or `192.168.`. - - **Connecting from a different network** - You will need to expose the port Geyser runs on to the Internet if you want players from outside your network to join. - To achieve that, you have two options: - - - Port forwarding: Open the Geyser port (e.g. 19132) on the UDP protocol in your router/modem, and in the Windows/Linux firewall. - [Our port forwarding guide](/wiki/geyser/port-forwarding) explains how to do this in detail. - Then, players can connect with your public IPv4 + port to your server. - - - playit.gg: Instead of opening a port (which might not be an option/if you do not want to expose your home ip), you can use - the playit.gg service to create a tunnel for you to route the traffic through. See our [playit.gg guide](/wiki/geyser/playit-gg). - Ngrok will not work since it is TCP-only. - -5. Verify whether connections from other networks are possible by running `geyser connectiontest ` in the console. - -:::info -To allow Bedrock Edition players to join your server without needing to log in to a paid Java Edition account, you can use Floodgate. -::: \ No newline at end of file diff --git a/wiki/geyser/setup/self/paper-spigot.mdx b/wiki/geyser/setup/self/paper-spigot.mdx deleted file mode 100644 index 79bc55a..0000000 --- a/wiki/geyser/setup/self/paper-spigot.mdx +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Geyser Self-Hosted Paper / Spigot Setup -description: Learn how to set up Geyser on your self-hosted Paper or Spigot server. ---- - -import { Versions } from '@site/src/components/Versions' - -:::info -If your server is running a version older than , you will need to install ViaVersion. -See also [this page](/wiki/geyser/supported-versions/) on supported versions. -::: - -1. Download the plugin from [the download page](/download). -2. Place the Geyser-Spigot.jar in the `plugins` folder, and restart the server. -3. Open your Geyser config, located in `/plugins/Geyser-Spigot/config.yml`, and find the following: - - ```yaml - bedrock: - # The IP address that will listen for connections. - # Generally, you should only change this if you want to limit what IPs can connect to your server. - address: 0.0.0.0 - - # The port that will Geyser will listen on for incoming Bedrock connections. - # Since Minecraft: Bedrock Edition uses UDP, this port must allow UDP traffic. - port: 19132 - - # Some hosting services change your Java port everytime you start the server and require the same port to be used for Bedrock. - # This option makes the Bedrock port the same as the Java port every time you start the server. - clone-remote-port: false - ``` - The vital part is the port. This is the port that Bedrock players will use to connect to your server! - If you enable `clone-remote-port`, the port will be overridden and the Java port is used. - Since you are self-hosting, you can choose the port freely - the default port is 19132. - **Important**: Other services/plugins that rely on ports with UDP, such as Voice Chats or Query, cannot share the port with Geyser. - - -4. Connecting to your server - - **Connecting locally in the same network** - On the same device as the server, you can connect using `localhost`, or `127.0.0.1` as the address. - Do note: When hosting and playing on the same Windows device, you will need the [loopback fix](/wiki/geyser/fixing-unable-to-connect-to-world#using-geyser-on-the-same-computer). - Other devices in the same local network can use your local IPv4 to connect - it starts with `10.` or `192.168.`. - - **Connecting from a different network** - You will need to expose the port Geyser runs on to the Internet if you want players from outside your network to join. - To achieve that, you have two options: - - - Port forwarding: Open the Geyser port (e.g. 19132) on the UDP protocol in your router/modem, and in the Windows/Linux firewall. - [Our port forwarding guide](/wiki/geyser/port-forwarding) explains how to do this in detail. - After doing this, players can connect with your public IPv4 + port to your server. - - - playit.gg: Instead of opening a port (which might not be an option/if you do not want to expose your home ip), you can use - the playit.gg service to create a tunnel for you to route the traffic through. See our [playit.gg guide](/wiki/geyser/playit-gg). - Ngrok will not work since it is TCP-only. - -5. Verify whether connections from other networks are possible by running `geyser connectiontest ` in the console. - -:::caution -To allow Bedrock Edition players to join your server without needing to log in to a paid Java Edition account, you can use Floodgate. -::: diff --git a/wiki/geyser/setup/self/proxy-servers.mdx b/wiki/geyser/setup/self/proxy-servers.mdx deleted file mode 100644 index abe80fe..0000000 --- a/wiki/geyser/setup/self/proxy-servers.mdx +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Geyser Self-Hosted Proxy Servers Setup -description: Learn how to set up Geyser on your self-hosted Bungee, Waterfall, or Velocity server. -hide_title: true ---- - - -import { Versions } from '@site/src/components/Versions' - -:::info -- Install Geyser **only** on the proxy server! You can install Floodgate on all servers for better skin support & network-wide Floodgate API availability for other plugins. -- All servers on the network must accept Java clients, as Geyser imitates one. -::: - -1. Download the plugin for your proxy software from [the download page](/download). -2. Place the Geyser jar in the `plugins` folder, and restart the server. -3. Open your Geyser config, located in `/plugins/Geyser-xyz/config.yml`, and find the following: - - ```yaml - bedrock: - # The IP address that will listen for connections. - # Generally, you should only change this if you want to limit what IPs can connect to your server. - address: 0.0.0.0 - - # The port that will Geyser will listen on for incoming Bedrock connections. - # Since Minecraft: Bedrock Edition uses UDP, this port must allow UDP traffic. - port: 19132 - - # Some hosting services change your Java port everytime you start the server and require the same port to be used for Bedrock. - # This option makes the Bedrock port the same as the Java port every time you start the server. - clone-remote-port: false - ``` - The vital part is the port. This is the port that Bedrock players will use to connect to your server! - If you enable `clone-remote-port`, the port will be overridden and the Java port is used. - Since you are self-hosting, you can choose the port freely - the default port is 19132. - **Important**: Other services/plugins that rely on ports with UDP, such as Voice Chats or Query, cannot share the port with Geyser. - - -4. Connecting to your server - - **Connecting locally in the same network** - On the same device as the server, you can connect using `localhost`, or `127.0.0.1` as the address. - Do note: When hosting and playing on the same Windows device, you will need the [loopback fix](/wiki/geyser/fixing-unable-to-connect-to-world#using-geyser-on-the-same-computer). - Other devices in the same local network can use your local IPv4 to connect - it starts with `10.` or `192.168.`. - - **Connecting from a different network** - You will need to expose the port Geyser runs on to the Internet if you want players from outside your network to join. - To achieve that, you have two options: - - - Port forwarding: Open the Geyser port (e.g. 19132) on the UDP protocol in your router/modem, and in the Windows/Linux firewall. - [Our port forwarding guide](/wiki/geyser/port-forwarding) explains how to do this in detail. - Then, players can connect with your public IPv4 + port to your server. - - - playit.gg: Instead of opening a port (which might not be an option/if you do not want to expose your home ip), you can use - the playit.gg service to create a tunnel for you to route the traffic through. See our [playit.gg guide](/wiki/geyser/playit-gg). - Ngrok will not work since it is TCP-only. - -5. Verify whether connections from other networks are possible by running `geyser connectiontest ` in the console. - -:::info -To allow Bedrock Edition players to join your server without needing to log in to a paid Java Edition account, you can use Floodgate. -::: diff --git a/wiki/geyser/setup/self/standalone.mdx b/wiki/geyser/setup/self/standalone.mdx deleted file mode 100644 index 9cfc90e..0000000 --- a/wiki/geyser/setup/self/standalone.mdx +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Geyser Standalone Setup -description: Learn how to set up Geyser Standalone, a standalone Java program that allows you to connect Bedrock players to your Java Edition server. -hide_title: true ---- - -:::info -You need to have Java 21 or higher installed to run Geyser. To run Geyser Standalone on Android, see the bottom of this page. -::: - -:::caution -Geyser-Standalone is NOT a plugin or mod! It is a standalone Java program that you would run separately to your Java Edition server. -::: - -#### General Setup & Configuration \{#general-setup--configuration} - -1. Download Geyser Standalone from [here](/download). -2. Create a new folder for Geyser, and drop the jar in there. -3. Start Geyser Standalone: - - **GUI** (Recommended): - Double-click the jar file and all the necessary files for Geyser will be created. - - Or use the **console setup**: - Create a new bat or startup script, similar to the one you'd use for a Spigot/Paper server, and take a look at [this](/wiki/geyser/creating-a-startup-script/) page for what to put into it. - Run the startup script/bat, and all the necessary files for Geyser will be created. - -4. Open your Geyser config (`config.yml`), and find the following: - - ```yaml - bedrock: - # The IP address that Geyser will bind on to listen for incoming Bedrock connections. - # Generally, you should only change this if you want to limit what IPs can connect to your server. - address: 0.0.0.0 - - # The port that will Geyser will listen on for incoming Bedrock connections. - # Since Minecraft: Bedrock Edition uses UDP, this port must allow UDP traffic. - port: 19132 - - ``` - The `port` is the port Bedrock players will enter to connect to the server. - Uncommenting and changing `address` here is only needed if you need to limit connections to a specific IP address. - - - To configure which Java Edition server Geyser Standalone will send players to, find the remote section: - ```yaml - java: - # The IP address of the Java Edition server. - address: 127.0.0.1 - - # The port of the Java Edition server. - port: 25565 - - # What type of authentication Bedrock players will be checked against when logging into the Java server. - # Can be "floodgate" (see https://wiki.geysermc.org/floodgate/), "online", or "offline". - auth-type: online - ``` - Here, change `address` to the Java server's address, or leave it as-is if the server is on the same machine as Geyser-Standalone. -Then, change `port` to the Java server's port. If you have set up Floodgate on the remote Java server, you can set auth-type to "floodgate" - otherwise, -set it to either `online` for an online mode server, or `offline` for an offline mode server. To install and set up Floodgate with a Standalone server, see [here](/wiki/floodgate/setup). - -5. Connecting to your server - - **Connecting locally in the same network** - On the same device as the server, you can connect using `localhost`, or `127.0.0.1` as the address. - Do note: When hosting and playing on the same Windows device, you will need the [loopback fix](/wiki/geyser/fixing-unable-to-connect-to-world#using-geyser-on-the-same-computer). - Other devices in the same local network can use your local IPv4 to connect - it starts with `10.` or `192.168.`. - Alternatively, open Minecraft: Bedrock edition, and join the LAN-Server in the **Friends** tab. - - **Connecting from a different network** - You will need to expose the port Geyser runs on to the Internet if you want players from outside your network to join. - To achieve that, you have two options: - - - Port forwarding: Open the Geyser port (e.g. 19132) on the UDP protocol in your router/modem, and in the Windows/Linux firewall. - After doing this, players can connect with your public IPv4 + port to your server. - See [here](/wiki/geyser/port-forwarding/) for a helpful guide. - - - playit.gg: Instead of opening a port (which might not be an option/if you do not want to expose your home ip), you can use - the playit.gg service to create a tunnel for you to route the traffic through. See our [playit.gg guide](/wiki/geyser/playit-gg). - Ngrok will not work since it is TCP-only. - -6. Verify whether connections from other networks are possible by running `geyser connectiontest ` in the console. - -#### Running Geyser-Standalone on Android \{#running-geyser-standalone-on-android} - -:::caution -Applications such as Termux on Android are capable of running Geyser, but this largely depends on how powerful your Android device is. Please do so at your own risk. -::: - -##### Termux (Android) \{#termux-android} -1. Download and install [Termux](https://termux.com/) -2. Run `pkg install openjdk-21` -3. Run `wget https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/standalone` -4. Run `java -jar Geyser-Standalone.jar` - -OR - -We have an automated setup script for clean Termux installs, which might not work for all users. If the manual guide above does not work, try this. -Run this to start the download/install: -``` -curl https://gist.githubusercontent.com/rtm516/e3e07d6595ee41e05a38b03c0f4d7a80/raw/install.sh | bash -``` - diff --git a/wiki/geyser/setup/self/viaproxy.mdx b/wiki/geyser/setup/self/viaproxy.mdx deleted file mode 100644 index dc9147a..0000000 --- a/wiki/geyser/setup/self/viaproxy.mdx +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Geyser ViaProxy Setup -description: Learn how to set up Geyser with ViaProxy. ---- - -1. [Setup ViaProxy](https://viaversion.com/viaproxy?tab=readme-ov-file#usage-for-players-gui). -2. Download the plugin from [the download page](/download). -3. Place the Geyser-ViaProxy.jar in the `plugins` folder, and restart ViaProxy. -4. Open your Geyser config, located in `/plugins/Geyser/config.yml`, and find the following: - - ```yaml - bedrock: - # The IP address that will listen for connections. - # Generally, you should only change this if you want to limit what IPs can connect to your server. - address: 0.0.0.0 - - # The port that will Geyser will listen on for incoming Bedrock connections. - # Since Minecraft: Bedrock Edition uses UDP, this port must allow UDP traffic. - port: 19132 - - # Some hosting services change your Java port everytime you start the server and require the same port to be used for Bedrock. - # This option makes the Bedrock port the same as the Java port every time you start the server. - clone-remote-port: false - ``` - The vital part is the port. This is the port that Bedrock players will use to connect to your server! - If you enable `clone-remote-port`, the port will be overridden and the ViaProxy port is used. - Since you are self-hosting, you can choose the port freely - the default port is 19132. - - **Important**: Other services/plugins that rely on ports with UDP, such as Voice Chats or Query, cannot share the port with Geyser. - - If you use the ViaProxy GUI you can use its account management system to join online mode servers with Bedrock Edition. If you use the ViaProxy CLI and want to allow Bedrock players to join your online mode server you have to install and [set up Floodgate](/wiki/floodgate/setup).
    - - NOTE: The value of the `auth-type` field is ignored and managed by ViaProxy automatically. - -5. Connecting to your server - - **Connecting locally in the same network** - - On the same device as the server, you can connect using `localhost`, or `127.0.0.1` as the address. - Do note: When hosting and playing on the same Windows device, you will need the [loopback fix](/wiki/geyser/fixing-unable-to-connect-to-world#using-geyser-on-the-same-computer). - Other devices in the same local network can use your local IPv4 to connect - it starts with `10.` or `192.168.`. - - **Connecting from a different network** - - You will need to expose the port Geyser runs on to the Internet if you want players from outside your network to join. - To achieve that, you have two options: - - - Port forwarding: Open the Geyser port (e.g. 19132) on the UDP protocol in your router/modem, and in the Windows/Linux firewall. - [Our port forwarding guide](/wiki/geyser/port-forwarding) explains how to do this in detail. - After doing this, players can connect with your public IPv4 + port to your server. - - - playit.gg: Instead of opening a port (which might not be an option/if you do not want to expose your home ip), you can use - the playit.gg service to create a tunnel for you to route the traffic through. See our [playit.gg guide](/wiki/geyser/playit-gg). - Ngrok will not work since it is TCP-only. - -6. Verify whether connections from other networks are possible by running `geyser connectiontest ` in the console. - -:::info -To allow Bedrock Edition players to join your server without needing to log in to a paid Java Edition account, you can use [Floodgate](/wiki/floodgate/setup). -::: diff --git a/wiki/geyser/supported-hosting-providers.mdx b/wiki/geyser/supported-hosting-providers.mdx index d879c3f..fc636c9 100644 --- a/wiki/geyser/supported-hosting-providers.mdx +++ b/wiki/geyser/supported-hosting-providers.mdx @@ -1,44 +1,16 @@ --- title: Supported Hosting Providers -description: A list of hosting providers and their support for Geyser. +description: Setup instructions for individual hosts are now part of the setup guide. +unlisted: true +crowdin_page_id: 44b3ae0c-1863-472d-bae8-d69a3d9b5ed6 --- -import { Provider } from "@site/src/components/Provider"; +import { Redirect } from '@docusaurus/router'; +import useBaseUrl from '@docusaurus/useBaseUrl'; -:::caution +{/* TODO: redirect to /hosting again once the hosting page launches */} +export const ToSetup = () => ; -These providers are not verified by the Geyser team, and the server providers below are reported as working by members of the community. + -::: - -:::info - -Using a "Free Host" may not give you the best experience at all. If you want better support, more freedom to control your server, and learn how to run one, PLEASE pay for a server. - -::: - -:::info - -The below information is for the plugin versions of Geyser unless otherwise specified - -::: - -
    - -:::info PLEASE NOTE - -This list is incomplete. Please open a [PR](https://github.com/GeyserMC/GeyserWebsite/pulls) or contact us on [Discord](https://discord.gg/geysermc) if the information is incorrect, or you want to add a new hosting provider! - -::: - -## Built-in Geyser \{#built-in-geyser} - - - -## Support for Geyser \{#support-for-geyser} - - - -## Does not support Geyser \{#does-not-support-geyser} - - +Setup instructions for individual hosts are now part of the [setup guide](/wiki/geyser/setup/). diff --git a/wiki/geyser/supported-versions.md b/wiki/geyser/supported-versions.mdx similarity index 71% rename from wiki/geyser/supported-versions.md rename to wiki/geyser/supported-versions.mdx index 534b4cd..e2ba544 100644 --- a/wiki/geyser/supported-versions.md +++ b/wiki/geyser/supported-versions.mdx @@ -1,23 +1,25 @@ --- title: Supported versions description: Information on the versions Geyser supports. +crowdin_sync: true +crowdin_page_id: f199ae24-f711-486d-8e42-3079be87e8cd --- import { Versions } from '@site/src/components/Versions' import DocCardList from '@theme/DocCardList'; -# Currently supported versions +# Currently supported versions \{#currently-supported-versions} :::info -**Geyser currently supports Minecraft Bedrock and Minecraft Java **. +**Geyser currently supports Minecraft Bedrock and Minecraft Java **. ::: -## Using Geyser with older Minecraft: Bedrock edition versions +## Using Geyser with older Minecraft: Bedrock edition versions \{#using-geyser-with-older-minecraft-bedrock-edition-versions} Older Bedrock versions are not supported. Minecraft: Bedrock Edition updates automatically on all platforms, so there are few users who would want to use older versions. Further, older Bedrock versions do not have all features which Geyser support, which would lead to a sub-par experience. -## Using Geyser on older Minecraft: Java edition servers -Geyser emulates a client, so a Java server must accept users using that version in order for Geyser to work. +## Using Geyser on older Minecraft: Java edition servers \{#using-geyser-on-older-minecraft-java-edition-servers} +Geyser emulates a client, so a Java server must accept users using that version in order for Geyser to work. This is possible thanks to [ViaVersion](https://viaversion.com/viaversion), which allows Java edition players with newer versions to join servers that run older versions of the game. @@ -30,10 +32,10 @@ In order for Bedrock players to chat (1.19.3+) or join (1.19.1/1.19.2), you need This is unfortunately not possible. You'll need to use a proxy such as Velocity or BungeeCord, or set up Geyser-Standalone separately with the [ViaVersion](https://viaversion.com/viaversion) plugin. Another alternative would be to install [ViaProxy](https://viaversion.com/viaproxy), which is a standalone ViaVersion proxy that translates between different Minecraft: Java edition versions, and to install Geyser-ViaProxy on it. -### Using Geyser on Fabric/NeoForge servers not on the latest Minecraft version {#fabric-neoforge-servers} +### Using Geyser on Fabric/NeoForge servers not on the latest Minecraft version \{#using-geyser-on-fabric-neoforge-servers-not-on-the-latest-minecraft-version} Unfortunately, Geyser-Fabric and Geyser-NeoForge only support the latest version of Minecraft: Java edition. The recommended way to still use Geyser with older versions would be to install [ViaProxy](https://viaversion.com/viaproxy), which is a standalone ViaVersion proxy that translates between different Minecraft: Java edition versions, and to install Geyser-ViaProxy on it. This will also work with Floodgate auth. ### Using Geyser-Velocity or Geyser-BungeeCord on a proxy -Make sure you update your proxy software to the latest available version, and, if the backend servers are not on , also install the [ViaVersion](https://viaversion.com/viaversion) plugin on the backend servers. Velocity/BungeeCord support most Minecraft versions, so you can update them regardless of the backend server versions. +Make sure you update your proxy software to the latest available version, and, if the backend servers are not on , also install the [ViaVersion](https://viaversion.com/viaversion) plugin on the backend servers. Velocity/BungeeCord support most Minecraft versions, so you can update them regardless of the backend server versions. diff --git a/wiki/geyser/translations.md b/wiki/geyser/translations.md index 3931c9c..488d887 100644 --- a/wiki/geyser/translations.md +++ b/wiki/geyser/translations.md @@ -1,6 +1,10 @@ --- title: Supported Languages & Translations -description: Geyser supports a wide variety of languages to offer the best experience for players all over the globe. Community members can help translate Geyser into more languages. +description: >- + Geyser supports a wide variety of languages to offer the best experience for + players all over the globe. Community members can help translate Geyser into + more languages. +crowdin_page_id: 16a33a31-9e93-4b38-9bed-aa41c7f98105 --- Geyser supports a wide variety of languages to offer the best experience for players all over the globe. diff --git a/wiki/geyser/using-geyser-with-consoles.md b/wiki/geyser/using-geyser-with-consoles.md index a068424..49ae10f 100644 --- a/wiki/geyser/using-geyser-with-consoles.md +++ b/wiki/geyser/using-geyser-with-consoles.md @@ -1,6 +1,9 @@ --- title: Using Geyser with Consoles -description: Information on how to use Geyser with consoles, including how to join servers on console versions of Bedrock Edition. +description: >- + Information on how to use Geyser with consoles, including how to join servers + on console versions of Bedrock Edition. +crowdin_page_id: 2b692367-58d4-469b-a795-0621539456eb --- # Using Geyser with Consoles diff --git a/wiki/index.mdx b/wiki/index.mdx index 5571e3e..dde6624 100644 --- a/wiki/index.mdx +++ b/wiki/index.mdx @@ -1,7 +1,8 @@ --- title: Overview of this wiki permalink: /wiki/ -description: 'This page provides an overview over all sections of the GeyserMC wiki' +description: This page provides an overview over all sections of the GeyserMC wiki +crowdin_page_id: ebc20500-ab3e-482d-b065-a517d4eae3a6 --- import DocCardList from '@theme/DocCardList' @@ -10,6 +11,7 @@ import DocCardList from '@theme/DocCardList' The GeyserMC wiki offers guides on different projects. Select the one you are interested in below! +````mdx-code-block \ No newline at end of file +]} /> +```` diff --git a/wiki/other/community-geyser-projects.md b/wiki/other/community-geyser-projects.md index d097c77..7117dfe 100644 --- a/wiki/other/community-geyser-projects.md +++ b/wiki/other/community-geyser-projects.md @@ -1,6 +1,9 @@ --- title: Community Geyser Projects -description: A list of community-compiled plugins, extensions and tools that work with Geyser. +description: >- + A list of community-compiled plugins, extensions and tools that work with + Geyser. +crowdin_page_id: 799ddbf8-3cac-44e9-9d24-7fc6c29c4b0e --- Below is a list of community-compiled plugins, extensions and tools that work with Geyser. @@ -18,21 +21,21 @@ If you wish to add your own plugin to this list, please reach out in the #develo A Spigot shop plugin that uses Bedrock forms. -* [GitHub](https://github.com/kejonaMC/BedrockFormShop) +- [GitHub](https://github.com/kejonaMC/BedrockFormShop) Creator: [KejonaMC](https://github.com/kejonaMC) ## Bedrock Player Manager for Floodgate {#bedrock-player-manager-for-floodgate} A Spigot plugin that is able to run certain commands when a Bedrock player joins, or have Bedrock players able to bypass the anticheat, etc. -* [Spigot page](https://www.spigotmc.org/resources/82278/) +- [Spigot page](https://www.spigotmc.org/resources/82278/) Creator: ofunny ## BedrockSkinUtility {#bedrockskinutility} This is a Fabric mod that allows you to view Bedrock capes from Java. -* [GitHub](https://github.com/Camotoy/BedrockSkinUtility) +- [GitHub](https://github.com/Camotoy/BedrockSkinUtility) Creator: [Camotoy](https://github.com/Camotoy) @@ -40,22 +43,22 @@ Creator: [Camotoy](https://github.com/Camotoy) A SkinAPI that displays Java or Bedrock skins based on the UUID or username. -* [Website](https://docs.creepernation.net) +- [Website](https://docs.creepernation.net) Creators: [creeperz653](https://github.com/creeperz653), [BlueTree242](https://github.com/BlueTree242) ## CrossplatForms {#crossplatforms} A Spigot, BungeeCord, and Velocity plugin to create custom Bedrock Edition forms and inventory menus through configurations. -* [Spigot page](https://www.spigotmc.org/resources/101043/) -* [GitHub](https://github.com/kejonaMC/CrossplatForms) +- [Spigot page](https://www.spigotmc.org/resources/101043/) +- [GitHub](https://github.com/kejonaMC/CrossplatForms) Creators: [Konicai](https://github.com/Konicai), [Jens](https://github.com/Jens-Co) ## CustomCommandPrefix {#customcommandprefix} A Spigot plugin that allows users to enter commands starting with `.`, to work around Xbox achievements being disabled. -* [Spigot page](https://www.spigotmc.org/resources/87224/) -* [GitHub](https://github.com/ChewMC/CustomCommandPrefix) +- [Spigot page](https://www.spigotmc.org/resources/87224/) +- [GitHub](https://github.com/ChewMC/CustomCommandPrefix) Creator: [Chew](https://github.com/Chew) @@ -81,52 +84,52 @@ Creators: [dima_dencep](https://github.com/dima-dencep), [Zigy](https://github.c ## FloodgatePlaceholders {#floodgateplaceholders} Placeholders support for Floodgate. -* [GitHub](https://github.com/rtm516/FloodgatePlaceholders) -* [eCloud](https://api.extendedclip.com/expansions/floodgate/) +- [GitHub](https://github.com/rtm516/FloodgatePlaceholders) +- [eCloud](https://api.extendedclip.com/expansions/floodgate/) Creator: [rtm516](https://github.com/rtm516) ## Floodgate-Skript {#floodgate-skript} Floodgate support for Skript. -* [GitHub](https://github.com/kejonaMC/floodgate-skript) +- [GitHub](https://github.com/kejonaMC/floodgate-skript) Creator: [Camotoy](https://github.com/Camotoy) ## GeyserBlockJavaPlayers {#geyserblockjavaplayers} Plugin that blocks Java players from joining your Geyser server, so you can have a Bedrock only server that can use Spigot plugins. -* [GitHub](https://github.com/kejonaMC/GeyserBlockJavaPlayers) +- [GitHub](https://github.com/kejonaMC/GeyserBlockJavaPlayers) Creator: [Camotoy](https://github.com/Camotoy) ## GeyserExtras {#geyserextras} A Geyser extension / plugin which attempts to unify features for Bedrock Edition players, including features like a cleaner looking combat cooldown, combat sounds and other helpful features and workarounds. -* [Modrinth](https://modrinth.com/plugin/geyserextras) -* [Hangar](https://hangar.papermc.io/GeyserExtras/GeyserExtras) -* [GitHub](https://github.com/GeyserExtras/GeyserExtras) +- [Modrinth](https://modrinth.com/plugin/geyserextras) +- [Hangar](https://hangar.papermc.io/GeyserExtras/GeyserExtras) +- [GitHub](https://github.com/GeyserExtras/GeyserExtras) Creator: [LetsGoAway](https://github.com/letsgoawaydev) ## GeyserPreventServerSwitch {#geyserpreventserverswitch} Prevent Bedrock players from joining specific sub-servers on a proxy -* [GitHub](https://github.com/kejonaMC/GeyserPreventServerSwitch) +- [GitHub](https://github.com/kejonaMC/GeyserPreventServerSwitch) Creator: [Camotoy](https://github.com/Camotoy) ## GeyserSkinManager {#geyserskinmanager} Spigot and Bungee plugin to make Bedrock skins work; requires Geyser to be installed on the server. -* [GitHub](https://github.com/Camotoy/GeyserSkinManager) +- [GitHub](https://github.com/Camotoy/GeyserSkinManager) Creator: [Camotoy](https://github.com/Camotoy) ## GeyserUpdater {#geyserupdater} This is a Spigot/BungeeCord/Velocity plugin that can be used to automatically update Geyser. -* [GitHub](https://github.com/kejonaMC/GeyserUpdater) -* [Spigot page](https://www.spigotmc.org/resources/88555/) +- [GitHub](https://github.com/kejonaMC/GeyserUpdater) +- [Spigot page](https://www.spigotmc.org/resources/88555/) Creators: [Jens](https://github.com/Jens-Co), [YHDiamond](https://github.com/YHDiamond), [Konicai](https://github.com/Konicai) @@ -142,7 +145,7 @@ Creator: [muhdfdeen](https://github.com/muhdfdeen) ## SleepingServerStarter {#sleepingserverstarter} Small application that waits for a player to connect before launching actual minecraft server. -* [GitHub](https://github.com/vincss/mcsleepingserverstarter) +- [GitHub](https://github.com/vincss/mcsleepingserverstarter) Creator: [Vincss](https://github.com/vincss) diff --git a/wiki/other/developer-guide.md b/wiki/other/developer-guide.md index 52e1af7..4c11296 100644 --- a/wiki/other/developer-guide.md +++ b/wiki/other/developer-guide.md @@ -1,6 +1,7 @@ --- title: Developer Guide description: A guide for developers who want to contribute to GeyserMC projects. +crowdin_page_id: 4bb5f78c-33f5-4fb1-8950-a01e8f896f39 --- # Compiling {#compiling} @@ -13,10 +14,10 @@ description: A guide for developers who want to contribute to GeyserMC projects. Geyser's code is divided into different modules. For example: -* `bootstrap` is where we hold the specific platform code. So if you're porting Geyser to a new platform, or working with platform-specific code, you likely want to be in here. -* `core` is where connections are handled and the data/packet conversion is done. The majority of Geyser work is held here. -* `api` is where the Geyser API is found. -* `build-logic` is where the Kotlin Gradle plugins used to build Geyser are. +- `bootstrap` is where we hold the specific platform code. So if you're porting Geyser to a new platform, or working with platform-specific code, you likely want to be in here. +- `core` is where connections are handled and the data/packet conversion is done. The majority of Geyser work is held here. +- `api` is where the Geyser API is found. +- `build-logic` is where the Kotlin Gradle plugins used to build Geyser are. # Compiler/IDE Tools {#compiler-ide-tools} diff --git a/wiki/other/discord-bot-usage.md b/wiki/other/discord-bot-usage.md index 3e74118..e12f989 100644 --- a/wiki/other/discord-bot-usage.md +++ b/wiki/other/discord-bot-usage.md @@ -1,6 +1,7 @@ --- title: Discord Bot Usage description: Information about how to use the Geyser Discord bot. +crowdin_page_id: 1f34e77a-dfd9-4c34-9433-7b7cc610fdac --- Our discord bot provides some very useful toos to debug/issue track your server. We will go in-depth on how to use the bot commands and its tools. @@ -29,7 +30,7 @@ If the bot returns `Unable to find Java/Bedrock server at the requested address` ## Provider List {#provider-list} -Some hosting providers have unique setup methods for Geyser. If you do not know how to setup Geyser on your provider you can either checkout the [Geyser Host Provider List](/wiki/geyser/supported-hosting-providers/) manually, or use our bot command `/provider "providername"` as seen below. +Some hosting providers have unique setup methods for Geyser. If you do not know how to setup Geyser on your provider you can either select your provider in the [setup guide](/wiki/geyser/setup/), or use our bot command `/provider "providername"` as seen below. ![Example of the provider command](/img/wiki/discord-bot/provider.png) diff --git a/wiki/other/geyserconnect.md b/wiki/other/geyserconnect.md index ee6eece..fc7653e 100644 --- a/wiki/other/geyserconnect.md +++ b/wiki/other/geyserconnect.md @@ -1,6 +1,9 @@ --- title: GeyserConnect -description: GeyserConnect is a extension for Geyser that allows you to join multiple servers using a single Geyser proxy. +description: >- + GeyserConnect is a extension for Geyser that allows you to join multiple + servers using a single Geyser proxy. +crowdin_page_id: 2cb4e25c-82d5-48a2-b0b5-92239e82e845 --- GeyserConnect is a extension for Geyser that allows you to join multiple servers using a single GeyserMC proxy. diff --git a/wiki/other/geyserintegratedpack.md b/wiki/other/geyserintegratedpack.md index 2c222e2..8e8f7a0 100644 --- a/wiki/other/geyserintegratedpack.md +++ b/wiki/other/geyserintegratedpack.md @@ -1,6 +1,9 @@ --- title: GeyserIntegratedPack -description: GeyserIntegratedPack is a Bedrock resource pack that fixes parity issues with Geyser to bring Bedrock Edition in line with Java Edition. +description: >- + GeyserIntegratedPack is a Bedrock resource pack that fixes parity issues with + Geyser to bring Bedrock Edition in line with Java Edition. +crowdin_page_id: 6fa53f1f-ce87-4a0e-9a57-df4ce90b0023 --- :::info diff --git a/wiki/other/geyseroptionalpack.md b/wiki/other/geyseroptionalpack.md index 5cdd804..f0b25e8 100644 --- a/wiki/other/geyseroptionalpack.md +++ b/wiki/other/geyseroptionalpack.md @@ -1,6 +1,9 @@ --- title: GeyserOptionalPack -description: GeyserOptionalPack is a Bedrock resource pack that fixes parity issues with Geyser to bring Bedrock Edition in line with Java Edition. +description: >- + GeyserOptionalPack is a Bedrock resource pack that fixes parity issues with + Geyser to bring Bedrock Edition in line with Java Edition. +crowdin_page_id: 364493c4-0184-4baa-bf19-29cd5a523491 --- # GeyserOptionalPack diff --git a/wiki/other/hurricane.md b/wiki/other/hurricane.md index 237b2a9..505a64d 100644 --- a/wiki/other/hurricane.md +++ b/wiki/other/hurricane.md @@ -1,6 +1,9 @@ --- title: Hurricane -description: Hurricane is a Paper / Spigot plugin and Fabric / NeoForge mod that fixes some bugs that otherwise cannot be fixed without server-side modification. +description: >- + Hurricane is a Paper / Spigot plugin and Fabric / NeoForge mod that fixes some + bugs that otherwise cannot be fixed without server-side modification. +crowdin_page_id: c397583f-9720-4a6f-9ce5-e151600d8196 --- # Hurricane @@ -22,4 +25,4 @@ Supported Versions: ## Source {#source} - Main: [GeyserMC/Hurricane](https://github.com/GeyserMC/Hurricane) -- Unofficial mod fork: [onebeastchris/Hurricane-Modded](https://github.com/onebeastchris/Hurricane-Modded) \ No newline at end of file +- Unofficial mod fork: [onebeastchris/Hurricane-Modded](https://github.com/onebeastchris/Hurricane-Modded) diff --git a/wiki/other/hydraulic.md b/wiki/other/hydraulic.md index 01bd0e5..cc68d7f 100644 --- a/wiki/other/hydraulic.md +++ b/wiki/other/hydraulic.md @@ -1,6 +1,9 @@ --- title: Hydraulic -description: 'Hydraulic is a companion to Geyser which allows for Bedrock players to join modded Minecraft: Java Edition servers.' +description: >- + Hydraulic is a companion to Geyser which allows for Bedrock players to join + modded Minecraft: Java Edition servers. +crowdin_page_id: 9a0f2967-c806-4ac0-8a1d-3481a6e65f90 --- Hydraulic is a companion to Geyser which allows for Bedrock players to join modded Minecraft: Java Edition servers. diff --git a/wiki/other/index.mdx b/wiki/other/index.mdx index df3949e..00b333d 100644 --- a/wiki/other/index.mdx +++ b/wiki/other/index.mdx @@ -1,7 +1,8 @@ --- title: Overview permalink: /other/ -description: 'Other projects or guides not directly referring to Geyser or Floodgate.' +description: Other projects or guides not directly referring to Geyser or Floodgate. +crowdin_page_id: 7b8484bd-79ef-4867-ae1b-6d35acf96c48 --- import DocCardList from '@theme/DocCardList' @@ -12,6 +13,7 @@ import { useDocById } from '@docusaurus/plugin-content-docs/client' The "other" category provides you with information about different projects that are not Geyser or Floodgate. This includes community projects, but also other projects by the GeyserMC team, such as Hurricane or Hydraulic. +````mdx-code-block \ No newline at end of file +})} /> +```` diff --git a/wiki/other/rainbow.md b/wiki/other/rainbow.md index 2e3714c..5b49bcb 100644 --- a/wiki/other/rainbow.md +++ b/wiki/other/rainbow.md @@ -1,6 +1,7 @@ --- title: Rainbow description: A tool to convert custom content to Bedrock. +crowdin_page_id: 36ba71a2-79ae-41ba-aba7-3e95609afbec --- Rainbow is a client-sided Minecraft mod to convert resource packs with custom content created for Java Edition to diff --git a/wiki/other/test-server.md b/wiki/other/test-server.md index d1ea689..210760d 100644 --- a/wiki/other/test-server.md +++ b/wiki/other/test-server.md @@ -1,6 +1,7 @@ --- title: Test Server description: Information about joining and using the Geyser test server. +crowdin_page_id: aa554cbe-0e59-4d71-b185-59af743471d8 --- ### Details {#details} diff --git a/wiki/other/thirdpartycosmetics.md b/wiki/other/thirdpartycosmetics.md index bdcea0a..e45b39f 100644 --- a/wiki/other/thirdpartycosmetics.md +++ b/wiki/other/thirdpartycosmetics.md @@ -1,6 +1,7 @@ --- title: ThirdPartyCosmetics description: An optional Bedrock resource pack to extend Geyser functionality. +crowdin_page_id: d5a3bd38-3b97-4068-8051-f0247e12acc1 --- ## [Download here](/download/?project=other-projects&thirdpartycosmetics=expanded) {#download-here} @@ -10,4 +11,4 @@ ThirdPartyCosmetics is an extension that adds support for loading ears and other ## Installation 1. Install Geyser for your platform 2. Drop the `ThirdPartyCosmetics.jar` into the Geyser `extensions` folder (EG: `plugins/Geyser-Spigot/extensions`) -3. Start the server \ No newline at end of file +3. Start the server diff --git a/wiki/other/thunder.md b/wiki/other/thunder.md index 5cdcac3..2151486 100644 --- a/wiki/other/thunder.md +++ b/wiki/other/thunder.md @@ -1,6 +1,9 @@ --- title: Thunder -description: 'A java application to convert simple Java Edition resource packs to Bedrock Edition ones.' +description: >- + A java application to convert simple Java Edition resource packs to Bedrock + Edition ones. +crowdin_page_id: 194ebe0d-d12b-4e7d-bd8c-5e9f7415b43a --- Thunder is a java application to convert simple Java Edition resource packs to Bedrock Edition ones. diff --git a/yarn.lock b/yarn.lock index a1ecf5b..d1c0e71 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,129 +2,171 @@ # Manual changes might be lost - proceed with caution! __metadata: - version: 8 + version: 10 cacheKey: 10c0 -"@algolia/autocomplete-core@npm:1.9.3": - version: 1.9.3 - resolution: "@algolia/autocomplete-core@npm:1.9.3" +"@11ty/gray-matter@npm:^1.0.0": + version: 1.0.0 + resolution: "@11ty/gray-matter@npm:1.0.0" dependencies: - "@algolia/autocomplete-plugin-algolia-insights": "npm:1.9.3" - "@algolia/autocomplete-shared": "npm:1.9.3" - checksum: 10c0/a751b20f15c9a30b8b2d5a4f1f62fb4dbd012fb7ffec1b12308d6e7388b5a4dc83af52176634f17facb57a7727204843c5aa2f6e80efafaaf244275f44af11d9 + js-yaml: "npm:^4.1.0" + kind-of: "npm:^6.0.3" + section-matter: "npm:^1.0.0" + strip-bom-string: "npm:^1.0.0" + checksum: 10c0/734361398905ff53ab5827d870bf83e010567f0b397ee853b67b749f76c2ae4be21eda4f2eb0e3909609cd22962adc377fbbf9ceb7e86cc5dd5cce48bd2bcfb9 languageName: node linkType: hard -"@algolia/autocomplete-plugin-algolia-insights@npm:1.9.3": - version: 1.9.3 - resolution: "@algolia/autocomplete-plugin-algolia-insights@npm:1.9.3" +"@algolia/abtesting@npm:1.26.0": + version: 1.26.0 + resolution: "@algolia/abtesting@npm:1.26.0" dependencies: - "@algolia/autocomplete-shared": "npm:1.9.3" + "@algolia/client-common": "npm:5.60.0" + "@algolia/requester-browser-xhr": "npm:5.60.0" + "@algolia/requester-fetch": "npm:5.60.0" + "@algolia/requester-node-http": "npm:5.60.0" + checksum: 10c0/951c0dbf2b82d835c4f261ecd76def61b1ad14ab5e09793541d2024c0ecc09d14d06e2579d484497d062f601d4ab93c037a0c93bf4abcd3779bfbc8506b29502 + languageName: node + linkType: hard + +"@algolia/autocomplete-core@npm:1.19.2": + version: 1.19.2 + resolution: "@algolia/autocomplete-core@npm:1.19.2" + dependencies: + "@algolia/autocomplete-plugin-algolia-insights": "npm:1.19.2" + "@algolia/autocomplete-shared": "npm:1.19.2" + checksum: 10c0/383952bc43a31f0771987416c350471824e480fcd15e1db8ae13386cd387879f1c81eadafceffa69f87e6b8e59fb1aa713da375fc07a30c5d8edb16a157b5f45 + languageName: node + linkType: hard + +"@algolia/autocomplete-core@npm:^1.19.2": + version: 1.19.12 + resolution: "@algolia/autocomplete-core@npm:1.19.12" + dependencies: + "@algolia/autocomplete-plugin-algolia-insights": "npm:1.19.12" + "@algolia/autocomplete-shared": "npm:1.19.12" + checksum: 10c0/b9ac5828225bc829bae4fbff523ac79dd189eba017b9e0cb69421a8782f0a378592fffd534cee0f9a27975dd5a19b28a68cebda823d9ab9148d90cd4d31b8c11 + languageName: node + linkType: hard + +"@algolia/autocomplete-plugin-algolia-insights@npm:1.19.12": + version: 1.19.12 + resolution: "@algolia/autocomplete-plugin-algolia-insights@npm:1.19.12" + dependencies: + "@algolia/autocomplete-shared": "npm:1.19.12" peerDependencies: search-insights: ">= 1 < 3" - checksum: 10c0/574196f66fe828be1029439032376685020524d6c729dea99caef336cc7be244d2539fa91b3fe80db80efe3420c2c05063cab3534514be6c637bf1914b17a6f6 + checksum: 10c0/4735fbbd646c03771410f36271ebb2f2ee514f342cd2963f54aa62770df1c037653c2544116dc841774870d6ea03cecc689f714673c5d70b8092e58be1a99e61 languageName: node linkType: hard -"@algolia/autocomplete-preset-algolia@npm:1.9.3": - version: 1.9.3 - resolution: "@algolia/autocomplete-preset-algolia@npm:1.9.3" +"@algolia/autocomplete-plugin-algolia-insights@npm:1.19.2": + version: 1.19.2 + resolution: "@algolia/autocomplete-plugin-algolia-insights@npm:1.19.2" dependencies: - "@algolia/autocomplete-shared": "npm:1.9.3" + "@algolia/autocomplete-shared": "npm:1.19.2" + peerDependencies: + search-insights: ">= 1 < 3" + checksum: 10c0/8548b6514004dbf6fb34d6da176ac911371f3e84724ef6b94600cd84d29339d2f44cead03d7c0d507b130da0d9acc61f6e4c9a0fba6f967a5ae2a42eea93f0c1 + languageName: node + linkType: hard + +"@algolia/autocomplete-shared@npm:1.19.12": + version: 1.19.12 + resolution: "@algolia/autocomplete-shared@npm:1.19.12" peerDependencies: "@algolia/client-search": ">= 4.9.1 < 6" algoliasearch: ">= 4.9.1 < 6" - checksum: 10c0/38c1872db4dae69b4eec622db940c7a992d8530e33fbac7df593473ef404312076d9933b4a7ea25c2d401ea5b62ebd64b56aa25b5cdd8e8ba3fd309a39d9d816 + checksum: 10c0/bfd617022ce3aaff6db4edf9a2504b355c4383f1ac7a6ca43f4cb07259a69de2d69665dfa8b794ff4dab871a3333c9d297ab0b4f067d1860114b280734714c36 languageName: node linkType: hard -"@algolia/autocomplete-shared@npm:1.9.3": - version: 1.9.3 - resolution: "@algolia/autocomplete-shared@npm:1.9.3" +"@algolia/autocomplete-shared@npm:1.19.2": + version: 1.19.2 + resolution: "@algolia/autocomplete-shared@npm:1.19.2" peerDependencies: "@algolia/client-search": ">= 4.9.1 < 6" algoliasearch: ">= 4.9.1 < 6" - checksum: 10c0/1aa926532c32be6bb5384c8c0ae51a312c9d79ed7486371218dfcb61c8ea1ed46171bdc9f9b596a266aece104a0ef76d6aac2f9a378a5a6eb4460e638d59f6ae + checksum: 10c0/eee6615e6d9e6db7727727e442b876a554a6eda6f14c1d55d667ed2d14702c4c888a34b9bfb18f66ccc6d402995b2c7c37ace9f19ce9fc9c83bbb623713efbc4 languageName: node linkType: hard -"@algolia/cache-browser-local-storage@npm:4.24.0": - version: 4.24.0 - resolution: "@algolia/cache-browser-local-storage@npm:4.24.0" +"@algolia/client-abtesting@npm:5.60.0": + version: 5.60.0 + resolution: "@algolia/client-abtesting@npm:5.60.0" dependencies: - "@algolia/cache-common": "npm:4.24.0" - checksum: 10c0/68823c3b1c07dab093de98e678e2ff7fcf7a40915a157715f6f51d073e3865086be98cbbe554b7bf9e0514db5dd9e726033e27e566d9e5db059cb5059c3436cc + "@algolia/client-common": "npm:5.60.0" + "@algolia/requester-browser-xhr": "npm:5.60.0" + "@algolia/requester-fetch": "npm:5.60.0" + "@algolia/requester-node-http": "npm:5.60.0" + checksum: 10c0/47a9f68a84635ab81baf71b05dd0f0b9d81398bd898abf42c975d93ea3736e4be9966392ed27e7548c60674c1b1c5d9888c444888d458c5d54b1c07051bb9ff1 languageName: node linkType: hard -"@algolia/cache-common@npm:4.24.0": - version: 4.24.0 - resolution: "@algolia/cache-common@npm:4.24.0" - checksum: 10c0/ad481ad50d7ea92d0cce525757627f4a647b5373dc6d3cbed6405d05cb83f21a110919e7133e5233d5b13c2c8f59ed9e927efdbc82e70571707709075b07d2c6 - languageName: node - linkType: hard - -"@algolia/cache-in-memory@npm:4.24.0": - version: 4.24.0 - resolution: "@algolia/cache-in-memory@npm:4.24.0" +"@algolia/client-analytics@npm:5.60.0": + version: 5.60.0 + resolution: "@algolia/client-analytics@npm:5.60.0" dependencies: - "@algolia/cache-common": "npm:4.24.0" - checksum: 10c0/2956600b2722f113373dbb71449f546afb5a0fb1a3d1558a1a3e957b7a630d1f25045c29646c8dbb44cdffe6ff4c9d1219bf63fc9fd8e4d5467381c7150e09f9 + "@algolia/client-common": "npm:5.60.0" + "@algolia/requester-browser-xhr": "npm:5.60.0" + "@algolia/requester-fetch": "npm:5.60.0" + "@algolia/requester-node-http": "npm:5.60.0" + checksum: 10c0/e095f8c2c9ccaf2b6413cb28a28ac38ba3752092c7f28bd8eca41272008af70c5edd4456ac0050aa2f0188075f88f088a886ac3fe6302c857fc27692df513154 languageName: node linkType: hard -"@algolia/client-account@npm:4.24.0": - version: 4.24.0 - resolution: "@algolia/client-account@npm:4.24.0" - dependencies: - "@algolia/client-common": "npm:4.24.0" - "@algolia/client-search": "npm:4.24.0" - "@algolia/transporter": "npm:4.24.0" - checksum: 10c0/3dd52dd692a2194eb45844280e6261192d5a4ef99aec729a09a01da5cf071fd77b37c6d164bf8877823efc1484d576068d76ada764a4f0624238a3475bc199b2 +"@algolia/client-common@npm:5.60.0": + version: 5.60.0 + resolution: "@algolia/client-common@npm:5.60.0" + checksum: 10c0/9d0873882d80276286e272568a6f6e91cfaac5c29a932482f37aed144380fca0b3a8f65cfbd0b5f12d8bda2f3392268d20d17b9dffc641cd4d76b9712b44fecb languageName: node linkType: hard -"@algolia/client-analytics@npm:4.24.0": - version: 4.24.0 - resolution: "@algolia/client-analytics@npm:4.24.0" +"@algolia/client-insights@npm:5.60.0": + version: 5.60.0 + resolution: "@algolia/client-insights@npm:5.60.0" dependencies: - "@algolia/client-common": "npm:4.24.0" - "@algolia/client-search": "npm:4.24.0" - "@algolia/requester-common": "npm:4.24.0" - "@algolia/transporter": "npm:4.24.0" - checksum: 10c0/8d02e6d0eb0dcde099832c62fa7d7e9910b2757b4d37e07e1eefb65a12fef7e7ce3d73fda23e8ee02d53953a91efc15086016b1af5e9fea9227dfc0fc61c9f63 + "@algolia/client-common": "npm:5.60.0" + "@algolia/requester-browser-xhr": "npm:5.60.0" + "@algolia/requester-fetch": "npm:5.60.0" + "@algolia/requester-node-http": "npm:5.60.0" + checksum: 10c0/dbc85a48e544d0e065a64cc42103f8531ed4e1312b19e6ae308d481dd1ec2b30b6bb612f0301ae348f57d1273cb697d853b15c7e0bdede4bd74c880cdef29d39 languageName: node linkType: hard -"@algolia/client-common@npm:4.24.0": - version: 4.24.0 - resolution: "@algolia/client-common@npm:4.24.0" +"@algolia/client-personalization@npm:5.60.0": + version: 5.60.0 + resolution: "@algolia/client-personalization@npm:5.60.0" dependencies: - "@algolia/requester-common": "npm:4.24.0" - "@algolia/transporter": "npm:4.24.0" - checksum: 10c0/9e75d0bb51bb04f099e823e4397d1bac6659e1ecb7c7a73a5eaf9153632d544bd6c62a4961b606490220b236361eb8b7b77a5e4c47f12aefdd2952b14ce2fd18 + "@algolia/client-common": "npm:5.60.0" + "@algolia/requester-browser-xhr": "npm:5.60.0" + "@algolia/requester-fetch": "npm:5.60.0" + "@algolia/requester-node-http": "npm:5.60.0" + checksum: 10c0/7367fc7878623d8b9627be7453b67c1b04dab42d0b89b1d4390d1fb4ecbb89e80c168c5f1c263cef6968c8cac1323efa11555f442a1600b9b149cccf2bfa5e70 languageName: node linkType: hard -"@algolia/client-personalization@npm:4.24.0": - version: 4.24.0 - resolution: "@algolia/client-personalization@npm:4.24.0" +"@algolia/client-query-suggestions@npm:5.60.0": + version: 5.60.0 + resolution: "@algolia/client-query-suggestions@npm:5.60.0" dependencies: - "@algolia/client-common": "npm:4.24.0" - "@algolia/requester-common": "npm:4.24.0" - "@algolia/transporter": "npm:4.24.0" - checksum: 10c0/9193e032841ae991ce6dd8c8988608d0d83a6785681abf26055812506aaf070db8d8f44403d0270384ff39530677603d103c330a869a397181d594bebe46b4b0 + "@algolia/client-common": "npm:5.60.0" + "@algolia/requester-browser-xhr": "npm:5.60.0" + "@algolia/requester-fetch": "npm:5.60.0" + "@algolia/requester-node-http": "npm:5.60.0" + checksum: 10c0/edb45ae6ecee03e21d7e8038cc5673962cf4017a750b23cd0f68e0bea3b079f0840fb5a51a2086eddb6d8b944ee8bfe3d982be25967c3a57628baf329a98e0f4 languageName: node linkType: hard -"@algolia/client-search@npm:4.24.0": - version: 4.24.0 - resolution: "@algolia/client-search@npm:4.24.0" +"@algolia/client-search@npm:5.60.0": + version: 5.60.0 + resolution: "@algolia/client-search@npm:5.60.0" dependencies: - "@algolia/client-common": "npm:4.24.0" - "@algolia/requester-common": "npm:4.24.0" - "@algolia/transporter": "npm:4.24.0" - checksum: 10c0/d161235014fa73acc0ff04d737c695b7357c060d31db6d602464b27ba846208c6aeb35b179e76d4c33b51329b77de0c460f6cb21b66d364c18a5534874c7b987 + "@algolia/client-common": "npm:5.60.0" + "@algolia/requester-browser-xhr": "npm:5.60.0" + "@algolia/requester-fetch": "npm:5.60.0" + "@algolia/requester-node-http": "npm:5.60.0" + checksum: 10c0/99d6312d5401e606704bac82c521272907d20334b69f3315ee075fab7fcc65207bd76bc8b3b38435dafd578df531de338e7fed7026d51ea32257ee663c02c39f languageName: node linkType: hard @@ -135,74 +177,66 @@ __metadata: languageName: node linkType: hard -"@algolia/logger-common@npm:4.24.0": - version: 4.24.0 - resolution: "@algolia/logger-common@npm:4.24.0" - checksum: 10c0/1ebe93901a2b3ce41696b535d028337c1c6a98a4262868117c16dd603cc8bb106b840e45cf53c08d098cf518e07bedc64a59cc86bef18795dc49031c2c208d31 - languageName: node - linkType: hard - -"@algolia/logger-console@npm:4.24.0": - version: 4.24.0 - resolution: "@algolia/logger-console@npm:4.24.0" +"@algolia/ingestion@npm:1.60.0": + version: 1.60.0 + resolution: "@algolia/ingestion@npm:1.60.0" dependencies: - "@algolia/logger-common": "npm:4.24.0" - checksum: 10c0/fdfa3983e6c38cc7b69d66e1085ac702e009d693bd49d64b27cad9ba4197788a8784529a8ed9c25e6ccd51cc4ad3a2427241ecc322c22ca2c8ce6a8d4d94fe69 + "@algolia/client-common": "npm:5.60.0" + "@algolia/requester-browser-xhr": "npm:5.60.0" + "@algolia/requester-fetch": "npm:5.60.0" + "@algolia/requester-node-http": "npm:5.60.0" + checksum: 10c0/a70fe265582f0540c55f3d1560a8c6874f6273c875cafbdb9bf0ae59dfcc9a2cc0c13191059815f0761e4c235699701eecab39f6f6a49a6b04c178e5f8b05420 languageName: node linkType: hard -"@algolia/recommend@npm:4.24.0": - version: 4.24.0 - resolution: "@algolia/recommend@npm:4.24.0" +"@algolia/monitoring@npm:1.60.0": + version: 1.60.0 + resolution: "@algolia/monitoring@npm:1.60.0" dependencies: - "@algolia/cache-browser-local-storage": "npm:4.24.0" - "@algolia/cache-common": "npm:4.24.0" - "@algolia/cache-in-memory": "npm:4.24.0" - "@algolia/client-common": "npm:4.24.0" - "@algolia/client-search": "npm:4.24.0" - "@algolia/logger-common": "npm:4.24.0" - "@algolia/logger-console": "npm:4.24.0" - "@algolia/requester-browser-xhr": "npm:4.24.0" - "@algolia/requester-common": "npm:4.24.0" - "@algolia/requester-node-http": "npm:4.24.0" - "@algolia/transporter": "npm:4.24.0" - checksum: 10c0/685fb5c1d85d7b9fd39d9246b49da5be4199fecc144bb350ed92fc191b66e4e1101ee6df9ca857ac5096f587638fa3366e01ddca0258f11000aa092ed68daea3 + "@algolia/client-common": "npm:5.60.0" + "@algolia/requester-browser-xhr": "npm:5.60.0" + "@algolia/requester-fetch": "npm:5.60.0" + "@algolia/requester-node-http": "npm:5.60.0" + checksum: 10c0/be279165667b1a07508c8d66bb7109c2d40d0f21ca2ee427277517191aaff5145744d9fcd7bbe6b6d9b16e62962531652ac670383037564bbf0e439d3ff02eee languageName: node linkType: hard -"@algolia/requester-browser-xhr@npm:4.24.0": - version: 4.24.0 - resolution: "@algolia/requester-browser-xhr@npm:4.24.0" +"@algolia/recommend@npm:5.60.0": + version: 5.60.0 + resolution: "@algolia/recommend@npm:5.60.0" dependencies: - "@algolia/requester-common": "npm:4.24.0" - checksum: 10c0/2d277b291bcc0a388f114116879c15a96c057f698b026c32e719b354c2e2e03e05b3c304f45d2354eb4dd8dfa519d481af51ce8ef19b6fb4fd6d384cf41373de + "@algolia/client-common": "npm:5.60.0" + "@algolia/requester-browser-xhr": "npm:5.60.0" + "@algolia/requester-fetch": "npm:5.60.0" + "@algolia/requester-node-http": "npm:5.60.0" + checksum: 10c0/0c973bb284b714829415748f5863f869bf27893b22349020cb002e054e3c3735262ba9e0f21eb498a051f166d6a8287e0037085739c76e7732859299313f5036 languageName: node linkType: hard -"@algolia/requester-common@npm:4.24.0": - version: 4.24.0 - resolution: "@algolia/requester-common@npm:4.24.0" - checksum: 10c0/cf88ca1f04f4243515bbfa05d7cf51afe6a57904390d9e1ccab799bae20f6fa77e954d9eee9d5c718086582aeb478e271ccf1d5a6a5ab943494250dce820268e - languageName: node - linkType: hard - -"@algolia/requester-node-http@npm:4.24.0": - version: 4.24.0 - resolution: "@algolia/requester-node-http@npm:4.24.0" +"@algolia/requester-browser-xhr@npm:5.60.0": + version: 5.60.0 + resolution: "@algolia/requester-browser-xhr@npm:5.60.0" dependencies: - "@algolia/requester-common": "npm:4.24.0" - checksum: 10c0/e9cef1463f29035a44f12941ddeb343a213ff512c61ade46a07db19b2023f49a5ac12024a3f56d8b9c0c5b2bd32466030c5e27b26a6a6e17773b810388ddb3b7 + "@algolia/client-common": "npm:5.60.0" + checksum: 10c0/a377fa8ecf272dab4a806c296a23fc0665ff7bcaac63801ab770fa67acc572b2b7dbfc92ef815bde120736c40b1e97e3c696aba2f7f54dd8de07c80540a35a2c languageName: node linkType: hard -"@algolia/transporter@npm:4.24.0": - version: 4.24.0 - resolution: "@algolia/transporter@npm:4.24.0" +"@algolia/requester-fetch@npm:5.60.0": + version: 5.60.0 + resolution: "@algolia/requester-fetch@npm:5.60.0" dependencies: - "@algolia/cache-common": "npm:4.24.0" - "@algolia/logger-common": "npm:4.24.0" - "@algolia/requester-common": "npm:4.24.0" - checksum: 10c0/9eee8e6613c8d2a5562e4df284dc7b0804a7bf80586fd8512ad769dc4829f947a334480378d94efd3cc57ca4d400886eb677786a3c5664f85881093f9e27cab7 + "@algolia/client-common": "npm:5.60.0" + checksum: 10c0/c3dbef6a63f1da7d4300f72f29c2b85343765dac1b8e9a04087054be425d59548cac763bcc84821b9b8e73344aa93cb3a61420fdd0d5975c88eb008f47457afe + languageName: node + linkType: hard + +"@algolia/requester-node-http@npm:5.60.0": + version: 5.60.0 + resolution: "@algolia/requester-node-http@npm:5.60.0" + dependencies: + "@algolia/client-common": "npm:5.60.0" + checksum: 10c0/2bc7d00b1be78c2aeaef58d7fd960a8440a41482c4886d32703aa25e5172f7edd9cc6b5bcbc04e057cc16354504cb5789f1007a093ff510bd8e4f417a413bc15 languageName: node linkType: hard @@ -216,14 +250,25 @@ __metadata: languageName: node linkType: hard -"@apidevtools/json-schema-ref-parser@npm:^11.5.4": - version: 11.6.4 - resolution: "@apidevtools/json-schema-ref-parser@npm:11.6.4" +"@antfu/install-pkg@npm:^2.0.1": + version: 2.1.0 + resolution: "@antfu/install-pkg@npm:2.1.0" dependencies: - "@jsdevtools/ono": "npm:^7.1.3" - "@types/json-schema": "npm:^7.0.15" - js-yaml: "npm:^4.1.0" - checksum: 10c0/d3bee219c93b81ad6228af6f74370e2d2c09af7e7f063bc4971fdd052088f1105c0f77039a43d15f0332574f927bc7c71c6a39d8ae81491ef3f06fabb5489b5b + package-manager-detector: "npm:^1.8.0" + tinyexec: "npm:^1.3.1" + checksum: 10c0/b4f448a7ffb6d4b5a2fabbdecc3d619e2dfb01cb4ab030d04cfda3b8d98c62c6bea795ae181716c2d5cd97f10d78bfbee892fa7319a8bb3b469df8648bdf1755 + languageName: node + linkType: hard + +"@apidevtools/json-schema-ref-parser@npm:^15.3.3": + version: 15.5.2 + resolution: "@apidevtools/json-schema-ref-parser@npm:15.5.2" + dependencies: + js-yaml: "npm:^5.2.2" + undici: "npm:^6.28.0" + peerDependencies: + "@types/json-schema": ^7.0.15 + checksum: 10c0/bf37d0c4f922a099232475c2b45cb18e1450751e1cea17744d6f36007796e527e79dc69a2ff4d2de377a7503a22457b7afd0fdcea6ae7d0b0bc771753c00a1c1 languageName: node linkType: hard @@ -2779,17 +2824,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime-corejs3@npm:^7.25.9": - version: 7.26.0 - resolution: "@babel/runtime-corejs3@npm:7.26.0" - dependencies: - core-js-pure: "npm:^3.30.2" - regenerator-runtime: "npm:^0.14.0" - checksum: 10c0/921fa27c004cf2b92f0d49efc2006cfc1a72d2a35c7374da8ec88d8b63543963e6ef29d4820e068a7892a7d553dc2bac7208aef8fef30642bc843b63255b650b - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.3, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.22.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2": +"@babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.3, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.22.6, @babel/runtime@npm:^7.8.4": version: 7.24.8 resolution: "@babel/runtime@npm:7.24.8" dependencies: @@ -2798,6 +2833,13 @@ __metadata: languageName: node linkType: hard +"@babel/runtime@npm:^7.18.3": + version: 7.29.10 + resolution: "@babel/runtime@npm:7.29.10" + checksum: 10c0/32f975da8e9c2cae6b33e1a477f8fe8bbff6722c982b5ce35f99affaf3a7a1b612c8272b43afa0e51d3000928d6f3ba38f9296301115db5640264907c027b0cd + languageName: node + linkType: hard + "@babel/runtime@npm:^7.25.9": version: 7.26.0 resolution: "@babel/runtime@npm:7.26.0" @@ -2883,6 +2925,53 @@ __metadata: languageName: node linkType: hard +"@braintree/sanitize-url@npm:^7.1.2": + version: 7.1.2 + resolution: "@braintree/sanitize-url@npm:7.1.2" + checksum: 10c0/62f2aa0cf58626e3880b2dc1025c42064b4639abd157ae4e1c35f4c2f5031e9273772046a423979845069c814e27ff818e8e669280dc53585e6f033d5b7a59cb + languageName: node + linkType: hard + +"@chevrotain/cst-dts-gen@npm:13.2.0": + version: 13.2.0 + resolution: "@chevrotain/cst-dts-gen@npm:13.2.0" + dependencies: + "@chevrotain/gast": "npm:13.2.0" + "@chevrotain/types": "npm:13.2.0" + checksum: 10c0/844c3bbed4b55e428597dca6e33d34073971c2a0d28a1e804995a89581d2de598d9823a44b6b45651aa8364fe46495fbe31074a319b99fb53123870b898c8718 + languageName: node + linkType: hard + +"@chevrotain/gast@npm:13.2.0": + version: 13.2.0 + resolution: "@chevrotain/gast@npm:13.2.0" + dependencies: + "@chevrotain/types": "npm:13.2.0" + checksum: 10c0/57b87780cb8941fa04781177fc73b40adc091b0daf822d45124bd1096f8b7b1c936013222e2f29cdb847bcb09e36586e8eb04710a8b8c9b65c91842e8bd5e703 + languageName: node + linkType: hard + +"@chevrotain/regexp-to-ast@npm:13.2.0": + version: 13.2.0 + resolution: "@chevrotain/regexp-to-ast@npm:13.2.0" + checksum: 10c0/ddba2885059d83b6cb56df12b6b30d96bcd8c90f1b43f541d8a9e9eeafcba37c7542ecf17b1a15d5a8f2ea9c969717523069bf034cf931003e91a2039c1c06e1 + languageName: node + linkType: hard + +"@chevrotain/types@npm:13.2.0, @chevrotain/types@npm:~13.2.0": + version: 13.2.0 + resolution: "@chevrotain/types@npm:13.2.0" + checksum: 10c0/89375750866db94ff957bc1468bad71c7522fe46f314c395d81fa748f71f80b249cb09073de4def3de81a9bc98b2c4533d634845be0400bf7710901d831ca505 + languageName: node + linkType: hard + +"@chevrotain/utils@npm:13.2.0": + version: 13.2.0 + resolution: "@chevrotain/utils@npm:13.2.0" + checksum: 10c0/4d87dd83f865d2a868d0eeca36f330dd397967f224505b6aaf4492703b3f385646378c4a905594a483d1b7d9651e000292253ca4e1e17c521811b23f6a06fec8 + languageName: node + linkType: hard + "@colors/colors@npm:1.5.0": version: 1.5.0 resolution: "@colors/colors@npm:1.5.0" @@ -2890,138 +2979,207 @@ __metadata: languageName: node linkType: hard -"@csstools/cascade-layer-name-parser@npm:^2.0.4": - version: 2.0.4 - resolution: "@csstools/cascade-layer-name-parser@npm:2.0.4" - peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.4 - "@csstools/css-tokenizer": ^3.0.3 - checksum: 10c0/774f2bcc96a576183853191bdfd31df15e22c51901ee01678ee47f1d1afcb4ab0e6d9a78e08f7383ac089c7e0b390013633f45ff1f1d577c9aefd252589bcced - languageName: node - linkType: hard - -"@csstools/color-helpers@npm:^5.0.1": - version: 5.0.1 - resolution: "@csstools/color-helpers@npm:5.0.1" - checksum: 10c0/77fa3b7236eaa3f36dea24708ac0d5e53168903624ac5aed54615752a0730cd20773fda50e742ce868012eca8c000cc39688e05869e79f34714230ab6968d1e6 - languageName: node - linkType: hard - -"@csstools/css-calc@npm:^2.1.0": - version: 2.1.0 - resolution: "@csstools/css-calc@npm:2.1.0" - peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.4 - "@csstools/css-tokenizer": ^3.0.3 - checksum: 10c0/c707bb533a6ea63ed5bb4b8f1ffcbf3cd2daf970a6d76d42b684243426f5aa7513179a8f34d2e3c5a85df3870f44d3bc2850ca40b085c5fe00b41a291a2ecae2 - languageName: node - linkType: hard - -"@csstools/css-color-parser@npm:^3.0.6": - version: 3.0.6 - resolution: "@csstools/css-color-parser@npm:3.0.6" +"@crowdin/crowdin-api-client@npm:1.59.1": + version: 1.59.1 + resolution: "@crowdin/crowdin-api-client@npm:1.59.1" dependencies: - "@csstools/color-helpers": "npm:^5.0.1" - "@csstools/css-calc": "npm:^2.1.0" - peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.4 - "@csstools/css-tokenizer": ^3.0.3 - checksum: 10c0/7c4f42a704c8c44cece75f5dcd647a83634dec0f44d398ae1fbdc6e8527d4fbdc3a809eaaba3b739edf8e3c09d62c28234636f250f9b0b0d52a599e824c22047 + axios: "npm:1.20.0" + checksum: 10c0/81b77424283e0721bde84313ca261a79e8d102edcd343ecce2b986f1763d4ebf69cdc343f0cd7b5eaf1363dbadd293b09cf08fdcca23dd99dcc58e74119662ac languageName: node linkType: hard -"@csstools/css-parser-algorithms@npm:^3.0.4": +"@csstools/cascade-layer-name-parser@npm:^2.0.5": + version: 2.0.5 + resolution: "@csstools/cascade-layer-name-parser@npm:2.0.5" + peerDependencies: + "@csstools/css-parser-algorithms": ^3.0.5 + "@csstools/css-tokenizer": ^3.0.4 + checksum: 10c0/b6c73d5c8132f922edc88b9df5272c93c9753945f1e1077b80d03b314076ffe03c2cc9bf6cbc85501ee7c7f27e477263df96997c9125fd2fd0cfe82fe2d7c141 + languageName: node + linkType: hard + +"@csstools/color-helpers@npm:^5.1.0": + version: 5.1.0 + resolution: "@csstools/color-helpers@npm:5.1.0" + checksum: 10c0/b7f99d2e455cf1c9b41a67a5327d5d02888cd5c8802a68b1887dffef537d9d4bc66b3c10c1e62b40bbed638b6c1d60b85a232f904ed7b39809c4029cb36567db + languageName: node + linkType: hard + +"@csstools/css-calc@npm:^2.1.4": + version: 2.1.4 + resolution: "@csstools/css-calc@npm:2.1.4" + peerDependencies: + "@csstools/css-parser-algorithms": ^3.0.5 + "@csstools/css-tokenizer": ^3.0.4 + checksum: 10c0/42ce5793e55ec4d772083808a11e9fb2dfe36db3ec168713069a276b4c3882205b3507c4680224c28a5d35fe0bc2d308c77f8f2c39c7c09aad8747708eb8ddd8 + languageName: node + linkType: hard + +"@csstools/css-color-parser@npm:^3.1.0": + version: 3.1.0 + resolution: "@csstools/css-color-parser@npm:3.1.0" + dependencies: + "@csstools/color-helpers": "npm:^5.1.0" + "@csstools/css-calc": "npm:^2.1.4" + peerDependencies: + "@csstools/css-parser-algorithms": ^3.0.5 + "@csstools/css-tokenizer": ^3.0.4 + checksum: 10c0/0e0c670ad54ec8ec4d9b07568b80defd83b9482191f5e8ca84ab546b7be6db5d7cc2ba7ac9fae54488b129a4be235d6183d3aab4416fec5e89351f73af4222c5 + languageName: node + linkType: hard + +"@csstools/css-parser-algorithms@npm:^3.0.5": + version: 3.0.5 + resolution: "@csstools/css-parser-algorithms@npm:3.0.5" + peerDependencies: + "@csstools/css-tokenizer": ^3.0.4 + checksum: 10c0/d9a1c888bd43849ae3437ca39251d5c95d2c8fd6b5ccdb7c45491dfd2c1cbdc3075645e80901d120e4d2c1993db9a5b2d83793b779dbbabcfb132adb142eb7f7 + languageName: node + linkType: hard + +"@csstools/css-tokenizer@npm:^3.0.4": version: 3.0.4 - resolution: "@csstools/css-parser-algorithms@npm:3.0.4" + resolution: "@csstools/css-tokenizer@npm:3.0.4" + checksum: 10c0/3b589f8e9942075a642213b389bab75a2d50d05d203727fcdac6827648a5572674caff07907eff3f9a2389d86a4ee47308fafe4f8588f4a77b7167c588d2559f + languageName: node + linkType: hard + +"@csstools/media-query-list-parser@npm:^4.0.3": + version: 4.0.3 + resolution: "@csstools/media-query-list-parser@npm:4.0.3" peerDependencies: - "@csstools/css-tokenizer": ^3.0.3 - checksum: 10c0/d411f07765e14eede17bccc6bd4f90ff303694df09aabfede3fd104b2dfacfd4fe3697cd25ddad14684c850328f3f9420ebfa9f78380892492974db24ae47dbd + "@csstools/css-parser-algorithms": ^3.0.5 + "@csstools/css-tokenizer": ^3.0.4 + checksum: 10c0/e29d856d57e9a036694662163179fc061a99579f05e7c3c35438b3e063790ae8a9ee9f1fb4b4693d8fc7672ae0801764fe83762ab7b9df2921fcc6172cfd5584 languageName: node linkType: hard -"@csstools/css-tokenizer@npm:^3.0.3": - version: 3.0.3 - resolution: "@csstools/css-tokenizer@npm:3.0.3" - checksum: 10c0/c31bf410e1244b942e71798e37c54639d040cb59e0121b21712b40015fced2b0fb1ffe588434c5f8923c9cd0017cfc1c1c8f3921abc94c96edf471aac2eba5e5 - languageName: node - linkType: hard - -"@csstools/media-query-list-parser@npm:^4.0.2": - version: 4.0.2 - resolution: "@csstools/media-query-list-parser@npm:4.0.2" +"@csstools/postcss-alpha-function@npm:^1.0.1": + version: 1.0.1 + resolution: "@csstools/postcss-alpha-function@npm:1.0.1" + dependencies: + "@csstools/css-color-parser": "npm:^3.1.0" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" + "@csstools/postcss-progressive-custom-properties": "npm:^4.2.1" + "@csstools/utilities": "npm:^2.0.0" peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.4 - "@csstools/css-tokenizer": ^3.0.3 - checksum: 10c0/5d008a70f5d4fd96224066a433f5cdefa76cfd78a74416a20d6d5b2bb1bc8282b140e8373015d807d4dadb91daf3deb73eb13f853ec4e0479d0cb92e80c6f20d + postcss: ^8.4 + checksum: 10c0/35ca209e572534ade21ac5c18aad702aa492eb39e2d0e475f441371063418fe9650554e6a59b1318d3a615da83ef54d9a588faa27063ecc0a568ef7290a6b488 languageName: node linkType: hard -"@csstools/postcss-cascade-layers@npm:^5.0.1": - version: 5.0.1 - resolution: "@csstools/postcss-cascade-layers@npm:5.0.1" +"@csstools/postcss-cascade-layers@npm:^5.0.2": + version: 5.0.2 + resolution: "@csstools/postcss-cascade-layers@npm:5.0.2" dependencies: "@csstools/selector-specificity": "npm:^5.0.0" postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/5cc3c6f220d9216f7ab16e716a20d6db845f127c917521e6236342bfa871accd63eb662a04c1e24a28e396412dcb47b1c4abccc490b88e4010cd704d14a702f1 + checksum: 10c0/dd8e29cfd3a93932fa35e3a59aa62fd2e720772d450f40f38f65ce1e736e2fe839635eb6f033abcc8ee8bc2856161a297f4458b352b26d2216856feb03176612 languageName: node linkType: hard -"@csstools/postcss-color-function@npm:^4.0.6": - version: 4.0.6 - resolution: "@csstools/postcss-color-function@npm:4.0.6" +"@csstools/postcss-color-function-display-p3-linear@npm:^1.0.1": + version: 1.0.1 + resolution: "@csstools/postcss-color-function-display-p3-linear@npm:1.0.1" dependencies: - "@csstools/css-color-parser": "npm:^3.0.6" - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/css-color-parser": "npm:^3.1.0" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" + "@csstools/postcss-progressive-custom-properties": "npm:^4.2.1" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/facbae01fd58898a176219cfcffee9ffb06fb466a2c439fd28403819e48778b682621b86a69682c0f758c659f8ec5f14eca1a9612b12b8777a2198173f386b49 + checksum: 10c0/d02d45410c9257f5620c766f861f8fa3762b74ef01fdba8060b33a4c98f929e2219cd476b25bd4181ac186158a4d99a0da555c0b6ba45a7ac4a3a5885baad1f5 languageName: node linkType: hard -"@csstools/postcss-color-mix-function@npm:^3.0.6": - version: 3.0.6 - resolution: "@csstools/postcss-color-mix-function@npm:3.0.6" +"@csstools/postcss-color-function@npm:^4.0.12": + version: 4.0.12 + resolution: "@csstools/postcss-color-function@npm:4.0.12" dependencies: - "@csstools/css-color-parser": "npm:^3.0.6" - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/css-color-parser": "npm:^3.1.0" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" + "@csstools/postcss-progressive-custom-properties": "npm:^4.2.1" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/66b906b2425ed137b1c2ef3d166036719ae69039668385dccce4e02bd91e41733b37dd3c884b74a2999067bfe8a8d8d1afa4082ef21a0bf044ba7e7fffb77e01 + checksum: 10c0/a355b04d90f89c8e37a4a23543151558060acc68fb2e7d1c3549bebeeae2b147eec26af1fbc6ee690f0ba4830263f2d181f5331d16d3483b5542be46996fa755 languageName: node linkType: hard -"@csstools/postcss-content-alt-text@npm:^2.0.4": - version: 2.0.4 - resolution: "@csstools/postcss-content-alt-text@npm:2.0.4" +"@csstools/postcss-color-mix-function@npm:^3.0.12": + version: 3.0.12 + resolution: "@csstools/postcss-color-mix-function@npm:3.0.12" dependencies: - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/css-color-parser": "npm:^3.1.0" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" + "@csstools/postcss-progressive-custom-properties": "npm:^4.2.1" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/84caccedd8a519df434babd58b14104c5a92cd326057ce509bdbaa2a4bb3130afb1c1456caf30235ba14da52d1628a5411ea4f5d2fb558d603d234f795538017 + checksum: 10c0/3e98a5118852083d1f87a3f842f78088192b1f9f08fdf1f3b3ef1e8969e18fdadc1e3bcac3d113a07c8917a7e8fa65fdec55a31df9a1b726c8d7ae89db86e8e5 languageName: node linkType: hard -"@csstools/postcss-exponential-functions@npm:^2.0.5": - version: 2.0.5 - resolution: "@csstools/postcss-exponential-functions@npm:2.0.5" +"@csstools/postcss-color-mix-variadic-function-arguments@npm:^1.0.2": + version: 1.0.2 + resolution: "@csstools/postcss-color-mix-variadic-function-arguments@npm:1.0.2" dependencies: - "@csstools/css-calc": "npm:^2.1.0" - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/css-color-parser": "npm:^3.1.0" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" + "@csstools/postcss-progressive-custom-properties": "npm:^4.2.1" + "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/8935cb69f70d7448aa5a3dcdfd188bdcfbc34e9a99131306947df8847126272773212011dcff85e10bcee4c9d01f94f7f8557ef93933122a0b82743185684ab1 + checksum: 10c0/34073f0f0d33e4958f90763e692955a8e8c678b74284234497c4aa0d2143756e1b3616e0c09832caad498870e227ca0a681316afe3a71224fc40ade0ead1bdd9 + languageName: node + linkType: hard + +"@csstools/postcss-content-alt-text@npm:^2.0.8": + version: 2.0.8 + resolution: "@csstools/postcss-content-alt-text@npm:2.0.8" + dependencies: + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" + "@csstools/postcss-progressive-custom-properties": "npm:^4.2.1" + "@csstools/utilities": "npm:^2.0.0" + peerDependencies: + postcss: ^8.4 + checksum: 10c0/4c330cc2a1e434688a62613ecceb1434cd725ce024c1ad8d4a4c76b9839d1f3ea8566a8c6494921e2b46ec7feef6af8ed6548c216dcb8f0feab4b1d52c96228e + languageName: node + linkType: hard + +"@csstools/postcss-contrast-color-function@npm:^2.0.12": + version: 2.0.12 + resolution: "@csstools/postcss-contrast-color-function@npm:2.0.12" + dependencies: + "@csstools/css-color-parser": "npm:^3.1.0" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" + "@csstools/postcss-progressive-custom-properties": "npm:^4.2.1" + "@csstools/utilities": "npm:^2.0.0" + peerDependencies: + postcss: ^8.4 + checksum: 10c0/b783ce948cdf1513ee238e9115b42881a8d3e5d13c16038601b1c470d661cfaeeece4eea29904fb9fcae878bad86f766810fa798a703ab9ad4b0cf276b173f8f + languageName: node + linkType: hard + +"@csstools/postcss-exponential-functions@npm:^2.0.9": + version: 2.0.9 + resolution: "@csstools/postcss-exponential-functions@npm:2.0.9" + dependencies: + "@csstools/css-calc": "npm:^2.1.4" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" + peerDependencies: + postcss: ^8.4 + checksum: 10c0/78ea627a87fb23e12616c4e54150363b0e8793064634983dbe0368a0aca1ff73206c2d1f29845773daaf42787e7d1f180ce1b57c43e2b0d10da450101f9f34b6 languageName: node linkType: hard @@ -3037,94 +3195,94 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-gamut-mapping@npm:^2.0.6": - version: 2.0.6 - resolution: "@csstools/postcss-gamut-mapping@npm:2.0.6" +"@csstools/postcss-gamut-mapping@npm:^2.0.11": + version: 2.0.11 + resolution: "@csstools/postcss-gamut-mapping@npm:2.0.11" dependencies: - "@csstools/css-color-parser": "npm:^3.0.6" - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/css-color-parser": "npm:^3.1.0" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" peerDependencies: postcss: ^8.4 - checksum: 10c0/8a3f012774ab261924cc9f3519caa87a25a6abcd70d78f622144d8e7126a687bddbdaa92995fc30f53355759cd5971e71ac099b6b8cb85c89d8ca86455588e3b + checksum: 10c0/490b8ccf10e30879a4415afbdd3646e1cdac3671586b7916855cf47a536f3be75eed014396056bde6528e0cb76d904e79bad78afc0b499e837264cf22519d145 languageName: node linkType: hard -"@csstools/postcss-gradients-interpolation-method@npm:^5.0.6": - version: 5.0.6 - resolution: "@csstools/postcss-gradients-interpolation-method@npm:5.0.6" +"@csstools/postcss-gradients-interpolation-method@npm:^5.0.12": + version: 5.0.12 + resolution: "@csstools/postcss-gradients-interpolation-method@npm:5.0.12" dependencies: - "@csstools/css-color-parser": "npm:^3.0.6" - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/css-color-parser": "npm:^3.1.0" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" + "@csstools/postcss-progressive-custom-properties": "npm:^4.2.1" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/0d97be76837f972ea323b58189ded2310b618ad94b40777464d0d8ac050b557ca9fd1f20af5ada105d61574cc9d8c119ae0daf294a3aacaaa89926f864d9d674 + checksum: 10c0/70b3d6c7050ce882ed2281e71eb4493531ae8d55d21899920eeeb6c205d90aaf430419a66235484ccce3a1a1891367dfc0ef772f3866ae3a9d8ec5ddd0cfe894 languageName: node linkType: hard -"@csstools/postcss-hwb-function@npm:^4.0.6": - version: 4.0.6 - resolution: "@csstools/postcss-hwb-function@npm:4.0.6" +"@csstools/postcss-hwb-function@npm:^4.0.12": + version: 4.0.12 + resolution: "@csstools/postcss-hwb-function@npm:4.0.12" dependencies: - "@csstools/css-color-parser": "npm:^3.0.6" - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/css-color-parser": "npm:^3.1.0" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" + "@csstools/postcss-progressive-custom-properties": "npm:^4.2.1" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/e7bcc98095ef2873a7b1a7326f1618bbeecc1c78660b23805bbefd8ec067bf2f35f2a2d4675be51a02d2280046f36f74d55f6af78e3ce107b82624d1a421ffcf + checksum: 10c0/d0dac34da9d7ac654060b6b27690a419718e990b21ff3e63266ea59934a865bc6aeae8eb8e1ca3e227a8b2a208657e3ab70ccdf0437f1f09d21ab848bbffcaa2 languageName: node linkType: hard -"@csstools/postcss-ic-unit@npm:^4.0.0": - version: 4.0.0 - resolution: "@csstools/postcss-ic-unit@npm:4.0.0" +"@csstools/postcss-ic-unit@npm:^4.0.4": + version: 4.0.4 + resolution: "@csstools/postcss-ic-unit@npm:4.0.4" dependencies: - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/postcss-progressive-custom-properties": "npm:^4.2.1" "@csstools/utilities": "npm:^2.0.0" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/6f94ec31002a245768a30d240c432b8712af4d9ea76a62403e16d4e0afb5be7636348a2d4619046ed29aa7726f88a0c191ca41c96d7ab0f3da940025c91b056e + checksum: 10c0/20168e70ecb4abf7a69e407d653b6c7c9c82f2c7b1da0920e1d035f62b5ef8552cc7f1b62e0dca318df13c348e79fba862e1a4bb0e9432119a82b10aeb511752 languageName: node linkType: hard -"@csstools/postcss-initial@npm:^2.0.0": - version: 2.0.0 - resolution: "@csstools/postcss-initial@npm:2.0.0" +"@csstools/postcss-initial@npm:^2.0.1": + version: 2.0.1 + resolution: "@csstools/postcss-initial@npm:2.0.1" peerDependencies: postcss: ^8.4 - checksum: 10c0/44c443cba84cc66367f2082bf20db06c8437338c02c244c38798c5bf5342932d89fed0dd13e4409f084ecf7fce47ae6394e9a7a006fd98a973decfa24ab1eb04 + checksum: 10c0/dbff7084ef4f1c4647efe2b147001daf172003c15b5e22689f0540d03c8d362f2a332cd9cf136e6c8dcda7564ee30492a4267ea188f72cb9c1000fb9bcfbfef8 languageName: node linkType: hard -"@csstools/postcss-is-pseudo-class@npm:^5.0.1": - version: 5.0.1 - resolution: "@csstools/postcss-is-pseudo-class@npm:5.0.1" +"@csstools/postcss-is-pseudo-class@npm:^5.0.3": + version: 5.0.3 + resolution: "@csstools/postcss-is-pseudo-class@npm:5.0.3" dependencies: "@csstools/selector-specificity": "npm:^5.0.0" postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/3aaab18ebb2dcf5565efa79813eaa987d40de1e086765358524392a09631c68ad1ee952e6aff8f42513b2c18ab84891787e065fe287f696128498fc641520b6c + checksum: 10c0/7980f1cabf32850bac72552e4e9de47412359e36e259a92b9b9af25dae4cce42bbcc5fdca8f384a589565bf383ecb23dec3af9f084d8df18b82552318b2841b6 languageName: node linkType: hard -"@csstools/postcss-light-dark-function@npm:^2.0.7": - version: 2.0.7 - resolution: "@csstools/postcss-light-dark-function@npm:2.0.7" +"@csstools/postcss-light-dark-function@npm:^2.0.11": + version: 2.0.11 + resolution: "@csstools/postcss-light-dark-function@npm:2.0.11" dependencies: - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" + "@csstools/postcss-progressive-custom-properties": "npm:^4.2.1" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/c116bfd2d3f4d0caabdedf8954c2a25908ffb29f9bbe2c57d44a2974277c7e46ee79862eea848385dc040275d343f2330350394a2095ec30f0aa17f72e2f4e39 + checksum: 10c0/0175be41bb0044a48bc98d5c55cce41ed6b9ada88253c5f20d0ca17287cba4b429742b458ac5744675b9a286109e13ac51d64e226ab16040d7b051ba64c0c77b languageName: node linkType: hard @@ -3166,42 +3324,42 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-logical-viewport-units@npm:^3.0.3": - version: 3.0.3 - resolution: "@csstools/postcss-logical-viewport-units@npm:3.0.3" +"@csstools/postcss-logical-viewport-units@npm:^3.0.4": + version: 3.0.4 + resolution: "@csstools/postcss-logical-viewport-units@npm:3.0.4" dependencies: - "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/css-tokenizer": "npm:^3.0.4" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/8ec746598d7ce8697c3dafd83cb3a319a90079ad755dd78e3ec92f4ba9ad849c4cdaba33b16e9dcbac1e9489b3d7c48262030110c20ce1d88cdacbe9f5987cec + checksum: 10c0/f0b5ba38acde3bf0ca880c6e0a883950c99fa9919b0e6290c894d5716569663590f26aa1170fd9483ce14544e46afac006ab3b02781410d5e7c8dd1467c674ce languageName: node linkType: hard -"@csstools/postcss-media-minmax@npm:^2.0.5": - version: 2.0.5 - resolution: "@csstools/postcss-media-minmax@npm:2.0.5" +"@csstools/postcss-media-minmax@npm:^2.0.9": + version: 2.0.9 + resolution: "@csstools/postcss-media-minmax@npm:2.0.9" dependencies: - "@csstools/css-calc": "npm:^2.1.0" - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/media-query-list-parser": "npm:^4.0.2" + "@csstools/css-calc": "npm:^2.1.4" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" + "@csstools/media-query-list-parser": "npm:^4.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/0d17782076fcaba2c3c85bd769fc102d95809e9ee6141ad9de706ee116466cada62424fd68623c58cc2456771725291c356e550377ba73a102ab6fe628931e30 + checksum: 10c0/d82622ee9de6eacba1abbf31718cd58759d158ed8a575f36f08e982d07a7d83e51fb184178b96c6f7b76cb333bb33cac04d06a750b6b9c5c43ae1c56232880f9 languageName: node linkType: hard -"@csstools/postcss-media-queries-aspect-ratio-number-values@npm:^3.0.4": - version: 3.0.4 - resolution: "@csstools/postcss-media-queries-aspect-ratio-number-values@npm:3.0.4" +"@csstools/postcss-media-queries-aspect-ratio-number-values@npm:^3.0.5": + version: 3.0.5 + resolution: "@csstools/postcss-media-queries-aspect-ratio-number-values@npm:3.0.5" dependencies: - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/media-query-list-parser": "npm:^4.0.2" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" + "@csstools/media-query-list-parser": "npm:^4.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/27dc9419b0f4315774647588f599348e7cc593984f59b414c51c910066501fd087cbe232deb762907c18bd21dd4184e7b6e0e0b730e5c72341ab9cc696c75739 + checksum: 10c0/a47abdaa7f4b26596bd9d6bb77aed872a232fc12bd144d2c062d9da626e8dfd8336e2fff67617dba61a1666c2b8027145b390d70d5cd4d4f608604e077cfb04e languageName: node linkType: hard @@ -3217,68 +3375,89 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-normalize-display-values@npm:^4.0.0": - version: 4.0.0 - resolution: "@csstools/postcss-normalize-display-values@npm:4.0.0" +"@csstools/postcss-normalize-display-values@npm:^4.0.1": + version: 4.0.1 + resolution: "@csstools/postcss-normalize-display-values@npm:4.0.1" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/d3a3a362b532163bd791f97348ef28b7a43baf01987c7702b06285e751cdc5ea3e3a2553f088260515b4d28263d5c475923d4d4780ecb4078ec66dff50c9e638 + checksum: 10c0/5d19364bad8554b047cebd94ad7e203723ed76abaf690e4b92c74e6fc7c3642cb8858ade3263da61aff26d97bb258af567b1036e97865b7aa3b17522241fd1e1 languageName: node linkType: hard -"@csstools/postcss-oklab-function@npm:^4.0.6": - version: 4.0.6 - resolution: "@csstools/postcss-oklab-function@npm:4.0.6" +"@csstools/postcss-oklab-function@npm:^4.0.12": + version: 4.0.12 + resolution: "@csstools/postcss-oklab-function@npm:4.0.12" dependencies: - "@csstools/css-color-parser": "npm:^3.0.6" - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/css-color-parser": "npm:^3.1.0" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" + "@csstools/postcss-progressive-custom-properties": "npm:^4.2.1" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/74ec74eb7171881deeff7a79e0dc696097fb53dcdcd9627d9559cd7be63f41adecec06c1e88ddd5d8a37f4705715d1c0c135ca2b001fb70fdc0b76ab1e491b66 + checksum: 10c0/40d4f51b568c8299c054f8971d0e85fa7da609ba23ce6c84dc17e16bc3838640ed6da75c3886dc9a96a11005773c6e23cba13a5510c781b2d633d07ad7bda6b7 languageName: node linkType: hard -"@csstools/postcss-progressive-custom-properties@npm:^4.0.0": - version: 4.0.0 - resolution: "@csstools/postcss-progressive-custom-properties@npm:4.0.0" +"@csstools/postcss-position-area-property@npm:^1.0.0": + version: 1.0.0 + resolution: "@csstools/postcss-position-area-property@npm:1.0.0" + peerDependencies: + postcss: ^8.4 + checksum: 10c0/38f770454d46bfed01d43a3f5e7ac07d3111399b374a7198ae6503cdb6288e410c7b4199f5a7af8f16aeb688216445ade97be417c084313d6c56f55e50d34559 + languageName: node + linkType: hard + +"@csstools/postcss-progressive-custom-properties@npm:^4.2.1": + version: 4.2.1 + resolution: "@csstools/postcss-progressive-custom-properties@npm:4.2.1" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/517e5e0b1525667ea1c4469bb2af52995934b9ab3165bba33e3bfdfac63b20bb51c878da582d805957dc0291e396e5a540cac18d1220a08190d98d5463d26ce2 + checksum: 10c0/56e9a147799719fd5c550c035437693dd50cdfef46d66a4f2ce8f196e1006a096aa47d412710a89c3dc9808068a0a101c7f607a507ed68e925580c6f921e84d5 languageName: node linkType: hard -"@csstools/postcss-random-function@npm:^1.0.1": - version: 1.0.1 - resolution: "@csstools/postcss-random-function@npm:1.0.1" +"@csstools/postcss-property-rule-prelude-list@npm:^1.0.0": + version: 1.0.0 + resolution: "@csstools/postcss-property-rule-prelude-list@npm:1.0.0" dependencies: - "@csstools/css-calc": "npm:^2.1.0" - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" peerDependencies: postcss: ^8.4 - checksum: 10c0/5e8f29c024aa6ed1f89ee8b9c8ece39c8e72602d63faa82d9684e3183828f01971cf2f760b7d5b773605d44a4ea661d6d4389ec03f7e21002f9aa9e8db613a61 + checksum: 10c0/ae8bbca3a77ca59c21c11899a904f9d9417a19a3359d01dee042e0489b7ddfe7cea13ae275b7e7936d9b0b99c0a13f7f685f962cd63ca3d3d2b6e5eacc293a0d languageName: node linkType: hard -"@csstools/postcss-relative-color-syntax@npm:^3.0.6": - version: 3.0.6 - resolution: "@csstools/postcss-relative-color-syntax@npm:3.0.6" +"@csstools/postcss-random-function@npm:^2.0.1": + version: 2.0.1 + resolution: "@csstools/postcss-random-function@npm:2.0.1" dependencies: - "@csstools/css-color-parser": "npm:^3.0.6" - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/css-calc": "npm:^2.1.4" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" + peerDependencies: + postcss: ^8.4 + checksum: 10c0/475bacf685b8bb82942d388e9e3b95f4156800f370299f19f5acc490475dc2813100de81a5a6bf48b696b4d83247622005b616af3166a668556b4b1aceded70d + languageName: node + linkType: hard + +"@csstools/postcss-relative-color-syntax@npm:^3.0.12": + version: 3.0.12 + resolution: "@csstools/postcss-relative-color-syntax@npm:3.0.12" + dependencies: + "@csstools/css-color-parser": "npm:^3.1.0" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" + "@csstools/postcss-progressive-custom-properties": "npm:^4.2.1" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/207ae711831f8ae9170093dbea3727cd6f32ca31d22c1231b5b678592679eb49e329e87ea403714b8e10feb5b9137780364cc7e1e7d8cc4c90d47483a42132dc + checksum: 10c0/11af386c8193e22c148ac034eee94c56da3060bdbde3196d2d641b088e12de35bef187bcd7d421f9e4d49c4f1cfc28b24e136e62107e02ed7007a3a28f635d06 languageName: node linkType: hard @@ -3293,54 +3472,77 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-sign-functions@npm:^1.1.0": - version: 1.1.0 - resolution: "@csstools/postcss-sign-functions@npm:1.1.0" +"@csstools/postcss-sign-functions@npm:^1.1.4": + version: 1.1.4 + resolution: "@csstools/postcss-sign-functions@npm:1.1.4" dependencies: - "@csstools/css-calc": "npm:^2.1.0" - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/css-calc": "npm:^2.1.4" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" peerDependencies: postcss: ^8.4 - checksum: 10c0/503bbaa8fe1d1a619880d5d6b838f07f1898a5820889e5db3c4e02bb8b340dab18b88f439f9f1da44c6669bab2d4ba3f9543643ccc459d8a21191c5d22109c9b + checksum: 10c0/ff58108b2527832a84c571a1f40224b5c8d2afa8db2fe3b1e3599ff6f3469d9f4c528a70eb3c25c5d7801e30474fabfec04e7c23bfdad8572ad492053cd4f899 languageName: node linkType: hard -"@csstools/postcss-stepped-value-functions@npm:^4.0.5": - version: 4.0.5 - resolution: "@csstools/postcss-stepped-value-functions@npm:4.0.5" +"@csstools/postcss-stepped-value-functions@npm:^4.0.9": + version: 4.0.9 + resolution: "@csstools/postcss-stepped-value-functions@npm:4.0.9" dependencies: - "@csstools/css-calc": "npm:^2.1.0" - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/css-calc": "npm:^2.1.4" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" peerDependencies: postcss: ^8.4 - checksum: 10c0/76f1f60c24b9e6a80b044eb19f37c1816788a2335fbf7c25f3fbea1cd7104857f424a451dcff60e4f8841618c6b6ffa6091f8b840d6d5930c1c7100c2f8ae74b + checksum: 10c0/f143ca06338c30abb2aa37adc3d7e43a78f3b4493093160cb5babe3ec8cf6b86d83876746ee8e162db87b5e9af6e0066958d89fe8b4a503a29568e5c57c1bf8a languageName: node linkType: hard -"@csstools/postcss-text-decoration-shorthand@npm:^4.0.1": - version: 4.0.1 - resolution: "@csstools/postcss-text-decoration-shorthand@npm:4.0.1" +"@csstools/postcss-syntax-descriptor-syntax-production@npm:^1.0.1": + version: 1.0.1 + resolution: "@csstools/postcss-syntax-descriptor-syntax-production@npm:1.0.1" dependencies: - "@csstools/color-helpers": "npm:^5.0.1" + "@csstools/css-tokenizer": "npm:^3.0.4" + peerDependencies: + postcss: ^8.4 + checksum: 10c0/b9b3d84a50b86b1af1b8b7e56a64d5eebc1c89c323a5263306c5c69ddb05a4d468d7072a7786b0ea6601629035df0089565e9d98d55d0f4eb7201cf7ed1bb3e9 + languageName: node + linkType: hard + +"@csstools/postcss-system-ui-font-family@npm:^1.0.0": + version: 1.0.0 + resolution: "@csstools/postcss-system-ui-font-family@npm:1.0.0" + dependencies: + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" + peerDependencies: + postcss: ^8.4 + checksum: 10c0/6a81761ae3cae643659b1416a7a892cf1505474896193b8abc26cff319cb6b1a20b64c5330d64019fba458e058da3abc9407d0ebf0c102289c0b79ef99b4c6d6 + languageName: node + linkType: hard + +"@csstools/postcss-text-decoration-shorthand@npm:^4.0.3": + version: 4.0.3 + resolution: "@csstools/postcss-text-decoration-shorthand@npm:4.0.3" + dependencies: + "@csstools/color-helpers": "npm:^5.1.0" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/81950e248d6019c0066353895e0fa2a5c684b754c9af349218cb919534f5ebf79e5e9c7a10b3af1e9c56de2f246968de3b87a00d8c4102e5f88e0f05c04f9889 + checksum: 10c0/f6af7d5dcf599edcf76c5e396ef2d372bbe1c1f3fbaaccd91e91049e64b6ff68b44f459277aef0a8110baca3eaa21275012adc52ccb8c0fc526a4c35577f8fce languageName: node linkType: hard -"@csstools/postcss-trigonometric-functions@npm:^4.0.5": - version: 4.0.5 - resolution: "@csstools/postcss-trigonometric-functions@npm:4.0.5" +"@csstools/postcss-trigonometric-functions@npm:^4.0.9": + version: 4.0.9 + resolution: "@csstools/postcss-trigonometric-functions@npm:4.0.9" dependencies: - "@csstools/css-calc": "npm:^2.1.0" - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/css-calc": "npm:^2.1.4" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" peerDependencies: postcss: ^8.4 - checksum: 10c0/b8518c8b81da047448dcee12a5f3716dbc19671333387a4a673991a16f1a120441d2768de8a30ce1e2ef8d0d76509b9509f506ef1e8630da84834451414b23a3 + checksum: 10c0/6ba3d381c977c224f01d47a36f78c9b99d3b89d060a357a9f8840537fdf497d9587a28165dc74e96abdf02f8db0a277d3558646355085a74c8915ee73c6780d1 languageName: node linkType: hard @@ -3353,12 +3555,12 @@ __metadata: languageName: node linkType: hard -"@csstools/selector-resolve-nested@npm:^3.0.0": - version: 3.0.0 - resolution: "@csstools/selector-resolve-nested@npm:3.0.0" +"@csstools/selector-resolve-nested@npm:^3.1.0": + version: 3.1.0 + resolution: "@csstools/selector-resolve-nested@npm:3.1.0" peerDependencies: postcss-selector-parser: ^7.0.0 - checksum: 10c0/2b01c36b3fa81388d5bddd8db962766465d76b021a815c8bb5a48c3a42c530154cc155fc496707ade627dbba6745eb8ecd9fa840c1972133c0f7d8811e0a959d + checksum: 10c0/c2b1a930ad03c1427ab90b28c4940424fb39e8175130148f16209be3a3937f7a146d5483ca1da1dfc100aa7ae86df713f0ee82d4bbaa9b986e7f47f35cb67cca languageName: node linkType: hard @@ -3387,25 +3589,42 @@ __metadata: languageName: node linkType: hard -"@docsearch/css@npm:3.6.0": - version: 3.6.0 - resolution: "@docsearch/css@npm:3.6.0" - checksum: 10c0/125b144ce9b9f90a4e95e6ffccde2229e622d9cfedac4ad87018137cbeac0b87fd1b6245595f275e5f9b3c50553a0c53b55e8dbdc7a91aeb0eed217423acddf3 +"@docsearch/core@npm:4.7.1": + version: 4.7.1 + resolution: "@docsearch/core@npm:4.7.1" + peerDependencies: + "@types/react": ">= 16.8.0 < 20.0.0" + react: ">= 16.8.0 < 20.0.0" + react-dom: ">= 16.8.0 < 20.0.0" + peerDependenciesMeta: + "@types/react": + optional: true + react: + optional: true + react-dom: + optional: true + checksum: 10c0/d2c98c110a8636000568c7f0a58433c5f2266921b0bb9ba527b9013562489b88d8e6de9f386c76a4e6655a2f2685d89dd94526e52476a5d76f3902e75a3fddb4 languageName: node linkType: hard -"@docsearch/react@npm:^3.5.2": - version: 3.6.0 - resolution: "@docsearch/react@npm:3.6.0" +"@docsearch/css@npm:4.7.1": + version: 4.7.1 + resolution: "@docsearch/css@npm:4.7.1" + checksum: 10c0/339b1b78db4cbdd965da07cbb28ef20307bfccf4080e459d1feee15812bf7ecc686560760b5c4be09873824955546da02d1fdc2503aab7eb31998e81a374995e + languageName: node + linkType: hard + +"@docsearch/react@npm:^3.9.0 || ^4.3.2": + version: 4.7.1 + resolution: "@docsearch/react@npm:4.7.1" dependencies: - "@algolia/autocomplete-core": "npm:1.9.3" - "@algolia/autocomplete-preset-algolia": "npm:1.9.3" - "@docsearch/css": "npm:3.6.0" - algoliasearch: "npm:^4.19.1" + "@algolia/autocomplete-core": "npm:1.19.2" + "@docsearch/core": "npm:4.7.1" + "@docsearch/css": "npm:4.7.1" peerDependencies: - "@types/react": ">= 16.8.0 < 19.0.0" - react: ">= 16.8.0 < 19.0.0" - react-dom: ">= 16.8.0 < 19.0.0" + "@types/react": ">= 16.8.0 < 20.0.0" + react: ">= 16.8.0 < 20.0.0" + react-dom: ">= 16.8.0 < 20.0.0" search-insights: ">= 1 < 3" peerDependenciesMeta: "@types/react": @@ -3416,13 +3635,13 @@ __metadata: optional: true search-insights: optional: true - checksum: 10c0/15f8137b1aa611b8f3ab713b20ca80c638eeb67a6e79acc5d2aa1e7cbd60f3dd908bc95b50ec4b1482a98c7dbe5afa3b169a8219799b28b38816a7ded6807874 + checksum: 10c0/753347818f45a27f6e917edeec418ce342953734c0d5cab5c9501eb41386d0de173cb917ca09c9a63c2a4735022f213e36026e01446931e7966d3c50ff5650ce languageName: node linkType: hard -"@docusaurus/babel@npm:3.6.3": - version: 3.6.3 - resolution: "@docusaurus/babel@npm:3.6.3" +"@docusaurus/babel@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/babel@npm:3.10.2" dependencies: "@babel/core": "npm:^7.25.9" "@babel/generator": "npm:^7.25.9" @@ -3432,66 +3651,64 @@ __metadata: "@babel/preset-react": "npm:^7.25.9" "@babel/preset-typescript": "npm:^7.25.9" "@babel/runtime": "npm:^7.25.9" - "@babel/runtime-corejs3": "npm:^7.25.9" "@babel/traverse": "npm:^7.25.9" - "@docusaurus/logger": "npm:3.6.3" - "@docusaurus/utils": "npm:3.6.3" + "@docusaurus/logger": "npm:3.10.2" + "@docusaurus/utils": "npm:3.10.2" babel-plugin-dynamic-import-node: "npm:^2.3.3" fs-extra: "npm:^11.1.1" tslib: "npm:^2.6.0" - checksum: 10c0/b4436423a95afa60709ec285e56f93c7825274bcacbf6ede1fb9aea1ee02095ab8179456c0a7ba7070fa216f3a6a46db7493b3abb5cd54f4d76cf154bd978b8f + checksum: 10c0/5d6f5938bc3220e8f3664169e77ee0b1f11423a9adfc19409f8e7b3f4264afa8e8cd111f744fe54562278a8b276f6b4b6506f509cfdc3c31cc2ade36a6171dbd languageName: node linkType: hard -"@docusaurus/bundler@npm:3.6.3": - version: 3.6.3 - resolution: "@docusaurus/bundler@npm:3.6.3" +"@docusaurus/bundler@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/bundler@npm:3.10.2" dependencies: "@babel/core": "npm:^7.25.9" - "@docusaurus/babel": "npm:3.6.3" - "@docusaurus/cssnano-preset": "npm:3.6.3" - "@docusaurus/logger": "npm:3.6.3" - "@docusaurus/types": "npm:3.6.3" - "@docusaurus/utils": "npm:3.6.3" + "@docusaurus/babel": "npm:3.10.2" + "@docusaurus/cssnano-preset": "npm:3.10.2" + "@docusaurus/logger": "npm:3.10.2" + "@docusaurus/types": "npm:3.10.2" + "@docusaurus/utils": "npm:3.10.2" babel-loader: "npm:^9.2.1" - clean-css: "npm:^5.3.2" + clean-css: "npm:^5.3.3" copy-webpack-plugin: "npm:^11.0.0" - css-loader: "npm:^6.8.1" + css-loader: "npm:^6.11.0" css-minimizer-webpack-plugin: "npm:^5.0.1" cssnano: "npm:^6.1.2" file-loader: "npm:^6.2.0" html-minifier-terser: "npm:^7.2.0" - mini-css-extract-plugin: "npm:^2.9.1" + mini-css-extract-plugin: "npm:^2.9.2" null-loader: "npm:^4.0.1" - postcss: "npm:^8.4.26" - postcss-loader: "npm:^7.3.3" - postcss-preset-env: "npm:^10.1.0" - react-dev-utils: "npm:^12.0.1" + postcss: "npm:^8.5.4" + postcss-loader: "npm:^7.3.4" + postcss-preset-env: "npm:^10.2.1" terser-webpack-plugin: "npm:^5.3.9" tslib: "npm:^2.6.0" url-loader: "npm:^4.1.1" webpack: "npm:^5.95.0" - webpackbar: "npm:^6.0.1" + webpackbar: "npm:^7.0.0" peerDependencies: "@docusaurus/faster": "*" peerDependenciesMeta: "@docusaurus/faster": optional: true - checksum: 10c0/abe5fc932fe2c884f2d554b61e8e56ec21c629a4dc28c6b9d199639b10beb83c37e0e47bab1ed8bee40b171ce4afa1dbdce5494fcac8b3089b44a6e170b6d499 + checksum: 10c0/141513e97d317ba2c2e2793dd4abae12b72132cf8e7c61e8f1d8d3521b6c6b162a5c5aa36ab02fbc41bad01bd8a50978133d58c9c420f1e10ec937a6d8b75109 languageName: node linkType: hard -"@docusaurus/core@npm:3.6.3": - version: 3.6.3 - resolution: "@docusaurus/core@npm:3.6.3" +"@docusaurus/core@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/core@npm:3.10.2" dependencies: - "@docusaurus/babel": "npm:3.6.3" - "@docusaurus/bundler": "npm:3.6.3" - "@docusaurus/logger": "npm:3.6.3" - "@docusaurus/mdx-loader": "npm:3.6.3" - "@docusaurus/utils": "npm:3.6.3" - "@docusaurus/utils-common": "npm:3.6.3" - "@docusaurus/utils-validation": "npm:3.6.3" + "@docusaurus/babel": "npm:3.10.2" + "@docusaurus/bundler": "npm:3.10.2" + "@docusaurus/logger": "npm:3.10.2" + "@docusaurus/mdx-loader": "npm:3.10.2" + "@docusaurus/utils": "npm:3.10.2" + "@docusaurus/utils-common": "npm:3.10.2" + "@docusaurus/utils-validation": "npm:3.10.2" boxen: "npm:^6.2.1" chalk: "npm:^4.1.2" chokidar: "npm:^3.5.3" @@ -3499,42 +3716,45 @@ __metadata: combine-promises: "npm:^1.1.0" commander: "npm:^5.1.0" core-js: "npm:^3.31.1" - del: "npm:^6.1.1" - detect-port: "npm:^1.5.1" + detect-port: "npm:^2.1.0" escape-html: "npm:^1.0.3" eta: "npm:^2.2.0" eval: "npm:^0.1.8" + execa: "npm:^5.1.1" fs-extra: "npm:^11.1.1" html-tags: "npm:^3.3.1" html-webpack-plugin: "npm:^5.6.0" leven: "npm:^3.1.0" lodash: "npm:^4.17.21" + open: "npm:^8.4.0" p-map: "npm:^4.0.0" prompts: "npm:^2.4.2" - react-dev-utils: "npm:^12.0.1" - react-helmet-async: "npm:^1.3.0" + react-helmet-async: "npm:@slorber/react-helmet-async@1.3.0" react-loadable: "npm:@docusaurus/react-loadable@6.0.0" - react-loadable-ssr-addon-v5-slorber: "npm:^1.0.1" + react-loadable-ssr-addon-v5-slorber: "npm:^1.0.3" react-router: "npm:^5.3.4" react-router-config: "npm:^5.1.1" react-router-dom: "npm:^5.3.4" - rtl-detect: "npm:^1.0.4" semver: "npm:^7.5.4" - serve-handler: "npm:^6.1.6" - shelljs: "npm:^0.8.5" + serve-handler: "npm:^6.1.7" + tinypool: "npm:^1.0.2" tslib: "npm:^2.6.0" update-notifier: "npm:^6.0.2" webpack: "npm:^5.95.0" webpack-bundle-analyzer: "npm:^4.10.2" - webpack-dev-server: "npm:^4.15.2" + webpack-dev-server: "npm:^5.2.2" webpack-merge: "npm:^6.0.1" peerDependencies: + "@docusaurus/faster": "*" "@mdx-js/react": ^3.0.0 - react: ^18.0.0 - react-dom: ^18.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@docusaurus/faster": + optional: true bin: docusaurus: bin/docusaurus.mjs - checksum: 10c0/551e7af994bb41ccbe9866bb380def55ed03316b4de5ae2b5ad98721f3cc0a209ed86becb70dac80c360c36767b4d1375115de190ac1c11b28e813ee8c38ebd6 + checksum: 10c0/e788635b2b6705fb6ecb6ba22f09930eed0148f4e27ee5c435742e1228e27ab2aeb539bc623355e0edba2978bffde60ead1eff2464283f3a0d14eaeb108131e4 languageName: node linkType: hard @@ -3619,6 +3839,18 @@ __metadata: languageName: node linkType: hard +"@docusaurus/cssnano-preset@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/cssnano-preset@npm:3.10.2" + dependencies: + cssnano-preset-advanced: "npm:^6.1.2" + postcss: "npm:^8.5.4" + postcss-sort-media-queries: "npm:^5.2.0" + tslib: "npm:^2.6.0" + checksum: 10c0/55d288fbe37abcac181323c59c03bb7c53f0f34531abe1bf35f537e4c926a6b97b8c597fd6044344b16fd5aa40f7a566032576857d0fa7c121651569631936ea + languageName: node + linkType: hard + "@docusaurus/cssnano-preset@npm:3.4.0": version: 3.4.0 resolution: "@docusaurus/cssnano-preset@npm:3.4.0" @@ -3631,15 +3863,13 @@ __metadata: languageName: node linkType: hard -"@docusaurus/cssnano-preset@npm:3.6.3": - version: 3.6.3 - resolution: "@docusaurus/cssnano-preset@npm:3.6.3" +"@docusaurus/logger@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/logger@npm:3.10.2" dependencies: - cssnano-preset-advanced: "npm:^6.1.2" - postcss: "npm:^8.4.38" - postcss-sort-media-queries: "npm:^5.2.0" + chalk: "npm:^4.1.2" tslib: "npm:^2.6.0" - checksum: 10c0/0289e37587d05dd3fd197d1014c083192e391f28e33baf465941e54086f182bf65938e56f8e346cec6c4323fbb359139564b48ee236f3b45ae6f28f44d1e79c1 + checksum: 10c0/77f4751a9b7dba4b40f61c859f1696c0eb3b180551e73f4af624481e4f17613523ca6d2a9e2595dc9e5a9908a44c1d90f61455d970bbeee47b509cacea76dc7e languageName: node linkType: hard @@ -3653,13 +3883,38 @@ __metadata: languageName: node linkType: hard -"@docusaurus/logger@npm:3.6.3": - version: 3.6.3 - resolution: "@docusaurus/logger@npm:3.6.3" +"@docusaurus/mdx-loader@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/mdx-loader@npm:3.10.2" dependencies: - chalk: "npm:^4.1.2" + "@docusaurus/logger": "npm:3.10.2" + "@docusaurus/utils": "npm:3.10.2" + "@docusaurus/utils-validation": "npm:3.10.2" + "@mdx-js/mdx": "npm:^3.0.0" + "@slorber/remark-comment": "npm:^1.0.0" + escape-html: "npm:^1.0.3" + estree-util-value-to-estree: "npm:^3.0.1" + file-loader: "npm:^6.2.0" + fs-extra: "npm:^11.1.1" + image-size: "npm:^2.0.2" + mdast-util-mdx: "npm:^3.0.0" + mdast-util-to-string: "npm:^4.0.0" + rehype-raw: "npm:^7.0.0" + remark-directive: "npm:^3.0.0" + remark-emoji: "npm:^4.0.0" + remark-frontmatter: "npm:^5.0.0" + remark-gfm: "npm:^4.0.0" + stringify-object: "npm:^3.3.0" tslib: "npm:^2.6.0" - checksum: 10c0/3119c8c586d6c5dba5595d8b795903c808ffa5011cb0e945b32cb011457f18f79909aca2f9864a5122ccfe32ecba9fd9c7fa1477d534febbcc5d3855a0daab91 + unified: "npm:^11.0.3" + unist-util-visit: "npm:^5.0.0" + url-loader: "npm:^4.1.1" + vfile: "npm:^6.0.1" + webpack: "npm:^5.88.1" + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + checksum: 10c0/eb37eebb858319d55d1493724a92dee6325d24f4badb334095d41260b0cb9601c4a9f64d4718616dc4c6829f5c062f91799452c1390c2b019f604ddc1c67a026 languageName: node linkType: hard @@ -3698,56 +3953,21 @@ __metadata: languageName: node linkType: hard -"@docusaurus/mdx-loader@npm:3.6.3": - version: 3.6.3 - resolution: "@docusaurus/mdx-loader@npm:3.6.3" +"@docusaurus/module-type-aliases@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/module-type-aliases@npm:3.10.2" dependencies: - "@docusaurus/logger": "npm:3.6.3" - "@docusaurus/utils": "npm:3.6.3" - "@docusaurus/utils-validation": "npm:3.6.3" - "@mdx-js/mdx": "npm:^3.0.0" - "@slorber/remark-comment": "npm:^1.0.0" - escape-html: "npm:^1.0.3" - estree-util-value-to-estree: "npm:^3.0.1" - file-loader: "npm:^6.2.0" - fs-extra: "npm:^11.1.1" - image-size: "npm:^1.0.2" - mdast-util-mdx: "npm:^3.0.0" - mdast-util-to-string: "npm:^4.0.0" - rehype-raw: "npm:^7.0.0" - remark-directive: "npm:^3.0.0" - remark-emoji: "npm:^4.0.0" - remark-frontmatter: "npm:^5.0.0" - remark-gfm: "npm:^4.0.0" - stringify-object: "npm:^3.3.0" - tslib: "npm:^2.6.0" - unified: "npm:^11.0.3" - unist-util-visit: "npm:^5.0.0" - url-loader: "npm:^4.1.1" - vfile: "npm:^6.0.1" - webpack: "npm:^5.88.1" - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - checksum: 10c0/c8d358c665176bb185284c38d7465fcefce4f0da4ac7cc83f25b5258c4489cdaa2916b183d83f47e0af33158a22cd06af1ffd383f8aac04549393f4c544c56bc - languageName: node - linkType: hard - -"@docusaurus/module-type-aliases@npm:3.6.3, @docusaurus/module-type-aliases@npm:^3.6.3": - version: 3.6.3 - resolution: "@docusaurus/module-type-aliases@npm:3.6.3" - dependencies: - "@docusaurus/types": "npm:3.6.3" + "@docusaurus/types": "npm:3.10.2" "@types/history": "npm:^4.7.11" "@types/react": "npm:*" "@types/react-router-config": "npm:*" "@types/react-router-dom": "npm:*" - react-helmet-async: "npm:*" + react-helmet-async: "npm:@slorber/react-helmet-async@1.3.0" react-loadable: "npm:@docusaurus/react-loadable@6.0.0" peerDependencies: react: "*" react-dom: "*" - checksum: 10c0/e142ba7af9059611751159b844bb0ba37c70e29f15b122d1c7ca869a5200a0d3b62fa84dc71a7da04f6d27efffc19c45181d9e6ad46506aaacfe463ffac9e62d + checksum: 10c0/3a6a4cc350c48a4e4ba6826976f24e15fc833509533a958252f84b71f7b742d2d65813dde2bb0bc84f44b6918c891997b0fc4174d4b83edb0ef6aeed3330ca13 languageName: node linkType: hard @@ -3769,23 +3989,24 @@ __metadata: languageName: node linkType: hard -"@docusaurus/plugin-content-blog@npm:3.6.3": - version: 3.6.3 - resolution: "@docusaurus/plugin-content-blog@npm:3.6.3" +"@docusaurus/plugin-content-blog@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/plugin-content-blog@npm:3.10.2" dependencies: - "@docusaurus/core": "npm:3.6.3" - "@docusaurus/logger": "npm:3.6.3" - "@docusaurus/mdx-loader": "npm:3.6.3" - "@docusaurus/theme-common": "npm:3.6.3" - "@docusaurus/types": "npm:3.6.3" - "@docusaurus/utils": "npm:3.6.3" - "@docusaurus/utils-common": "npm:3.6.3" - "@docusaurus/utils-validation": "npm:3.6.3" + "@docusaurus/core": "npm:3.10.2" + "@docusaurus/logger": "npm:3.10.2" + "@docusaurus/mdx-loader": "npm:3.10.2" + "@docusaurus/theme-common": "npm:3.10.2" + "@docusaurus/types": "npm:3.10.2" + "@docusaurus/utils": "npm:3.10.2" + "@docusaurus/utils-common": "npm:3.10.2" + "@docusaurus/utils-validation": "npm:3.10.2" cheerio: "npm:1.0.0-rc.12" + combine-promises: "npm:^1.1.0" feed: "npm:^4.2.2" fs-extra: "npm:^11.1.1" lodash: "npm:^4.17.21" - reading-time: "npm:^1.5.0" + schema-dts: "npm:^1.1.2" srcset: "npm:^4.0.0" tslib: "npm:^2.6.0" unist-util-visit: "npm:^5.0.0" @@ -3793,190 +4014,224 @@ __metadata: webpack: "npm:^5.88.1" peerDependencies: "@docusaurus/plugin-content-docs": "*" - react: ^18.0.0 - react-dom: ^18.0.0 - checksum: 10c0/6f8b229c66fd7c155e120732a3a2cca614c610f1458a016f15b6a30f100f1b1679f41b0defcc6a7d95fb55b9ba798722101b54171965c0068a843b4d8de3ff8f + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + checksum: 10c0/ef6b0aae35854fdc41e6e10b4e4fad837134e0431aee12324d94b3898db3048dba56316e172f878b97c575a1696242446e29554a6e900c7519eaa5c88b6d46ff languageName: node linkType: hard -"@docusaurus/plugin-content-docs@npm:3.6.3": - version: 3.6.3 - resolution: "@docusaurus/plugin-content-docs@npm:3.6.3" +"@docusaurus/plugin-content-docs@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/plugin-content-docs@npm:3.10.2" dependencies: - "@docusaurus/core": "npm:3.6.3" - "@docusaurus/logger": "npm:3.6.3" - "@docusaurus/mdx-loader": "npm:3.6.3" - "@docusaurus/module-type-aliases": "npm:3.6.3" - "@docusaurus/theme-common": "npm:3.6.3" - "@docusaurus/types": "npm:3.6.3" - "@docusaurus/utils": "npm:3.6.3" - "@docusaurus/utils-common": "npm:3.6.3" - "@docusaurus/utils-validation": "npm:3.6.3" + "@docusaurus/core": "npm:3.10.2" + "@docusaurus/logger": "npm:3.10.2" + "@docusaurus/mdx-loader": "npm:3.10.2" + "@docusaurus/module-type-aliases": "npm:3.10.2" + "@docusaurus/theme-common": "npm:3.10.2" + "@docusaurus/types": "npm:3.10.2" + "@docusaurus/utils": "npm:3.10.2" + "@docusaurus/utils-common": "npm:3.10.2" + "@docusaurus/utils-validation": "npm:3.10.2" "@types/react-router-config": "npm:^5.0.7" combine-promises: "npm:^1.1.0" fs-extra: "npm:^11.1.1" js-yaml: "npm:^4.1.0" lodash: "npm:^4.17.21" + schema-dts: "npm:^1.1.2" tslib: "npm:^2.6.0" utility-types: "npm:^3.10.0" webpack: "npm:^5.88.1" peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - checksum: 10c0/53c1e35e2d4b03b1f1d7990c1eccd0dfbccb244ed5250370add44349e0976fade1b9afca9d2b45c4013bbab5624bb432aa5c6e0e913fdb69df814ccb51212887 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + checksum: 10c0/800674266633e204bfddddd7ce0a35cfbe308b0f05191e96be02d4968c2b0c92e677887dd4ddfc3cecbb0ae46e7e1248084c5a00a9db798274faa9531ed17f48 languageName: node linkType: hard -"@docusaurus/plugin-content-pages@npm:3.6.3": - version: 3.6.3 - resolution: "@docusaurus/plugin-content-pages@npm:3.6.3" +"@docusaurus/plugin-content-pages@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/plugin-content-pages@npm:3.10.2" dependencies: - "@docusaurus/core": "npm:3.6.3" - "@docusaurus/mdx-loader": "npm:3.6.3" - "@docusaurus/types": "npm:3.6.3" - "@docusaurus/utils": "npm:3.6.3" - "@docusaurus/utils-validation": "npm:3.6.3" + "@docusaurus/core": "npm:3.10.2" + "@docusaurus/mdx-loader": "npm:3.10.2" + "@docusaurus/types": "npm:3.10.2" + "@docusaurus/utils": "npm:3.10.2" + "@docusaurus/utils-validation": "npm:3.10.2" fs-extra: "npm:^11.1.1" tslib: "npm:^2.6.0" webpack: "npm:^5.88.1" peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - checksum: 10c0/f40dba85fb122c5f2a60ba634176c5817c1766751ff887c4f8056f4ccb32c332e1e92d77baf73c2c8178b77bae764f018ec7b3889927f2c4bbdb0ab442078a8c + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + checksum: 10c0/68974ebe1446813f37cff5aa77163dfd82b46e62e724b829b7fc1461a33c5e54391699b3adf9ff9696f6d5bd1da50df8c66299ed3a6db3f7c2ca6356e77a6118 languageName: node linkType: hard -"@docusaurus/plugin-debug@npm:3.6.3": - version: 3.6.3 - resolution: "@docusaurus/plugin-debug@npm:3.6.3" +"@docusaurus/plugin-css-cascade-layers@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/plugin-css-cascade-layers@npm:3.10.2" dependencies: - "@docusaurus/core": "npm:3.6.3" - "@docusaurus/types": "npm:3.6.3" - "@docusaurus/utils": "npm:3.6.3" + "@docusaurus/core": "npm:3.10.2" + "@docusaurus/types": "npm:3.10.2" + "@docusaurus/utils": "npm:3.10.2" + "@docusaurus/utils-validation": "npm:3.10.2" + tslib: "npm:^2.6.0" + checksum: 10c0/2c7429b24edc1ef02aaa8e26734a429f117eb053e43b9b8a586be5285a897236560e7e0174277abedf6c364ccd10850dc728d851e48075eca3afbe1ac0ec77e3 + languageName: node + linkType: hard + +"@docusaurus/plugin-debug@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/plugin-debug@npm:3.10.2" + dependencies: + "@docusaurus/core": "npm:3.10.2" + "@docusaurus/types": "npm:3.10.2" + "@docusaurus/utils": "npm:3.10.2" fs-extra: "npm:^11.1.1" - react-json-view-lite: "npm:^1.2.0" + react-json-view-lite: "npm:^2.3.0" tslib: "npm:^2.6.0" peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - checksum: 10c0/1f3f4b9d52aa24ee144476959290c17db04b891f0f39b8dece703167df555f7a5577fc93e6c851122361d25f8654f1dd975e41848333848e5eabb788dedd83a5 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + checksum: 10c0/df6acce06f265a65a46986a2d47d60546a13b03b3204c472ff9e48b38cb140c939b6a8249e7aba64c387aa63ffdbd2122194e55f617dc34414303421dbb82554 languageName: node linkType: hard -"@docusaurus/plugin-google-analytics@npm:3.6.3": - version: 3.6.3 - resolution: "@docusaurus/plugin-google-analytics@npm:3.6.3" +"@docusaurus/plugin-google-analytics@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/plugin-google-analytics@npm:3.10.2" dependencies: - "@docusaurus/core": "npm:3.6.3" - "@docusaurus/types": "npm:3.6.3" - "@docusaurus/utils-validation": "npm:3.6.3" + "@docusaurus/core": "npm:3.10.2" + "@docusaurus/types": "npm:3.10.2" + "@docusaurus/utils-validation": "npm:3.10.2" tslib: "npm:^2.6.0" peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - checksum: 10c0/762dc9e93cb8728cc71be927521c1a24b10d48100145a7f4e83d912513b2048389bd4604aff72520d56ef6899dc44852067ad153b85d7bf5a7cb391f40b3289c + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + checksum: 10c0/0b2f472203e16103ba8cebc3a32caddaecb783bca35162096ae6ad2d5fdcb724fcfce0b79682038394a664a0b38864e63e5e7a8d0d14024939891360e77ff49d languageName: node linkType: hard -"@docusaurus/plugin-google-gtag@npm:3.6.3": - version: 3.6.3 - resolution: "@docusaurus/plugin-google-gtag@npm:3.6.3" +"@docusaurus/plugin-google-gtag@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/plugin-google-gtag@npm:3.10.2" dependencies: - "@docusaurus/core": "npm:3.6.3" - "@docusaurus/types": "npm:3.6.3" - "@docusaurus/utils-validation": "npm:3.6.3" - "@types/gtag.js": "npm:^0.0.12" + "@docusaurus/core": "npm:3.10.2" + "@docusaurus/types": "npm:3.10.2" + "@docusaurus/utils-validation": "npm:3.10.2" tslib: "npm:^2.6.0" peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - checksum: 10c0/671b0d9be8603b6baa63701b28d9f14080f057a0d69c61eef8ad954844ba8f832c9a83f8f14eeeb3dd84baa4861ccc8b50f5b62afe51ba70474ab15cdd77af94 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + checksum: 10c0/029b9b18e4c588daa0dd0cd79cb8b3682cc8c44a83b28f0179eb45c9717619e104d276df3f0ce7dadea01cdae4a61c8ef3fb993f59be5daa5365df3317ef2be8 languageName: node linkType: hard -"@docusaurus/plugin-google-tag-manager@npm:3.6.3": - version: 3.6.3 - resolution: "@docusaurus/plugin-google-tag-manager@npm:3.6.3" +"@docusaurus/plugin-google-tag-manager@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/plugin-google-tag-manager@npm:3.10.2" dependencies: - "@docusaurus/core": "npm:3.6.3" - "@docusaurus/types": "npm:3.6.3" - "@docusaurus/utils-validation": "npm:3.6.3" + "@docusaurus/core": "npm:3.10.2" + "@docusaurus/types": "npm:3.10.2" + "@docusaurus/utils-validation": "npm:3.10.2" tslib: "npm:^2.6.0" peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - checksum: 10c0/e3f9f3564d7092f0d2a443a66e1822cde7ef437b4385e41c1ad2fb048f8cba9c97bee462c57a1ed93b5f86ce596e065f114375559979ce586b6403aa139a92cf + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + checksum: 10c0/1cf911e6b91dd76fe8283d1c16643d1c46435fc03a89b786968b2f93606ae1af58c3cd1208f548e980025c45b4ff5c9b307be71ab56c0102c4c2e8e91f052370 languageName: node linkType: hard -"@docusaurus/plugin-sitemap@npm:3.6.3": - version: 3.6.3 - resolution: "@docusaurus/plugin-sitemap@npm:3.6.3" +"@docusaurus/plugin-sitemap@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/plugin-sitemap@npm:3.10.2" dependencies: - "@docusaurus/core": "npm:3.6.3" - "@docusaurus/logger": "npm:3.6.3" - "@docusaurus/types": "npm:3.6.3" - "@docusaurus/utils": "npm:3.6.3" - "@docusaurus/utils-common": "npm:3.6.3" - "@docusaurus/utils-validation": "npm:3.6.3" + "@docusaurus/core": "npm:3.10.2" + "@docusaurus/logger": "npm:3.10.2" + "@docusaurus/types": "npm:3.10.2" + "@docusaurus/utils": "npm:3.10.2" + "@docusaurus/utils-common": "npm:3.10.2" + "@docusaurus/utils-validation": "npm:3.10.2" fs-extra: "npm:^11.1.1" sitemap: "npm:^7.1.1" tslib: "npm:^2.6.0" peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - checksum: 10c0/52d39a8b9f6db21343f363703b15b1257c60479d0fa9846db39e953fa88143e8e3a5bbeed5be94fcccc7bc87736fe7842f19f71021f819933177aa3a44da7916 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + checksum: 10c0/4d1c28458303ec439ef31ab9f7f23a18e7ee2d355c4331a739a42aae9cf19f5506415ea631d7569580008e0215274c15f4148b84d6cd0c5f8dd208f7f49e7349 languageName: node linkType: hard -"@docusaurus/preset-classic@npm:3.6.3": - version: 3.6.3 - resolution: "@docusaurus/preset-classic@npm:3.6.3" +"@docusaurus/plugin-svgr@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/plugin-svgr@npm:3.10.2" dependencies: - "@docusaurus/core": "npm:3.6.3" - "@docusaurus/plugin-content-blog": "npm:3.6.3" - "@docusaurus/plugin-content-docs": "npm:3.6.3" - "@docusaurus/plugin-content-pages": "npm:3.6.3" - "@docusaurus/plugin-debug": "npm:3.6.3" - "@docusaurus/plugin-google-analytics": "npm:3.6.3" - "@docusaurus/plugin-google-gtag": "npm:3.6.3" - "@docusaurus/plugin-google-tag-manager": "npm:3.6.3" - "@docusaurus/plugin-sitemap": "npm:3.6.3" - "@docusaurus/theme-classic": "npm:3.6.3" - "@docusaurus/theme-common": "npm:3.6.3" - "@docusaurus/theme-search-algolia": "npm:3.6.3" - "@docusaurus/types": "npm:3.6.3" + "@docusaurus/core": "npm:3.10.2" + "@docusaurus/types": "npm:3.10.2" + "@docusaurus/utils": "npm:3.10.2" + "@docusaurus/utils-validation": "npm:3.10.2" + "@svgr/core": "npm:8.1.0" + "@svgr/webpack": "npm:^8.1.0" + tslib: "npm:^2.6.0" + webpack: "npm:^5.88.1" peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - checksum: 10c0/bb94646f5e5d552787d2b2f2104071ef6ae178593445c08d8669e9150792706065e51df94d13e3907ee08d742d72bdffb48233f758b7864c0e0fbd238e22799b + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + checksum: 10c0/2817f91f641336dab5d6874ee513e288d599a0be4e1a9c59698befcf41f91aeb73b3660198777c09f4470a6ba31c2d57e9fc1cfd482e0067372bb137932c6307 languageName: node linkType: hard -"@docusaurus/theme-classic@npm:3.6.3": - version: 3.6.3 - resolution: "@docusaurus/theme-classic@npm:3.6.3" +"@docusaurus/preset-classic@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/preset-classic@npm:3.10.2" dependencies: - "@docusaurus/core": "npm:3.6.3" - "@docusaurus/logger": "npm:3.6.3" - "@docusaurus/mdx-loader": "npm:3.6.3" - "@docusaurus/module-type-aliases": "npm:3.6.3" - "@docusaurus/plugin-content-blog": "npm:3.6.3" - "@docusaurus/plugin-content-docs": "npm:3.6.3" - "@docusaurus/plugin-content-pages": "npm:3.6.3" - "@docusaurus/theme-common": "npm:3.6.3" - "@docusaurus/theme-translations": "npm:3.6.3" - "@docusaurus/types": "npm:3.6.3" - "@docusaurus/utils": "npm:3.6.3" - "@docusaurus/utils-common": "npm:3.6.3" - "@docusaurus/utils-validation": "npm:3.6.3" + "@docusaurus/core": "npm:3.10.2" + "@docusaurus/plugin-content-blog": "npm:3.10.2" + "@docusaurus/plugin-content-docs": "npm:3.10.2" + "@docusaurus/plugin-content-pages": "npm:3.10.2" + "@docusaurus/plugin-css-cascade-layers": "npm:3.10.2" + "@docusaurus/plugin-debug": "npm:3.10.2" + "@docusaurus/plugin-google-analytics": "npm:3.10.2" + "@docusaurus/plugin-google-gtag": "npm:3.10.2" + "@docusaurus/plugin-google-tag-manager": "npm:3.10.2" + "@docusaurus/plugin-sitemap": "npm:3.10.2" + "@docusaurus/plugin-svgr": "npm:3.10.2" + "@docusaurus/theme-classic": "npm:3.10.2" + "@docusaurus/theme-common": "npm:3.10.2" + "@docusaurus/theme-search-algolia": "npm:3.10.2" + "@docusaurus/types": "npm:3.10.2" + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + checksum: 10c0/455b1dea7a9867a69e2634aef4286116c5aef6612e76277ebe82538ee14517ca9a6f2e0421196bd15f7cde6376160fd6284dfe83c03a3c0d1ee00bbc642d4d35 + languageName: node + linkType: hard + +"@docusaurus/theme-classic@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/theme-classic@npm:3.10.2" + dependencies: + "@docusaurus/core": "npm:3.10.2" + "@docusaurus/logger": "npm:3.10.2" + "@docusaurus/mdx-loader": "npm:3.10.2" + "@docusaurus/module-type-aliases": "npm:3.10.2" + "@docusaurus/plugin-content-blog": "npm:3.10.2" + "@docusaurus/plugin-content-docs": "npm:3.10.2" + "@docusaurus/plugin-content-pages": "npm:3.10.2" + "@docusaurus/theme-common": "npm:3.10.2" + "@docusaurus/theme-translations": "npm:3.10.2" + "@docusaurus/types": "npm:3.10.2" + "@docusaurus/utils": "npm:3.10.2" + "@docusaurus/utils-common": "npm:3.10.2" + "@docusaurus/utils-validation": "npm:3.10.2" "@mdx-js/react": "npm:^3.0.0" clsx: "npm:^2.0.0" copy-text-to-clipboard: "npm:^3.2.0" infima: "npm:0.2.0-alpha.45" lodash: "npm:^4.17.21" nprogress: "npm:^0.2.0" - postcss: "npm:^8.4.26" + postcss: "npm:^8.5.4" prism-react-renderer: "npm:^2.3.0" prismjs: "npm:^1.29.0" react-router-dom: "npm:^5.3.4" @@ -3984,20 +4239,20 @@ __metadata: tslib: "npm:^2.6.0" utility-types: "npm:^3.10.0" peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - checksum: 10c0/cfc891ecb967ca39d2726df426bcb5ed1033153f276dc63e1d7f8b2a3587c6ed035630de92817464de8ad9392217d56698c4584559475fd19df0a3199cf42153 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + checksum: 10c0/c9a19f52ddf8323c22f4bd8765fbcf552cf1ac215949dd50df60e2131ff7f942365e8ac5b4f7fa8230e22b73df5400b97f0fa915fba8ad56445b9ff4eb3946cc languageName: node linkType: hard -"@docusaurus/theme-common@npm:3.6.3": - version: 3.6.3 - resolution: "@docusaurus/theme-common@npm:3.6.3" +"@docusaurus/theme-common@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/theme-common@npm:3.10.2" dependencies: - "@docusaurus/mdx-loader": "npm:3.6.3" - "@docusaurus/module-type-aliases": "npm:3.6.3" - "@docusaurus/utils": "npm:3.6.3" - "@docusaurus/utils-common": "npm:3.6.3" + "@docusaurus/mdx-loader": "npm:3.10.2" + "@docusaurus/module-type-aliases": "npm:3.10.2" + "@docusaurus/utils": "npm:3.10.2" + "@docusaurus/utils-common": "npm:3.10.2" "@types/history": "npm:^4.7.11" "@types/react": "npm:*" "@types/react-router-config": "npm:*" @@ -4008,26 +4263,49 @@ __metadata: utility-types: "npm:^3.10.0" peerDependencies: "@docusaurus/plugin-content-docs": "*" - react: ^18.0.0 - react-dom: ^18.0.0 - checksum: 10c0/fdbab9ba549a10924f21cdfc53ebea43a514fef260981145e5b922a250959a042e29eaf3afeb633c703236902325bcd302b87ff92c587985c65eba5a3d111ddb + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + checksum: 10c0/2ec64449ff69beb3c506f3f7de837afe6a38fc904b1d38547415fb32cd3dcac7d868b14b59d6fc14e0eb3d47c2091bd05fecd294455b765a4bc9b2af9cdadf0a languageName: node linkType: hard -"@docusaurus/theme-search-algolia@npm:3.6.3": - version: 3.6.3 - resolution: "@docusaurus/theme-search-algolia@npm:3.6.3" +"@docusaurus/theme-mermaid@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/theme-mermaid@npm:3.10.2" dependencies: - "@docsearch/react": "npm:^3.5.2" - "@docusaurus/core": "npm:3.6.3" - "@docusaurus/logger": "npm:3.6.3" - "@docusaurus/plugin-content-docs": "npm:3.6.3" - "@docusaurus/theme-common": "npm:3.6.3" - "@docusaurus/theme-translations": "npm:3.6.3" - "@docusaurus/utils": "npm:3.6.3" - "@docusaurus/utils-validation": "npm:3.6.3" - algoliasearch: "npm:^4.18.0" - algoliasearch-helper: "npm:^3.13.3" + "@docusaurus/core": "npm:3.10.2" + "@docusaurus/module-type-aliases": "npm:3.10.2" + "@docusaurus/theme-common": "npm:3.10.2" + "@docusaurus/types": "npm:3.10.2" + "@docusaurus/utils-validation": "npm:3.10.2" + mermaid: "npm:>=11.6.0" + tslib: "npm:^2.6.0" + peerDependencies: + "@mermaid-js/layout-elk": ^0.1.9 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@mermaid-js/layout-elk": + optional: true + checksum: 10c0/5a1c783d8b7a188c119cd2d0167d70099a6d6121f001f8cca68cdbc167b9606b9d2cc6da59b005b1edcefbff06ee2e5547247cc0d8d01d33abd99dee35bb3903 + languageName: node + linkType: hard + +"@docusaurus/theme-search-algolia@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/theme-search-algolia@npm:3.10.2" + dependencies: + "@algolia/autocomplete-core": "npm:^1.19.2" + "@docsearch/react": "npm:^3.9.0 || ^4.3.2" + "@docusaurus/core": "npm:3.10.2" + "@docusaurus/logger": "npm:3.10.2" + "@docusaurus/plugin-content-docs": "npm:3.10.2" + "@docusaurus/theme-common": "npm:3.10.2" + "@docusaurus/theme-translations": "npm:3.10.2" + "@docusaurus/utils": "npm:3.10.2" + "@docusaurus/utils-validation": "npm:3.10.2" + algoliasearch: "npm:^5.37.0" + algoliasearch-helper: "npm:^3.26.0" clsx: "npm:^2.0.0" eta: "npm:^2.2.0" fs-extra: "npm:^11.1.1" @@ -4035,26 +4313,47 @@ __metadata: tslib: "npm:^2.6.0" utility-types: "npm:^3.10.0" peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - checksum: 10c0/e26dccca3d215f19930279254a619f9c02d30aac192a9cfa99e25f750f9100f811e3b81db9d149bac10a5c467dafb92d8d15a28f865a8dd910c12335e2bad397 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + checksum: 10c0/2097c7a0e80e251392b6e6c4a6d5d79eb88072dab002df6ce1dff0ec22e0660f0ba8c32e5a57605a51afe4461188ae998a49740cc97df5dcd803bb0853a536ad languageName: node linkType: hard -"@docusaurus/theme-translations@npm:3.6.3": - version: 3.6.3 - resolution: "@docusaurus/theme-translations@npm:3.6.3" +"@docusaurus/theme-translations@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/theme-translations@npm:3.10.2" dependencies: fs-extra: "npm:^11.1.1" tslib: "npm:^2.6.0" - checksum: 10c0/90cf563d747b3b82eb549f4ab319e7f3a929baaeb3898531e5155847eeb5f4b09518a0e9b9a2bfdc25df770ca4afd73b4f029fcb14b6d5e3cb39b25f4b944959 + checksum: 10c0/f063b75d700f70a4dc5203268962ceef84a5ba873109c5b9de0ffea7cc70ddd8fea74fa3676ffc27f736568d51219a3791486bee9f3ea6c4d925fa60e4300f54 languageName: node linkType: hard -"@docusaurus/tsconfig@npm:^3.6.3": - version: 3.6.3 - resolution: "@docusaurus/tsconfig@npm:3.6.3" - checksum: 10c0/0ff7af6e0fe267d22c2e1c439d887aef1668b626731b07b4053c6fb5377f0faeec74d69f30d139522f6de74ba73d4462242400564024faa7ab0076c3af83d5d9 +"@docusaurus/tsconfig@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/tsconfig@npm:3.10.2" + checksum: 10c0/f73d11ce6440d8ad3d8a87a87661e39d1d16451db0f16cd15a1856b331608b429e4b35ab1e8d1fae4c4e2b5bb4b8c238bac3900a8f024a68ba942c633c228361 + languageName: node + linkType: hard + +"@docusaurus/types@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/types@npm:3.10.2" + dependencies: + "@mdx-js/mdx": "npm:^3.0.0" + "@types/history": "npm:^4.7.11" + "@types/mdast": "npm:^4.0.2" + "@types/react": "npm:*" + commander: "npm:^5.1.0" + joi: "npm:^17.9.2" + react-helmet-async: "npm:@slorber/react-helmet-async@1.3.0" + utility-types: "npm:^3.10.0" + webpack: "npm:^5.95.0" + webpack-merge: "npm:^5.9.0" + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + checksum: 10c0/29672542109c69c7527a14767f0acbfac6635e650be6da75998f97cda7987deda30f402c04438879492a798975c9484265139f603631a2df0575a49f29a7345d languageName: node linkType: hard @@ -4078,23 +4377,13 @@ __metadata: languageName: node linkType: hard -"@docusaurus/types@npm:3.6.3, @docusaurus/types@npm:^3.6.3": - version: 3.6.3 - resolution: "@docusaurus/types@npm:3.6.3" +"@docusaurus/utils-common@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/utils-common@npm:3.10.2" dependencies: - "@mdx-js/mdx": "npm:^3.0.0" - "@types/history": "npm:^4.7.11" - "@types/react": "npm:*" - commander: "npm:^5.1.0" - joi: "npm:^17.9.2" - react-helmet-async: "npm:^1.3.0" - utility-types: "npm:^3.10.0" - webpack: "npm:^5.95.0" - webpack-merge: "npm:^5.9.0" - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - checksum: 10c0/fb4fca87c7e25482ee08d0e70da28cd795cd29a54bae3e95868e7e670a37154e4751712663674d03ff0a060c8b84787f296f397eb36027caf91c1633ac22789d + "@docusaurus/types": "npm:3.10.2" + tslib: "npm:^2.6.0" + checksum: 10c0/65727f7acf200a2d026475e2f81a78fbe37b757c869f187122a69cfc40b4b1936699d83a2e701c2de856f9c68e7c8f307a3fb56a473bde9c883e865887b9e8c6 languageName: node linkType: hard @@ -4112,13 +4401,19 @@ __metadata: languageName: node linkType: hard -"@docusaurus/utils-common@npm:3.6.3": - version: 3.6.3 - resolution: "@docusaurus/utils-common@npm:3.6.3" +"@docusaurus/utils-validation@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/utils-validation@npm:3.10.2" dependencies: - "@docusaurus/types": "npm:3.6.3" + "@docusaurus/logger": "npm:3.10.2" + "@docusaurus/utils": "npm:3.10.2" + "@docusaurus/utils-common": "npm:3.10.2" + fs-extra: "npm:^11.2.0" + joi: "npm:^17.9.2" + js-yaml: "npm:^4.1.0" + lodash: "npm:^4.17.21" tslib: "npm:^2.6.0" - checksum: 10c0/cf484b62541412a5706cbf8f8e7cc2f9bc1f0b4db33657b74fe2f02d1a3b4ba0349e99022d4aec6e1fecf76651316fce5a210172153b67a9ab16847c6ec00e6e + checksum: 10c0/67deae60e3338acae79928655d68db52bb1691ed467bf66ac9d1ed45a5b95d927af71f68c0d6120e908bea1d5e97562b3c3edbca93ebf07adc02012ec2da8277 languageName: node linkType: hard @@ -4138,19 +4433,32 @@ __metadata: languageName: node linkType: hard -"@docusaurus/utils-validation@npm:3.6.3": - version: 3.6.3 - resolution: "@docusaurus/utils-validation@npm:3.6.3" +"@docusaurus/utils@npm:3.10.2": + version: 3.10.2 + resolution: "@docusaurus/utils@npm:3.10.2" dependencies: - "@docusaurus/logger": "npm:3.6.3" - "@docusaurus/utils": "npm:3.6.3" - "@docusaurus/utils-common": "npm:3.6.3" - fs-extra: "npm:^11.2.0" - joi: "npm:^17.9.2" + "@11ty/gray-matter": "npm:^1.0.0" + "@docusaurus/logger": "npm:3.10.2" + "@docusaurus/types": "npm:3.10.2" + "@docusaurus/utils-common": "npm:3.10.2" + escape-string-regexp: "npm:^4.0.0" + execa: "npm:^5.1.1" + file-loader: "npm:^6.2.0" + fs-extra: "npm:^11.1.1" + github-slugger: "npm:^1.5.0" + globby: "npm:^11.1.0" + jiti: "npm:^1.20.0" js-yaml: "npm:^4.1.0" lodash: "npm:^4.17.21" + micromatch: "npm:^4.0.5" + p-queue: "npm:^6.6.2" + prompts: "npm:^2.4.2" + resolve-pathname: "npm:^3.0.0" tslib: "npm:^2.6.0" - checksum: 10c0/8cfc1d223e71612180d09ad3027ea10c4447fc70ed4bf680b66f72f1bce7c74556a6029073fa6a6bc64ddbc03a9a1c9d708607e62ef0b86a033f35ab6a63ddf9 + url-loader: "npm:^4.1.1" + utility-types: "npm:^3.10.0" + webpack: "npm:^5.88.1" + checksum: 10c0/7d72ab04b8587a001d57efe71f40f8c0ae7e0087a51af791372455368726a8ea1c18473e0af5331aa30ea6a298d386a07417163597e2461a0213e14befb3609a languageName: node linkType: hard @@ -4187,35 +4495,6 @@ __metadata: languageName: node linkType: hard -"@docusaurus/utils@npm:3.6.3": - version: 3.6.3 - resolution: "@docusaurus/utils@npm:3.6.3" - dependencies: - "@docusaurus/logger": "npm:3.6.3" - "@docusaurus/types": "npm:3.6.3" - "@docusaurus/utils-common": "npm:3.6.3" - "@svgr/webpack": "npm:^8.1.0" - escape-string-regexp: "npm:^4.0.0" - file-loader: "npm:^6.2.0" - fs-extra: "npm:^11.1.1" - github-slugger: "npm:^1.5.0" - globby: "npm:^11.1.0" - gray-matter: "npm:^4.0.3" - jiti: "npm:^1.20.0" - js-yaml: "npm:^4.1.0" - lodash: "npm:^4.17.21" - micromatch: "npm:^4.0.5" - prompts: "npm:^2.4.2" - resolve-pathname: "npm:^3.0.0" - shelljs: "npm:^0.8.5" - tslib: "npm:^2.6.0" - url-loader: "npm:^4.1.1" - utility-types: "npm:^3.10.0" - webpack: "npm:^5.88.1" - checksum: 10c0/e665e067be8a440a93bec66e79f94735f8cfb21940df8f57c89f923d2a5c08fb29b35e0309370baec644281b0764034fe75642a976d1ae04392fe21b905df8bf - languageName: node - linkType: hard - "@exodus/schemasafe@npm:^1.0.0-rc.2": version: 1.3.0 resolution: "@exodus/schemasafe@npm:1.3.0" @@ -4230,58 +4509,56 @@ __metadata: languageName: node linkType: hard -"@fortawesome/fontawesome-common-types@npm:6.5.1": - version: 6.5.1 - resolution: "@fortawesome/fontawesome-common-types@npm:6.5.1" - checksum: 10c0/afd4e6de0af60b1dc1557877f8f5fa95ee9f0fb0558581d25c46d24c2946bbcf54e351451d0ca2d6b043a283a66526450da7cf052a45702237b0c8383823a825 +"@fortawesome/fontawesome-common-types@npm:7.3.1": + version: 7.3.1 + resolution: "@fortawesome/fontawesome-common-types@npm:7.3.1" + checksum: 10c0/f443a0109773e57ceab3c35021c4f26baf8c29afc79efbea2324bcd9f7dd326f5ac415e46ead17eaf6e935bc23fce83993d4211a4cff375c19100ee65ea9e5cc languageName: node linkType: hard -"@fortawesome/fontawesome-svg-core@npm:6.5.1": - version: 6.5.1 - resolution: "@fortawesome/fontawesome-svg-core@npm:6.5.1" +"@fortawesome/fontawesome-svg-core@npm:7.3.1": + version: 7.3.1 + resolution: "@fortawesome/fontawesome-svg-core@npm:7.3.1" dependencies: - "@fortawesome/fontawesome-common-types": "npm:6.5.1" - checksum: 10c0/ba4f4f4f1a98a154ff89ed9a24c586809cd277e147d177fcdc5a76c0ea315087d5e383487d0658b9d27cfcb26971a45364f567c475b4e2df16cfb50cde4a83af + "@fortawesome/fontawesome-common-types": "npm:7.3.1" + checksum: 10c0/07c84a5751999d13d875f63e059ec2b0ab6dbed9cfe363fe8a870fd64e045c049367ae55bdee18973b38255967593d6eef403170a1e70cf4400de8216a932654 languageName: node linkType: hard -"@fortawesome/free-brands-svg-icons@npm:6.5.1": - version: 6.5.1 - resolution: "@fortawesome/free-brands-svg-icons@npm:6.5.1" +"@fortawesome/free-brands-svg-icons@npm:7.3.1": + version: 7.3.1 + resolution: "@fortawesome/free-brands-svg-icons@npm:7.3.1" dependencies: - "@fortawesome/fontawesome-common-types": "npm:6.5.1" - checksum: 10c0/cc4c8b5618d8d92c0d3fc174b05cad78307f88e5258f8a880c03539c590aef00fb2a29c158597e15b7487575f0df7e7674ce8119847ff21561f590f73fbc5a47 + "@fortawesome/fontawesome-common-types": "npm:7.3.1" + checksum: 10c0/ae9049f450a64166f02e6a199b0c87786899a0d49e114994da85b8ccf906466543510d0e3e63fdb945eac00e0b81b0c2e274d54f06a605767a1e8503bdea344e languageName: node linkType: hard -"@fortawesome/free-regular-svg-icons@npm:6.5.1": - version: 6.5.1 - resolution: "@fortawesome/free-regular-svg-icons@npm:6.5.1" +"@fortawesome/free-regular-svg-icons@npm:7.3.1": + version: 7.3.1 + resolution: "@fortawesome/free-regular-svg-icons@npm:7.3.1" dependencies: - "@fortawesome/fontawesome-common-types": "npm:6.5.1" - checksum: 10c0/6e35a9b054854484e11d6e5b99bd7a59d421b43a252ce1cdd2054080738f2a4d4b7219245ba3753bd506fd847a7b7ad8e1a24fca270fa51b0bd9299ccc23401c + "@fortawesome/fontawesome-common-types": "npm:7.3.1" + checksum: 10c0/e67570dc9267cc6fa23dfbe01ccbd10dae8966d5ed48127007495902d4d1fde0a32a732070f004b97cd140b31ec45fcfe1728a2fde1afd8f28fb0aab09ce4856 languageName: node linkType: hard -"@fortawesome/free-solid-svg-icons@npm:6.5.1": - version: 6.5.1 - resolution: "@fortawesome/free-solid-svg-icons@npm:6.5.1" +"@fortawesome/free-solid-svg-icons@npm:7.3.1": + version: 7.3.1 + resolution: "@fortawesome/free-solid-svg-icons@npm:7.3.1" dependencies: - "@fortawesome/fontawesome-common-types": "npm:6.5.1" - checksum: 10c0/4874dca5780b74097a5ee8cb86eced74a61b175b6a0b1e5a963b932f6e87f98485d50b9bca208738316e0bccf4cadbea73ecb5678c9ba8d85f2f9f7cb455fd20 + "@fortawesome/fontawesome-common-types": "npm:7.3.1" + checksum: 10c0/b00958ce2929419adc2371739f7552728218f0c502dab74dafb6070e6a6c51a811a8b66ab18ca555703ad71d2769a99c64742baca29b244d8a209d11ad25d8fc languageName: node linkType: hard -"@fortawesome/react-fontawesome@npm:0.2.0": - version: 0.2.0 - resolution: "@fortawesome/react-fontawesome@npm:0.2.0" - dependencies: - prop-types: "npm:^15.8.1" +"@fortawesome/react-fontawesome@npm:3.5.0": + version: 3.5.0 + resolution: "@fortawesome/react-fontawesome@npm:3.5.0" peerDependencies: - "@fortawesome/fontawesome-svg-core": ~1 || ~6 - react: ">=16.3" - checksum: 10c0/cf1bd3840dfe1b39d2d5ee92ac49ba3aabad95d05dd6374368a5a1e5f140c8e497d11599290cb70afc6c856bb3228628269199e9659ce8f3132692a2d1e464a5 + "@fortawesome/fontawesome-svg-core": ~6 || ~7 + react: ^18.0.0 || ^19.0.0 + checksum: 10c0/b1b854095f9cbd52fe18f02461e594452fc70e3977ceab5fd1c9206ac98f89e40500e7fb5625426fa0cc2dc7e65d3d86bd07b70171d58dc5d54b0c74878d3b44 languageName: node linkType: hard @@ -4312,6 +4589,24 @@ __metadata: languageName: node linkType: hard +"@iconify/types@npm:^2.0.0": + version: 2.0.0 + resolution: "@iconify/types@npm:2.0.0" + checksum: 10c0/65a3be43500c7ccacf360e136d00e1717f050b7b91da644e94370256ac66f582d59212bdb30d00788aab4fc078262e91c95b805d1808d654b72f6d2072a7e4b2 + languageName: node + linkType: hard + +"@iconify/utils@npm:^3.0.2": + version: 3.1.7 + resolution: "@iconify/utils@npm:3.1.7" + dependencies: + "@antfu/install-pkg": "npm:^2.0.1" + "@iconify/types": "npm:^2.0.0" + import-meta-resolve: "npm:^4.2.0" + checksum: 10c0/26c99ceff910d84e66e46c643ad37946b34468b352a315534c023e8e59bd6504c26734d306b877660f92aa59d8ce742bf4fe882b24149ad6e862abe919db6564 + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -4410,16 +4705,250 @@ __metadata: languageName: node linkType: hard -"@jsdevtools/ono@npm:^7.1.3": - version: 7.1.3 - resolution: "@jsdevtools/ono@npm:7.1.3" - checksum: 10c0/a9f7e3e8e3bc315a34959934a5e2f874c423cf4eae64377d3fc9de0400ed9f36cb5fd5ebce3300d2e8f4085f557c4a8b591427a583729a87841fda46e6c216b9 +"@jsonjoy.com/base64@npm:17.67.0": + version: 17.67.0 + resolution: "@jsonjoy.com/base64@npm:17.67.0" + peerDependencies: + tslib: 2 + checksum: 10c0/d9616ec1ac0ea6aa455968b1f96f2d48ce38a2b1835922a909a55147d7b8cff3d648d45e9efe6781c6926beb5f04dc41c75ce548b6b84141b14bc122893e16ee languageName: node linkType: hard -"@kas-tle/docusaurus-og@https://github.com/Kas-tle/docusaurus-og": +"@jsonjoy.com/base64@npm:^1.1.2": + version: 1.1.2 + resolution: "@jsonjoy.com/base64@npm:1.1.2" + peerDependencies: + tslib: 2 + checksum: 10c0/88717945f66dc89bf58ce75624c99fe6a5c9a0c8614e26d03e406447b28abff80c69fb37dabe5aafef1862cf315071ae66e5c85f6018b437d95f8d13d235e6eb + languageName: node + linkType: hard + +"@jsonjoy.com/buffers@npm:17.67.0, @jsonjoy.com/buffers@npm:^17.65.0": + version: 17.67.0 + resolution: "@jsonjoy.com/buffers@npm:17.67.0" + peerDependencies: + tslib: 2 + checksum: 10c0/ee46d3ea6c2dee4dd5dffd8b156745baeecfe796c7bb3f091f9fe64c402aca5e4d86ba3d736545682f919303fb15359c1f00d41ac91ea1b5d4edbbe74f540d35 + languageName: node + linkType: hard + +"@jsonjoy.com/buffers@npm:^1.0.0, @jsonjoy.com/buffers@npm:^1.2.0": + version: 1.2.1 + resolution: "@jsonjoy.com/buffers@npm:1.2.1" + peerDependencies: + tslib: 2 + checksum: 10c0/5edaf761b78b730ae0598824adb37473fef5b40a8fc100625159700eb36e00057c5129c7ad15fc0e3178e8de58a044da65728e8d7b05fd3eed58e9b9a0d02b5a + languageName: node + linkType: hard + +"@jsonjoy.com/codegen@npm:17.67.0": + version: 17.67.0 + resolution: "@jsonjoy.com/codegen@npm:17.67.0" + peerDependencies: + tslib: 2 + checksum: 10c0/3cc529377cc315acf373dc52dbd39d56285b31ba8ca90a4447230e37e405372cc13bed7df638dc81f9071ff8f4eb8e825217987397d80182d08ded761e609a93 + languageName: node + linkType: hard + +"@jsonjoy.com/codegen@npm:^1.0.0": + version: 1.0.0 + resolution: "@jsonjoy.com/codegen@npm:1.0.0" + peerDependencies: + tslib: 2 + checksum: 10c0/54686352248440ad1484ce7db0270a5a72424fb9651b090e5f1c8e2cd8e55e6c7a3f67dfe4ed90c689cf01ed949e794764a8069f5f52510eaf0a2d0c41d324cd + languageName: node + linkType: hard + +"@jsonjoy.com/fs-core@npm:4.80.0": + version: 4.80.0 + resolution: "@jsonjoy.com/fs-core@npm:4.80.0" + dependencies: + "@jsonjoy.com/fs-node-builtins": "npm:4.80.0" + "@jsonjoy.com/fs-node-utils": "npm:4.80.0" + thingies: "npm:^2.5.0" + peerDependencies: + tslib: 2 + checksum: 10c0/dddfc154fd16ab6bab67916794d91c0aed4d267a02f8e3a1d3062bc2966d727cade1648f550280ea3a9f044aee01dfd1ce56e449682f50a34075be724615cfaa + languageName: node + linkType: hard + +"@jsonjoy.com/fs-fsa@npm:4.80.0": + version: 4.80.0 + resolution: "@jsonjoy.com/fs-fsa@npm:4.80.0" + dependencies: + "@jsonjoy.com/fs-core": "npm:4.80.0" + "@jsonjoy.com/fs-node-builtins": "npm:4.80.0" + "@jsonjoy.com/fs-node-utils": "npm:4.80.0" + thingies: "npm:^2.5.0" + peerDependencies: + tslib: 2 + checksum: 10c0/fc5ddfccae167cb79ba1de4bee1636d73a8289c00fe6978950bfff09c2244a802063d19d55e9f27b6945e70a981b75dfede1efd9ca022c1ed6180653a41611fa + languageName: node + linkType: hard + +"@jsonjoy.com/fs-node-builtins@npm:4.80.0": + version: 4.80.0 + resolution: "@jsonjoy.com/fs-node-builtins@npm:4.80.0" + peerDependencies: + tslib: 2 + checksum: 10c0/9324295979e8be14f64cf8ce54d9b49fe50a42f3ade9301ac00d7c7841da26ff25aa0c37f02edd8ca3247b07b6791db9e68d76e7f0d5dc51e8c2da090c514b3d + languageName: node + linkType: hard + +"@jsonjoy.com/fs-node-to-fsa@npm:4.80.0": + version: 4.80.0 + resolution: "@jsonjoy.com/fs-node-to-fsa@npm:4.80.0" + dependencies: + "@jsonjoy.com/fs-fsa": "npm:4.80.0" + "@jsonjoy.com/fs-node-builtins": "npm:4.80.0" + "@jsonjoy.com/fs-node-utils": "npm:4.80.0" + peerDependencies: + tslib: 2 + checksum: 10c0/53eebb78689e18c851f31dc1f9cea4f427225f3314eca41eefef55fcd894f40bfef829b400f1873675e9823edc67cc9f678da4812b40ae87efed13f215c350c8 + languageName: node + linkType: hard + +"@jsonjoy.com/fs-node-utils@npm:4.80.0": + version: 4.80.0 + resolution: "@jsonjoy.com/fs-node-utils@npm:4.80.0" + dependencies: + "@jsonjoy.com/fs-node-builtins": "npm:4.80.0" + glob-to-regex.js: "npm:^1.3.1" + peerDependencies: + tslib: 2 + checksum: 10c0/718465fd60009a32a76fae8582e7e88eff2047cc613c764c9ae0a6aa74ad4319b062e35849bb2325d24cfdc5e5ff2894027bbc0a4a647c8334437d1db1db9920 + languageName: node + linkType: hard + +"@jsonjoy.com/fs-node@npm:4.80.0": + version: 4.80.0 + resolution: "@jsonjoy.com/fs-node@npm:4.80.0" + dependencies: + "@jsonjoy.com/fs-core": "npm:4.80.0" + "@jsonjoy.com/fs-node-builtins": "npm:4.80.0" + "@jsonjoy.com/fs-node-utils": "npm:4.80.0" + "@jsonjoy.com/fs-print": "npm:4.80.0" + "@jsonjoy.com/fs-snapshot": "npm:4.80.0" + glob-to-regex.js: "npm:^1.3.1" + thingies: "npm:^2.5.0" + peerDependencies: + tslib: 2 + checksum: 10c0/2b4583f2fb79643d6c6cb4d28b46d3ed2450e90b99d458c243d470d70446d16d967a63e4ea9a785cebe43c20f97fb0b2c522a2098c465e4817c6af8be848990c + languageName: node + linkType: hard + +"@jsonjoy.com/fs-print@npm:4.80.0": + version: 4.80.0 + resolution: "@jsonjoy.com/fs-print@npm:4.80.0" + dependencies: + "@jsonjoy.com/fs-node-utils": "npm:4.80.0" + tree-dump: "npm:^1.1.0" + peerDependencies: + tslib: 2 + checksum: 10c0/e76a353fe65d4037bc2620e684f76c749f001e40faf25b836fda8264824fff6f5d5c4a8ce4e705bc38a72950826f9f44b6a52027f561a93fc1953f085c4aa73e + languageName: node + linkType: hard + +"@jsonjoy.com/fs-snapshot@npm:4.80.0": + version: 4.80.0 + resolution: "@jsonjoy.com/fs-snapshot@npm:4.80.0" + dependencies: + "@jsonjoy.com/buffers": "npm:^17.65.0" + "@jsonjoy.com/fs-node-utils": "npm:4.80.0" + "@jsonjoy.com/json-pack": "npm:^17.65.0" + "@jsonjoy.com/util": "npm:^17.65.0" + peerDependencies: + tslib: 2 + checksum: 10c0/d8e75a5c2fd205b5fc839c3c2516b1f7be07fa6c467855c9c856605964b3f74e23b3d915876648f95041010c21750e639862e96af19e3a46dddd318f294f0926 + languageName: node + linkType: hard + +"@jsonjoy.com/json-pack@npm:^1.11.0": + version: 1.21.0 + resolution: "@jsonjoy.com/json-pack@npm:1.21.0" + dependencies: + "@jsonjoy.com/base64": "npm:^1.1.2" + "@jsonjoy.com/buffers": "npm:^1.2.0" + "@jsonjoy.com/codegen": "npm:^1.0.0" + "@jsonjoy.com/json-pointer": "npm:^1.0.2" + "@jsonjoy.com/util": "npm:^1.9.0" + hyperdyperid: "npm:^1.2.0" + thingies: "npm:^2.5.0" + tree-dump: "npm:^1.1.0" + peerDependencies: + tslib: 2 + checksum: 10c0/0183eccccf2ab912389a6784ae81c1a7da48cf178902efe093fb60c457359c7c75da2803f869e0a1489f1342dfa4f8ab9b27b65adc9f44fd9646823773b71e9d + languageName: node + linkType: hard + +"@jsonjoy.com/json-pack@npm:^17.65.0": + version: 17.67.0 + resolution: "@jsonjoy.com/json-pack@npm:17.67.0" + dependencies: + "@jsonjoy.com/base64": "npm:17.67.0" + "@jsonjoy.com/buffers": "npm:17.67.0" + "@jsonjoy.com/codegen": "npm:17.67.0" + "@jsonjoy.com/json-pointer": "npm:17.67.0" + "@jsonjoy.com/util": "npm:17.67.0" + hyperdyperid: "npm:^1.2.0" + thingies: "npm:^2.5.0" + tree-dump: "npm:^1.1.0" + peerDependencies: + tslib: 2 + checksum: 10c0/fee56d024c84f031ef011a85ccca071c73b8a0739506083bd3dc7a17c720a498599f285e79082a9626314324ea938f189d18d47a03341cb76286ca2e7098bf53 + languageName: node + linkType: hard + +"@jsonjoy.com/json-pointer@npm:17.67.0": + version: 17.67.0 + resolution: "@jsonjoy.com/json-pointer@npm:17.67.0" + dependencies: + "@jsonjoy.com/util": "npm:17.67.0" + peerDependencies: + tslib: 2 + checksum: 10c0/763e0b1bc274390a605073b49e5bf55bdf386e784f5940d456faca958d90915b7d9a47dd9d58a08e2113f40167b0640d313897811680eb91630726920618fe7d + languageName: node + linkType: hard + +"@jsonjoy.com/json-pointer@npm:^1.0.2": + version: 1.0.2 + resolution: "@jsonjoy.com/json-pointer@npm:1.0.2" + dependencies: + "@jsonjoy.com/codegen": "npm:^1.0.0" + "@jsonjoy.com/util": "npm:^1.9.0" + peerDependencies: + tslib: 2 + checksum: 10c0/8d959c0fdd77d937d2a829270de51533bb9e3b887b3f6f02943884dc33dd79225071218c93f4bafdee6a3412fd5153264997953a86de444d85c1fff67915af54 + languageName: node + linkType: hard + +"@jsonjoy.com/util@npm:17.67.0, @jsonjoy.com/util@npm:^17.65.0": + version: 17.67.0 + resolution: "@jsonjoy.com/util@npm:17.67.0" + dependencies: + "@jsonjoy.com/buffers": "npm:17.67.0" + "@jsonjoy.com/codegen": "npm:17.67.0" + peerDependencies: + tslib: 2 + checksum: 10c0/44be53d94c99ce74a0eff1bb111f0ff4392a1226e34637321c8bc45b569da3f9e12db8b225eef3694c44b9fd2e9b800d7baf5ea0d38e1d7767bfcbef4fbf91b0 + languageName: node + linkType: hard + +"@jsonjoy.com/util@npm:^1.9.0": + version: 1.9.0 + resolution: "@jsonjoy.com/util@npm:1.9.0" + dependencies: + "@jsonjoy.com/buffers": "npm:^1.0.0" + "@jsonjoy.com/codegen": "npm:^1.0.0" + peerDependencies: + tslib: 2 + checksum: 10c0/a720a6accaae71fa9e7fa06e93e382702aa5760ef2bdc3bc45c19dc2228a01cc735d36cb970c654bc5e88f1328d55d1f0d5eceef0b76bcc327a2ce863e7b0021 + languageName: node + linkType: hard + +"@kas-tle/docusaurus-og@github:Kas-tle/docusaurus-og#5f91196240d02442fc8bf507f753a8e288b048fd": version: 1.0.0-alpha.132 - resolution: "@kas-tle/docusaurus-og@https://github.com/Kas-tle/docusaurus-og.git#commit=55f297255a7bd0610f46986f1e57f938b4c7a23b" + resolution: "@kas-tle/docusaurus-og@https://github.com/Kas-tle/docusaurus-og.git#commit=5f91196240d02442fc8bf507f753a8e288b048fd" dependencies: "@docusaurus/core": "npm:^3.4.0" "@docusaurus/module-type-aliases": "npm:^3.4.0" @@ -4435,7 +4964,7 @@ __metadata: node-html-parser: "npm:^6.1.5" object-hash: "npm:^3.0.0" satori: "npm:^0.10.13" - checksum: 10c0/9b97f8c80e64900e478c94357ff8a80cc47150846a02b01bf4e9393d2224e941348d52c5e45faab2be7989d7914f2db5e470b69d037a885df2b3bac18c229724 + checksum: 10c0/519a9d4402b8318c42f954f9137bc59e24520b96929bf8a6af37b22e1df3edbe827a4af495c36df6185886267209eb1197b52272b1393133a2194bcfda4809b7 languageName: node linkType: hard @@ -4501,6 +5030,22 @@ __metadata: languageName: node linkType: hard +"@mermaid-js/parser@npm:^2.0.1": + version: 2.0.1 + resolution: "@mermaid-js/parser@npm:2.0.1" + dependencies: + "@chevrotain/types": "npm:~13.2.0" + checksum: 10c0/15ef44aac5dd772d0b28b62fa97ef30440561fa9f8008267da885a73a8e2e2940af350214664f125244a1571729257c3b2e28af7c1f5e6060f4b23701a73efcc + languageName: node + linkType: hard + +"@noble/hashes@npm:1.8.0": + version: 1.8.0 + resolution: "@noble/hashes@npm:1.8.0" + checksum: 10c0/06a0b52c81a6fa7f04d67762e08b2c476a00285858150caeaaff4037356dd5e119f45b2a530f638b77a5eeca013168ec1b655db41bae3236cb2e9d511484fc77 + languageName: node + linkType: hard + "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -4694,6 +5239,160 @@ __metadata: languageName: node linkType: hard +"@peculiar/asn1-cms@npm:^2.11.0, @peculiar/asn1-cms@npm:^2.6.0": + version: 2.11.0 + resolution: "@peculiar/asn1-cms@npm:2.11.0" + dependencies: + "@peculiar/asn1-schema": "npm:^2.11.0" + "@peculiar/asn1-x509": "npm:^2.11.0" + "@peculiar/asn1-x509-attr": "npm:^2.11.0" + asn1js: "npm:^3.0.10" + tslib: "npm:^2.8.1" + checksum: 10c0/faa7389139098a815eb2e36070c0409cd004b897ca15b74c1ef5f8024e50acda240cc1c3d5c534e002a6d9096c60f2e49cb9a0ebf872cecf28d95cba07e674a9 + languageName: node + linkType: hard + +"@peculiar/asn1-csr@npm:^2.6.0": + version: 2.11.0 + resolution: "@peculiar/asn1-csr@npm:2.11.0" + dependencies: + "@peculiar/asn1-schema": "npm:^2.11.0" + "@peculiar/asn1-x509": "npm:^2.11.0" + asn1js: "npm:^3.0.10" + tslib: "npm:^2.8.1" + checksum: 10c0/e25213ce02f7995d9853ae63f790bae0cf3e24384f61b6cfa88d0fc994472c3078a89584814e7c3fbe1b7071030b946294704bc9c672f867eec762da96601630 + languageName: node + linkType: hard + +"@peculiar/asn1-ecc@npm:^2.6.0": + version: 2.11.0 + resolution: "@peculiar/asn1-ecc@npm:2.11.0" + dependencies: + "@peculiar/asn1-schema": "npm:^2.11.0" + "@peculiar/asn1-x509": "npm:^2.11.0" + asn1js: "npm:^3.0.10" + tslib: "npm:^2.8.1" + checksum: 10c0/2ddddfedd9dea66e94b2a48a8b3b745fc2a1b8fd3de2979876f9790f828f764f9de45414b00b3e6da2fbe3272f4b090d4229dd69576426d501e7aa2b98971709 + languageName: node + linkType: hard + +"@peculiar/asn1-pfx@npm:^2.11.0": + version: 2.11.0 + resolution: "@peculiar/asn1-pfx@npm:2.11.0" + dependencies: + "@peculiar/asn1-cms": "npm:^2.11.0" + "@peculiar/asn1-pkcs8": "npm:^2.11.0" + "@peculiar/asn1-rsa": "npm:^2.11.0" + "@peculiar/asn1-schema": "npm:^2.11.0" + asn1js: "npm:^3.0.10" + tslib: "npm:^2.8.1" + checksum: 10c0/0114ae8b75e112f2bb9ea2f7eabab348507291717136cc189059dd544826e7d51580192cbcb2090a766b501bb228c72a5b0d09d2d242337252a2d6b2fb08add9 + languageName: node + linkType: hard + +"@peculiar/asn1-pkcs8@npm:^2.11.0": + version: 2.11.0 + resolution: "@peculiar/asn1-pkcs8@npm:2.11.0" + dependencies: + "@peculiar/asn1-schema": "npm:^2.11.0" + "@peculiar/asn1-x509": "npm:^2.11.0" + asn1js: "npm:^3.0.10" + tslib: "npm:^2.8.1" + checksum: 10c0/956e987b9091efddc5376ff8d376bacc98900927bf5ec91dc066ec46dd2fa23da9a1c3af8e58e5122d4ebe8136cabc5debb8d5549d620d0aec9e62b086ef0554 + languageName: node + linkType: hard + +"@peculiar/asn1-pkcs9@npm:^2.6.0": + version: 2.11.0 + resolution: "@peculiar/asn1-pkcs9@npm:2.11.0" + dependencies: + "@peculiar/asn1-cms": "npm:^2.11.0" + "@peculiar/asn1-pfx": "npm:^2.11.0" + "@peculiar/asn1-pkcs8": "npm:^2.11.0" + "@peculiar/asn1-schema": "npm:^2.11.0" + "@peculiar/asn1-x509": "npm:^2.11.0" + "@peculiar/asn1-x509-attr": "npm:^2.11.0" + asn1js: "npm:^3.0.10" + tslib: "npm:^2.8.1" + checksum: 10c0/907ca99870a226b519c9e9ae7f275838d9e578eae433933640ab2a126db99bd67dc646ffed59c214134bd7d46d9f8fa833fc6b8723fc59428e5822abc518a31a + languageName: node + linkType: hard + +"@peculiar/asn1-rsa@npm:^2.11.0, @peculiar/asn1-rsa@npm:^2.6.0": + version: 2.11.0 + resolution: "@peculiar/asn1-rsa@npm:2.11.0" + dependencies: + "@peculiar/asn1-schema": "npm:^2.11.0" + "@peculiar/asn1-x509": "npm:^2.11.0" + asn1js: "npm:^3.0.10" + tslib: "npm:^2.8.1" + checksum: 10c0/85c7d1606f73abcae892ec6c25aa3533bcd5a0ef1bbbc04f7ccc462988af5ae6ff9eb2ecc6714be2d37a61f98eac6d217d0ca8a856a979222b878b81166bc76f + languageName: node + linkType: hard + +"@peculiar/asn1-schema@npm:^2.11.0, @peculiar/asn1-schema@npm:^2.6.0": + version: 2.11.0 + resolution: "@peculiar/asn1-schema@npm:2.11.0" + dependencies: + "@peculiar/utils": "npm:^2.0.2" + asn1js: "npm:^3.0.10" + tslib: "npm:^2.8.1" + checksum: 10c0/4d1d158c37ebafaf2c04b069ef5f3e92f011ec928d24c63e3f33fc479737ab5ba8a44a32a11d57591e5f9be18f913947c51fc39691af5d34e639a0e842228d1c + languageName: node + linkType: hard + +"@peculiar/asn1-x509-attr@npm:^2.11.0": + version: 2.11.0 + resolution: "@peculiar/asn1-x509-attr@npm:2.11.0" + dependencies: + "@peculiar/asn1-schema": "npm:^2.11.0" + "@peculiar/asn1-x509": "npm:^2.11.0" + asn1js: "npm:^3.0.10" + tslib: "npm:^2.8.1" + checksum: 10c0/344fadd17c191c4763b36ab841fe1052a4d69340943a9642b1306d3c417a34c38b6228907df5b280149997dbba81008d1e96b2161d2ceafe3beeb5b856926f14 + languageName: node + linkType: hard + +"@peculiar/asn1-x509@npm:^2.11.0, @peculiar/asn1-x509@npm:^2.6.0": + version: 2.11.0 + resolution: "@peculiar/asn1-x509@npm:2.11.0" + dependencies: + "@peculiar/asn1-schema": "npm:^2.11.0" + "@peculiar/utils": "npm:^2.0.2" + asn1js: "npm:^3.0.10" + tslib: "npm:^2.8.1" + checksum: 10c0/a2707e94615d389cef854c975aaf06eb74f9ab7912d3f0bbaff174d59ec1aac74bba464b225f0b1930e6abf57d21f2d2cc215431cb39d1dca7337602dc9c3f99 + languageName: node + linkType: hard + +"@peculiar/utils@npm:^2.0.2": + version: 2.0.3 + resolution: "@peculiar/utils@npm:2.0.3" + dependencies: + tslib: "npm:^2.8.1" + checksum: 10c0/e111a51c83334d6ff3c96b993ed0d718210620f3ad176853a4bf229f1cf4cd14e9388075318351b188862d34d2192d80f206f6bea53aa1459df3ec638cbcdbd5 + languageName: node + linkType: hard + +"@peculiar/x509@npm:^1.14.2": + version: 1.14.3 + resolution: "@peculiar/x509@npm:1.14.3" + dependencies: + "@peculiar/asn1-cms": "npm:^2.6.0" + "@peculiar/asn1-csr": "npm:^2.6.0" + "@peculiar/asn1-ecc": "npm:^2.6.0" + "@peculiar/asn1-pkcs9": "npm:^2.6.0" + "@peculiar/asn1-rsa": "npm:^2.6.0" + "@peculiar/asn1-schema": "npm:^2.6.0" + "@peculiar/asn1-x509": "npm:^2.6.0" + pvtsutils: "npm:^1.3.6" + reflect-metadata: "npm:^0.2.2" + tslib: "npm:^2.8.1" + tsyringe: "npm:^4.10.0" + checksum: 10c0/949231ca9daf84534bfe255f28a856df497302fed294d227c6a28e50f5cfb67ed1d91afe6db787b88294ce042295243dbcb44455fe2efa5ed07428a74392eec9 + languageName: node + linkType: hard + "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -4735,61 +5434,65 @@ __metadata: languageName: node linkType: hard -"@redocly/ajv@npm:^8.11.0": - version: 8.11.0 - resolution: "@redocly/ajv@npm:8.11.0" +"@redocly/ajv@npm:^8.18.3, ajv@npm:@redocly/ajv@^8.18.3": + version: 8.18.3 + resolution: "@redocly/ajv@npm:8.18.3" dependencies: - fast-deep-equal: "npm:^3.1.1" + fast-deep-equal: "npm:^3.1.3" + fast-uri: "npm:^3.0.1" json-schema-traverse: "npm:^1.0.0" require-from-string: "npm:^2.0.2" - uri-js: "npm:^4.2.2" - checksum: 10c0/7ee77a8304b54189e903c30248282f81638e2bb7dcf8b7cb80e078966999c4de4eb6dabe6ac8406b5c8fe7a1443540e2bd0009d975ac285d38c2426157bc774d + checksum: 10c0/32a892f766a33ca09b68962d9da0e038935a4c9f3d01dcc01a4467184b42e060fd70958ffaf80a735fcddf8088d9cfacc38e1126ec69279e5b29582947f8618b languageName: node linkType: hard -"@redocly/config@npm:^0.6.2": - version: 0.6.3 - resolution: "@redocly/config@npm:0.6.3" - checksum: 10c0/3fce8630b34f28be2938ed25c7173e424b8211c4f564762fa7a28bf0cc34a607d8166693b569482e5a0a4092c8bf35cd41e96cf3ba462ba498b7e447c2ccc638 +"@redocly/config@npm:^0.66.0": + version: 0.66.0 + resolution: "@redocly/config@npm:0.66.0" + checksum: 10c0/51aad8b2a2781ac83d671f9f394e55ee18338817ad2f88115128550dab34b0cf67151de91625d7629785df692eea7c863823f31d60ca0626ab4afdcac7f932b5 languageName: node linkType: hard -"@redocly/openapi-core@npm:^1.10.5": - version: 1.18.0 - resolution: "@redocly/openapi-core@npm:1.18.0" +"@redocly/openapi-core@npm:^2.25.2": + version: 2.64.0 + resolution: "@redocly/openapi-core@npm:2.64.0" dependencies: - "@redocly/ajv": "npm:^8.11.0" - "@redocly/config": "npm:^0.6.2" + "@redocly/ajv": "npm:^8.18.3" + "@redocly/config": "npm:^0.66.0" + ajv: "npm:@redocly/ajv@^8.18.3" + ajv-formats: "npm:^3.0.1" colorette: "npm:^1.2.0" - https-proxy-agent: "npm:^7.0.4" + graphql: "npm:^16.14.1" js-levenshtein: "npm:^1.1.6" - js-yaml: "npm:^4.1.0" - lodash.isequal: "npm:^4.5.0" - minimatch: "npm:^5.0.1" - node-fetch: "npm:^2.6.1" + js-yaml: "npm:^5.2.2" + json-schema-to-ts: "npm:^3.1.0" + jsonpath-rfc9535: "npm:1.3.0" + picomatch: "npm:^4.0.4" pluralize: "npm:^8.0.0" yaml-ast-parser: "npm:0.0.43" - checksum: 10c0/fb0149e59c222015b4daeed483b802f6d9efa529d5295ed112902b4ecccf3fae93a47cbb9c9562c9207b33a04b8b295f723815a4eef08e9362dba0c2896a990d + checksum: 10c0/2f66f5f76b1ebb76b50083b2ddd89ac8a4ba20d25c2c45976d073b9c485093bdb2f24a761ca3ef58f94b4b232e4ea911f43b58fa7aa09fdc6815c19bd324de92 languageName: node linkType: hard -"@reduxjs/toolkit@npm:^1.7.1": - version: 1.9.7 - resolution: "@reduxjs/toolkit@npm:1.9.7" +"@reduxjs/toolkit@npm:^2.8.2": + version: 2.13.0 + resolution: "@reduxjs/toolkit@npm:2.13.0" dependencies: - immer: "npm:^9.0.21" - redux: "npm:^4.2.1" - redux-thunk: "npm:^2.4.2" - reselect: "npm:^4.1.8" + "@standard-schema/spec": "npm:^1.0.0" + "@standard-schema/utils": "npm:^0.3.0" + immer: "npm:^11.0.0" + redux: "npm:^5.0.1" + redux-thunk: "npm:^3.1.0" + reselect: "npm:^5.1.0" peerDependencies: - react: ^16.9.0 || ^17.0.0 || ^18 - react-redux: ^7.2.1 || ^8.0.2 + react: ^16.9.0 || ^17.0.0 || ^18 || ^19 + react-redux: ^7.2.1 || ^8.1.3 || ^9.0.0 peerDependenciesMeta: react: optional: true react-redux: optional: true - checksum: 10c0/fa0aa4b7c6973ac87ce0ac7e45faa02c73b66c4ee0bc950d178494539a42a1bb908d109297102458b7ea14d5e7dae356e7a7ce9a1b9849b0e8451e6dd70fca9c + checksum: 10c0/9c8a75adab87a6c172754ff0308ddd17cf1c202e2e8144e56fb124b126b3959f088b533bb66ebc41a7a7143658c6b5c2e588efa2392f62090e374ae0dc249159 languageName: node linkType: hard @@ -4989,6 +5692,20 @@ __metadata: languageName: node linkType: hard +"@standard-schema/spec@npm:^1.0.0": + version: 1.1.0 + resolution: "@standard-schema/spec@npm:1.1.0" + checksum: 10c0/d90f55acde4b2deb983529c87e8025fa693de1a5e8b49ecc6eb84d1fd96328add0e03d7d551442156c7432fd78165b2c26ff561b970a9a881f046abb78d6a526 + languageName: node + linkType: hard + +"@standard-schema/utils@npm:^0.3.0": + version: 0.3.0 + resolution: "@standard-schema/utils@npm:0.3.0" + checksum: 10c0/6eb74cd13e52d5fc74054df51e37d947ef53f3ab9e02c085665dcca3c38c60ece8d735cebbdf18fbb13c775fbcb9becb3f53109b0e092a63f0f7389ce0993fd0 + languageName: node + linkType: hard + "@svgr/babel-plugin-add-jsx-attribute@npm:8.0.0": version: 8.0.0 resolution: "@svgr/babel-plugin-add-jsx-attribute@npm:8.0.0" @@ -5170,6 +5887,15 @@ __metadata: languageName: node linkType: hard +"@types/adm-zip@npm:0.6.0": + version: 0.6.0 + resolution: "@types/adm-zip@npm:0.6.0" + dependencies: + adm-zip: "npm:*" + checksum: 10c0/ca8b9d36b252a50a2f7c1b7eebdfb0b46adedd2f584babb132d8c1f56b4053f6b1c5e69e346145edba1c20d041cc81607f94d1bddbf508fa0ecdceb739095878 + languageName: node + linkType: hard + "@types/body-parser@npm:*": version: 1.19.5 resolution: "@types/body-parser@npm:1.19.5" @@ -5180,7 +5906,7 @@ __metadata: languageName: node linkType: hard -"@types/bonjour@npm:^3.5.9": +"@types/bonjour@npm:^3.5.13, @types/bonjour@npm:^3.5.9": version: 3.5.13 resolution: "@types/bonjour@npm:3.5.13" dependencies: @@ -5189,7 +5915,7 @@ __metadata: languageName: node linkType: hard -"@types/connect-history-api-fallback@npm:^1.3.5": +"@types/connect-history-api-fallback@npm:^1.3.5, @types/connect-history-api-fallback@npm:^1.5.4": version: 1.5.4 resolution: "@types/connect-history-api-fallback@npm:1.5.4" dependencies: @@ -5208,6 +5934,278 @@ __metadata: languageName: node linkType: hard +"@types/d3-array@npm:*": + version: 3.2.2 + resolution: "@types/d3-array@npm:3.2.2" + checksum: 10c0/6137cb97302f8a4f18ca22c0560c585cfcb823f276b23d89f2c0c005d72697ec13bca671c08e68b4b0cabd622e3f0e91782ee221580d6774074050be96dd7028 + languageName: node + linkType: hard + +"@types/d3-axis@npm:*": + version: 3.0.6 + resolution: "@types/d3-axis@npm:3.0.6" + dependencies: + "@types/d3-selection": "npm:*" + checksum: 10c0/d756d42360261f44d8eefd0950c5bb0a4f67a46dd92069da3f723ac36a1e8cb2b9ce6347d836ef19d5b8aef725dbcf8fdbbd6cfbff676ca4b0642df2f78b599a + languageName: node + linkType: hard + +"@types/d3-brush@npm:*": + version: 3.0.6 + resolution: "@types/d3-brush@npm:3.0.6" + dependencies: + "@types/d3-selection": "npm:*" + checksum: 10c0/fd6e2ac7657a354f269f6b9c58451ffae9d01b89ccb1eb6367fd36d635d2f1990967215ab498e0c0679ff269429c57fad6a2958b68f4d45bc9f81d81672edc01 + languageName: node + linkType: hard + +"@types/d3-chord@npm:*": + version: 3.0.6 + resolution: "@types/d3-chord@npm:3.0.6" + checksum: 10c0/c5a25eb5389db01e63faec0c5c2ec7cc41c494e9b3201630b494c4e862a60f1aa83fabbc33a829e7e1403941e3c30d206c741559b14406ac2a4239cfdf4b4c17 + languageName: node + linkType: hard + +"@types/d3-color@npm:*": + version: 3.1.3 + resolution: "@types/d3-color@npm:3.1.3" + checksum: 10c0/65eb0487de606eb5ad81735a9a5b3142d30bc5ea801ed9b14b77cb14c9b909f718c059f13af341264ee189acf171508053342142bdf99338667cea26a2d8d6ae + languageName: node + linkType: hard + +"@types/d3-contour@npm:*": + version: 3.0.6 + resolution: "@types/d3-contour@npm:3.0.6" + dependencies: + "@types/d3-array": "npm:*" + "@types/geojson": "npm:*" + checksum: 10c0/e7d83e94719af4576ceb5ac7f277c5806f83ba6c3631744ae391cffc3641f09dfa279470b83053cd0b2acd6784e8749c71141d05bdffa63ca58ffb5b31a0f27c + languageName: node + linkType: hard + +"@types/d3-delaunay@npm:*": + version: 6.0.4 + resolution: "@types/d3-delaunay@npm:6.0.4" + checksum: 10c0/d154a8864f08c4ea23ecb9bdabcef1c406a25baa8895f0cb08a0ed2799de0d360e597552532ce7086ff0cdffa8f3563f9109d18f0191459d32bb620a36939123 + languageName: node + linkType: hard + +"@types/d3-dispatch@npm:*": + version: 3.0.7 + resolution: "@types/d3-dispatch@npm:3.0.7" + checksum: 10c0/38c6605ebf0bf0099dfb70eafe0dd4ae8213368b40b8f930b72a909ff2e7259d2bd8a54d100bb5a44eb4b36f4f2a62dcb37f8be59613ca6b507c7a2f910b3145 + languageName: node + linkType: hard + +"@types/d3-drag@npm:*": + version: 3.0.7 + resolution: "@types/d3-drag@npm:3.0.7" + dependencies: + "@types/d3-selection": "npm:*" + checksum: 10c0/65e29fa32a87c72d26c44b5e2df3bf15af21cd128386bcc05bcacca255927c0397d0cd7e6062aed5f0abd623490544a9d061c195f5ed9f018fe0b698d99c079d + languageName: node + linkType: hard + +"@types/d3-dsv@npm:*": + version: 3.0.7 + resolution: "@types/d3-dsv@npm:3.0.7" + checksum: 10c0/c0f01da862465594c8a28278b51c850af3b4239cc22b14fd1a19d7a98f93d94efa477bf59d8071beb285dca45bf614630811451e18e7c52add3a0abfee0a1871 + languageName: node + linkType: hard + +"@types/d3-ease@npm:*": + version: 3.0.2 + resolution: "@types/d3-ease@npm:3.0.2" + checksum: 10c0/aff5a1e572a937ee9bff6465225d7ba27d5e0c976bd9eacdac2e6f10700a7cb0c9ea2597aff6b43a6ed850a3210030870238894a77ec73e309b4a9d0333f099c + languageName: node + linkType: hard + +"@types/d3-fetch@npm:*": + version: 3.0.7 + resolution: "@types/d3-fetch@npm:3.0.7" + dependencies: + "@types/d3-dsv": "npm:*" + checksum: 10c0/3d147efa52a26da1a5d40d4d73e6cebaaa964463c378068062999b93ea3731b27cc429104c21ecbba98c6090e58ef13429db6399238c5e3500162fb3015697a0 + languageName: node + linkType: hard + +"@types/d3-force@npm:*": + version: 3.0.10 + resolution: "@types/d3-force@npm:3.0.10" + checksum: 10c0/c82b459079a106b50e346c9b79b141f599f2fc4f598985a5211e72c7a2e20d35bd5dc6e91f306b323c8bfa325c02c629b1645f5243f1c6a55bd51bc85cccfa92 + languageName: node + linkType: hard + +"@types/d3-format@npm:*": + version: 3.0.4 + resolution: "@types/d3-format@npm:3.0.4" + checksum: 10c0/3ac1600bf9061a59a228998f7cd3f29e85cbf522997671ba18d4d84d10a2a1aff4f95aceb143fa9960501c3ec351e113fc75884e6a504ace44dc1744083035ee + languageName: node + linkType: hard + +"@types/d3-geo@npm:*": + version: 3.1.1 + resolution: "@types/d3-geo@npm:3.1.1" + dependencies: + "@types/geojson": "npm:*" + checksum: 10c0/bb0405ec99a6b5947d9b47481171f2514c7cbd7dc028a80463193e0ea7411cde997c2813d25146c670c8c0bee08867cdc839fce029586647c8465b5627551493 + languageName: node + linkType: hard + +"@types/d3-hierarchy@npm:*": + version: 3.1.7 + resolution: "@types/d3-hierarchy@npm:3.1.7" + checksum: 10c0/873711737d6b8e7b6f1dda0bcd21294a48f75024909ae510c5d2c21fad2e72032e0958def4d9f68319d3aaac298ad09c49807f8bfc87a145a82693b5208613c7 + languageName: node + linkType: hard + +"@types/d3-interpolate@npm:*": + version: 3.0.4 + resolution: "@types/d3-interpolate@npm:3.0.4" + dependencies: + "@types/d3-color": "npm:*" + checksum: 10c0/066ebb8da570b518dd332df6b12ae3b1eaa0a7f4f0c702e3c57f812cf529cc3500ec2aac8dc094f31897790346c6b1ebd8cd7a077176727f4860c2b181a65ca4 + languageName: node + linkType: hard + +"@types/d3-path@npm:*": + version: 3.1.1 + resolution: "@types/d3-path@npm:3.1.1" + checksum: 10c0/2c36eb31ebaf2ce4712e793fd88087117976f7c4ed69cc2431825f999c8c77cca5cea286f3326432b770739ac6ccd5d04d851eb65e7a4dbcc10c982b49ad2c02 + languageName: node + linkType: hard + +"@types/d3-polygon@npm:*": + version: 3.0.2 + resolution: "@types/d3-polygon@npm:3.0.2" + checksum: 10c0/f46307bb32b6c2aef8c7624500e0f9b518de8f227ccc10170b869dc43e4c542560f6c8d62e9f087fac45e198d6e4b623e579c0422e34c85baf56717456d3f439 + languageName: node + linkType: hard + +"@types/d3-quadtree@npm:*": + version: 3.0.6 + resolution: "@types/d3-quadtree@npm:3.0.6" + checksum: 10c0/7eaa0a4d404adc856971c9285e1c4ab17e9135ea669d847d6db7e0066126a28ac751864e7ce99c65d526e130f56754a2e437a1617877098b3bdcc3ef23a23616 + languageName: node + linkType: hard + +"@types/d3-random@npm:*": + version: 3.0.4 + resolution: "@types/d3-random@npm:3.0.4" + checksum: 10c0/7661fe7c5071ea8a35b31a5532816a693b5e887d7635954c1ee214ac3dba727061a46b58401f862e404d1c0122c62810317ddde5bcec89f13106cb022b9d3f09 + languageName: node + linkType: hard + +"@types/d3-scale-chromatic@npm:*": + version: 3.1.0 + resolution: "@types/d3-scale-chromatic@npm:3.1.0" + checksum: 10c0/93c564e02d2e97a048e18fe8054e4a935335da6ab75a56c3df197beaa87e69122eef0dfbeb7794d4a444a00e52e3123514ee27cec084bd21f6425b7037828cc2 + languageName: node + linkType: hard + +"@types/d3-scale@npm:*": + version: 4.0.9 + resolution: "@types/d3-scale@npm:4.0.9" + dependencies: + "@types/d3-time": "npm:*" + checksum: 10c0/4ac44233c05cd50b65b33ecb35d99fdf07566bcdbc55bc1306b2f27d1c5134d8c560d356f2c8e76b096e9125ffb8d26d95f78d56e210d1c542cb255bdf31d6c8 + languageName: node + linkType: hard + +"@types/d3-selection@npm:*": + version: 3.0.12 + resolution: "@types/d3-selection@npm:3.0.12" + checksum: 10c0/1fc4036f2b95e17bcbe57247812fc8fdef7b0645d6c583317706a57242e6129907d6c9e17e0351f18e97e71a3a6bc46f19e32578a3c0c55e9e1d052a53292604 + languageName: node + linkType: hard + +"@types/d3-shape@npm:*": + version: 3.2.0 + resolution: "@types/d3-shape@npm:3.2.0" + dependencies: + "@types/d3-path": "npm:*" + checksum: 10c0/bffd3795875532747706ffd9978d7078672ca2cfc30f2fd047c5ecab6dac739656f6ca0e7b934c6229a635dd83e7c564e6b3becd347304e620211acca2c1a5a9 + languageName: node + linkType: hard + +"@types/d3-time-format@npm:*": + version: 4.0.3 + resolution: "@types/d3-time-format@npm:4.0.3" + checksum: 10c0/9ef5e8e2b96b94799b821eed5d61a3d432c7903247966d8ad951b8ce5797fe46554b425cb7888fa5bf604b4663c369d7628c0328ffe80892156671c58d1a7f90 + languageName: node + linkType: hard + +"@types/d3-time@npm:*": + version: 3.0.4 + resolution: "@types/d3-time@npm:3.0.4" + checksum: 10c0/6d9e2255d63f7a313a543113920c612e957d70da4fb0890931da6c2459010291b8b1f95e149a538500c1c99e7e6c89ffcce5554dd29a31ff134a38ea94b6d174 + languageName: node + linkType: hard + +"@types/d3-timer@npm:*": + version: 3.0.2 + resolution: "@types/d3-timer@npm:3.0.2" + checksum: 10c0/c644dd9571fcc62b1aa12c03bcad40571553020feeb5811f1d8a937ac1e65b8a04b759b4873aef610e28b8714ac71c9885a4d6c127a048d95118f7e5b506d9e1 + languageName: node + linkType: hard + +"@types/d3-transition@npm:*": + version: 3.0.9 + resolution: "@types/d3-transition@npm:3.0.9" + dependencies: + "@types/d3-selection": "npm:*" + checksum: 10c0/4f68b9df7ac745b3491216c54203cbbfa0f117ae4c60e2609cdef2db963582152035407fdff995b10ee383bae2f05b7743493f48e1b8e46df54faa836a8fb7b5 + languageName: node + linkType: hard + +"@types/d3-zoom@npm:*": + version: 3.0.9 + resolution: "@types/d3-zoom@npm:3.0.9" + dependencies: + "@types/d3-interpolate": "npm:*" + "@types/d3-selection": "npm:*" + checksum: 10c0/4073f0db99b4715346b590bd85ee6ea4b31626065e70c0aff6b980e3ee61354824f3f861fb622e53bbd9011012d65a9d58ae63be4b99e9148999cdffc058b8c7 + languageName: node + linkType: hard + +"@types/d3@npm:^7.4.3": + version: 7.4.3 + resolution: "@types/d3@npm:7.4.3" + dependencies: + "@types/d3-array": "npm:*" + "@types/d3-axis": "npm:*" + "@types/d3-brush": "npm:*" + "@types/d3-chord": "npm:*" + "@types/d3-color": "npm:*" + "@types/d3-contour": "npm:*" + "@types/d3-delaunay": "npm:*" + "@types/d3-dispatch": "npm:*" + "@types/d3-drag": "npm:*" + "@types/d3-dsv": "npm:*" + "@types/d3-ease": "npm:*" + "@types/d3-fetch": "npm:*" + "@types/d3-force": "npm:*" + "@types/d3-format": "npm:*" + "@types/d3-geo": "npm:*" + "@types/d3-hierarchy": "npm:*" + "@types/d3-interpolate": "npm:*" + "@types/d3-path": "npm:*" + "@types/d3-polygon": "npm:*" + "@types/d3-quadtree": "npm:*" + "@types/d3-random": "npm:*" + "@types/d3-scale": "npm:*" + "@types/d3-scale-chromatic": "npm:*" + "@types/d3-selection": "npm:*" + "@types/d3-shape": "npm:*" + "@types/d3-time": "npm:*" + "@types/d3-time-format": "npm:*" + "@types/d3-timer": "npm:*" + "@types/d3-transition": "npm:*" + "@types/d3-zoom": "npm:*" + checksum: 10c0/a9c6d65b13ef3b42c87f2a89ea63a6d5640221869f97d0657b0cb2f1dac96a0f164bf5605643c0794e0de3aa2bf05df198519aaf15d24ca135eb0e8bd8a9d879 + languageName: node + linkType: hard + "@types/debug@npm:^4.0.0": version: 4.1.12 resolution: "@types/debug@npm:4.1.12" @@ -5272,6 +6270,18 @@ __metadata: languageName: node linkType: hard +"@types/express-serve-static-core@npm:^4.17.21": + version: 4.19.9 + resolution: "@types/express-serve-static-core@npm:4.19.9" + dependencies: + "@types/node": "npm:*" + "@types/qs": "npm:*" + "@types/range-parser": "npm:*" + "@types/send": "npm:*" + checksum: 10c0/31d7afe63c4f0090159a869e4199aae38cbc222948bf9be5d7c257bfdc8e14c9dec46e9f50c08e0004565565acb7ecd95d5c0dbde6d9fdd45a5d0adfabbf00fe + languageName: node + linkType: hard + "@types/express@npm:*, @types/express@npm:^4.17.13": version: 4.17.21 resolution: "@types/express@npm:4.17.21" @@ -5284,19 +6294,22 @@ __metadata: languageName: node linkType: hard -"@types/gtag.js@npm:^0.0.12": - version: 0.0.12 - resolution: "@types/gtag.js@npm:0.0.12" - checksum: 10c0/fee8f4c6e627301b89ab616c9e219bd53fa6ea1ffd1d0a8021e21363f0bdb2cf7eb1a5bcda0c6f1502186379bc7784ec29c932e21634f4e07f9e7a8c56887400 +"@types/express@npm:^4.17.25": + version: 4.17.25 + resolution: "@types/express@npm:4.17.25" + dependencies: + "@types/body-parser": "npm:*" + "@types/express-serve-static-core": "npm:^4.17.33" + "@types/qs": "npm:*" + "@types/serve-static": "npm:^1" + checksum: 10c0/f42b616d2c9dbc50352c820db7de182f64ebbfa8dba6fb6c98e5f8f0e2ef3edde0131719d9dc6874803d25ad9ca2d53471d0fec2fbc60a6003a43d015bab72c4 languageName: node linkType: hard -"@types/hast@npm:^2.0.0": - version: 2.3.10 - resolution: "@types/hast@npm:2.3.10" - dependencies: - "@types/unist": "npm:^2" - checksum: 10c0/16daac35d032e656defe1f103f9c09c341a6dc553c7ec17b388274076fa26e904a71ea5ea41fd368a6d5f1e9e53be275c80af7942b9c466d8511d261c9529c7e +"@types/geojson@npm:*": + version: 7946.0.16 + resolution: "@types/geojson@npm:7946.0.16" + checksum: 10c0/1ff24a288bd5860b766b073ead337d31d73bdc715e5b50a2cee5cb0af57a1ed02cc04ef295f5fa68dc40fe3e4f104dd31282b2b818a5ba3231bc1001ba084e3c languageName: node linkType: hard @@ -5316,16 +6329,6 @@ __metadata: languageName: node linkType: hard -"@types/hoist-non-react-statics@npm:^3.3.0": - version: 3.3.5 - resolution: "@types/hoist-non-react-statics@npm:3.3.5" - dependencies: - "@types/react": "npm:*" - hoist-non-react-statics: "npm:^3.3.0" - checksum: 10c0/2a3b64bf3d9817d7830afa60ee314493c475fb09570a64e7737084cd482d2177ebdddf888ce837350bac51741278b077683facc9541f052d4bbe8487b4e3e618 - languageName: node - linkType: hard - "@types/html-minifier-terser@npm:^6.0.0": version: 6.1.0 resolution: "@types/html-minifier-terser@npm:6.1.0" @@ -5388,15 +6391,6 @@ __metadata: languageName: node linkType: hard -"@types/mdast@npm:^3.0.0": - version: 3.0.15 - resolution: "@types/mdast@npm:3.0.15" - dependencies: - "@types/unist": "npm:^2" - checksum: 10c0/fcbf716c03d1ed5465deca60862e9691414f9c43597c288c7d2aefbe274552e1bbd7aeee91b88a02597e88a28c139c57863d0126fcf8416a95fdc681d054ee3d - languageName: node - linkType: hard - "@types/mdast@npm:^4.0.0, @types/mdast@npm:^4.0.2": version: 4.0.4 resolution: "@types/mdast@npm:4.0.4" @@ -5459,13 +6453,6 @@ __metadata: languageName: node linkType: hard -"@types/parse5@npm:^6.0.0": - version: 6.0.3 - resolution: "@types/parse5@npm:6.0.3" - checksum: 10c0/a7c7ef6625974b74b93c1105953003a2291897e453369efcadc569b907de2784d61d4e6905de3ef959fa07f3278f41ed0c22ead0173776023fc43b6ed31042d0 - languageName: node - linkType: hard - "@types/prismjs@npm:^1.26.0": version: 1.26.4 resolution: "@types/prismjs@npm:1.26.4" @@ -5473,7 +6460,7 @@ __metadata: languageName: node linkType: hard -"@types/prop-types@npm:*, @types/prop-types@npm:^15.0.0": +"@types/prop-types@npm:*": version: 15.7.12 resolution: "@types/prop-types@npm:15.7.12" checksum: 10c0/1babcc7db6a1177779f8fde0ccc78d64d459906e6ef69a4ed4dd6339c920c2e05b074ee5a92120fe4e9d9f1a01c952f843ebd550bee2332fc2ef81d1706878f8 @@ -5494,18 +6481,6 @@ __metadata: languageName: node linkType: hard -"@types/react-redux@npm:^7.1.20": - version: 7.1.33 - resolution: "@types/react-redux@npm:7.1.33" - dependencies: - "@types/hoist-non-react-statics": "npm:^3.3.0" - "@types/react": "npm:*" - hoist-non-react-statics: "npm:^3.3.0" - redux: "npm:^4.0.0" - checksum: 10c0/e17a2fea00c6ab5f22868e927b4da7b7cf8dc7c85102638fa0f87e12ae0ec13335d9b3bf75098b3316dd8d2a18c99fe08bed22daa989a13f3710c4530f7b979e - languageName: node - linkType: hard - "@types/react-router-config@npm:*, @types/react-router-config@npm:^5.0.7": version: 5.0.11 resolution: "@types/react-router-config@npm:5.0.11" @@ -5555,6 +6530,13 @@ __metadata: languageName: node linkType: hard +"@types/retry@npm:0.12.2": + version: 0.12.2 + resolution: "@types/retry@npm:0.12.2" + checksum: 10c0/07481551a988cc90b423351919928b9ddcd14e3f5591cac3ab950851bb20646e55a10e89141b38bc3093d2056d4df73700b22ff2612976ac86a6367862381884 + languageName: node + linkType: hard + "@types/sax@npm:^1.2.1": version: 1.2.7 resolution: "@types/sax@npm:1.2.7" @@ -5574,7 +6556,17 @@ __metadata: languageName: node linkType: hard -"@types/serve-index@npm:^1.9.1": +"@types/send@npm:<1": + version: 0.17.6 + resolution: "@types/send@npm:0.17.6" + dependencies: + "@types/mime": "npm:^1" + "@types/node": "npm:*" + checksum: 10c0/a9d76797f0637738062f1b974e0fcf3d396a28c5dc18c3f95ecec5dabda82e223afbc2d56a0bca46b6326fd7bb229979916cea40de2270a98128fd94441b87c2 + languageName: node + linkType: hard + +"@types/serve-index@npm:^1.9.1, @types/serve-index@npm:^1.9.4": version: 1.9.4 resolution: "@types/serve-index@npm:1.9.4" dependencies: @@ -5594,7 +6586,18 @@ __metadata: languageName: node linkType: hard -"@types/sockjs@npm:^0.3.33": +"@types/serve-static@npm:^1, @types/serve-static@npm:^1.15.5": + version: 1.15.10 + resolution: "@types/serve-static@npm:1.15.10" + dependencies: + "@types/http-errors": "npm:*" + "@types/node": "npm:*" + "@types/send": "npm:<1" + checksum: 10c0/842fca14c9e80468f89b6cea361773f2dcd685d4616a9f59013b55e1e83f536e4c93d6d8e3ba5072d40c4e7e64085210edd6646b15d538ded94512940a23021f + languageName: node + linkType: hard + +"@types/sockjs@npm:^0.3.33, @types/sockjs@npm:^0.3.36": version: 0.3.36 resolution: "@types/sockjs@npm:0.3.36" dependencies: @@ -5603,6 +6606,13 @@ __metadata: languageName: node linkType: hard +"@types/trusted-types@npm:^2.0.7": + version: 2.0.7 + resolution: "@types/trusted-types@npm:2.0.7" + checksum: 10c0/4c4855f10de7c6c135e0d32ce462419d8abbbc33713b31d294596c0cc34ae1fa6112a2f9da729c8f7a20707782b0d69da3b1f8df6645b0366d08825ca1522e0c + languageName: node + linkType: hard + "@types/unist@npm:*, @types/unist@npm:^3.0.0": version: 3.0.2 resolution: "@types/unist@npm:3.0.2" @@ -5610,13 +6620,29 @@ __metadata: languageName: node linkType: hard -"@types/unist@npm:^2, @types/unist@npm:^2.0.0": +"@types/unist@npm:^2.0.0": version: 2.0.10 resolution: "@types/unist@npm:2.0.10" checksum: 10c0/5f247dc2229944355209ad5c8e83cfe29419fa7f0a6d557421b1985a1500444719cc9efcc42c652b55aab63c931813c88033e0202c1ac684bcd4829d66e44731 languageName: node linkType: hard +"@types/use-sync-external-store@npm:^0.0.6": + version: 0.0.6 + resolution: "@types/use-sync-external-store@npm:0.0.6" + checksum: 10c0/77c045a98f57488201f678b181cccd042279aff3da34540ad242f893acc52b358bd0a8207a321b8ac09adbcef36e3236944390e2df4fcedb556ce7bb2a88f2a8 + languageName: node + linkType: hard + +"@types/ws@npm:^8.5.10": + version: 8.18.2 + resolution: "@types/ws@npm:8.18.2" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/8cf79499d26df06ffc27109fc86f1400371a5932082a4c1269be3f11e22b9e5a403a4ba2c1a3245d5fae420c270571aa833142a3d7fdce8f6cd24a45c52a98e4 + languageName: node + linkType: hard + "@types/ws@npm:^8.5.5": version: 8.5.11 resolution: "@types/ws@npm:8.5.11" @@ -5649,6 +6675,21 @@ __metadata: languageName: node linkType: hard +"@upsetjs/venn.js@npm:^2.0.0": + version: 2.0.0 + resolution: "@upsetjs/venn.js@npm:2.0.0" + dependencies: + d3-selection: "npm:^3.0.0" + d3-transition: "npm:^3.0.1" + dependenciesMeta: + d3-selection: + optional: true + d3-transition: + optional: true + checksum: 10c0/b12014d94708ab4df7f5a4b6205c6f23ff235cca2ffe91df3314862b109b826e52f9020c2a2f7527d3712d21c578d6db9cdb60ce46a528739cc18e58d111f724 + languageName: node + linkType: hard + "@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.12.1": version: 1.12.1 resolution: "@webassemblyjs/ast@npm:1.12.1" @@ -5972,15 +7013,6 @@ __metadata: languageName: node linkType: hard -"abort-controller@npm:^3.0.0": - version: 3.0.0 - resolution: "abort-controller@npm:3.0.0" - dependencies: - event-target-shim: "npm:^5.0.0" - checksum: 10c0/90ccc50f010250152509a344eb2e71977fbf8db0ab8f1061197e3275ddf6c61a41a6edfd7b9409c664513131dd96e962065415325ef23efa5db931b382d24ca5 - languageName: node - linkType: hard - "accepts@npm:~1.3.4, accepts@npm:~1.3.5, accepts@npm:~1.3.8": version: 1.3.8 resolution: "accepts@npm:1.3.8" @@ -6043,12 +7075,26 @@ __metadata: languageName: node linkType: hard -"agent-base@npm:^7.0.2": - version: 7.1.1 - resolution: "agent-base@npm:7.1.1" +"address@npm:^2.0.1": + version: 2.0.3 + resolution: "address@npm:2.0.3" + checksum: 10c0/e95c8d989812a9b1cef5e167328a1dd6fd2c41b02005793b7b4631d32dbf7de30bd17685d2f17fbfb94b67f3c422f9a0399caee3c1fbfa18c8e20dc0c8c77d3b + languageName: node + linkType: hard + +"adm-zip@npm:*, adm-zip@npm:0.6.1": + version: 0.6.1 + resolution: "adm-zip@npm:0.6.1" + checksum: 10c0/78233c6fbfd418dd605ef3c4c6a656406a49f81f716f2850d565f5e55915f18b99f4fdaf15436d77c73536da0915eeca33adab8055872a983b0ac7d07664cd25 + languageName: node + linkType: hard + +"agent-base@npm:6": + version: 6.0.2 + resolution: "agent-base@npm:6.0.2" dependencies: - debug: "npm:^4.3.4" - checksum: 10c0/e59ce7bed9c63bf071a30cc471f2933862044c97fd9958967bfe22521d7a0f601ce4ed5a8c011799d0c726ca70312142ae193bbebb60f576b52be19d4a363b50 + debug: "npm:4" + checksum: 10c0/dc4f757e40b5f3e3d674bc9beb4f1048f4ee83af189bae39be99f57bf1f48dde166a8b0a5342a84b5944ee8e6ed1e5a9d801858f4ad44764e84957122fe46261 languageName: node linkType: hard @@ -6095,6 +7141,20 @@ __metadata: languageName: node linkType: hard +"ajv-formats@npm:^3.0.1": + version: 3.0.1 + resolution: "ajv-formats@npm:3.0.1" + dependencies: + ajv: "npm:^8.0.0" + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + checksum: 10c0/168d6bca1ea9f163b41c8147bae537e67bd963357a5488a1eaf3abe8baa8eec806d4e45f15b10767e6020679315c7e1e5e6803088dfb84efa2b4e9353b83dd0a + languageName: node + linkType: hard + "ajv-keywords@npm:^3.4.1, ajv-keywords@npm:^3.5.2": version: 3.5.2 resolution: "ajv-keywords@npm:3.5.2" @@ -6115,18 +7175,6 @@ __metadata: languageName: node linkType: hard -"ajv@npm:8.11.0": - version: 8.11.0 - resolution: "ajv@npm:8.11.0" - dependencies: - fast-deep-equal: "npm:^3.1.1" - json-schema-traverse: "npm:^1.0.0" - require-from-string: "npm:^2.0.2" - uri-js: "npm:^4.2.2" - checksum: 10c0/8a4b1b639a53d52169b94dd1cdd03716fe7bbc1fc676006957ba82497e764f4bd44b92f75e37c8804ea3176ee3c224322e22779d071fb01cd89aefaaa42c9414 - languageName: node - linkType: hard - "ajv@npm:^6.12.2, ajv@npm:^6.12.5": version: 6.12.6 resolution: "ajv@npm:6.12.6" @@ -6151,37 +7199,48 @@ __metadata: languageName: node linkType: hard -"algoliasearch-helper@npm:^3.13.3": - version: 3.22.2 - resolution: "algoliasearch-helper@npm:3.22.2" +"ajv@npm:^8.11.0, ajv@npm:^8.20.0": + version: 8.20.0 + resolution: "ajv@npm:8.20.0" + dependencies: + fast-deep-equal: "npm:^3.1.3" + fast-uri: "npm:^3.0.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + checksum: 10c0/5df9a1c8f83863cde1bd3a9ddb426f599718f88e3dc9153616c79fb28e0be455335830d7f21d745576519f057b371352daa31047b6a33d7036fe08777d60cf2a + languageName: node + linkType: hard + +"algoliasearch-helper@npm:^3.26.0": + version: 3.30.0 + resolution: "algoliasearch-helper@npm:3.30.0" dependencies: "@algolia/events": "npm:^4.0.1" peerDependencies: algoliasearch: ">= 3.1 < 6" - checksum: 10c0/72723a39ff47b121cbb56d26b4dfe875e105a8d14e060559c00ec3da75d7c6ec2caabc7d4138eb01a14bac5fb105942748f96cbda7842bf767fbcf69a03ec7e9 + checksum: 10c0/4072fa3e8d48d42d65f3e3272ac17dd6b3c4b7a163aff5f8663809d1d0af35f912ec2cef9dd1050ec860489c132609ec39eef31f98ad5e2c850791006c36df33 languageName: node linkType: hard -"algoliasearch@npm:^4.18.0, algoliasearch@npm:^4.19.1": - version: 4.24.0 - resolution: "algoliasearch@npm:4.24.0" +"algoliasearch@npm:^5.37.0": + version: 5.60.0 + resolution: "algoliasearch@npm:5.60.0" dependencies: - "@algolia/cache-browser-local-storage": "npm:4.24.0" - "@algolia/cache-common": "npm:4.24.0" - "@algolia/cache-in-memory": "npm:4.24.0" - "@algolia/client-account": "npm:4.24.0" - "@algolia/client-analytics": "npm:4.24.0" - "@algolia/client-common": "npm:4.24.0" - "@algolia/client-personalization": "npm:4.24.0" - "@algolia/client-search": "npm:4.24.0" - "@algolia/logger-common": "npm:4.24.0" - "@algolia/logger-console": "npm:4.24.0" - "@algolia/recommend": "npm:4.24.0" - "@algolia/requester-browser-xhr": "npm:4.24.0" - "@algolia/requester-common": "npm:4.24.0" - "@algolia/requester-node-http": "npm:4.24.0" - "@algolia/transporter": "npm:4.24.0" - checksum: 10c0/ef09096619191181f3ea3376ed46b5bb2de1cd7d97a8d016f7cfe8e93c89d34f38cac8db5835314f8d97c939ad007c3dde716c1609953540258352edb25d12c2 + "@algolia/abtesting": "npm:1.26.0" + "@algolia/client-abtesting": "npm:5.60.0" + "@algolia/client-analytics": "npm:5.60.0" + "@algolia/client-common": "npm:5.60.0" + "@algolia/client-insights": "npm:5.60.0" + "@algolia/client-personalization": "npm:5.60.0" + "@algolia/client-query-suggestions": "npm:5.60.0" + "@algolia/client-search": "npm:5.60.0" + "@algolia/ingestion": "npm:1.60.0" + "@algolia/monitoring": "npm:1.60.0" + "@algolia/recommend": "npm:5.60.0" + "@algolia/requester-browser-xhr": "npm:5.60.0" + "@algolia/requester-fetch": "npm:5.60.0" + "@algolia/requester-node-http": "npm:5.60.0" + checksum: 10c0/cb490749fa4fac5076eb1b5e23e018f2bd45ed90d135c42a431aaf376c1e90fee5d09074320a73e6c164926aec1fde05f208c7516f3d817091f09e8e1644cd39 languageName: node linkType: hard @@ -6203,15 +7262,6 @@ __metadata: languageName: node linkType: hard -"ansi-escapes@npm:^4.3.2": - version: 4.3.2 - resolution: "ansi-escapes@npm:4.3.2" - dependencies: - type-fest: "npm:^0.21.3" - checksum: 10c0/da917be01871525a3dfcf925ae2977bc59e8c513d4423368645634bf5d4ceba5401574eb705c1e92b79f7292af5a656f78c5725a4b0e1cec97c4b413705c1d50 - languageName: node - linkType: hard - "ansi-html-community@npm:^0.0.8": version: 0.0.8 resolution: "ansi-html-community@npm:0.0.8" @@ -6260,6 +7310,13 @@ __metadata: languageName: node linkType: hard +"ansis@npm:^3.2.0": + version: 3.17.0 + resolution: "ansis@npm:3.17.0" + checksum: 10c0/d8fa94ca7bb91e7e5f8a7d323756aa075facce07c5d02ca883673e128b2873d16f93e0dec782f98f1eeb1f2b3b4b7b60dcf0ad98fb442e75054fe857988cc5cb + languageName: node + linkType: hard + "any-promise@npm:^1.0.0": version: 1.3.0 resolution: "any-promise@npm:1.3.0" @@ -6314,27 +7371,14 @@ __metadata: languageName: node linkType: hard -"asn1.js@npm:^4.10.1": - version: 4.10.1 - resolution: "asn1.js@npm:4.10.1" +"asn1js@npm:^3.0.10, asn1js@npm:^3.0.6": + version: 3.0.10 + resolution: "asn1js@npm:3.0.10" dependencies: - bn.js: "npm:^4.0.0" - inherits: "npm:^2.0.1" - minimalistic-assert: "npm:^1.0.0" - checksum: 10c0/afa7f3ab9e31566c80175a75b182e5dba50589dcc738aa485be42bdd787e2a07246a4b034d481861123cbe646a7656f318f4f1cad2e9e5e808a210d5d6feaa88 - languageName: node - linkType: hard - -"assert@npm:^2.1.0": - version: 2.1.0 - resolution: "assert@npm:2.1.0" - dependencies: - call-bind: "npm:^1.0.2" - is-nan: "npm:^1.3.2" - object-is: "npm:^1.1.5" - object.assign: "npm:^4.1.4" - util: "npm:^0.12.5" - checksum: 10c0/7271a5da883c256a1fa690677bf1dd9d6aa882139f2bed1cd15da4f9e7459683e1da8e32a203d6cc6767e5e0f730c77a9532a87b896b4b0af0dd535f668775f0 + pvtsutils: "npm:^1.3.6" + pvutils: "npm:^1.1.5" + tslib: "npm:^2.8.1" + checksum: 10c0/04056106522e4d0db4eb992299bb76d73438bfd59ffd975ac9c1f15d14e7326161dad383c54a5ccfa203b73ae7b7bf4668f42c2fed01e1f4bf79a58de71e4dc6 languageName: node linkType: hard @@ -6347,17 +7391,31 @@ __metadata: languageName: node linkType: hard -"async@npm:3.2.2": - version: 3.2.2 - resolution: "async@npm:3.2.2" - checksum: 10c0/0702c7d70d26f8aa2afdcefca2a1aab45dd36d95e4b652ee3d1c784001b5fcb0132737e068200eb5f38feee01b748b1839c4c94ce11f37fd86b8fb3d6b5addaa +"async-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-function@npm:1.0.0" + checksum: 10c0/669a32c2cb7e45091330c680e92eaeb791bc1d4132d827591e499cd1f776ff5a873e77e5f92d0ce795a8d60f10761dec9ddfe7225a5de680f5d357f67b1aac73 languageName: node linkType: hard -"async@npm:3.2.4": - version: 3.2.4 - resolution: "async@npm:3.2.4" - checksum: 10c0/b5d02fed64717edf49e35b2b156debd9cf524934ea670108fa5528e7615ed66a5e0bf6c65f832c9483b63aa7f0bffe3e588ebe8d58a539b833798d324516e1c9 +"async-generator-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-generator-function@npm:1.0.0" + checksum: 10c0/2c50ef856c543ad500d8d8777d347e3c1ba623b93e99c9263ecc5f965c1b12d2a140e2ab6e43c3d0b85366110696f28114649411cbcd10b452a92a2318394186 + languageName: node + linkType: hard + +"async@npm:3.2.6, async@npm:^3.2.2": + version: 3.2.6 + resolution: "async@npm:3.2.6" + checksum: 10c0/36484bb15ceddf07078688d95e27076379cc2f87b10c03b6dd8a83e89475a3c8df5848859dd06a4c95af1e4c16fc973de0171a77f18ea00be899aca2a4f85e70 + languageName: node + linkType: hard + +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d languageName: node linkType: hard @@ -6386,12 +7444,32 @@ __metadata: languageName: node linkType: hard -"available-typed-arrays@npm:^1.0.7": - version: 1.0.7 - resolution: "available-typed-arrays@npm:1.0.7" +"autoprefixer@npm:^10.4.23": + version: 10.6.1 + resolution: "autoprefixer@npm:10.6.1" dependencies: - possible-typed-array-names: "npm:^1.0.0" - checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 + browserslist: "npm:^4.28.9" + caniuse-lite: "npm:^1.0.30001810" + fraction.js: "npm:^5.3.4" + picocolors: "npm:^1.1.1" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.1.0 + bin: + autoprefixer: bin/autoprefixer + checksum: 10c0/bd5273fbe36a2baccf29e7cb62b32181b1848a64f92d4d24fe5db66960f6f576ab9684983b93569f1bd890fa25ebc270eafac9692619517705e7be4f4d95db74 + languageName: node + linkType: hard + +"axios@npm:1.20.0": + version: 1.20.0 + resolution: "axios@npm:1.20.0" + dependencies: + follow-redirects: "npm:^1.16.0" + form-data: "npm:^4.0.6" + https-proxy-agent: "npm:^5.0.1" + proxy-from-env: "npm:^2.1.0" + checksum: 10c0/976088acf532286356f4c2e65df1ef47ba7da3936d83e928d0d64357bbf5370456abd3eb5826c15df322335fcb1fe200d4a84b4fcf20ffccdd63b40d80fa495c languageName: node linkType: hard @@ -6506,6 +7584,15 @@ __metadata: languageName: node linkType: hard +"baseline-browser-mapping@npm:^2.11.26": + version: 2.11.28 + resolution: "baseline-browser-mapping@npm:2.11.28" + bin: + baseline-browser-mapping: dist/cli.cjs + checksum: 10c0/769e7a09a43babb7436f6c78c45323580f7fdf8c846ef97b93895f31a95adc1898168415e3a7ff1091610d74b96a826aceddaa4ed7f2bfe95caa453bbb331e60 + languageName: node + linkType: hard + "batch@npm:0.6.1": version: 0.6.1 resolution: "batch@npm:0.6.1" @@ -6527,20 +7614,6 @@ __metadata: languageName: node linkType: hard -"bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.9": - version: 4.12.0 - resolution: "bn.js@npm:4.12.0" - checksum: 10c0/9736aaa317421b6b3ed038ff3d4491935a01419ac2d83ddcfebc5717385295fcfcf0c57311d90fe49926d0abbd7a9dbefdd8861e6129939177f7e67ebc645b21 - languageName: node - linkType: hard - -"bn.js@npm:^5.0.0, bn.js@npm:^5.2.1": - version: 5.2.1 - resolution: "bn.js@npm:5.2.1" - checksum: 10c0/bed3d8bd34ec89dbcf9f20f88bd7d4a49c160fda3b561c7bb227501f974d3e435a48fb9b61bc3de304acab9215a3bda0803f7017ffb4d0016a0c3a740a283caa - languageName: node - linkType: hard - "body-parser@npm:1.20.2": version: 1.20.2 resolution: "body-parser@npm:1.20.2" @@ -6561,6 +7634,26 @@ __metadata: languageName: node linkType: hard +"body-parser@npm:~1.20.5": + version: 1.20.8 + resolution: "body-parser@npm:1.20.8" + dependencies: + bytes: "npm:~3.1.2" + content-type: "npm:~1.0.5" + debug: "npm:2.6.9" + depd: "npm:2.0.0" + destroy: "npm:~1.2.0" + http-errors: "npm:~2.0.1" + iconv-lite: "npm:~0.4.24" + on-finished: "npm:~2.4.1" + qs: "npm:~6.16.0" + raw-body: "npm:~2.5.3" + type-is: "npm:~1.6.18" + unpipe: "npm:~1.0.0" + checksum: 10c0/7edc8c4762d52ff685af081b1d5ccad860edcec662c25893be452b16042fd55b9c9869a194bd282e0ad936c34eb07866b2b33f0cc02ff916597058fd229c13d2 + languageName: node + linkType: hard + "bonjour-service@npm:^1.0.11": version: 1.2.1 resolution: "bonjour-service@npm:1.2.1" @@ -6571,6 +7664,16 @@ __metadata: languageName: node linkType: hard +"bonjour-service@npm:^1.2.1": + version: 1.4.4 + resolution: "bonjour-service@npm:1.4.4" + dependencies: + fast-deep-equal: "npm:^3.1.3" + multicast-dns: "npm:^7.2.5" + checksum: 10c0/92b24ed6d7cfc8deb7ba4f0611682a1da5a9501aae8067f24f067bcceaea6a57bd7b2d1734e38b062274d2671377621ef4c4f23ee422ba2f1710adee5972d8ca + languageName: node + linkType: hard + "boolbase@npm:^1.0.0": version: 1.0.0 resolution: "boolbase@npm:1.0.0" @@ -6638,87 +7741,6 @@ __metadata: languageName: node linkType: hard -"brorand@npm:^1.0.1, brorand@npm:^1.1.0": - version: 1.1.0 - resolution: "brorand@npm:1.1.0" - checksum: 10c0/6f366d7c4990f82c366e3878492ba9a372a73163c09871e80d82fb4ae0d23f9f8924cb8a662330308206e6b3b76ba1d528b4601c9ef73c2166b440b2ea3b7571 - languageName: node - linkType: hard - -"browserify-aes@npm:^1.0.4, browserify-aes@npm:^1.2.0": - version: 1.2.0 - resolution: "browserify-aes@npm:1.2.0" - dependencies: - buffer-xor: "npm:^1.0.3" - cipher-base: "npm:^1.0.0" - create-hash: "npm:^1.1.0" - evp_bytestokey: "npm:^1.0.3" - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.0.1" - checksum: 10c0/967f2ae60d610b7b252a4cbb55a7a3331c78293c94b4dd9c264d384ca93354c089b3af9c0dd023534efdc74ffbc82510f7ad4399cf82bc37bc07052eea485f18 - languageName: node - linkType: hard - -"browserify-cipher@npm:^1.0.0": - version: 1.0.1 - resolution: "browserify-cipher@npm:1.0.1" - dependencies: - browserify-aes: "npm:^1.0.4" - browserify-des: "npm:^1.0.0" - evp_bytestokey: "npm:^1.0.0" - checksum: 10c0/aa256dcb42bc53a67168bbc94ab85d243b0a3b56109dee3b51230b7d010d9b78985ffc1fb36e145c6e4db151f888076c1cfc207baf1525d3e375cbe8187fe27d - languageName: node - linkType: hard - -"browserify-des@npm:^1.0.0": - version: 1.0.2 - resolution: "browserify-des@npm:1.0.2" - dependencies: - cipher-base: "npm:^1.0.1" - des.js: "npm:^1.0.0" - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.1.2" - checksum: 10c0/943eb5d4045eff80a6cde5be4e5fbb1f2d5002126b5a4789c3c1aae3cdddb1eb92b00fb92277f512288e5c6af330730b1dbabcf7ce0923e749e151fcee5a074d - languageName: node - linkType: hard - -"browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.1.0": - version: 4.1.0 - resolution: "browserify-rsa@npm:4.1.0" - dependencies: - bn.js: "npm:^5.0.0" - randombytes: "npm:^2.0.1" - checksum: 10c0/fb2b5a8279d8a567a28d8ee03fb62e448428a906bab5c3dc9e9c3253ace551b5ea271db15e566ac78f1b1d71b243559031446604168b9235c351a32cae99d02a - languageName: node - linkType: hard - -"browserify-sign@npm:^4.0.0": - version: 4.2.3 - resolution: "browserify-sign@npm:4.2.3" - dependencies: - bn.js: "npm:^5.2.1" - browserify-rsa: "npm:^4.1.0" - create-hash: "npm:^1.2.0" - create-hmac: "npm:^1.1.7" - elliptic: "npm:^6.5.5" - hash-base: "npm:~3.0" - inherits: "npm:^2.0.4" - parse-asn1: "npm:^5.1.7" - readable-stream: "npm:^2.3.8" - safe-buffer: "npm:^5.2.1" - checksum: 10c0/30c0eba3f5970a20866a4d3fbba2c5bd1928cd24f47faf995f913f1499214c6f3be14bb4d6ec1ab5c6cafb1eca9cb76ba1c2e1c04ed018370634d4e659c77216 - languageName: node - linkType: hard - -"browserify-zlib@npm:^0.2.0": - version: 0.2.0 - resolution: "browserify-zlib@npm:0.2.0" - dependencies: - pako: "npm:~1.0.5" - checksum: 10c0/9ab10b6dc732c6c5ec8ebcbe5cb7fe1467f97402c9b2140113f47b5f187b9438f93a8e065d8baf8b929323c18324fbf1105af479ee86d9d36cab7d7ef3424ad9 - languageName: node - linkType: hard - "browserslist@npm:^4.0.0, browserslist@npm:^4.18.1, browserslist@npm:^4.21.10, browserslist@npm:^4.23.0, browserslist@npm:^4.23.1": version: 4.23.2 resolution: "browserslist@npm:4.23.2" @@ -6747,6 +7769,21 @@ __metadata: languageName: node linkType: hard +"browserslist@npm:^4.28.1, browserslist@npm:^4.28.9": + version: 4.29.3 + resolution: "browserslist@npm:4.29.3" + dependencies: + baseline-browser-mapping: "npm:^2.11.26" + caniuse-lite: "npm:^1.0.30001813" + electron-to-chromium: "npm:^1.5.439" + node-releases: "npm:^2.0.57" + update-browserslist-db: "npm:^1.3.3" + bin: + browserslist: cli.js + checksum: 10c0/6e1a1fcae77369260e936fe63e7994105f04c6b7aea4f2139fdf3ecccfcb1eb24d4522c2828c6ed48ef71206a33f4346e11cf714c5aac0f7496cead06bb66bac + languageName: node + linkType: hard + "buffer-from@npm:^1.0.0": version: 1.1.2 resolution: "buffer-from@npm:1.1.2" @@ -6754,13 +7791,6 @@ __metadata: languageName: node linkType: hard -"buffer-xor@npm:^1.0.3": - version: 1.0.3 - resolution: "buffer-xor@npm:1.0.3" - checksum: 10c0/fd269d0e0bf71ecac3146187cfc79edc9dbb054e2ee69b4d97dfb857c6d997c33de391696d04bdd669272751fa48e7872a22f3a6c7b07d6c0bc31dbe02a4075c - languageName: node - linkType: hard - "buffer@npm:^6.0.3": version: 6.0.3 resolution: "buffer@npm:6.0.3" @@ -6771,10 +7801,12 @@ __metadata: languageName: node linkType: hard -"builtin-status-codes@npm:^3.0.0": - version: 3.0.0 - resolution: "builtin-status-codes@npm:3.0.0" - checksum: 10c0/c37bbba11a34c4431e56bd681b175512e99147defbe2358318d8152b3a01df7bf25e0305873947e5b350073d5ef41a364a22b37e48f1fb6d2fe6d5286a0f348c +"bundle-name@npm:^4.1.0": + version: 4.1.1 + resolution: "bundle-name@npm:4.1.1" + dependencies: + run-applescript: "npm:^7.0.0" + checksum: 10c0/1d059a934a80af73db5bf52d4b932a631fc9724451e4082c900e947c433668f0569017c185ac8245bae84ada97a2c7048bd7eeeb288d2ebac8840c4a388a2d09 languageName: node linkType: hard @@ -6785,13 +7817,20 @@ __metadata: languageName: node linkType: hard -"bytes@npm:3.1.2": +"bytes@npm:3.1.2, bytes@npm:~3.1.2": version: 3.1.2 resolution: "bytes@npm:3.1.2" checksum: 10c0/76d1c43cbd602794ad8ad2ae94095cddeb1de78c5dddaa7005c51af10b0176c69971a6d88e805a90c2b6550d76636e43c40d8427a808b8645ede885de4a0358e languageName: node linkType: hard +"bytestreamjs@npm:^2.0.1": + version: 2.0.1 + resolution: "bytestreamjs@npm:2.0.1" + checksum: 10c0/edd66b7ca3f94aae99a1009304a42d82ca4c2085eb934192ff47a81f59215c975dc9d3cd8f23c40a2f43ef5b2fa6f01ace70b10ad247766cec6ec641b89eab48 + languageName: node + linkType: hard + "cacache@npm:^19.0.1": version: 19.0.1 resolution: "cacache@npm:19.0.1" @@ -6834,7 +7873,17 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.7": +"call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": + version: 1.0.2 + resolution: "call-bind-apply-helpers@npm:1.0.2" + dependencies: + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + checksum: 10c0/47bd9901d57b857590431243fea704ff18078b16890a6b3e021e12d279bbf211d039155e27d7566b374d49ee1f8189344bac9833dec7a20cdec370506361c938 + languageName: node + linkType: hard + +"call-bind@npm:^1.0.5, call-bind@npm:^1.0.7": version: 1.0.7 resolution: "call-bind@npm:1.0.7" dependencies: @@ -6847,6 +7896,16 @@ __metadata: languageName: node linkType: hard +"call-bound@npm:^1.0.2": + version: 1.0.4 + resolution: "call-bound@npm:1.0.4" + dependencies: + call-bind-apply-helpers: "npm:^1.0.2" + get-intrinsic: "npm:^1.3.0" + checksum: 10c0/f4796a6a0941e71c766aea672f63b72bc61234c4f4964dc6d7606e3664c307e7d77845328a8f3359ce39ddb377fed67318f9ee203dea1d47e46165dcf2917644 + languageName: node + linkType: hard + "call-me-maybe@npm:^1.0.1": version: 1.0.2 resolution: "call-me-maybe@npm:1.0.2" @@ -6918,6 +7977,13 @@ __metadata: languageName: node linkType: hard +"caniuse-lite@npm:^1.0.30001810, caniuse-lite@npm:^1.0.30001813": + version: 1.0.30001816 + resolution: "caniuse-lite@npm:1.0.30001816" + checksum: 10c0/5d39f36f73181906fd25d0cd61030308540d38ed1162eb730d4e69dc75ab94434a5977ab08d4721351bd855f99d19eb5fc488c58ec49272484868c0f3bc97243 + languageName: node + linkType: hard + "ccount@npm:^2.0.0": version: 2.0.1 resolution: "ccount@npm:2.0.1" @@ -6953,6 +8019,13 @@ __metadata: languageName: node linkType: hard +"chalk@npm:^5.6.2": + version: 5.6.2 + resolution: "chalk@npm:5.6.2" + checksum: 10c0/99a4b0f0e7991796b1e7e3f52dceb9137cae2a9dfc8fc0784a550dc4c558e15ab32ed70b14b21b52beb2679b4892b41a0aa44249bcb996f01e125d58477c6976 + languageName: node + linkType: hard + "char-regex@npm:^1.0.2": version: 1.0.2 resolution: "char-regex@npm:1.0.2" @@ -7024,7 +8097,20 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:>=3.0.0 <4.0.0, chokidar@npm:^3.4.2, chokidar@npm:^3.5.3": +"chevrotain@npm:~13.2.0": + version: 13.2.0 + resolution: "chevrotain@npm:13.2.0" + dependencies: + "@chevrotain/cst-dts-gen": "npm:13.2.0" + "@chevrotain/gast": "npm:13.2.0" + "@chevrotain/regexp-to-ast": "npm:13.2.0" + "@chevrotain/types": "npm:13.2.0" + "@chevrotain/utils": "npm:13.2.0" + checksum: 10c0/f7384a69c4ef7d43be6fd63a9447af5877de7b66842638d8568a85e7f404a278495d68f0fd9024f12aec886aee9b888c544734549b9c95e03f6e4c6e87fcb1cf + languageName: node + linkType: hard + +"chokidar@npm:^3.4.2, chokidar@npm:^3.5.3, chokidar@npm:^3.6.0": version: 3.6.0 resolution: "chokidar@npm:3.6.0" dependencies: @@ -7043,12 +8129,12 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^4.0.0": - version: 4.0.1 - resolution: "chokidar@npm:4.0.1" +"chokidar@npm:^5.0.0": + version: 5.0.0 + resolution: "chokidar@npm:5.0.0" dependencies: - readdirp: "npm:^4.0.1" - checksum: 10c0/4bb7a3adc304059810bb6c420c43261a15bb44f610d77c35547addc84faa0374265c3adc67f25d06f363d9a4571962b02679268c40de07676d260de1986efea9 + readdirp: "npm:^5.0.0" + checksum: 10c0/42fc907cb2a7ff5c9e220f84dae75380a77997f851c2a5e7865a2cf9ae45dd407a23557208cdcdbf3ac8c93341135a1748e4c48c31855f3bfa095e5159b6bdec languageName: node linkType: hard @@ -7073,17 +8159,7 @@ __metadata: languageName: node linkType: hard -"cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": - version: 1.0.4 - resolution: "cipher-base@npm:1.0.4" - dependencies: - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.0.1" - checksum: 10c0/d8d005f8b64d8a77b3d3ce531301ae7b45902c9cab4ec8b66bdbd2bf2a1d9fceb9a2133c293eb3c060b2d964da0f14c47fb740366081338aa3795dd1faa8984b - languageName: node - linkType: hard - -"clean-css@npm:^5.2.2, clean-css@npm:^5.3.2, clean-css@npm:~5.3.2": +"clean-css@npm:^5.2.2, clean-css@npm:^5.3.2, clean-css@npm:^5.3.3, clean-css@npm:~5.3.2": version: 5.3.3 resolution: "clean-css@npm:5.3.3" dependencies: @@ -7150,14 +8226,7 @@ __metadata: languageName: node linkType: hard -"clsx@npm:1.2.1, clsx@npm:^1.1.1, clsx@npm:^1.2.1": - version: 1.2.1 - resolution: "clsx@npm:1.2.1" - checksum: 10c0/34dead8bee24f5e96f6e7937d711978380647e936a22e76380290e35486afd8634966ce300fc4b74a32f3762c7d4c0303f442c3e259f4ce02374eb0c82834f27 - languageName: node - linkType: hard - -"clsx@npm:^2.0.0": +"clsx@npm:2.1.1, clsx@npm:^2.0.0, clsx@npm:^2.1.1": version: 2.1.1 resolution: "clsx@npm:2.1.1" checksum: 10c0/c4c8eb865f8c82baab07e71bfa8897c73454881c4f99d6bc81585aecd7c441746c1399d08363dc096c550cceaf97bd4ce1e8854e1771e9998d9f94c4fe075839 @@ -7231,6 +8300,15 @@ __metadata: languageName: node linkType: hard +"combined-stream@npm:^1.0.8": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: "npm:~1.0.0" + checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5 + languageName: node + linkType: hard + "comma-separated-tokens@npm:^2.0.0": version: 2.0.3 resolution: "comma-separated-tokens@npm:2.0.3" @@ -7245,6 +8323,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:7, commander@npm:^7.2.0": + version: 7.2.0 + resolution: "commander@npm:7.2.0" + checksum: 10c0/8d690ff13b0356df7e0ebbe6c59b4712f754f4b724d4f473d3cc5b3fdcf978e3a5dc3078717858a2ceb50b0f84d0660a7f22a96cdc50fb877d0c9bb31593d23a + languageName: node + linkType: hard + "commander@npm:^10.0.0": version: 10.0.1 resolution: "commander@npm:10.0.1" @@ -7252,6 +8337,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^15.0.0": + version: 15.0.0 + resolution: "commander@npm:15.0.0" + checksum: 10c0/539229c171914ea1ccd45ee5f10d924289a12a684ea3a7a44147abe54003c35ed6de9ae4ad198d88c29fdf403dca0428451a388234e6dc01b6faa978fb207206 + languageName: node + linkType: hard + "commander@npm:^4.0.0": version: 4.1.1 resolution: "commander@npm:4.1.1" @@ -7266,13 +8358,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:^7.2.0": - version: 7.2.0 - resolution: "commander@npm:7.2.0" - checksum: 10c0/8d690ff13b0356df7e0ebbe6c59b4712f754f4b724d4f473d3cc5b3fdcf978e3a5dc3078717858a2ceb50b0f84d0660a7f22a96cdc50fb877d0c9bb31593d23a - languageName: node - linkType: hard - "commander@npm:^8.3.0": version: 8.3.0 resolution: "commander@npm:8.3.0" @@ -7287,7 +8372,7 @@ __metadata: languageName: node linkType: hard -"compressible@npm:~2.0.16": +"compressible@npm:~2.0.16, compressible@npm:~2.0.18": version: 2.0.18 resolution: "compressible@npm:2.0.18" dependencies: @@ -7311,6 +8396,22 @@ __metadata: languageName: node linkType: hard +"compression@npm:^1.8.1": + version: 1.8.2 + resolution: "compression@npm:1.8.2" + dependencies: + bytes: "npm:3.1.2" + compressible: "npm:~2.0.18" + debug: "npm:2.6.9" + destroy: "npm:1.2.0" + negotiator: "npm:~0.6.4" + on-headers: "npm:~1.1.0" + safe-buffer: "npm:5.2.1" + vary: "npm:~1.1.2" + checksum: 10c0/f95be7122323fdffcaadc807f42da38b5227eeac7d9997c1c4314abd7ca4a4de2daa3d5bd4e142706bef4d34fa0f64cd265c6f074b221143e18da1215c0a07ab + languageName: node + linkType: hard + "compute-gcd@npm:^1.2.1": version: 1.2.1 resolution: "compute-gcd@npm:1.2.1" @@ -7385,20 +8486,6 @@ __metadata: languageName: node linkType: hard -"console-browserify@npm:^1.2.0": - version: 1.2.0 - resolution: "console-browserify@npm:1.2.0" - checksum: 10c0/89b99a53b7d6cee54e1e64fa6b1f7ac24b844b4019c5d39db298637e55c1f4ffa5c165457ad984864de1379df2c8e1886cbbdac85d9dbb6876a9f26c3106f226 - languageName: node - linkType: hard - -"constants-browserify@npm:^1.0.0": - version: 1.0.0 - resolution: "constants-browserify@npm:1.0.0" - checksum: 10c0/ab49b1d59a433ed77c964d90d19e08b2f77213fb823da4729c0baead55e3c597f8f97ebccfdfc47bd896d43854a117d114c849a6f659d9986420e97da0f83ac5 - languageName: node - linkType: hard - "content-disposition@npm:0.5.2": version: 0.5.2 resolution: "content-disposition@npm:0.5.2" @@ -7406,7 +8493,7 @@ __metadata: languageName: node linkType: hard -"content-disposition@npm:0.5.4": +"content-disposition@npm:0.5.4, content-disposition@npm:~0.5.4": version: 0.5.4 resolution: "content-disposition@npm:0.5.4" dependencies: @@ -7436,6 +8523,13 @@ __metadata: languageName: node linkType: hard +"cookie-signature@npm:~1.0.6": + version: 1.0.7 + resolution: "cookie-signature@npm:1.0.7" + checksum: 10c0/e7731ad2995ae2efeed6435ec1e22cdd21afef29d300c27281438b1eab2bae04ef0d1a203928c0afec2cee72aa36540b8747406ebe308ad23c8e8cc3c26c9c51 + languageName: node + linkType: hard + "cookie@npm:0.6.0": version: 0.6.0 resolution: "cookie@npm:0.6.0" @@ -7443,7 +8537,14 @@ __metadata: languageName: node linkType: hard -"copy-text-to-clipboard@npm:^3.1.0, copy-text-to-clipboard@npm:^3.2.0": +"cookie@npm:~0.7.1": + version: 0.7.2 + resolution: "cookie@npm:0.7.2" + checksum: 10c0/9596e8ccdbf1a3a88ae02cf5ee80c1c50959423e1022e4e60b91dd87c622af1da309253d8abdb258fb5e3eacb4f08e579dc58b4897b8087574eee0fd35dfa5d2 + languageName: node + linkType: hard + +"copy-text-to-clipboard@npm:^3.2.0": version: 3.2.0 resolution: "copy-text-to-clipboard@npm:3.2.0" checksum: 10c0/d60fdadc59d526e19d56ad23cec2b292d33c771a5091621bd322d138804edd3c10eb2367d46ec71b39f5f7f7116a2910b332281aeb36a5b679199d746a8a5381 @@ -7505,6 +8606,24 @@ __metadata: languageName: node linkType: hard +"cose-base@npm:^1.0.0": + version: 1.0.3 + resolution: "cose-base@npm:1.0.3" + dependencies: + layout-base: "npm:^1.0.0" + checksum: 10c0/a6e400b1d101393d6af0967c1353355777c1106c40417c5acaef6ca8bdda41e2fc9398f466d6c85be30290943ad631f2590569f67b3fd5368a0d8318946bd24f + languageName: node + linkType: hard + +"cose-base@npm:^2.2.0": + version: 2.2.0 + resolution: "cose-base@npm:2.2.0" + dependencies: + layout-base: "npm:^2.0.0" + checksum: 10c0/14b9f8100ac322a00777ffb1daeb3321af368bbc9cabe3103943361273baee2003202ffe38e4ab770960b600214224e9c196195a78d589521540aa694df7cdec + languageName: node + linkType: hard + "cosmiconfig@npm:^6.0.0": version: 6.0.0 resolution: "cosmiconfig@npm:6.0.0" @@ -7535,43 +8654,6 @@ __metadata: languageName: node linkType: hard -"create-ecdh@npm:^4.0.0": - version: 4.0.4 - resolution: "create-ecdh@npm:4.0.4" - dependencies: - bn.js: "npm:^4.1.0" - elliptic: "npm:^6.5.3" - checksum: 10c0/77b11a51360fec9c3bce7a76288fc0deba4b9c838d5fb354b3e40c59194d23d66efe6355fd4b81df7580da0661e1334a235a2a5c040b7569ba97db428d466e7f - languageName: node - linkType: hard - -"create-hash@npm:^1.1.0, create-hash@npm:^1.1.2, create-hash@npm:^1.2.0": - version: 1.2.0 - resolution: "create-hash@npm:1.2.0" - dependencies: - cipher-base: "npm:^1.0.1" - inherits: "npm:^2.0.1" - md5.js: "npm:^1.3.4" - ripemd160: "npm:^2.0.1" - sha.js: "npm:^2.4.0" - checksum: 10c0/d402e60e65e70e5083cb57af96d89567954d0669e90550d7cec58b56d49c4b193d35c43cec8338bc72358198b8cbf2f0cac14775b651e99238e1cf411490f915 - languageName: node - linkType: hard - -"create-hmac@npm:^1.1.0, create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7": - version: 1.1.7 - resolution: "create-hmac@npm:1.1.7" - dependencies: - cipher-base: "npm:^1.0.3" - create-hash: "npm:^1.1.0" - inherits: "npm:^2.0.1" - ripemd160: "npm:^2.0.0" - safe-buffer: "npm:^5.0.1" - sha.js: "npm:^2.4.8" - checksum: 10c0/24332bab51011652a9a0a6d160eed1e8caa091b802335324ae056b0dcb5acbc9fcf173cf10d128eba8548c3ce98dfa4eadaa01bd02f44a34414baee26b651835 - languageName: node - linkType: hard - "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" @@ -7583,26 +8665,7 @@ __metadata: languageName: node linkType: hard -"crypto-browserify@npm:^3.12.0": - version: 3.12.0 - resolution: "crypto-browserify@npm:3.12.0" - dependencies: - browserify-cipher: "npm:^1.0.0" - browserify-sign: "npm:^4.0.0" - create-ecdh: "npm:^4.0.0" - create-hash: "npm:^1.1.0" - create-hmac: "npm:^1.1.0" - diffie-hellman: "npm:^5.0.0" - inherits: "npm:^2.0.1" - pbkdf2: "npm:^3.0.3" - public-encrypt: "npm:^4.0.0" - randombytes: "npm:^2.0.0" - randomfill: "npm:^1.0.3" - checksum: 10c0/0c20198886576050a6aa5ba6ae42f2b82778bfba1753d80c5e7a090836890dc372bdc780986b2568b4fb8ed2a91c958e61db1f0b6b1cc96af4bd03ffc298ba92 - languageName: node - linkType: hard - -"crypto-js@npm:^4.1.1": +"crypto-js@npm:^4.2.0": version: 4.2.0 resolution: "crypto-js@npm:4.2.0" checksum: 10c0/8fbdf9d56f47aea0794ab87b0eb9833baf80b01a7c5c1b0edc7faf25f662fb69ab18dc2199e2afcac54670ff0cd9607a9045a3f7a80336cccd18d77a55b9fdf0 @@ -7659,20 +8722,20 @@ __metadata: languageName: node linkType: hard -"css-has-pseudo@npm:^7.0.1": - version: 7.0.1 - resolution: "css-has-pseudo@npm:7.0.1" +"css-has-pseudo@npm:^7.0.3": + version: 7.0.3 + resolution: "css-has-pseudo@npm:7.0.3" dependencies: "@csstools/selector-specificity": "npm:^5.0.0" postcss-selector-parser: "npm:^7.0.0" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/13789b08b70169204be786d652190356ace9313099d3656bd2fc38afbdd28f3d9620f0e0b07425480961b7a1ec789794961d0472f205b959d3f64c9a78ce511c + checksum: 10c0/c89f68e17bed229e9a3e98da5032e1360c83d45d974bc3fb8d6b5358399bca80cce7929e4a621a516a75536edb78678dc486eb41841eeed28cca79e3be4bdc27 languageName: node linkType: hard -"css-loader@npm:^6.8.1": +"css-loader@npm:^6.11.0, css-loader@npm:^6.8.1": version: 6.11.0 resolution: "css-loader@npm:6.11.0" dependencies: @@ -7798,10 +8861,10 @@ __metadata: languageName: node linkType: hard -"cssdb@npm:^8.2.1": - version: 8.2.3 - resolution: "cssdb@npm:8.2.3" - checksum: 10c0/17c3ca6432ed02431db6b44bed74649ccef7d7b7b900ccbc7297525f030722c441dd67c71f28aef3cfa0814ba7b254a24adfb0dcd5728937da179ff437cdcd0c +"cssdb@npm:^8.6.0": + version: 8.12.0 + resolution: "cssdb@npm:8.12.0" + checksum: 10c0/a6165cef2e8145cfae943fb3c3006546040b8f218802b20153b363943f79713ddfdb038801768010cbc8612e605e87f4f9e64cae64f4d93396b31451dcbeb98d languageName: node linkType: hard @@ -7908,6 +8971,405 @@ __metadata: languageName: node linkType: hard +"cytoscape-cose-bilkent@npm:^4.1.0": + version: 4.1.0 + resolution: "cytoscape-cose-bilkent@npm:4.1.0" + dependencies: + cose-base: "npm:^1.0.0" + peerDependencies: + cytoscape: ^3.2.0 + checksum: 10c0/5e2480ddba9da1a68e700ed2c674cbfd51e9efdbd55788f1971a68de4eb30708e3b3a5e808bf5628f7a258680406bbe6586d87a9133e02a9bdc1ab1a92f512f2 + languageName: node + linkType: hard + +"cytoscape-fcose@npm:^2.2.0": + version: 2.2.0 + resolution: "cytoscape-fcose@npm:2.2.0" + dependencies: + cose-base: "npm:^2.2.0" + peerDependencies: + cytoscape: ^3.2.0 + checksum: 10c0/ce472c9f85b9057e75c5685396f8e1f2468895e71b184913e05ad56dcf3092618fe59a1054f29cb0995051ba8ebe566ad0dd49a58d62845145624bd60cd44917 + languageName: node + linkType: hard + +"cytoscape@npm:^3.34.0": + version: 3.34.3 + resolution: "cytoscape@npm:3.34.3" + checksum: 10c0/953ef85160d4a5b1a7e47af4039e66b81d4e6d00b39d6e1f4387c4563cdc4cb4480e91e8f7f6b5fbda05bf3d8019792b514a809ed1e4d1c2a5b16827b4c4a315 + languageName: node + linkType: hard + +"d3-array@npm:1 - 2": + version: 2.12.1 + resolution: "d3-array@npm:2.12.1" + dependencies: + internmap: "npm:^1.0.0" + checksum: 10c0/7eca10427a9f113a4ca6a0f7301127cab26043fd5e362631ef5a0edd1c4b2dd70c56ed317566700c31e4a6d88b55f3951aaba192291817f243b730cb2352882e + languageName: node + linkType: hard + +"d3-array@npm:2 - 3, d3-array@npm:2.10.0 - 3, d3-array@npm:2.5.0 - 3, d3-array@npm:3, d3-array@npm:^3.2.0": + version: 3.2.4 + resolution: "d3-array@npm:3.2.4" + dependencies: + internmap: "npm:1 - 2" + checksum: 10c0/08b95e91130f98c1375db0e0af718f4371ccacef7d5d257727fe74f79a24383e79aba280b9ffae655483ffbbad4fd1dec4ade0119d88c4749f388641c8bf8c50 + languageName: node + linkType: hard + +"d3-axis@npm:3": + version: 3.0.0 + resolution: "d3-axis@npm:3.0.0" + checksum: 10c0/a271e70ba1966daa5aaf6a7f959ceca3e12997b43297e757c7b945db2e1ead3c6ee226f2abcfa22abbd4e2e28bd2b71a0911794c4e5b911bbba271328a582c78 + languageName: node + linkType: hard + +"d3-brush@npm:3": + version: 3.0.0 + resolution: "d3-brush@npm:3.0.0" + dependencies: + d3-dispatch: "npm:1 - 3" + d3-drag: "npm:2 - 3" + d3-interpolate: "npm:1 - 3" + d3-selection: "npm:3" + d3-transition: "npm:3" + checksum: 10c0/07baf00334c576da2f68a91fc0da5732c3a5fa19bd3d7aed7fd24d1d674a773f71a93e9687c154176f7246946194d77c48c2d8fed757f5dcb1a4740067ec50a8 + languageName: node + linkType: hard + +"d3-chord@npm:3": + version: 3.0.1 + resolution: "d3-chord@npm:3.0.1" + dependencies: + d3-path: "npm:1 - 3" + checksum: 10c0/baa6013914af3f4fe1521f0d16de31a38eb8a71d08ff1dec4741f6f45a828661e5cd3935e39bd14e3032bdc78206c283ca37411da21d46ec3cfc520be6e7a7ce + languageName: node + linkType: hard + +"d3-color@npm:1 - 3, d3-color@npm:3": + version: 3.1.0 + resolution: "d3-color@npm:3.1.0" + checksum: 10c0/a4e20e1115fa696fce041fbe13fbc80dc4c19150fa72027a7c128ade980bc0eeeba4bcf28c9e21f0bce0e0dbfe7ca5869ef67746541dcfda053e4802ad19783c + languageName: node + linkType: hard + +"d3-contour@npm:4": + version: 4.0.2 + resolution: "d3-contour@npm:4.0.2" + dependencies: + d3-array: "npm:^3.2.0" + checksum: 10c0/98bc5fbed6009e08707434a952076f39f1cd6ed8b9288253cc3e6a3286e4e80c63c62d84954b20e64bf6e4ededcc69add54d3db25e990784a59c04edd3449032 + languageName: node + linkType: hard + +"d3-delaunay@npm:6": + version: 6.0.4 + resolution: "d3-delaunay@npm:6.0.4" + dependencies: + delaunator: "npm:5" + checksum: 10c0/57c3aecd2525664b07c4c292aa11cf49b2752c0cf3f5257f752999399fe3c592de2d418644d79df1f255471eec8057a9cc0c3062ed7128cb3348c45f69597754 + languageName: node + linkType: hard + +"d3-dispatch@npm:1 - 3, d3-dispatch@npm:3": + version: 3.0.1 + resolution: "d3-dispatch@npm:3.0.1" + checksum: 10c0/6eca77008ce2dc33380e45d4410c67d150941df7ab45b91d116dbe6d0a3092c0f6ac184dd4602c796dc9e790222bad3ff7142025f5fd22694efe088d1d941753 + languageName: node + linkType: hard + +"d3-drag@npm:2 - 3, d3-drag@npm:3": + version: 3.0.0 + resolution: "d3-drag@npm:3.0.0" + dependencies: + d3-dispatch: "npm:1 - 3" + d3-selection: "npm:3" + checksum: 10c0/d2556e8dc720741a443b595a30af403dd60642dfd938d44d6e9bfc4c71a962142f9a028c56b61f8b4790b65a34acad177d1263d66f103c3c527767b0926ef5aa + languageName: node + linkType: hard + +"d3-dsv@npm:1 - 3, d3-dsv@npm:3": + version: 3.0.1 + resolution: "d3-dsv@npm:3.0.1" + dependencies: + commander: "npm:7" + iconv-lite: "npm:0.6" + rw: "npm:1" + bin: + csv2json: bin/dsv2json.js + csv2tsv: bin/dsv2dsv.js + dsv2dsv: bin/dsv2dsv.js + dsv2json: bin/dsv2json.js + json2csv: bin/json2dsv.js + json2dsv: bin/json2dsv.js + json2tsv: bin/json2dsv.js + tsv2csv: bin/dsv2dsv.js + tsv2json: bin/dsv2json.js + checksum: 10c0/10e6af9e331950ed258f34ab49ac1b7060128ef81dcf32afc790bd1f7e8c3cc2aac7f5f875250a83f21f39bb5925fbd0872bb209f8aca32b3b77d32bab8a65ab + languageName: node + linkType: hard + +"d3-ease@npm:1 - 3, d3-ease@npm:3": + version: 3.0.1 + resolution: "d3-ease@npm:3.0.1" + checksum: 10c0/fec8ef826c0cc35cda3092c6841e07672868b1839fcaf556e19266a3a37e6bc7977d8298c0fcb9885e7799bfdcef7db1baaba9cd4dcf4bc5e952cf78574a88b0 + languageName: node + linkType: hard + +"d3-fetch@npm:3": + version: 3.0.1 + resolution: "d3-fetch@npm:3.0.1" + dependencies: + d3-dsv: "npm:1 - 3" + checksum: 10c0/4f467a79bf290395ac0cbb5f7562483f6a18668adc4c8eb84c9d3eff048b6f6d3b6f55079ba1ebf1908dabe000c941d46be447f8d78453b2dad5fb59fb6aa93b + languageName: node + linkType: hard + +"d3-force@npm:3": + version: 3.0.0 + resolution: "d3-force@npm:3.0.0" + dependencies: + d3-dispatch: "npm:1 - 3" + d3-quadtree: "npm:1 - 3" + d3-timer: "npm:1 - 3" + checksum: 10c0/220a16a1a1ac62ba56df61028896e4b52be89c81040d20229c876efc8852191482c233f8a52bb5a4e0875c321b8e5cb6413ef3dfa4d8fe79eeb7d52c587f52cf + languageName: node + linkType: hard + +"d3-format@npm:1 - 3, d3-format@npm:3": + version: 3.1.2 + resolution: "d3-format@npm:3.1.2" + checksum: 10c0/0de452ae07585238e7f01607a7e0066665c34609652188b6ac7dc9f424f69465a425e07d16d79bd0e5955202ac7f241c66d0c76f68a79fc6f4857c94cf420652 + languageName: node + linkType: hard + +"d3-geo@npm:3": + version: 3.1.1 + resolution: "d3-geo@npm:3.1.1" + dependencies: + d3-array: "npm:2.5.0 - 3" + checksum: 10c0/d32270dd2dc8ac3ea63e8805d63239c4c8ec6c0d339d73b5e5a30a87f8f54db22a78fb434369799465eae169503b25f9a107c642c8a16c32a3285bc0e6d8e8c1 + languageName: node + linkType: hard + +"d3-hierarchy@npm:3": + version: 3.1.2 + resolution: "d3-hierarchy@npm:3.1.2" + checksum: 10c0/6dcdb480539644aa7fc0d72dfc7b03f99dfbcdf02714044e8c708577e0d5981deb9d3e99bbbb2d26422b55bcc342ac89a0fa2ea6c9d7302e2fc0951dd96f89cf + languageName: node + linkType: hard + +"d3-interpolate@npm:1 - 3, d3-interpolate@npm:1.2.0 - 3, d3-interpolate@npm:3": + version: 3.0.1 + resolution: "d3-interpolate@npm:3.0.1" + dependencies: + d3-color: "npm:1 - 3" + checksum: 10c0/19f4b4daa8d733906671afff7767c19488f51a43d251f8b7f484d5d3cfc36c663f0a66c38fe91eee30f40327443d799be17169f55a293a3ba949e84e57a33e6a + languageName: node + linkType: hard + +"d3-path@npm:1": + version: 1.0.9 + resolution: "d3-path@npm:1.0.9" + checksum: 10c0/e35e84df5abc18091f585725b8235e1fa97efc287571585427d3a3597301e6c506dea56b11dfb3c06ca5858b3eb7f02c1bf4f6a716aa9eade01c41b92d497eb5 + languageName: node + linkType: hard + +"d3-path@npm:1 - 3, d3-path@npm:3, d3-path@npm:^3.1.0": + version: 3.1.0 + resolution: "d3-path@npm:3.1.0" + checksum: 10c0/dc1d58ec87fa8319bd240cf7689995111a124b141428354e9637aa83059eb12e681f77187e0ada5dedfce346f7e3d1f903467ceb41b379bfd01cd8e31721f5da + languageName: node + linkType: hard + +"d3-polygon@npm:3": + version: 3.0.1 + resolution: "d3-polygon@npm:3.0.1" + checksum: 10c0/e236aa7f33efa9a4072907af7dc119f85b150a0716759d4fe5f12f62573018264a6cbde8617fbfa6944a7ae48c1c0c8d3f39ae72e11f66dd471e9b5e668385df + languageName: node + linkType: hard + +"d3-quadtree@npm:1 - 3, d3-quadtree@npm:3": + version: 3.0.1 + resolution: "d3-quadtree@npm:3.0.1" + checksum: 10c0/18302d2548bfecaef788152397edec95a76400fd97d9d7f42a089ceb68d910f685c96579d74e3712d57477ed042b056881b47cd836a521de683c66f47ce89090 + languageName: node + linkType: hard + +"d3-random@npm:3": + version: 3.0.1 + resolution: "d3-random@npm:3.0.1" + checksum: 10c0/987a1a1bcbf26e6cf01fd89d5a265b463b2cea93560fc17d9b1c45e8ed6ff2db5924601bcceb808de24c94133f000039eb7fa1c469a7a844ccbf1170cbb25b41 + languageName: node + linkType: hard + +"d3-sankey@npm:^0.12.3": + version: 0.12.3 + resolution: "d3-sankey@npm:0.12.3" + dependencies: + d3-array: "npm:1 - 2" + d3-shape: "npm:^1.2.0" + checksum: 10c0/261debb01a13269f6fc53b9ebaef174a015d5ad646242c23995bf514498829ab8b8f920a7873724a7494288b46bea3ce7ebc5a920b745bc8ae4caa5885cf5204 + languageName: node + linkType: hard + +"d3-scale-chromatic@npm:3": + version: 3.1.0 + resolution: "d3-scale-chromatic@npm:3.1.0" + dependencies: + d3-color: "npm:1 - 3" + d3-interpolate: "npm:1 - 3" + checksum: 10c0/9a3f4671ab0b971f4a411b42180d7cf92bfe8e8584e637ce7e698d705e18d6d38efbd20ec64f60cc0dfe966c20d40fc172565bc28aaa2990c0a006360eed91af + languageName: node + linkType: hard + +"d3-scale@npm:4": + version: 4.0.2 + resolution: "d3-scale@npm:4.0.2" + dependencies: + d3-array: "npm:2.10.0 - 3" + d3-format: "npm:1 - 3" + d3-interpolate: "npm:1.2.0 - 3" + d3-time: "npm:2.1.1 - 3" + d3-time-format: "npm:2 - 4" + checksum: 10c0/65d9ad8c2641aec30ed5673a7410feb187a224d6ca8d1a520d68a7d6eac9d04caedbff4713d1e8545be33eb7fec5739983a7ab1d22d4e5ad35368c6729d362f1 + languageName: node + linkType: hard + +"d3-selection@npm:2 - 3, d3-selection@npm:3, d3-selection@npm:^3.0.0": + version: 3.0.0 + resolution: "d3-selection@npm:3.0.0" + checksum: 10c0/e59096bbe8f0cb0daa1001d9bdd6dbc93a688019abc97d1d8b37f85cd3c286a6875b22adea0931b0c88410d025563e1643019161a883c516acf50c190a11b56b + languageName: node + linkType: hard + +"d3-shape@npm:3": + version: 3.2.0 + resolution: "d3-shape@npm:3.2.0" + dependencies: + d3-path: "npm:^3.1.0" + checksum: 10c0/f1c9d1f09926daaf6f6193ae3b4c4b5521e81da7d8902d24b38694517c7f527ce3c9a77a9d3a5722ad1e3ff355860b014557b450023d66a944eabf8cfde37132 + languageName: node + linkType: hard + +"d3-shape@npm:^1.2.0": + version: 1.3.7 + resolution: "d3-shape@npm:1.3.7" + dependencies: + d3-path: "npm:1" + checksum: 10c0/548057ce59959815decb449f15632b08e2a1bdce208f9a37b5f98ec7629dda986c2356bc7582308405ce68aedae7d47b324df41507404df42afaf352907577ae + languageName: node + linkType: hard + +"d3-time-format@npm:2 - 4, d3-time-format@npm:4": + version: 4.1.0 + resolution: "d3-time-format@npm:4.1.0" + dependencies: + d3-time: "npm:1 - 3" + checksum: 10c0/735e00fb25a7fd5d418fac350018713ae394eefddb0d745fab12bbff0517f9cdb5f807c7bbe87bb6eeb06249662f8ea84fec075f7d0cd68609735b2ceb29d206 + languageName: node + linkType: hard + +"d3-time@npm:1 - 3, d3-time@npm:2.1.1 - 3, d3-time@npm:3": + version: 3.1.0 + resolution: "d3-time@npm:3.1.0" + dependencies: + d3-array: "npm:2 - 3" + checksum: 10c0/a984f77e1aaeaa182679b46fbf57eceb6ebdb5f67d7578d6f68ef933f8eeb63737c0949991618a8d29472dbf43736c7d7f17c452b2770f8c1271191cba724ca1 + languageName: node + linkType: hard + +"d3-timer@npm:1 - 3, d3-timer@npm:3": + version: 3.0.1 + resolution: "d3-timer@npm:3.0.1" + checksum: 10c0/d4c63cb4bb5461d7038aac561b097cd1c5673969b27cbdd0e87fa48d9300a538b9e6f39b4a7f0e3592ef4f963d858c8a9f0e92754db73116770856f2fc04561a + languageName: node + linkType: hard + +"d3-transition@npm:2 - 3, d3-transition@npm:3, d3-transition@npm:^3.0.1": + version: 3.0.1 + resolution: "d3-transition@npm:3.0.1" + dependencies: + d3-color: "npm:1 - 3" + d3-dispatch: "npm:1 - 3" + d3-ease: "npm:1 - 3" + d3-interpolate: "npm:1 - 3" + d3-timer: "npm:1 - 3" + peerDependencies: + d3-selection: 2 - 3 + checksum: 10c0/4e74535dda7024aa43e141635b7522bb70cf9d3dfefed975eb643b36b864762eca67f88fafc2ca798174f83ca7c8a65e892624f824b3f65b8145c6a1a88dbbad + languageName: node + linkType: hard + +"d3-zoom@npm:3": + version: 3.0.0 + resolution: "d3-zoom@npm:3.0.0" + dependencies: + d3-dispatch: "npm:1 - 3" + d3-drag: "npm:2 - 3" + d3-interpolate: "npm:1 - 3" + d3-selection: "npm:2 - 3" + d3-transition: "npm:2 - 3" + checksum: 10c0/ee2036479049e70d8c783d594c444fe00e398246048e3f11a59755cd0e21de62ece3126181b0d7a31bf37bcf32fd726f83ae7dea4495ff86ec7736ce5ad36fd3 + languageName: node + linkType: hard + +"d3@npm:^7.9.0": + version: 7.9.0 + resolution: "d3@npm:7.9.0" + dependencies: + d3-array: "npm:3" + d3-axis: "npm:3" + d3-brush: "npm:3" + d3-chord: "npm:3" + d3-color: "npm:3" + d3-contour: "npm:4" + d3-delaunay: "npm:6" + d3-dispatch: "npm:3" + d3-drag: "npm:3" + d3-dsv: "npm:3" + d3-ease: "npm:3" + d3-fetch: "npm:3" + d3-force: "npm:3" + d3-format: "npm:3" + d3-geo: "npm:3" + d3-hierarchy: "npm:3" + d3-interpolate: "npm:3" + d3-path: "npm:3" + d3-polygon: "npm:3" + d3-quadtree: "npm:3" + d3-random: "npm:3" + d3-scale: "npm:4" + d3-scale-chromatic: "npm:3" + d3-selection: "npm:3" + d3-shape: "npm:3" + d3-time: "npm:3" + d3-time-format: "npm:4" + d3-timer: "npm:3" + d3-transition: "npm:3" + d3-zoom: "npm:3" + checksum: 10c0/3dd9c08c73cfaa69c70c49e603c85e049c3904664d9c79a1a52a0f52795828a1ff23592dc9a7b2257e711d68a615472a13103c212032f38e016d609796e087e8 + languageName: node + linkType: hard + +"dagre-d3-es@npm:7.0.14": + version: 7.0.14 + resolution: "dagre-d3-es@npm:7.0.14" + dependencies: + d3: "npm:^7.9.0" + lodash-es: "npm:^4.17.21" + checksum: 10c0/0dc91fc79300eb0a4eab5a48a76c2baf3ce439c389d19e2f015729bb57dafd75e1e9a4c2880daf016e81ee45caca7b21745c13b23b6cd2a786ce84767e88323e + languageName: node + linkType: hard + +"dayjs@npm:^1.11.21": + version: 1.11.23 + resolution: "dayjs@npm:1.11.23" + checksum: 10c0/69ab04bf19c676e44ab50cc2fca223d265f3dafd107151ef3b0f3ad74d360c37caa602abe62f87cb25d90bd9f6bee003698af47df5b0dbf10a998b7b5f3bb3f1 + languageName: node + linkType: hard + "debounce@npm:^1.2.1": version: 1.2.1 resolution: "debounce@npm:1.2.1" @@ -7968,6 +9430,23 @@ __metadata: languageName: node linkType: hard +"default-browser-id@npm:^5.0.0": + version: 5.0.1 + resolution: "default-browser-id@npm:5.0.1" + checksum: 10c0/5288b3094c740ef3a86df9b999b04ff5ba4dee6b64e7b355c0fff5217752c8c86908d67f32f6cba9bb4f9b7b61a1b640c0a4f9e34c57e0ff3493559a625245ee + languageName: node + linkType: hard + +"default-browser@npm:^5.2.1": + version: 5.5.1 + resolution: "default-browser@npm:5.5.1" + dependencies: + bundle-name: "npm:^4.1.0" + default-browser-id: "npm:^5.0.0" + checksum: 10c0/feb5e7a6a6f2fcbc7a6c5c78e071a4f7a3ab136e6244b9637e58fe6170f6e1254ae099cbe2ebc2b2823c387ed50fda176ce31d386f4f2ebbd43d8fb1cb6aacf7 + languageName: node + linkType: hard + "default-gateway@npm:^6.0.3": version: 6.0.3 resolution: "default-gateway@npm:6.0.3" @@ -8002,7 +9481,14 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.1.3, define-properties@npm:^1.2.1": +"define-lazy-prop@npm:^3.0.0": + version: 3.0.0 + resolution: "define-lazy-prop@npm:3.0.0" + checksum: 10c0/5ab0b2bf3fa58b3a443140bbd4cd3db1f91b985cc8a246d330b9ac3fc0b6a325a6d82bddc0b055123d745b3f9931afeea74a5ec545439a1630b9c8512b0eeb49 + languageName: node + linkType: hard + +"define-properties@npm:^1.2.1": version: 1.2.1 resolution: "define-properties@npm:1.2.1" dependencies: @@ -8029,7 +9515,23 @@ __metadata: languageName: node linkType: hard -"depd@npm:2.0.0": +"delaunator@npm:5": + version: 5.1.0 + resolution: "delaunator@npm:5.1.0" + dependencies: + robust-predicates: "npm:^3.0.2" + checksum: 10c0/6489e3598212ab8759575e30f3ac26063471846e25c779048f441f2ccefd25efb9a52275e7e8e3dcc5bf5bc5c35169cf1de27f985d359fd5a24057be88fd1817 + languageName: node + linkType: hard + +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19 + languageName: node + linkType: hard + +"depd@npm:2.0.0, depd@npm:~2.0.0": version: 2.0.0 resolution: "depd@npm:2.0.0" checksum: 10c0/58bd06ec20e19529b06f7ad07ddab60e504d9e0faca4bd23079fac2d279c3594334d736508dc350e06e510aba5e22e4594483b3a6562ce7c17dd797f4cc4ad2c @@ -8050,17 +9552,7 @@ __metadata: languageName: node linkType: hard -"des.js@npm:^1.0.0": - version: 1.1.0 - resolution: "des.js@npm:1.1.0" - dependencies: - inherits: "npm:^2.0.1" - minimalistic-assert: "npm:^1.0.0" - checksum: 10c0/671354943ad67493e49eb4c555480ab153edd7cee3a51c658082fcde539d2690ed2a4a0b5d1f401f9cde822edf3939a6afb2585f32c091f2d3a1b1665cd45236 - languageName: node - linkType: hard - -"destroy@npm:1.2.0": +"destroy@npm:1.2.0, destroy@npm:~1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" checksum: 10c0/bd7633942f57418f5a3b80d5cb53898127bcf53e24cdf5d5f4396be471417671f0fee48a4ebe9a1e9defbde2a31280011af58a57e090ff822f589b443ed4e643 @@ -8083,7 +9575,7 @@ __metadata: languageName: node linkType: hard -"detect-package-manager@npm:3.0.2": +"detect-package-manager@npm:^3.0.2": version: 3.0.2 resolution: "detect-package-manager@npm:3.0.2" dependencies: @@ -8118,6 +9610,18 @@ __metadata: languageName: node linkType: hard +"detect-port@npm:^2.1.0": + version: 2.1.0 + resolution: "detect-port@npm:2.1.0" + dependencies: + address: "npm:^2.0.1" + bin: + detect: dist/commonjs/bin/detect-port.js + detect-port: dist/commonjs/bin/detect-port.js + checksum: 10c0/06236ff1197ffea038d4a1c0ab60200ece1ac234eb00a507f93e986483c06989b9efd424cc2bbb8e9556c3984ce906e8a663799797e415626eefb26f040bd5d8 + languageName: node + linkType: hard + "devlop@npm:^1.0.0, devlop@npm:^1.1.0": version: 1.1.0 resolution: "devlop@npm:1.1.0" @@ -8127,24 +9631,6 @@ __metadata: languageName: node linkType: hard -"diff@npm:^5.0.0": - version: 5.2.0 - resolution: "diff@npm:5.2.0" - checksum: 10c0/aed0941f206fe261ecb258dc8d0ceea8abbde3ace5827518ff8d302f0fc9cc81ce116c4d8f379151171336caf0516b79e01abdc1ed1201b6440d895a66689eb4 - languageName: node - linkType: hard - -"diffie-hellman@npm:^5.0.0": - version: 5.0.3 - resolution: "diffie-hellman@npm:5.0.3" - dependencies: - bn.js: "npm:^4.1.0" - miller-rabin: "npm:^4.0.0" - randombytes: "npm:^2.0.0" - checksum: 10c0/ce53ccafa9ca544b7fc29b08a626e23a9b6562efc2a98559a0c97b4718937cebaa9b5d7d0a05032cc9c1435e9b3c1532b9e9bf2e0ede868525922807ad6e1ecf - languageName: node - linkType: hard - "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -8163,82 +9649,85 @@ __metadata: languageName: node linkType: hard -"docusaurus-plugin-openapi-docs@npm:4.3.0": - version: 4.3.0 - resolution: "docusaurus-plugin-openapi-docs@npm:4.3.0" +"docusaurus-plugin-openapi-docs@npm:5.2.0": + version: 5.2.0 + resolution: "docusaurus-plugin-openapi-docs@npm:5.2.0" dependencies: - "@apidevtools/json-schema-ref-parser": "npm:^11.5.4" - "@redocly/openapi-core": "npm:^1.10.5" + "@apidevtools/json-schema-ref-parser": "npm:^15.3.3" + "@redocly/openapi-core": "npm:^2.25.2" allof-merge: "npm:^0.6.6" - chalk: "npm:^4.1.2" - clsx: "npm:^1.1.1" - fs-extra: "npm:^9.0.1" + chalk: "npm:^5.6.2" + clsx: "npm:^2.1.1" + fs-extra: "npm:^11.3.0" json-pointer: "npm:^0.6.2" json5: "npm:^2.2.3" - lodash: "npm:^4.17.20" + lodash: "npm:^4.17.21" mustache: "npm:^4.2.0" - openapi-to-postmanv2: "npm:^4.21.0" - postman-collection: "npm:^4.4.0" - slugify: "npm:^1.6.5" + openapi-to-postmanv2: "npm:^6.0.0" + postman-collection: "npm:^5.0.2" + slugify: "npm:^1.6.6" swagger2openapi: "npm:^7.0.8" - xml-formatter: "npm:^2.6.1" + xml-formatter: "npm:^3.6.6" peerDependencies: - "@docusaurus/plugin-content-docs": ^3.5.0 - "@docusaurus/utils": ^3.5.0 - "@docusaurus/utils-validation": ^3.5.0 - react: ^16.8.4 || ^17.0.0 || ^18.0.0 - checksum: 10c0/18233099657f53c978373d7e57564ba77054476a0eb6226cb79ea6c7b45f532254d334542263987ef614c33c1f89be32ae170d8f23fd8d5fc23c634860df56fc + "@docusaurus/plugin-content-docs": ^3.10.0 + "@docusaurus/utils": ^3.10.0 + "@docusaurus/utils-validation": ^3.10.0 + react: ^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10c0/733c41d6951bf1e1073878595a551cfb96d4caf3cfcd1732395ac3c09dc47f61ea6cffc5915eaf31bab596a41080479ef988c3417235a183661e596ec05dfebe languageName: node linkType: hard -"docusaurus-plugin-sass@npm:0.2.5": - version: 0.2.5 - resolution: "docusaurus-plugin-sass@npm:0.2.5" +"docusaurus-plugin-sass@npm:0.2.7": + version: 0.2.7 + resolution: "docusaurus-plugin-sass@npm:0.2.7" dependencies: - sass-loader: "npm:^10.1.1" + sass-loader: "npm:^16.0.2" peerDependencies: "@docusaurus/core": ^2.0.0-beta || ^3.0.0-alpha sass: ^1.30.0 - checksum: 10c0/1ed75a0e9ca52405ba474ad55add5318d786a18a551974520f1a9b6a4e5707cd4b20cd4fd4c60770e7cd683d7483372dd5f175ba13608048a1082847d3750bb7 + checksum: 10c0/02fb28a253455226bae669dcabf4a0674e2606e6cb0c4f2b468e1f86e96a039b7511fe9889998e27f5355a3a3510b2d3238dff7b90746126c45ba8c955b57c42 languageName: node linkType: hard -"docusaurus-theme-openapi-docs@npm:4.3.0": - version: 4.3.0 - resolution: "docusaurus-theme-openapi-docs@npm:4.3.0" +"docusaurus-theme-openapi-docs@npm:5.2.0": + version: 5.2.0 + resolution: "docusaurus-theme-openapi-docs@npm:5.2.0" dependencies: "@hookform/error-message": "npm:^2.0.1" - "@reduxjs/toolkit": "npm:^1.7.1" + "@reduxjs/toolkit": "npm:^2.8.2" allof-merge: "npm:^0.6.6" - clsx: "npm:^1.1.1" - copy-text-to-clipboard: "npm:^3.1.0" - crypto-js: "npm:^4.1.1" + buffer: "npm:^6.0.3" + clsx: "npm:^2.1.1" + copy-text-to-clipboard: "npm:^3.2.0" + crypto-js: "npm:^4.2.0" file-saver: "npm:^2.0.5" - lodash: "npm:^4.17.20" - node-polyfill-webpack-plugin: "npm:^3.0.0" - postman-code-generators: "npm:^1.10.1" - postman-collection: "npm:^4.4.0" - prism-react-renderer: "npm:^2.3.0" - react-hook-form: "npm:^7.43.8" - react-live: "npm:^4.0.0" + lodash: "npm:^4.17.21" + pako: "npm:^3.0.1" + path-browserify: "npm:^1.0.1" + postman-code-generators: "npm:^2.0.0" + postman-collection: "npm:^5.0.2" + prism-react-renderer: "npm:^2.4.1" + process: "npm:^0.11.10" + react-hook-form: "npm:^7.59.0" + react-live: "npm:^4.1.8" react-magic-dropzone: "npm:^1.0.1" - react-markdown: "npm:^8.0.1" - react-modal: "npm:^3.15.1" - react-redux: "npm:^7.2.0" - rehype-raw: "npm:^6.1.1" - remark-gfm: "npm:3.0.1" - sass: "npm:^1.80.4" - sass-loader: "npm:^16.0.2" + react-markdown: "npm:^10.1.0" + react-modal: "npm:^3.16.3" + react-redux: "npm:^9.2.0" + rehype-raw: "npm:^7.0.0" + remark-gfm: "npm:4.0.1" + sass: "npm:^1.89.2" + sass-loader: "npm:^17.0.0" unist-util-visit: "npm:^5.0.0" - webpack: "npm:^5.61.0" - xml-formatter: "npm:^2.6.1" + url: "npm:^0.11.4" + xml-formatter: "npm:^3.6.6" peerDependencies: - "@docusaurus/theme-common": ^3.5.0 - docusaurus-plugin-openapi-docs: ^4.0.0 + "@docusaurus/theme-common": ^3.10.0 + docusaurus-plugin-openapi-docs: ^5.0.0 docusaurus-plugin-sass: ^0.2.3 - react: ^16.8.4 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.4 || ^17.0.0 || ^18.0.0 - checksum: 10c0/ee41a2c7cc6655338250868ea853a70209a0216ca90c82c021a2fa654ce3cb0ec66eea838d2d19cf3ce2c6ac30b55ca5d3af1a43130b515adb412c6547f83bd9 + react: ^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10c0/cca76f6c470357002374f846816a9e9613e9870637c219de3ff9f74e2c8281ac71574dca6cdf5158ae855130e8b626c503e36721e7d58981c9202bbdae64375d languageName: node linkType: hard @@ -8273,13 +9762,6 @@ __metadata: languageName: node linkType: hard -"domain-browser@npm:^4.22.0": - version: 4.23.0 - resolution: "domain-browser@npm:4.23.0" - checksum: 10c0/dfcc6ba070a2c968a4d922e7d99ef440d1076812af0d983404aadf64729f746bb4a0ad2c5e73ccd5d9cf41bc79037f2a1e4a915bdf33d07e0d77f487b635b5b2 - languageName: node - linkType: hard - "domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0, domelementtype@npm:^2.3.0": version: 2.3.0 resolution: "domelementtype@npm:2.3.0" @@ -8305,6 +9787,18 @@ __metadata: languageName: node linkType: hard +"dompurify@npm:^3.4.12": + version: 3.4.16 + resolution: "dompurify@npm:3.4.16" + dependencies: + "@types/trusted-types": "npm:^2.0.7" + dependenciesMeta: + "@types/trusted-types": + optional: true + checksum: 10c0/65a901c6b6d489d3e898f67223d81dac66d613cda48f5785f0ed52a4ae320c4b2745490a58c14161e29f0273080fea0a0cb234a9ef892650e1a9b2a7befa07a5 + languageName: node + linkType: hard + "domutils@npm:^2.5.2, domutils@npm:^2.8.0": version: 2.8.0 resolution: "domutils@npm:2.8.0" @@ -8346,6 +9840,17 @@ __metadata: languageName: node linkType: hard +"dunder-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" + dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.2.0" + checksum: 10c0/199f2a0c1c16593ca0a145dbf76a962f8033ce3129f01284d48c45ed4e14fea9bbacd7b3610b6cdc33486cef20385ac054948fefc6272fcce645c09468f93031 + languageName: node + linkType: hard + "duplexer@npm:^0.1.2": version: 0.1.2 resolution: "duplexer@npm:0.1.2" @@ -8381,18 +9886,17 @@ __metadata: languageName: node linkType: hard -"elliptic@npm:^6.5.3, elliptic@npm:^6.5.5": - version: 6.5.5 - resolution: "elliptic@npm:6.5.5" - dependencies: - bn.js: "npm:^4.11.9" - brorand: "npm:^1.1.0" - hash.js: "npm:^1.0.0" - hmac-drbg: "npm:^1.0.1" - inherits: "npm:^2.0.4" - minimalistic-assert: "npm:^1.0.1" - minimalistic-crypto-utils: "npm:^1.0.1" - checksum: 10c0/3e591e93783a1b66f234ebf5bd3a8a9a8e063a75073a35a671e03e3b25253b6e33ac121f7efe9b8808890fffb17b40596cc19d01e6e8d1fa13b9a56ff65597c8 +"electron-to-chromium@npm:^1.5.439": + version: 1.5.456 + resolution: "electron-to-chromium@npm:1.5.456" + checksum: 10c0/33ef7a48b1a082f751b908adbf11f74709b914fbad3b0743b1ab1ad66938e2e50677e08ea18491d72e448cc99020db1d8624a55baddfc37140ab686ace0b8959 + languageName: node + linkType: hard + +"elkjs@npm:^0.9.3": + version: 0.9.3 + resolution: "elkjs@npm:0.9.3" + checksum: 10c0/caf544ff4fce8442d1d3dd6dface176c9b2fe26fc1e34f56122828e6eef7d2d7fe70d3202f9f3ecf0feb6287d4c8430949f483e63e450a7454bb39ccffab3808 languageName: node linkType: hard @@ -8445,6 +9949,13 @@ __metadata: languageName: node linkType: hard +"encodeurl@npm:~2.0.0": + version: 2.0.0 + resolution: "encodeurl@npm:2.0.0" + checksum: 10c0/5d317306acb13e6590e28e27924c754163946a2480de11865c991a3a7eed4315cd3fba378b543ca145829569eefe9b899f3d84bb09870f675ae60bc924b01ceb + languageName: node + linkType: hard + "encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" @@ -8520,6 +10031,13 @@ __metadata: languageName: node linkType: hard +"es-define-property@npm:^1.0.1": + version: 1.0.1 + resolution: "es-define-property@npm:1.0.1" + checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c + languageName: node + linkType: hard + "es-errors@npm:^1.3.0": version: 1.3.0 resolution: "es-errors@npm:1.3.0" @@ -8534,6 +10052,41 @@ __metadata: languageName: node linkType: hard +"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": + version: 1.1.2 + resolution: "es-object-atoms@npm:1.1.2" + dependencies: + es-errors: "npm:^1.3.0" + checksum: 10c0/1772861f094f739d6f41b579cfb9a18579daffeb434552a370a5fbef50a32d22227e27b63fdbb757b7ddd429d1b42fe52ccae7966d9302a2ec221b6f1b41bbc4 + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.1.0": + version: 2.1.0 + resolution: "es-set-tostringtag@npm:2.1.0" + dependencies: + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: 10c0/ef2ca9ce49afe3931cb32e35da4dcb6d86ab02592cfc2ce3e49ced199d9d0bb5085fc7e73e06312213765f5efa47cc1df553a6a5154584b21448e9fb8355b1af + languageName: node + linkType: hard + +"es-toolkit@npm:^1.45.1": + version: 1.52.0 + resolution: "es-toolkit@npm:1.52.0" + dependenciesMeta: + "@trivago/prettier-plugin-sort-imports@4.3.0": + unplugged: true + prettier-plugin-sort-re-exports@0.0.1: + unplugged: true + vitepress-plugin-sandpack@1.1.4: + unplugged: true + checksum: 10c0/465988c0a6b84b6d1d171287cbbe40c3247a1f94acea210ae14bc66b7d90c93e6839bd6937cbaf2a1d206669f3179eb26141a89d9125969a4b8e58cb7d86a2ca + languageName: node + linkType: hard + "es6-promise@npm:^3.2.1": version: 3.3.1 resolution: "es6-promise@npm:3.3.1" @@ -8731,38 +10284,20 @@ __metadata: languageName: node linkType: hard -"event-target-shim@npm:^5.0.0": - version: 5.0.1 - resolution: "event-target-shim@npm:5.0.1" - checksum: 10c0/0255d9f936215fd206156fd4caa9e8d35e62075d720dc7d847e89b417e5e62cf1ce6c9b4e0a1633a9256de0efefaf9f8d26924b1f3c8620cffb9db78e7d3076b - languageName: node - linkType: hard - -"eventemitter3@npm:^4.0.0": +"eventemitter3@npm:^4.0.0, eventemitter3@npm:^4.0.4": version: 4.0.7 resolution: "eventemitter3@npm:4.0.7" checksum: 10c0/5f6d97cbcbac47be798e6355e3a7639a84ee1f7d9b199a07017f1d2f1e2fe236004d14fa5dfaeba661f94ea57805385e326236a6debbc7145c8877fbc0297c6b languageName: node linkType: hard -"events@npm:^3.2.0, events@npm:^3.3.0": +"events@npm:^3.2.0": version: 3.3.0 resolution: "events@npm:3.3.0" checksum: 10c0/d6b6f2adbccbcda74ddbab52ed07db727ef52e31a61ed26db9feb7dc62af7fc8e060defa65e5f8af9449b86b52cc1a1f6a79f2eafcf4e62add2b7a1fa4a432f6 languageName: node linkType: hard -"evp_bytestokey@npm:^1.0.0, evp_bytestokey@npm:^1.0.3": - version: 1.0.3 - resolution: "evp_bytestokey@npm:1.0.3" - dependencies: - md5.js: "npm:^1.3.4" - node-gyp: "npm:latest" - safe-buffer: "npm:^5.1.1" - checksum: 10c0/77fbe2d94a902a80e9b8f5a73dcd695d9c14899c5e82967a61b1fc6cbbb28c46552d9b127cff47c45fcf684748bdbcfa0a50410349109de87ceb4b199ef6ee99 - languageName: node - linkType: hard - "execa@npm:^5.0.0, execa@npm:^5.1.1": version: 5.1.1 resolution: "execa@npm:5.1.1" @@ -8833,6 +10368,45 @@ __metadata: languageName: node linkType: hard +"express@npm:^4.22.1": + version: 4.22.3 + resolution: "express@npm:4.22.3" + dependencies: + accepts: "npm:~1.3.8" + array-flatten: "npm:1.1.1" + body-parser: "npm:~1.20.5" + content-disposition: "npm:~0.5.4" + content-type: "npm:~1.0.4" + cookie: "npm:~0.7.1" + cookie-signature: "npm:~1.0.6" + debug: "npm:2.6.9" + depd: "npm:2.0.0" + encodeurl: "npm:~2.0.0" + escape-html: "npm:~1.0.3" + etag: "npm:~1.8.1" + finalhandler: "npm:~1.3.1" + fresh: "npm:~0.5.2" + http-errors: "npm:~2.0.0" + merge-descriptors: "npm:1.0.3" + methods: "npm:~1.1.2" + on-finished: "npm:~2.4.1" + parseurl: "npm:~1.3.3" + path-to-regexp: "npm:~0.1.13" + proxy-addr: "npm:~2.0.7" + qs: "npm:~6.16.0" + range-parser: "npm:~1.2.1" + safe-buffer: "npm:5.2.1" + send: "npm:~0.19.0" + serve-static: "npm:~1.16.2" + setprototypeof: "npm:1.2.0" + statuses: "npm:~2.0.1" + type-is: "npm:~1.6.18" + utils-merge: "npm:1.0.1" + vary: "npm:~1.1.2" + checksum: 10c0/6345a6d460d94afbab42608ea7c13d633b9f4b08df7074869ee1ef493f6a46102437bd32290635f7040858f24de5f0992f541723478d5f3fbc6428e9446cb8ea + languageName: node + linkType: hard + "extend-shallow@npm:^2.0.1": version: 2.0.1 resolution: "extend-shallow@npm:2.0.1" @@ -8926,6 +10500,18 @@ __metadata: languageName: node linkType: hard +"fdir@npm:^6.5.0": + version: 6.5.0 + resolution: "fdir@npm:6.5.0" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: 10c0/e345083c4306b3aed6cb8ec551e26c36bab5c511e99ea4576a16750ddc8d3240e63826cc624f5ae17ad4dc82e68a253213b60d556c11bfad064b7607847ed07f + languageName: node + linkType: hard + "feed@npm:^4.2.2": version: 4.2.2 resolution: "feed@npm:4.2.2" @@ -9008,6 +10594,21 @@ __metadata: languageName: node linkType: hard +"finalhandler@npm:~1.3.1": + version: 1.3.2 + resolution: "finalhandler@npm:1.3.2" + dependencies: + debug: "npm:2.6.9" + encodeurl: "npm:~2.0.0" + escape-html: "npm:~1.0.3" + on-finished: "npm:~2.4.1" + parseurl: "npm:~1.3.3" + statuses: "npm:~2.0.2" + unpipe: "npm:~1.0.0" + checksum: 10c0/435a4fd65e4e4e4c71bb5474980090b73c353a123dd415583f67836bdd6516e528cf07298e219a82b94631dee7830eae5eece38d3c178073cf7df4e8c182f413 + languageName: node + linkType: hard + "find-cache-dir@npm:^4.0.0": version: 4.0.0 resolution: "find-cache-dir@npm:4.0.0" @@ -9066,12 +10667,13 @@ __metadata: languageName: node linkType: hard -"for-each@npm:^0.3.3": - version: 0.3.3 - resolution: "for-each@npm:0.3.3" - dependencies: - is-callable: "npm:^1.1.3" - checksum: 10c0/22330d8a2db728dbf003ec9182c2d421fbcd2969b02b4f97ec288721cda63eb28f2c08585ddccd0f77cb2930af8d958005c9e72f47141dc51816127a118f39aa +"follow-redirects@npm:^1.16.0": + version: 1.16.1 + resolution: "follow-redirects@npm:1.16.1" + peerDependenciesMeta: + debug: + optional: true + checksum: 10c0/544e24ccb93b7afb5dd5a2199bd556e167b84de2af7c13b2ced08494239677359d7883bae56ae43a9ca98ac5451e75cf4834a5fadd6fa79053b9248fac5447a4 languageName: node linkType: hard @@ -9130,6 +10732,19 @@ __metadata: languageName: node linkType: hard +"form-data@npm:^4.0.6": + version: 4.0.6 + resolution: "form-data@npm:4.0.6" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.8" + es-set-tostringtag: "npm:^2.1.0" + hasown: "npm:^2.0.4" + mime-types: "npm:^2.1.35" + checksum: 10c0/43947a77bf0ff45c6ceed789778982d47a3f3e720a74b71721174ebf3310a5f1a8be1d6b38a3ee3688e8a18a2c4273073ec0844cd37efda3eaf46d41c9c318ff + languageName: node + linkType: hard + "format@npm:^0.2.0": version: 0.2.2 resolution: "format@npm:0.2.2" @@ -9151,7 +10766,14 @@ __metadata: languageName: node linkType: hard -"fresh@npm:0.5.2": +"fraction.js@npm:^5.3.4": + version: 5.3.4 + resolution: "fraction.js@npm:5.3.4" + checksum: 10c0/f90079fe9bfc665e0a07079938e8ff71115bce9462f17b32fc283f163b0540ec34dc33df8ed41bb56f028316b04361b9a9995b9ee9258617f8338e0b05c5f95a + languageName: node + linkType: hard + +"fresh@npm:0.5.2, fresh@npm:~0.5.2": version: 0.5.2 resolution: "fresh@npm:0.5.2" checksum: 10c0/c6d27f3ed86cc5b601404822f31c900dd165ba63fff8152a3ef714e2012e7535027063bc67ded4cb5b3a49fa596495d46cacd9f47d6328459cf570f08b7d9e5a @@ -9169,7 +10791,18 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^9.0.0, fs-extra@npm:^9.0.1": +"fs-extra@npm:^11.3.0": + version: 11.4.1 + resolution: "fs-extra@npm:11.4.1" + dependencies: + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10c0/15fafc34e0b6c1b59f0f92aae90b5fab44129ad7ebc1362cc593f2dec1d8a765b7b70b40e2bc779ee146f6ff13a736a065ddb991e5b597e294919ccb0c8ff834 + languageName: node + linkType: hard + +"fs-extra@npm:^9.0.0": version: 9.1.0 resolution: "fs-extra@npm:9.1.0" dependencies: @@ -9230,6 +10863,13 @@ __metadata: languageName: node linkType: hard +"generator-function@npm:^2.0.0": + version: 2.0.1 + resolution: "generator-function@npm:2.0.1" + checksum: 10c0/8a9f59df0f01cfefafdb3b451b80555e5cf6d76487095db91ac461a0e682e4ff7a9dbce15f4ecec191e53586d59eece01949e05a4b4492879600bbbe8e28d6b8 + languageName: node + linkType: hard + "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" @@ -9257,6 +10897,27 @@ __metadata: languageName: node linkType: hard +"get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.3.0": + version: 1.3.1 + resolution: "get-intrinsic@npm:1.3.1" + dependencies: + async-function: "npm:^1.0.0" + async-generator-function: "npm:^1.0.0" + call-bind-apply-helpers: "npm:^1.0.2" + es-define-property: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.1.1" + function-bind: "npm:^1.1.2" + generator-function: "npm:^2.0.0" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + math-intrinsics: "npm:^1.1.0" + checksum: 10c0/9f4ab0cf7efe0fd2c8185f52e6f637e708f3a112610c88869f8f041bb9ecc2ce44bf285dfdbdc6f4f7c277a5b88d8e94a432374d97cca22f3de7fc63795deb5d + languageName: node + linkType: hard + "get-own-enumerable-property-symbols@npm:^3.0.0": version: 3.0.2 resolution: "get-own-enumerable-property-symbols@npm:3.0.2" @@ -9264,6 +10925,16 @@ __metadata: languageName: node linkType: hard +"get-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "get-proto@npm:1.0.1" + dependencies: + dunder-proto: "npm:^1.0.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/9224acb44603c5526955e83510b9da41baf6ae73f7398875fba50edc5e944223a89c4a72b070fcd78beb5f7bdda58ecb6294adc28f7acfc0da05f76a2399643c + languageName: node + linkType: hard + "get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": version: 6.0.1 resolution: "get-stream@npm:6.0.1" @@ -9275,28 +10946,32 @@ __metadata: version: 0.0.0-use.local resolution: "geyser-wiki@workspace:." dependencies: - "@docusaurus/core": "npm:3.6.3" - "@docusaurus/module-type-aliases": "npm:^3.6.3" - "@docusaurus/preset-classic": "npm:3.6.3" - "@docusaurus/tsconfig": "npm:^3.6.3" - "@docusaurus/types": "npm:^3.6.3" - "@fortawesome/fontawesome-svg-core": "npm:6.5.1" - "@fortawesome/free-brands-svg-icons": "npm:6.5.1" - "@fortawesome/free-regular-svg-icons": "npm:6.5.1" - "@fortawesome/free-solid-svg-icons": "npm:6.5.1" - "@fortawesome/react-fontawesome": "npm:0.2.0" - "@kas-tle/docusaurus-og": "https://github.com/Kas-tle/docusaurus-og" + "@crowdin/crowdin-api-client": "npm:1.59.1" + "@docusaurus/core": "npm:3.10.2" + "@docusaurus/module-type-aliases": "npm:3.10.2" + "@docusaurus/preset-classic": "npm:3.10.2" + "@docusaurus/theme-mermaid": "npm:3.10.2" + "@docusaurus/tsconfig": "npm:3.10.2" + "@docusaurus/types": "npm:3.10.2" + "@fortawesome/fontawesome-svg-core": "npm:7.3.1" + "@fortawesome/free-brands-svg-icons": "npm:7.3.1" + "@fortawesome/free-regular-svg-icons": "npm:7.3.1" + "@fortawesome/free-solid-svg-icons": "npm:7.3.1" + "@fortawesome/react-fontawesome": "npm:3.5.0" + "@kas-tle/docusaurus-og": "github:Kas-tle/docusaurus-og#5f91196240d02442fc8bf507f753a8e288b048fd" "@mdx-js/react": "npm:3.0.0" - clsx: "npm:1.2.1" - docusaurus-plugin-openapi-docs: "npm:4.3.0" - docusaurus-plugin-sass: "npm:0.2.5" - docusaurus-theme-openapi-docs: "npm:4.3.0" - prism-react-renderer: "npm:2.1.0" - react: "npm:18.3.1" - react-dom: "npm:18.3.1" - react-markdown: "npm:^9.0.0" - sass: "npm:1.77.8" - typescript: "npm:5.7.2" + "@types/adm-zip": "npm:0.6.0" + adm-zip: "npm:0.6.1" + clsx: "npm:2.1.1" + docusaurus-plugin-openapi-docs: "npm:5.2.0" + docusaurus-plugin-sass: "npm:0.2.7" + docusaurus-theme-openapi-docs: "npm:5.2.0" + prism-react-renderer: "npm:2.4.1" + react: "npm:19.3.1" + react-dom: "npm:19.3.1" + react-markdown: "npm:10.1.0" + sass: "npm:1.105.1" + typescript: "npm:6.0.3" languageName: unknown linkType: soft @@ -9325,6 +11000,15 @@ __metadata: languageName: node linkType: hard +"glob-to-regex.js@npm:^1.3.1": + version: 1.3.1 + resolution: "glob-to-regex.js@npm:1.3.1" + peerDependencies: + tslib: 2 + checksum: 10c0/0a4d8824c911a119b2cc7cbc2dd85287e899a5a4d16c26fee2cb0cac6d599a8273d29d04af47192116574212b63ada07f7af1c1369ba8417c75e1c3727b1c266 + languageName: node + linkType: hard + "glob-to-regexp@npm:^0.4.1": version: 0.4.1 resolution: "glob-to-regexp@npm:0.4.1" @@ -9434,6 +11118,13 @@ __metadata: languageName: node linkType: hard +"gopd@npm:^1.2.0": + version: 1.2.0 + resolution: "gopd@npm:1.2.0" + checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead + languageName: node + linkType: hard + "got@npm:^12.1.0": version: 12.6.1 resolution: "got@npm:12.6.1" @@ -9476,6 +11167,13 @@ __metadata: languageName: node linkType: hard +"graphql@npm:^16.14.1": + version: 16.14.2 + resolution: "graphql@npm:16.14.2" + checksum: 10c0/a95a96961eaff55cc9fe9d31fae6f33499ac988b972d07ea5085024cb1333f515b902f376e7393a5489aa82200a8aff3eb96580e4d1b69d702ed19b6eb1ce97a + languageName: node + linkType: hard + "gray-matter@npm:^4.0.3": version: 4.0.3 resolution: "gray-matter@npm:4.0.3" @@ -9497,6 +11195,13 @@ __metadata: languageName: node linkType: hard +"hachure-fill@npm:^0.5.2": + version: 0.5.2 + resolution: "hachure-fill@npm:0.5.2" + checksum: 10c0/307e3b6f9f2d3c11a82099c3f71eecbb9c440c00c1f896ac1732c23e6dbff16a92bb893d222b8b721b89cf11e58649ca60b4c24e5663f705f877cefd40153429 + languageName: node + linkType: hard + "handle-thing@npm:^2.0.0": version: 2.0.1 resolution: "handle-thing@npm:2.0.1" @@ -9541,7 +11246,14 @@ __metadata: languageName: node linkType: hard -"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2": +"has-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.2": version: 1.0.2 resolution: "has-tostringtag@npm:1.0.2" dependencies: @@ -9557,37 +11269,6 @@ __metadata: languageName: node linkType: hard -"hash-base@npm:^3.0.0": - version: 3.1.0 - resolution: "hash-base@npm:3.1.0" - dependencies: - inherits: "npm:^2.0.4" - readable-stream: "npm:^3.6.0" - safe-buffer: "npm:^5.2.0" - checksum: 10c0/663eabcf4173326fbb65a1918a509045590a26cc7e0964b754eef248d281305c6ec9f6b31cb508d02ffca383ab50028180ce5aefe013e942b44a903ac8dc80d0 - languageName: node - linkType: hard - -"hash-base@npm:~3.0": - version: 3.0.4 - resolution: "hash-base@npm:3.0.4" - dependencies: - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.0.1" - checksum: 10c0/a13357dccb3827f0bb0b56bf928da85c428dc8670f6e4a1c7265e4f1653ce02d69030b40fd01b0f1d218a995a066eea279cded9cec72d207b593bcdfe309c2f0 - languageName: node - linkType: hard - -"hash.js@npm:^1.0.0, hash.js@npm:^1.0.3": - version: 1.1.7 - resolution: "hash.js@npm:1.1.7" - dependencies: - inherits: "npm:^2.0.3" - minimalistic-assert: "npm:^1.0.1" - checksum: 10c0/41ada59494eac5332cfc1ce6b7ebdd7b88a3864a6d6b08a3ea8ef261332ed60f37f10877e0c825aaa4bddebf164fbffa618286aeeec5296675e2671cbfa746c4 - languageName: node - linkType: hard - "hasown@npm:^2.0.0, hasown@npm:^2.0.2": version: 2.0.2 resolution: "hasown@npm:2.0.2" @@ -9597,18 +11278,12 @@ __metadata: languageName: node linkType: hard -"hast-util-from-parse5@npm:^7.0.0": - version: 7.1.2 - resolution: "hast-util-from-parse5@npm:7.1.2" +"hasown@npm:^2.0.4": + version: 2.0.4 + resolution: "hasown@npm:2.0.4" dependencies: - "@types/hast": "npm:^2.0.0" - "@types/unist": "npm:^2.0.0" - hastscript: "npm:^7.0.0" - property-information: "npm:^6.0.0" - vfile: "npm:^5.0.0" - vfile-location: "npm:^4.0.0" - web-namespaces: "npm:^2.0.0" - checksum: 10c0/c1002816d0235ff0a1e888d71c191d3ecfbaba510aaef86eec00edcba8803a3e0ad901bb0e5430a9d2aee2d52c31aabacae8282394dc519c333017a46c68d1c8 + function-bind: "npm:^1.1.2" + checksum: 10c0/2d8de939e270b70618f8cebb69746620db10617dbb495bc66ddad326955ea24d3ca4af133aff3eb7c1853e0218f867bc2b050ec26fe02e3aea58f880ffc5e506 languageName: node linkType: hard @@ -9628,15 +11303,6 @@ __metadata: languageName: node linkType: hard -"hast-util-parse-selector@npm:^3.0.0": - version: 3.1.1 - resolution: "hast-util-parse-selector@npm:3.1.1" - dependencies: - "@types/hast": "npm:^2.0.0" - checksum: 10c0/34ac1707a477fd9764e328087163f1f21857bdb0f8d425bf41f6def7baf840e50e4bca2eb03072e3da4e39856de28893c4b688dcba0cc305160d53afcece4df4 - languageName: node - linkType: hard - "hast-util-parse-selector@npm:^4.0.0": version: 4.0.0 resolution: "hast-util-parse-selector@npm:4.0.0" @@ -9646,25 +11312,6 @@ __metadata: languageName: node linkType: hard -"hast-util-raw@npm:^7.2.0": - version: 7.2.3 - resolution: "hast-util-raw@npm:7.2.3" - dependencies: - "@types/hast": "npm:^2.0.0" - "@types/parse5": "npm:^6.0.0" - hast-util-from-parse5: "npm:^7.0.0" - hast-util-to-parse5: "npm:^7.0.0" - html-void-elements: "npm:^2.0.0" - parse5: "npm:^6.0.0" - unist-util-position: "npm:^4.0.0" - unist-util-visit: "npm:^4.0.0" - vfile: "npm:^5.0.0" - web-namespaces: "npm:^2.0.0" - zwitch: "npm:^2.0.0" - checksum: 10c0/c7bf994938cbc1acaaeb337f99773773b51ad77695b559c6352cba5c35b26610e6de2936b5086ef8bc53b436dd8032a3860e7357f28b6bb0365f751919745398 - languageName: node - linkType: hard - "hast-util-raw@npm:^9.0.0": version: 9.0.4 resolution: "hast-util-raw@npm:9.0.4" @@ -9733,20 +11380,6 @@ __metadata: languageName: node linkType: hard -"hast-util-to-parse5@npm:^7.0.0": - version: 7.1.0 - resolution: "hast-util-to-parse5@npm:7.1.0" - dependencies: - "@types/hast": "npm:^2.0.0" - comma-separated-tokens: "npm:^2.0.0" - property-information: "npm:^6.0.0" - space-separated-tokens: "npm:^2.0.0" - web-namespaces: "npm:^2.0.0" - zwitch: "npm:^2.0.0" - checksum: 10c0/2a96302b8f25fa2d5b657a94bb20a3d9a1a81e66c2f81582a242c5634dd850e3bd95313a7471eef8282b597f2129551fef5a1631f4ce14c41aab646281b339a0 - languageName: node - linkType: hard - "hast-util-to-parse5@npm:^8.0.0": version: 8.0.0 resolution: "hast-util-to-parse5@npm:8.0.0" @@ -9762,13 +11395,6 @@ __metadata: languageName: node linkType: hard -"hast-util-whitespace@npm:^2.0.0": - version: 2.0.1 - resolution: "hast-util-whitespace@npm:2.0.1" - checksum: 10c0/dcf6ebab091c802ffa7bb3112305c7631c15adb6c07a258f5528aefbddf82b4e162c8310ef426c48dc1dc623982cc33920e6dde5a50015d307f2778dcf6c2487 - languageName: node - linkType: hard - "hast-util-whitespace@npm:^3.0.0": version: 3.0.0 resolution: "hast-util-whitespace@npm:3.0.0" @@ -9778,19 +11404,6 @@ __metadata: languageName: node linkType: hard -"hastscript@npm:^7.0.0": - version: 7.2.0 - resolution: "hastscript@npm:7.2.0" - dependencies: - "@types/hast": "npm:^2.0.0" - comma-separated-tokens: "npm:^2.0.0" - hast-util-parse-selector: "npm:^3.0.0" - property-information: "npm:^6.0.0" - space-separated-tokens: "npm:^2.0.0" - checksum: 10c0/579912b03ff4a5b19eb609df7403c6dba2505ef1a1e2bc47cbf467cbd7cffcd51df40e74d882de1ccdda40aaf18487f82619eb9cb9f2077cba778017e95e868e - languageName: node - linkType: hard - "hastscript@npm:^8.0.0": version: 8.0.0 resolution: "hastscript@npm:8.0.0" @@ -9834,18 +11447,7 @@ __metadata: languageName: node linkType: hard -"hmac-drbg@npm:^1.0.1": - version: 1.0.1 - resolution: "hmac-drbg@npm:1.0.1" - dependencies: - hash.js: "npm:^1.0.3" - minimalistic-assert: "npm:^1.0.0" - minimalistic-crypto-utils: "npm:^1.0.1" - checksum: 10c0/f3d9ba31b40257a573f162176ac5930109816036c59a09f901eb2ffd7e5e705c6832bedfff507957125f2086a0ab8f853c0df225642a88bf1fcaea945f20600d - languageName: node - linkType: hard - -"hoist-non-react-statics@npm:^3.1.0, hoist-non-react-statics@npm:^3.3.0, hoist-non-react-statics@npm:^3.3.2": +"hoist-non-react-statics@npm:^3.1.0": version: 3.3.2 resolution: "hoist-non-react-statics@npm:3.3.2" dependencies: @@ -9928,13 +11530,6 @@ __metadata: languageName: node linkType: hard -"html-void-elements@npm:^2.0.0": - version: 2.0.1 - resolution: "html-void-elements@npm:2.0.1" - checksum: 10c0/1079c9e9fdb3b6a2481f2a282098a0183f3d45bf2b9d76c7dfc1671ee1857d7bacdd04fd8c6e2418f5ff550c30cabf97a010fe31ec402d0c89189807b48e6d79 - languageName: node - linkType: hard - "html-void-elements@npm:^3.0.0": version: 3.0.0 resolution: "html-void-elements@npm:3.0.0" @@ -10047,6 +11642,19 @@ __metadata: languageName: node linkType: hard +"http-errors@npm:~2.0.0, http-errors@npm:~2.0.1": + version: 2.0.1 + resolution: "http-errors@npm:2.0.1" + dependencies: + depd: "npm:~2.0.0" + inherits: "npm:~2.0.4" + setprototypeof: "npm:~1.2.0" + statuses: "npm:~2.0.2" + toidentifier: "npm:~1.0.1" + checksum: 10c0/fb38906cef4f5c83952d97661fe14dc156cb59fe54812a42cd448fa57b5c5dfcb38a40a916957737bd6b87aab257c0648d63eb5b6a9ca9f548e105b6072712d4 + languageName: node + linkType: hard + "http-parser-js@npm:>=0.5.1": version: 0.5.8 resolution: "http-parser-js@npm:0.5.8" @@ -10082,6 +11690,24 @@ __metadata: languageName: node linkType: hard +"http-proxy-middleware@npm:^2.0.9": + version: 2.0.10 + resolution: "http-proxy-middleware@npm:2.0.10" + dependencies: + "@types/http-proxy": "npm:^1.17.8" + http-proxy: "npm:^1.18.1" + is-glob: "npm:^4.0.1" + is-plain-obj: "npm:^3.0.0" + micromatch: "npm:^4.0.2" + peerDependencies: + "@types/express": ^4.17.13 + peerDependenciesMeta: + "@types/express": + optional: true + checksum: 10c0/363cd25fbac18f851af93cea34ac7068656413c9af5af12d3b2a127adc70623d2c0d6e9e12037bbac5a4744b762fd9f89fb16e16c29ad06af2b17766890c1b26 + languageName: node + linkType: hard + "http-proxy@npm:^1.18.1": version: 1.18.1 resolution: "http-proxy@npm:1.18.1" @@ -10117,10 +11743,13 @@ __metadata: languageName: node linkType: hard -"https-browserify@npm:^1.0.0": - version: 1.0.0 - resolution: "https-browserify@npm:1.0.0" - checksum: 10c0/e17b6943bc24ea9b9a7da5714645d808670af75a425f29baffc3284962626efdc1eb3aa9bbffaa6e64028a6ad98af5b09fabcb454a8f918fb686abfdc9e9b8ae +"https-proxy-agent@npm:^5.0.1": + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" + dependencies: + agent-base: "npm:6" + debug: "npm:4" + checksum: 10c0/6dd639f03434003577c62b27cafdb864784ef19b2de430d8ae2a1d45e31c4fd60719e5637b44db1a88a046934307da7089e03d6089ec3ddacc1189d8de8897d1 languageName: node linkType: hard @@ -10134,16 +11763,6 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^7.0.4": - version: 7.0.5 - resolution: "https-proxy-agent@npm:7.0.5" - dependencies: - agent-base: "npm:^7.0.2" - debug: "npm:4" - checksum: 10c0/2490e3acec397abeb88807db52cac59102d5ed758feee6df6112ab3ccd8325e8a1ce8bce6f4b66e5470eca102d31e425ace904242e4fa28dbe0c59c4bafa7b2c - languageName: node - linkType: hard - "human-signals@npm:^2.1.0": version: 2.1.0 resolution: "human-signals@npm:2.1.0" @@ -10151,7 +11770,14 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.4.24": +"hyperdyperid@npm:^1.2.0": + version: 1.2.0 + resolution: "hyperdyperid@npm:1.2.0" + checksum: 10c0/885ba3177c7181d315a856ee9c0005ff8eb5dcb1ce9e9d61be70987895d934d84686c37c981cceeb53216d4c9c15c1cc25f1804e84cc6a74a16993c5d7fd0893 + languageName: node + linkType: hard + +"iconv-lite@npm:0.4.24, iconv-lite@npm:~0.4.24": version: 0.4.24 resolution: "iconv-lite@npm:0.4.24" dependencies: @@ -10160,7 +11786,7 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": +"iconv-lite@npm:0.6, iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" dependencies: @@ -10203,24 +11829,33 @@ __metadata: languageName: node linkType: hard -"immer@npm:^9.0.21, immer@npm:^9.0.7": +"image-size@npm:^2.0.2": + version: 2.0.4 + resolution: "image-size@npm:2.0.4" + bin: + image-size: bin/image-size.js + checksum: 10c0/af01b8c2b7c536df1b866fc6daaa7e58ee909cde42fcae27562612ea77181f473445bc8acf0dfb5b9e8590e966a7a1f3f0fbf4c87ec6d1d4d60d68d87d529d76 + languageName: node + linkType: hard + +"immer@npm:^11.0.0": + version: 11.1.21 + resolution: "immer@npm:11.1.21" + checksum: 10c0/0c29182c98d0cea079fc679a198a9bccc4d7d70b528d85f52707e606fbe6fc8fea0a3d583e86ff2d3eb75cd42e25aa359466e8e8edde316db436bb92a917fe84 + languageName: node + linkType: hard + +"immer@npm:^9.0.7": version: 9.0.21 resolution: "immer@npm:9.0.21" checksum: 10c0/03ea3ed5d4d72e8bd428df4a38ad7e483ea8308e9a113d3b42e0ea2cc0cc38340eb0a6aca69592abbbf047c685dbda04e3d34bf2ff438ab57339ed0a34cc0a05 languageName: node linkType: hard -"immutable@npm:^4.0.0": - version: 4.3.6 - resolution: "immutable@npm:4.3.6" - checksum: 10c0/7d0952a768b4fadcee47230ed86dc9505a4517095eceaf5a47e65288571c42400c6e4a2ae21eca4eda957cb7bc50720213135b62cf6a181639111f8acae128c3 - languageName: node - linkType: hard - -"immutable@npm:^5.0.2": - version: 5.0.3 - resolution: "immutable@npm:5.0.3" - checksum: 10c0/3269827789e1026cd25c2ea97f0b2c19be852ffd49eda1b674b20178f73d84fa8d945ad6f5ac5bc4545c2b4170af9f6e1f77129bc1cae7974a4bf9b04a9cdfb9 +"immutable@npm:^5.1.5": + version: 5.1.9 + resolution: "immutable@npm:5.1.9" + checksum: 10c0/ae7032b60b81b682f3e7e4df13e1ec9a401a603eb81b15bb3e37331ed6666e318c71994c6936e1462eb443d32d04769396562a7e2669da22457c8ba279c03ad2 languageName: node linkType: hard @@ -10241,6 +11876,13 @@ __metadata: languageName: node linkType: hard +"import-meta-resolve@npm:^4.2.0": + version: 4.2.0 + resolution: "import-meta-resolve@npm:4.2.0" + checksum: 10c0/3ee8aeecb61d19b49d2703987f977e9d1c7d4ba47db615a570eaa02fe414f40dfa63f7b953e842cbe8470d26df6371332bfcf21b2fd92b0112f9fea80dde2c4c + languageName: node + linkType: hard + "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" @@ -10272,7 +11914,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3, inherits@npm:~2.0.4": +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:~2.0.3, inherits@npm:~2.0.4": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 @@ -10314,6 +11956,20 @@ __metadata: languageName: node linkType: hard +"internmap@npm:1 - 2": + version: 2.0.3 + resolution: "internmap@npm:2.0.3" + checksum: 10c0/8cedd57f07bbc22501516fbfc70447f0c6812871d471096fad9ea603516eacc2137b633633daf432c029712df0baefd793686388ddf5737e3ea15074b877f7ed + languageName: node + linkType: hard + +"internmap@npm:^1.0.0": + version: 1.0.1 + resolution: "internmap@npm:1.0.1" + checksum: 10c0/60942be815ca19da643b6d4f23bd0bf4e8c97abbd080fb963fe67583b60bdfb3530448ad4486bae40810e92317bded9995cc31411218acc750d72cd4e8646eee + languageName: node + linkType: hard + "interpret@npm:^1.0.0": version: 1.4.0 resolution: "interpret@npm:1.4.0" @@ -10354,6 +12010,13 @@ __metadata: languageName: node linkType: hard +"ipaddr.js@npm:^2.1.0": + version: 2.5.0 + resolution: "ipaddr.js@npm:2.5.0" + checksum: 10c0/5cef50d91a14f6388c3b5df3568ee7f8b18e07fa18896debc84d3393b78c1096e1b8e3a4f9fa9020c5ca5b556efc28550432f92a34d23c0cd643bd3194eb439d + languageName: node + linkType: hard + "is-alphabetical@npm:^2.0.0": version: 2.0.1 resolution: "is-alphabetical@npm:2.0.1" @@ -10371,16 +12034,6 @@ __metadata: languageName: node linkType: hard -"is-arguments@npm:^1.0.4": - version: 1.1.1 - resolution: "is-arguments@npm:1.1.1" - dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: 10c0/5ff1f341ee4475350adfc14b2328b38962564b7c2076be2f5bac7bd9b61779efba99b9f844a7b82ba7654adccf8e8eb19d1bb0cc6d1c1a085e498f6793d4328f - languageName: node - linkType: hard - "is-arrayish@npm:^0.2.1": version: 0.2.1 resolution: "is-arrayish@npm:0.2.1" @@ -10397,20 +12050,6 @@ __metadata: languageName: node linkType: hard -"is-buffer@npm:^2.0.0": - version: 2.0.5 - resolution: "is-buffer@npm:2.0.5" - checksum: 10c0/e603f6fced83cf94c53399cff3bda1a9f08e391b872b64a73793b0928be3e5f047f2bcece230edb7632eaea2acdbfcb56c23b33d8a20c820023b230f1485679a - languageName: node - linkType: hard - -"is-callable@npm:^1.1.3": - version: 1.2.7 - resolution: "is-callable@npm:1.2.7" - checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f - languageName: node - linkType: hard - "is-ci@npm:^3.0.1": version: 3.0.1 resolution: "is-ci@npm:3.0.1" @@ -10447,6 +12086,15 @@ __metadata: languageName: node linkType: hard +"is-docker@npm:^3.0.0": + version: 3.0.0 + resolution: "is-docker@npm:3.0.0" + bin: + is-docker: cli.js + checksum: 10c0/d2c4f8e6d3e34df75a5defd44991b6068afad4835bb783b902fa12d13ebdb8f41b2a199dcb0b5ed2cb78bfee9e4c0bbdb69c2d9646f4106464674d3e697a5856 + languageName: node + linkType: hard + "is-extendable@npm:^0.1.0": version: 0.1.1 resolution: "is-extendable@npm:0.1.1" @@ -10468,15 +12116,6 @@ __metadata: languageName: node linkType: hard -"is-generator-function@npm:^1.0.7": - version: 1.0.10 - resolution: "is-generator-function@npm:1.0.10" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10c0/df03514df01a6098945b5a0cfa1abff715807c8e72f57c49a0686ad54b3b74d394e2d8714e6f709a71eb00c9630d48e73ca1796c1ccc84ac95092c1fecc0d98b - languageName: node - linkType: hard - "is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" @@ -10493,6 +12132,17 @@ __metadata: languageName: node linkType: hard +"is-inside-container@npm:^1.0.0": + version: 1.0.0 + resolution: "is-inside-container@npm:1.0.0" + dependencies: + is-docker: "npm:^3.0.0" + bin: + is-inside-container: cli.js + checksum: 10c0/a8efb0e84f6197e6ff5c64c52890fa9acb49b7b74fed4da7c95383965da6f0fa592b4dbd5e38a79f87fc108196937acdbcd758fcefc9b140e479b39ce1fcd1cd + languageName: node + linkType: hard + "is-installed-globally@npm:^0.4.0": version: 0.4.0 resolution: "is-installed-globally@npm:0.4.0" @@ -10503,13 +12153,10 @@ __metadata: languageName: node linkType: hard -"is-nan@npm:^1.3.2": +"is-network-error@npm:^1.0.0": version: 1.3.2 - resolution: "is-nan@npm:1.3.2" - dependencies: - call-bind: "npm:^1.0.0" - define-properties: "npm:^1.1.3" - checksum: 10c0/8bfb286f85763f9c2e28ea32e9127702fe980ffd15fa5d63ade3be7786559e6e21355d3625dd364c769c033c5aedf0a2ed3d4025d336abf1b9241e3d9eddc5b0 + resolution: "is-network-error@npm:1.3.2" + checksum: 10c0/37edc576497b21d022754b49203358ee80fdac4a11a71a09687f38ad789ec437dd930c223301df39f1c920566692b31345e0108ae720996e592cab3879eca74f languageName: node linkType: hard @@ -10608,15 +12255,6 @@ __metadata: languageName: node linkType: hard -"is-typed-array@npm:^1.1.3": - version: 1.1.13 - resolution: "is-typed-array@npm:1.1.13" - dependencies: - which-typed-array: "npm:^1.1.14" - checksum: 10c0/fa5cb97d4a80e52c2cc8ed3778e39f175a1a2ae4ddf3adae3187d69586a1fd57cfa0b095db31f66aa90331e9e3da79184cea9c6abdcd1abc722dc3c3edd51cca - languageName: node - linkType: hard - "is-typedarray@npm:^1.0.0": version: 1.0.0 resolution: "is-typedarray@npm:1.0.0" @@ -10633,6 +12271,15 @@ __metadata: languageName: node linkType: hard +"is-wsl@npm:^3.1.0": + version: 3.1.1 + resolution: "is-wsl@npm:3.1.1" + dependencies: + is-inside-container: "npm:^1.0.0" + checksum: 10c0/7e5023522bfb8f27de4de960b0d82c4a8146c0bddb186529a3616d78b5bbbfc19ef0c5fc60d0b3a3cc0bf95a415fbdedc18454310ea3049587c879b07ace5107 + languageName: node + linkType: hard + "is-yarn-global@npm:^0.4.0": version: 0.4.1 resolution: "is-yarn-global@npm:0.4.1" @@ -10761,14 +12408,14 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:4.1.0, js-yaml@npm:^4.1.0": - version: 4.1.0 - resolution: "js-yaml@npm:4.1.0" +"js-yaml@npm:4.3.0": + version: 4.3.0 + resolution: "js-yaml@npm:4.3.0" dependencies: argparse: "npm:^2.0.1" bin: js-yaml: bin/js-yaml.js - checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f + checksum: 10c0/058b30473d6915ca5b4feb11e2f7d4d97242f98d00a798ed48dd90b46b7c640398afe9128c5db22c5300f8c6528fe2a174b9a93f351a70ebc28c6203938d8bff languageName: node linkType: hard @@ -10784,6 +12431,28 @@ __metadata: languageName: node linkType: hard +"js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f + languageName: node + linkType: hard + +"js-yaml@npm:^5.2.2": + version: 5.4.3 + resolution: "js-yaml@npm:5.4.3" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.mjs + checksum: 10c0/7180bf35feef9815a06cb2f8845c1196f1e4264430a04623884d87c3d21475de7d46a86c9c5142dcc1646c788bc0e676eb09ba817810707e0b4e984f7cf93a5f + languageName: node + linkType: hard + "jsbn@npm:1.1.0": version: 1.1.0 resolution: "jsbn@npm:1.1.0" @@ -10848,7 +12517,7 @@ __metadata: languageName: node linkType: hard -"json-pointer@npm:^0.6.2": +"json-pointer@npm:0.6.2, json-pointer@npm:^0.6.2": version: 0.6.2 resolution: "json-pointer@npm:0.6.2" dependencies: @@ -10877,6 +12546,16 @@ __metadata: languageName: node linkType: hard +"json-schema-to-ts@npm:^3.1.0": + version: 3.1.1 + resolution: "json-schema-to-ts@npm:3.1.1" + dependencies: + "@babel/runtime": "npm:^7.18.3" + ts-algebra: "npm:^2.0.0" + checksum: 10c0/609bae04aa5e860a11b6d30ccf41445fae1c7f66fb600c1d170257cf33aa468aa9d03aa046428c3688aff0ff450c2b0c76584b66fa4a5d0da8e33799e4c439a6 + languageName: node + linkType: hard + "json-schema-traverse@npm:^0.4.1": version: 0.4.1 resolution: "json-schema-traverse@npm:0.4.1" @@ -10913,6 +12592,24 @@ __metadata: languageName: node linkType: hard +"jsonpath-rfc9535@npm:1.3.0": + version: 1.3.0 + resolution: "jsonpath-rfc9535@npm:1.3.0" + checksum: 10c0/090c4a8d21874f6604aebd3b9a0002caea5bfd77d7e0c435c6841d23fa7c559a9a8fa902a4d94f7b3262c7e4884488bacf0c38f2c52df1fc99c18e495ada97a9 + languageName: node + linkType: hard + +"katex@npm:^0.18.0": + version: 0.18.10 + resolution: "katex@npm:0.18.10" + dependencies: + commander: "npm:^15.0.0" + bin: + katex: cli.js + checksum: 10c0/3864a236334e9c7aef906b2fdd70defb76edfe8362372ccd5504167e8b22bbc1a48210e5d03e30e464c0c0f669e6d467b3b8b01120598fb1968c275fa5059721 + languageName: node + linkType: hard + "keyv@npm:^4.5.3": version: 4.5.4 resolution: "keyv@npm:4.5.4" @@ -10922,7 +12619,14 @@ __metadata: languageName: node linkType: hard -"kind-of@npm:^6.0.0, kind-of@npm:^6.0.2": +"khroma@npm:^2.1.0": + version: 2.1.0 + resolution: "khroma@npm:2.1.0" + checksum: 10c0/634d98753ff5d2540491cafeb708fc98de0d43f4e6795256d5c8f6e3ad77de93049ea41433928fda3697adf7bbe6fe27351858f6d23b78f8b5775ef314c59891 + languageName: node + linkType: hard + +"kind-of@npm:^6.0.0, kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": version: 6.0.3 resolution: "kind-of@npm:6.0.3" checksum: 10c0/61cdff9623dabf3568b6445e93e31376bee1cdb93f8ba7033d86022c2a9b1791a1d9510e026e6465ebd701a6dd2f7b0808483ad8838341ac52f003f512e0b4c4 @@ -10936,20 +12640,6 @@ __metadata: languageName: node linkType: hard -"kleur@npm:^4.0.3": - version: 4.1.5 - resolution: "kleur@npm:4.1.5" - checksum: 10c0/e9de6cb49657b6fa70ba2d1448fd3d691a5c4370d8f7bbf1c2f64c24d461270f2117e1b0afe8cb3114f13bbd8e51de158c2a224953960331904e636a5e4c0f2a - languageName: node - linkType: hard - -"klona@npm:^2.0.4": - version: 2.0.6 - resolution: "klona@npm:2.0.6" - checksum: 10c0/94eed2c6c2ce99f409df9186a96340558897b3e62a85afdc1ee39103954d2ebe1c1c4e9fe2b0952771771fa96d70055ede8b27962a7021406374fdb695fd4d01 - languageName: node - linkType: hard - "latest-version@npm:^7.0.0": version: 7.0.0 resolution: "latest-version@npm:7.0.0" @@ -10959,6 +12649,16 @@ __metadata: languageName: node linkType: hard +"launch-editor@npm:^2.14.1": + version: 2.14.2 + resolution: "launch-editor@npm:2.14.2" + dependencies: + picocolors: "npm:^1.1.1" + shell-quote: "npm:^1.10.0" + checksum: 10c0/cf66c75534170142269bfc1749df8a4b5178ad644d358aa08d4feda9ecb1ba7a26191a76ea2cecea95c59235c142486b928b58eaf0cd77377d21e42ed5c3e100 + languageName: node + linkType: hard + "launch-editor@npm:^2.6.0": version: 2.8.0 resolution: "launch-editor@npm:2.8.0" @@ -10969,6 +12669,20 @@ __metadata: languageName: node linkType: hard +"layout-base@npm:^1.0.0": + version: 1.0.2 + resolution: "layout-base@npm:1.0.2" + checksum: 10c0/2a55d0460fd9f6ed53d7e301b9eb3dea19bda03815d616a40665ce6dc75c1f4d62e1ca19a897da1cfaf6de1b91de59cd6f2f79ba1258f3d7fccc7d46ca7f3337 + languageName: node + linkType: hard + +"layout-base@npm:^2.0.0": + version: 2.0.1 + resolution: "layout-base@npm:2.0.1" + checksum: 10c0/a44df9ef3cbff9916a10f616635e22b5787c89fa62b2fec6f99e8e6ee512c7cebd22668ce32dab5a83c934ba0a309c51a678aa0b40d70853de6c357893c0a88b + languageName: node + linkType: hard + "leven@npm:^3.1.0": version: 3.1.0 resolution: "leven@npm:3.1.0" @@ -11060,6 +12774,13 @@ __metadata: languageName: node linkType: hard +"lodash-es@npm:^4.17.21": + version: 4.18.1 + resolution: "lodash-es@npm:4.18.1" + checksum: 10c0/35d4dcf87ef07f8d090f409447575800108057e360b445f590d0d25d09e3d1e33a163d2fc100d4d072b0f901d5e2fc533cd7c4bfd8eeb38a06abec693823c8b8 + languageName: node + linkType: hard + "lodash.debounce@npm:^4.0.8": version: 4.0.8 resolution: "lodash.debounce@npm:4.0.8" @@ -11067,13 +12788,6 @@ __metadata: languageName: node linkType: hard -"lodash.isequal@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.isequal@npm:4.5.0" - checksum: 10c0/dfdb2356db19631a4b445d5f37868a095e2402292d59539a987f134a8778c62a2810c2452d11ae9e6dcac71fc9de40a6fedcb20e2952a15b431ad8b29e50e28f - languageName: node - linkType: hard - "lodash.memoize@npm:^4.1.2": version: 4.1.2 resolution: "lodash.memoize@npm:4.1.2" @@ -11088,7 +12802,14 @@ __metadata: languageName: node linkType: hard -"lodash@npm:4.17.21, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4": +"lodash@npm:4.18.1": + version: 4.18.1 + resolution: "lodash@npm:4.18.1" + checksum: 10c0/757228fc68805c59789e82185135cf85f05d0b2d3d54631d680ca79ec21944ec8314d4533639a14b8bcfbd97a517e78960933041a5af17ecb693ec6eecb99a27 + languageName: node + linkType: hard + +"lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c @@ -11102,7 +12823,7 @@ __metadata: languageName: node linkType: hard -"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.2.0, loose-envify@npm:^1.3.1, loose-envify@npm:^1.4.0": +"loose-envify@npm:^1.0.0, loose-envify@npm:^1.2.0, loose-envify@npm:^1.3.1, loose-envify@npm:^1.4.0": version: 1.4.0 resolution: "loose-envify@npm:1.4.0" dependencies: @@ -11145,15 +12866,6 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: "npm:^4.0.0" - checksum: 10c0/cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9 - languageName: node - linkType: hard - "make-fetch-happen@npm:^14.0.3": version: 14.0.3 resolution: "make-fetch-happen@npm:14.0.3" @@ -11180,15 +12892,6 @@ __metadata: languageName: node linkType: hard -"markdown-table@npm:^2.0.0": - version: 2.0.0 - resolution: "markdown-table@npm:2.0.0" - dependencies: - repeat-string: "npm:^1.0.0" - checksum: 10c0/f257e0781ea50eb946919df84bdee4ba61f983971b277a369ca7276f89740fd0e2749b9b187163a42df4c48682b71962d4007215ce3523480028f06c11ddc2e6 - languageName: node - linkType: hard - "markdown-table@npm:^3.0.0": version: 3.0.3 resolution: "markdown-table@npm:3.0.3" @@ -11196,25 +12899,19 @@ __metadata: languageName: node linkType: hard -"md5.js@npm:^1.3.4": - version: 1.3.5 - resolution: "md5.js@npm:1.3.5" - dependencies: - hash-base: "npm:^3.0.0" - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.1.2" - checksum: 10c0/b7bd75077f419c8e013fc4d4dada48be71882e37d69a44af65a2f2804b91e253441eb43a0614423a1c91bb830b8140b0dc906bc797245e2e275759584f4efcc5 +"marked@npm:^16.3.0": + version: 16.4.2 + resolution: "marked@npm:16.4.2" + bin: + marked: bin/marked.js + checksum: 10c0/fc6051142172454f2023f3d6b31cca92879ec8e1b96457086a54c70354c74b00e1b6543a76a1fad6d399366f52b90a848f6ffb8e1d65a5baff87f3ba9b8f1847 languageName: node linkType: hard -"mdast-util-definitions@npm:^5.0.0": - version: 5.1.2 - resolution: "mdast-util-definitions@npm:5.1.2" - dependencies: - "@types/mdast": "npm:^3.0.0" - "@types/unist": "npm:^2.0.0" - unist-util-visit: "npm:^4.0.0" - checksum: 10c0/da9049c15562e44ee4ea4a36113d98c6c9eaa3d8a17d6da2aef6a0626376dcd01d9ec007d77a8dfcad6d0cbd5c32a4abbad72a3f48c3172a55934c7d9a916480 +"math-intrinsics@npm:^1.1.0": + version: 1.1.0 + resolution: "math-intrinsics@npm:1.1.0" + checksum: 10c0/7579ff94e899e2f76ab64491d76cf606274c874d8f2af4a442c016bd85688927fcfca157ba6bf74b08e9439dc010b248ce05b96cc7c126a354c3bae7fcb48b7f languageName: node linkType: hard @@ -11234,18 +12931,6 @@ __metadata: languageName: node linkType: hard -"mdast-util-find-and-replace@npm:^2.0.0": - version: 2.2.2 - resolution: "mdast-util-find-and-replace@npm:2.2.2" - dependencies: - "@types/mdast": "npm:^3.0.0" - escape-string-regexp: "npm:^5.0.0" - unist-util-is: "npm:^5.0.0" - unist-util-visit-parents: "npm:^5.0.0" - checksum: 10c0/ce935f4bd4aeab47f91531a7f09dfab89aaeea62ad31029b43185c5b626921357703d8e5093c13073c097fdabfc57cb2f884d7dfad83dbe7239e351375d6797c - languageName: node - linkType: hard - "mdast-util-find-and-replace@npm:^3.0.0, mdast-util-find-and-replace@npm:^3.0.1": version: 3.0.1 resolution: "mdast-util-find-and-replace@npm:3.0.1" @@ -11258,26 +12943,6 @@ __metadata: languageName: node linkType: hard -"mdast-util-from-markdown@npm:^1.0.0": - version: 1.3.1 - resolution: "mdast-util-from-markdown@npm:1.3.1" - dependencies: - "@types/mdast": "npm:^3.0.0" - "@types/unist": "npm:^2.0.0" - decode-named-character-reference: "npm:^1.0.0" - mdast-util-to-string: "npm:^3.1.0" - micromark: "npm:^3.0.0" - micromark-util-decode-numeric-character-reference: "npm:^1.0.0" - micromark-util-decode-string: "npm:^1.0.0" - micromark-util-normalize-identifier: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - unist-util-stringify-position: "npm:^3.0.0" - uvu: "npm:^0.5.0" - checksum: 10c0/f4e901bf2a2e93fe35a339e0cff581efacce2f7117cd5652e9a270847bd7e2508b3e717b7b4156af54d4f896d63033e06ff9fafbf59a1d46fe17dd5e2a3f7846 - languageName: node - linkType: hard - "mdast-util-from-markdown@npm:^2.0.0": version: 2.0.1 resolution: "mdast-util-from-markdown@npm:2.0.1" @@ -11312,18 +12977,6 @@ __metadata: languageName: node linkType: hard -"mdast-util-gfm-autolink-literal@npm:^1.0.0": - version: 1.0.3 - resolution: "mdast-util-gfm-autolink-literal@npm:1.0.3" - dependencies: - "@types/mdast": "npm:^3.0.0" - ccount: "npm:^2.0.0" - mdast-util-find-and-replace: "npm:^2.0.0" - micromark-util-character: "npm:^1.0.0" - checksum: 10c0/750e312eae73c3f2e8aa0e8c5232cb1b905357ff37ac236927f1af50cdbee7c2cfe2379b148ac32fa4137eeb3b24601e1bb6135084af926c7cd808867804193f - languageName: node - linkType: hard - "mdast-util-gfm-autolink-literal@npm:^2.0.0": version: 2.0.0 resolution: "mdast-util-gfm-autolink-literal@npm:2.0.0" @@ -11337,17 +12990,6 @@ __metadata: languageName: node linkType: hard -"mdast-util-gfm-footnote@npm:^1.0.0": - version: 1.0.2 - resolution: "mdast-util-gfm-footnote@npm:1.0.2" - dependencies: - "@types/mdast": "npm:^3.0.0" - mdast-util-to-markdown: "npm:^1.3.0" - micromark-util-normalize-identifier: "npm:^1.0.0" - checksum: 10c0/767973e46b9e2ae44e80e51a5e38ad0b032fc7f06a1a3095aa96c2886ba333941c764474a56b82e7db05efc56242a4789bc7fbbcc753d61512750e86a4192fe8 - languageName: node - linkType: hard - "mdast-util-gfm-footnote@npm:^2.0.0": version: 2.0.0 resolution: "mdast-util-gfm-footnote@npm:2.0.0" @@ -11361,16 +13003,6 @@ __metadata: languageName: node linkType: hard -"mdast-util-gfm-strikethrough@npm:^1.0.0": - version: 1.0.3 - resolution: "mdast-util-gfm-strikethrough@npm:1.0.3" - dependencies: - "@types/mdast": "npm:^3.0.0" - mdast-util-to-markdown: "npm:^1.3.0" - checksum: 10c0/29616b3dfdd33d3cd13f9b3181a8562fa2fbacfcb04a37dba3c690ba6829f0231b145444de984726d9277b2bc90dd7d96fb9df9f6292d5e77d65a8659ee2f52b - languageName: node - linkType: hard - "mdast-util-gfm-strikethrough@npm:^2.0.0": version: 2.0.0 resolution: "mdast-util-gfm-strikethrough@npm:2.0.0" @@ -11382,18 +13014,6 @@ __metadata: languageName: node linkType: hard -"mdast-util-gfm-table@npm:^1.0.0": - version: 1.0.7 - resolution: "mdast-util-gfm-table@npm:1.0.7" - dependencies: - "@types/mdast": "npm:^3.0.0" - markdown-table: "npm:^3.0.0" - mdast-util-from-markdown: "npm:^1.0.0" - mdast-util-to-markdown: "npm:^1.3.0" - checksum: 10c0/a37a05a936292c4f48394123332d3c034a6e1b15bb3e7f3b94e6bce3260c9184fd388abbc4100827edd5485a6563098306994d15a729bde3c96de7a62ed5720b - languageName: node - linkType: hard - "mdast-util-gfm-table@npm:^2.0.0": version: 2.0.0 resolution: "mdast-util-gfm-table@npm:2.0.0" @@ -11407,16 +13027,6 @@ __metadata: languageName: node linkType: hard -"mdast-util-gfm-task-list-item@npm:^1.0.0": - version: 1.0.2 - resolution: "mdast-util-gfm-task-list-item@npm:1.0.2" - dependencies: - "@types/mdast": "npm:^3.0.0" - mdast-util-to-markdown: "npm:^1.3.0" - checksum: 10c0/91fa91f7d1a8797bf129008dab12d23917015ad12df00044e275b4459e8b383fbec6234338953a0089ef9c3a114d0a360c3e652eb0ebf6ece7e7a8fd3b5977c6 - languageName: node - linkType: hard - "mdast-util-gfm-task-list-item@npm:^2.0.0": version: 2.0.0 resolution: "mdast-util-gfm-task-list-item@npm:2.0.0" @@ -11429,21 +13039,6 @@ __metadata: languageName: node linkType: hard -"mdast-util-gfm@npm:^2.0.0": - version: 2.0.2 - resolution: "mdast-util-gfm@npm:2.0.2" - dependencies: - mdast-util-from-markdown: "npm:^1.0.0" - mdast-util-gfm-autolink-literal: "npm:^1.0.0" - mdast-util-gfm-footnote: "npm:^1.0.0" - mdast-util-gfm-strikethrough: "npm:^1.0.0" - mdast-util-gfm-table: "npm:^1.0.0" - mdast-util-gfm-task-list-item: "npm:^1.0.0" - mdast-util-to-markdown: "npm:^1.0.0" - checksum: 10c0/5b7f7f98a90a2962d7e0787e080c4e55b70119100c7685bbdb772d8d7865524aeffd1757edba5afba434250e0246b987c0617c2c635baaf51c26dbbb3b72dbec - languageName: node - linkType: hard - "mdast-util-gfm@npm:^3.0.0": version: 3.0.0 resolution: "mdast-util-gfm@npm:3.0.0" @@ -11521,16 +13116,6 @@ __metadata: languageName: node linkType: hard -"mdast-util-phrasing@npm:^3.0.0": - version: 3.0.1 - resolution: "mdast-util-phrasing@npm:3.0.1" - dependencies: - "@types/mdast": "npm:^3.0.0" - unist-util-is: "npm:^5.0.0" - checksum: 10c0/5e00e303652a7581593549dbce20dfb69d687d79a972f7928f6ca1920ef5385bceb737a3d5292ab6d937ed8c67bb59771e80e88f530b78734fe7d155f833e32b - languageName: node - linkType: hard - "mdast-util-phrasing@npm:^4.0.0": version: 4.1.0 resolution: "mdast-util-phrasing@npm:4.1.0" @@ -11541,22 +13126,6 @@ __metadata: languageName: node linkType: hard -"mdast-util-to-hast@npm:^12.1.0": - version: 12.3.0 - resolution: "mdast-util-to-hast@npm:12.3.0" - dependencies: - "@types/hast": "npm:^2.0.0" - "@types/mdast": "npm:^3.0.0" - mdast-util-definitions: "npm:^5.0.0" - micromark-util-sanitize-uri: "npm:^1.1.0" - trim-lines: "npm:^3.0.0" - unist-util-generated: "npm:^2.0.0" - unist-util-position: "npm:^4.0.0" - unist-util-visit: "npm:^4.0.0" - checksum: 10c0/0753e45bfcce423f7a13979ac720a23ed8d6bafed174c387f43bbe8baf3838f3a043cd8006975b71e5c4068b7948f83f1348acea79801101af31eaec4e7a499a - languageName: node - linkType: hard - "mdast-util-to-hast@npm:^13.0.0": version: 13.2.0 resolution: "mdast-util-to-hast@npm:13.2.0" @@ -11574,22 +13143,6 @@ __metadata: languageName: node linkType: hard -"mdast-util-to-markdown@npm:^1.0.0, mdast-util-to-markdown@npm:^1.3.0": - version: 1.5.0 - resolution: "mdast-util-to-markdown@npm:1.5.0" - dependencies: - "@types/mdast": "npm:^3.0.0" - "@types/unist": "npm:^2.0.0" - longest-streak: "npm:^3.0.0" - mdast-util-phrasing: "npm:^3.0.0" - mdast-util-to-string: "npm:^3.0.0" - micromark-util-decode-string: "npm:^1.0.0" - unist-util-visit: "npm:^4.0.0" - zwitch: "npm:^2.0.0" - checksum: 10c0/9831d14aa6c097750a90c7b87b4e814b040731c30606a794c9b136dc746633dd9ec07154ca97d4fec4eaf732cf89d14643424e2581732d6ee18c9b0e51ff7664 - languageName: node - linkType: hard - "mdast-util-to-markdown@npm:^2.0.0": version: 2.1.0 resolution: "mdast-util-to-markdown@npm:2.1.0" @@ -11606,15 +13159,6 @@ __metadata: languageName: node linkType: hard -"mdast-util-to-string@npm:^3.0.0, mdast-util-to-string@npm:^3.1.0": - version: 3.2.0 - resolution: "mdast-util-to-string@npm:3.2.0" - dependencies: - "@types/mdast": "npm:^3.0.0" - checksum: 10c0/112f4bf0f6758dcb95deffdcf37afba7eaecdfe2ee13252de031723094d4d55220e147326690a8b91244758e2d678e7aeb1fdd0fa6ef3317c979bc42effd9a21 - languageName: node - linkType: hard - "mdast-util-to-string@npm:^4.0.0": version: 4.0.0 resolution: "mdast-util-to-string@npm:4.0.0" @@ -11654,6 +13198,28 @@ __metadata: languageName: node linkType: hard +"memfs@npm:^4.43.1": + version: 4.80.0 + resolution: "memfs@npm:4.80.0" + dependencies: + "@jsonjoy.com/fs-core": "npm:4.80.0" + "@jsonjoy.com/fs-fsa": "npm:4.80.0" + "@jsonjoy.com/fs-node": "npm:4.80.0" + "@jsonjoy.com/fs-node-builtins": "npm:4.80.0" + "@jsonjoy.com/fs-node-to-fsa": "npm:4.80.0" + "@jsonjoy.com/fs-node-utils": "npm:4.80.0" + "@jsonjoy.com/fs-print": "npm:4.80.0" + "@jsonjoy.com/fs-snapshot": "npm:4.80.0" + "@jsonjoy.com/json-pack": "npm:^1.11.0" + "@jsonjoy.com/util": "npm:^1.9.0" + glob-to-regex.js: "npm:^1.3.1" + thingies: "npm:^2.5.0" + tree-dump: "npm:^1.0.3" + tslib: "npm:^2.0.0" + checksum: 10c0/0946dcbef734094cacc41c186c55ac85e94cbc413d81bdbb0db0db4a9dfb612f08852a0f89f1eaa29aaa19c70dce20dcf6b90fa4eae70c7d51d524782b28001b + languageName: node + linkType: hard + "merge-descriptors@npm:1.0.1": version: 1.0.1 resolution: "merge-descriptors@npm:1.0.1" @@ -11661,6 +13227,13 @@ __metadata: languageName: node linkType: hard +"merge-descriptors@npm:1.0.3": + version: 1.0.3 + resolution: "merge-descriptors@npm:1.0.3" + checksum: 10c0/866b7094afd9293b5ea5dcd82d71f80e51514bed33b4c4e9f516795dc366612a4cbb4dc94356e943a8a6914889a914530badff27f397191b9b75cda20b6bae93 + languageName: node + linkType: hard + "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" @@ -11675,6 +13248,37 @@ __metadata: languageName: node linkType: hard +"mermaid@npm:>=11.6.0": + version: 12.2.0 + resolution: "mermaid@npm:12.2.0" + dependencies: + "@braintree/sanitize-url": "npm:^7.1.2" + "@iconify/utils": "npm:^3.0.2" + "@mermaid-js/parser": "npm:^2.0.1" + "@types/d3": "npm:^7.4.3" + "@upsetjs/venn.js": "npm:^2.0.0" + chevrotain: "npm:~13.2.0" + cytoscape: "npm:^3.34.0" + cytoscape-cose-bilkent: "npm:^4.1.0" + cytoscape-fcose: "npm:^2.2.0" + d3: "npm:^7.9.0" + d3-sankey: "npm:^0.12.3" + dagre-d3-es: "npm:7.0.14" + dayjs: "npm:^1.11.21" + dompurify: "npm:^3.4.12" + elkjs: "npm:^0.9.3" + es-toolkit: "npm:^1.45.1" + katex: "npm:^0.18.0" + khroma: "npm:^2.1.0" + marked: "npm:^16.3.0" + roughjs: "npm:^4.6.6" + stylis: "npm:^4.3.6" + ts-dedent: "npm:^2.2.0" + uuid: "npm:^11.1.0 || ^12 || ^13 || ^14.0.0" + checksum: 10c0/6b9e745667febde92ce9c01f1ee8dcd8df77b489a724a131c5340895f12d85de36fd7c52477e6cfb69aa43c2e74bd420b8adb4e9b78c430c4a7f5a5dfe8ad784 + languageName: node + linkType: hard + "methods@npm:~1.1.2": version: 1.1.2 resolution: "methods@npm:1.1.2" @@ -11682,30 +13286,6 @@ __metadata: languageName: node linkType: hard -"micromark-core-commonmark@npm:^1.0.0, micromark-core-commonmark@npm:^1.0.1": - version: 1.1.0 - resolution: "micromark-core-commonmark@npm:1.1.0" - dependencies: - decode-named-character-reference: "npm:^1.0.0" - micromark-factory-destination: "npm:^1.0.0" - micromark-factory-label: "npm:^1.0.0" - micromark-factory-space: "npm:^1.0.0" - micromark-factory-title: "npm:^1.0.0" - micromark-factory-whitespace: "npm:^1.0.0" - micromark-util-character: "npm:^1.0.0" - micromark-util-chunked: "npm:^1.0.0" - micromark-util-classify-character: "npm:^1.0.0" - micromark-util-html-tag-name: "npm:^1.0.0" - micromark-util-normalize-identifier: "npm:^1.0.0" - micromark-util-resolve-all: "npm:^1.0.0" - micromark-util-subtokenize: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.1" - uvu: "npm:^0.5.0" - checksum: 10c0/b3bf7b7004ce7dbb3ae151dcca4db1d12546f1b943affb2418da4b90b9ce59357373c433ee2eea4c868aee0791dafa355aeed19f5ef2b0acaf271f32f1ecbe6a - languageName: node - linkType: hard - "micromark-core-commonmark@npm:^2.0.0": version: 2.0.1 resolution: "micromark-core-commonmark@npm:2.0.1" @@ -11757,18 +13337,6 @@ __metadata: languageName: node linkType: hard -"micromark-extension-gfm-autolink-literal@npm:^1.0.0": - version: 1.0.5 - resolution: "micromark-extension-gfm-autolink-literal@npm:1.0.5" - dependencies: - micromark-util-character: "npm:^1.0.0" - micromark-util-sanitize-uri: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - checksum: 10c0/4964a52605ac36d24501d427e2d173fa39b5e0402275cb45068eba4898f4cb9cc57f7007b21b7514f0ab5f7b371b1701a5156a10b6ac8e77a7f36e830cf481d4 - languageName: node - linkType: hard - "micromark-extension-gfm-autolink-literal@npm:^2.0.0": version: 2.1.0 resolution: "micromark-extension-gfm-autolink-literal@npm:2.1.0" @@ -11781,22 +13349,6 @@ __metadata: languageName: node linkType: hard -"micromark-extension-gfm-footnote@npm:^1.0.0": - version: 1.1.2 - resolution: "micromark-extension-gfm-footnote@npm:1.1.2" - dependencies: - micromark-core-commonmark: "npm:^1.0.0" - micromark-factory-space: "npm:^1.0.0" - micromark-util-character: "npm:^1.0.0" - micromark-util-normalize-identifier: "npm:^1.0.0" - micromark-util-sanitize-uri: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - uvu: "npm:^0.5.0" - checksum: 10c0/b8090876cc3da5436c6253b0b40e39ceaa470c2429f699c19ee4163cef3102c4cd16c4ac2ec8caf916037fad310cfb52a9ef182c75d50fca7419ba08faad9b39 - languageName: node - linkType: hard - "micromark-extension-gfm-footnote@npm:^2.0.0": version: 2.1.0 resolution: "micromark-extension-gfm-footnote@npm:2.1.0" @@ -11813,20 +13365,6 @@ __metadata: languageName: node linkType: hard -"micromark-extension-gfm-strikethrough@npm:^1.0.0": - version: 1.0.7 - resolution: "micromark-extension-gfm-strikethrough@npm:1.0.7" - dependencies: - micromark-util-chunked: "npm:^1.0.0" - micromark-util-classify-character: "npm:^1.0.0" - micromark-util-resolve-all: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - uvu: "npm:^0.5.0" - checksum: 10c0/b45fe93a7a412fc44bae7a183b92a988e17b49ed9d683bd80ee4dde96d462e1ca6b316dd64bda7759e4086d6d8686790a711e53c244f1f4d2b37e1cfe852884d - languageName: node - linkType: hard - "micromark-extension-gfm-strikethrough@npm:^2.0.0": version: 2.1.0 resolution: "micromark-extension-gfm-strikethrough@npm:2.1.0" @@ -11841,19 +13379,6 @@ __metadata: languageName: node linkType: hard -"micromark-extension-gfm-table@npm:^1.0.0": - version: 1.0.7 - resolution: "micromark-extension-gfm-table@npm:1.0.7" - dependencies: - micromark-factory-space: "npm:^1.0.0" - micromark-util-character: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - uvu: "npm:^0.5.0" - checksum: 10c0/38b5af80ecab8206845a057338235bee6f47fb6cb904208be4b76e87906765821683e25bef85dfa485809f931eaf8cd55f16cd2f4d6e33b84f56edfaf1dfb129 - languageName: node - linkType: hard - "micromark-extension-gfm-table@npm:^2.0.0": version: 2.1.0 resolution: "micromark-extension-gfm-table@npm:2.1.0" @@ -11867,15 +13392,6 @@ __metadata: languageName: node linkType: hard -"micromark-extension-gfm-tagfilter@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-extension-gfm-tagfilter@npm:1.0.2" - dependencies: - micromark-util-types: "npm:^1.0.0" - checksum: 10c0/7e1bf278255cf2a8d2dda9de84bc238b39c53100e25ba8d7168220d5b00dc74869a6cb038fbf2e76b8ae89efc66906762311797a906d7d9cdd71e07bfe1ed505 - languageName: node - linkType: hard - "micromark-extension-gfm-tagfilter@npm:^2.0.0": version: 2.0.0 resolution: "micromark-extension-gfm-tagfilter@npm:2.0.0" @@ -11885,19 +13401,6 @@ __metadata: languageName: node linkType: hard -"micromark-extension-gfm-task-list-item@npm:^1.0.0": - version: 1.0.5 - resolution: "micromark-extension-gfm-task-list-item@npm:1.0.5" - dependencies: - micromark-factory-space: "npm:^1.0.0" - micromark-util-character: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - uvu: "npm:^0.5.0" - checksum: 10c0/2179742fa2cbb243cc06bd9e43fbb94cd98e4814c9d368ddf8b4b5afa0348023f335626ae955e89d679e2c2662a7f82c315117a3b060c87bdb4420fee5a219d1 - languageName: node - linkType: hard - "micromark-extension-gfm-task-list-item@npm:^2.0.0": version: 2.1.0 resolution: "micromark-extension-gfm-task-list-item@npm:2.1.0" @@ -11911,22 +13414,6 @@ __metadata: languageName: node linkType: hard -"micromark-extension-gfm@npm:^2.0.0": - version: 2.0.3 - resolution: "micromark-extension-gfm@npm:2.0.3" - dependencies: - micromark-extension-gfm-autolink-literal: "npm:^1.0.0" - micromark-extension-gfm-footnote: "npm:^1.0.0" - micromark-extension-gfm-strikethrough: "npm:^1.0.0" - micromark-extension-gfm-table: "npm:^1.0.0" - micromark-extension-gfm-tagfilter: "npm:^1.0.0" - micromark-extension-gfm-task-list-item: "npm:^1.0.0" - micromark-util-combine-extensions: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - checksum: 10c0/53056376d14caf3fab2cc44881c1ad49d975776cc2267bca74abda2cb31f2a77ec0fb2bdb2dd97565f0d9943ad915ff192b89c1cee5d9d727569a5e38505799b - languageName: node - linkType: hard - "micromark-extension-gfm@npm:^3.0.0": version: 3.0.0 resolution: "micromark-extension-gfm@npm:3.0.0" @@ -12019,17 +13506,6 @@ __metadata: languageName: node linkType: hard -"micromark-factory-destination@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-factory-destination@npm:1.1.0" - dependencies: - micromark-util-character: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - checksum: 10c0/71ebd9089bf0c9689b98ef42215c04032ae2701ae08c3546b663628553255dca18e5310dbdacddad3acd8de4f12a789835fff30dadc4da3c4e30387a75e6b488 - languageName: node - linkType: hard - "micromark-factory-destination@npm:^2.0.0": version: 2.0.0 resolution: "micromark-factory-destination@npm:2.0.0" @@ -12041,18 +13517,6 @@ __metadata: languageName: node linkType: hard -"micromark-factory-label@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-factory-label@npm:1.1.0" - dependencies: - micromark-util-character: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - uvu: "npm:^0.5.0" - checksum: 10c0/5e2cd2d8214bb92a34dfcedf9c7aecf565e3648650a3a6a0495ededf15f2318dd214dc069e3026402792cd5839d395313f8ef9c2e86ca34a8facaa0f75a77753 - languageName: node - linkType: hard - "micromark-factory-label@npm:^2.0.0": version: 2.0.0 resolution: "micromark-factory-label@npm:2.0.0" @@ -12101,18 +13565,6 @@ __metadata: languageName: node linkType: hard -"micromark-factory-title@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-factory-title@npm:1.1.0" - dependencies: - micromark-factory-space: "npm:^1.0.0" - micromark-util-character: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - checksum: 10c0/cf8c687d1d5c3928846a4791d4a7e2f1d7bdd2397051e20d60f06b7565a48bf85198ab6f85735e997ab3f0cbb80b8b6391f4f7ebc0aae2f2f8c3a08541257bf6 - languageName: node - linkType: hard - "micromark-factory-title@npm:^2.0.0": version: 2.0.0 resolution: "micromark-factory-title@npm:2.0.0" @@ -12125,18 +13577,6 @@ __metadata: languageName: node linkType: hard -"micromark-factory-whitespace@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-factory-whitespace@npm:1.1.0" - dependencies: - micromark-factory-space: "npm:^1.0.0" - micromark-util-character: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - checksum: 10c0/7248cc4534f9befb38c6f398b6e38efd3199f1428fc214c9cb7ed5b6e9fa7a82c0d8cdfa9bcacde62887c9a7c8c46baf5c318b2ae8f701afbccc8ad702e92dce - languageName: node - linkType: hard - "micromark-factory-whitespace@npm:^2.0.0": version: 2.0.0 resolution: "micromark-factory-whitespace@npm:2.0.0" @@ -12169,15 +13609,6 @@ __metadata: languageName: node linkType: hard -"micromark-util-chunked@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-chunked@npm:1.1.0" - dependencies: - micromark-util-symbol: "npm:^1.0.0" - checksum: 10c0/59534cf4aaf481ed58d65478d00eae0080df9b5816673f79b5ddb0cea263e5a9ee9cbb6cc565daf1eb3c8c4ff86fc4e25d38a0577539655cda823a4249efd358 - languageName: node - linkType: hard - "micromark-util-chunked@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-chunked@npm:2.0.0" @@ -12187,17 +13618,6 @@ __metadata: languageName: node linkType: hard -"micromark-util-classify-character@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-classify-character@npm:1.1.0" - dependencies: - micromark-util-character: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - checksum: 10c0/3266453dc0fdaf584e24c9b3c91d1ed180f76b5856699c51fd2549305814fcab7ec52afb4d3e83d002a9115cd2d2b2ffdc9c0b38ed85120822bf515cc00636ec - languageName: node - linkType: hard - "micromark-util-classify-character@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-classify-character@npm:2.0.0" @@ -12209,16 +13629,6 @@ __metadata: languageName: node linkType: hard -"micromark-util-combine-extensions@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-combine-extensions@npm:1.1.0" - dependencies: - micromark-util-chunked: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - checksum: 10c0/0bc572fab3fe77f533c29aa1b75cb847b9fc9455f67a98623ef9740b925c0b0426ad9f09bbb56f1e844ea9ebada7873d1f06d27f7c979a917692b273c4b69e31 - languageName: node - linkType: hard - "micromark-util-combine-extensions@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-combine-extensions@npm:2.0.0" @@ -12229,15 +13639,6 @@ __metadata: languageName: node linkType: hard -"micromark-util-decode-numeric-character-reference@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-decode-numeric-character-reference@npm:1.1.0" - dependencies: - micromark-util-symbol: "npm:^1.0.0" - checksum: 10c0/64ef2575e3fc2426976c19e16973348f20b59ddd5543f1467ac2e251f29e0a91f12089703d29ae985b0b9a408ee0d72f06d04ed3920811aa2402aabca3bdf9e4 - languageName: node - linkType: hard - "micromark-util-decode-numeric-character-reference@npm:^2.0.0": version: 2.0.1 resolution: "micromark-util-decode-numeric-character-reference@npm:2.0.1" @@ -12247,18 +13648,6 @@ __metadata: languageName: node linkType: hard -"micromark-util-decode-string@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-decode-string@npm:1.1.0" - dependencies: - decode-named-character-reference: "npm:^1.0.0" - micromark-util-character: "npm:^1.0.0" - micromark-util-decode-numeric-character-reference: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - checksum: 10c0/757a0aaa5ad6c50c7480bd75371d407ac75f5022cd4404aba07adadf1448189502aea9bb7b2d09d25e18745e0abf72b95506b6beb184bcccabe919e48e3a5df7 - languageName: node - linkType: hard - "micromark-util-decode-string@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-decode-string@npm:2.0.0" @@ -12271,13 +13660,6 @@ __metadata: languageName: node linkType: hard -"micromark-util-encode@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-encode@npm:1.1.0" - checksum: 10c0/9878c9bc96999d45626a7597fffac85348ea842dce75d2417345cbf070a9941c62477bd0963bef37d4f0fd29f2982be6ddf416d62806f00ccb334af9d6ee87e7 - languageName: node - linkType: hard - "micromark-util-encode@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-encode@npm:2.0.0" @@ -12301,13 +13683,6 @@ __metadata: languageName: node linkType: hard -"micromark-util-html-tag-name@npm:^1.0.0": - version: 1.2.0 - resolution: "micromark-util-html-tag-name@npm:1.2.0" - checksum: 10c0/15421869678d36b4fe51df453921e8186bff514a14e9f79f32b7e1cdd67874e22a66ad34a7f048dd132cbbbfc7c382ae2f777a2bfd1f245a47705dc1c6d4f199 - languageName: node - linkType: hard - "micromark-util-html-tag-name@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-html-tag-name@npm:2.0.0" @@ -12315,15 +13690,6 @@ __metadata: languageName: node linkType: hard -"micromark-util-normalize-identifier@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-normalize-identifier@npm:1.1.0" - dependencies: - micromark-util-symbol: "npm:^1.0.0" - checksum: 10c0/a9657321a2392584e4d978061882117a84db7d2c2c1c052c0f5d25da089d463edb9f956d5beaf7f5768984b6f72d046d59b5972951ec7bf25397687a62b8278a - languageName: node - linkType: hard - "micromark-util-normalize-identifier@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-normalize-identifier@npm:2.0.0" @@ -12333,15 +13699,6 @@ __metadata: languageName: node linkType: hard -"micromark-util-resolve-all@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-resolve-all@npm:1.1.0" - dependencies: - micromark-util-types: "npm:^1.0.0" - checksum: 10c0/b5c95484c06e87bbbb60d8430eb030a458733a5270409f4c67892d1274737087ca6a7ca888987430e57cf1dcd44bb16390d3b3936a2bf07f7534ec8f52ce43c9 - languageName: node - linkType: hard - "micromark-util-resolve-all@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-resolve-all@npm:2.0.0" @@ -12351,17 +13708,6 @@ __metadata: languageName: node linkType: hard -"micromark-util-sanitize-uri@npm:^1.0.0, micromark-util-sanitize-uri@npm:^1.1.0": - version: 1.2.0 - resolution: "micromark-util-sanitize-uri@npm:1.2.0" - dependencies: - micromark-util-character: "npm:^1.0.0" - micromark-util-encode: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - checksum: 10c0/dbdb98248e9f0408c7a00f1c1cd805775b41d213defd659533835f34b38da38e8f990bf7b3f782e96bffbc549aec9c3ecdab197d4ad5adbfe08f814a70327b6e - languageName: node - linkType: hard - "micromark-util-sanitize-uri@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-sanitize-uri@npm:2.0.0" @@ -12373,18 +13719,6 @@ __metadata: languageName: node linkType: hard -"micromark-util-subtokenize@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-subtokenize@npm:1.1.0" - dependencies: - micromark-util-chunked: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.0" - uvu: "npm:^0.5.0" - checksum: 10c0/f292b1b162845db50d36255c9d4c4c6d47931fbca3ac98a80c7e536d2163233fd662f8ca0479ee2b80f145c66a1394c7ed17dfce801439741211015e77e3901e - languageName: node - linkType: hard - "micromark-util-subtokenize@npm:^2.0.0": version: 2.0.1 resolution: "micromark-util-subtokenize@npm:2.0.1" @@ -12411,7 +13745,7 @@ __metadata: languageName: node linkType: hard -"micromark-util-types@npm:^1.0.0, micromark-util-types@npm:^1.0.1": +"micromark-util-types@npm:^1.0.0": version: 1.1.0 resolution: "micromark-util-types@npm:1.1.0" checksum: 10c0/a9749cb0a12a252ff536baabcb7012421b6fad4d91a5fdd80d7b33dc7b4c22e2d0c4637dfe5b902d00247fe6c9b01f4a24fce6b572b16ccaa4da90e6ce2a11e4 @@ -12425,31 +13759,6 @@ __metadata: languageName: node linkType: hard -"micromark@npm:^3.0.0": - version: 3.2.0 - resolution: "micromark@npm:3.2.0" - dependencies: - "@types/debug": "npm:^4.0.0" - debug: "npm:^4.0.0" - decode-named-character-reference: "npm:^1.0.0" - micromark-core-commonmark: "npm:^1.0.1" - micromark-factory-space: "npm:^1.0.0" - micromark-util-character: "npm:^1.0.0" - micromark-util-chunked: "npm:^1.0.0" - micromark-util-combine-extensions: "npm:^1.0.0" - micromark-util-decode-numeric-character-reference: "npm:^1.0.0" - micromark-util-encode: "npm:^1.0.0" - micromark-util-normalize-identifier: "npm:^1.0.0" - micromark-util-resolve-all: "npm:^1.0.0" - micromark-util-sanitize-uri: "npm:^1.0.0" - micromark-util-subtokenize: "npm:^1.0.0" - micromark-util-symbol: "npm:^1.0.0" - micromark-util-types: "npm:^1.0.1" - uvu: "npm:^0.5.0" - checksum: 10c0/f243e805d1b3cc699fddae2de0b1492bc82462f1a709d7ae5c82039f88b1e009c959100184717e748be057b5f88603289d5681679a4e6fbabcd037beb34bc744 - languageName: node - linkType: hard - "micromark@npm:^4.0.0": version: 4.0.0 resolution: "micromark@npm:4.0.0" @@ -12485,18 +13794,6 @@ __metadata: languageName: node linkType: hard -"miller-rabin@npm:^4.0.0": - version: 4.0.1 - resolution: "miller-rabin@npm:4.0.1" - dependencies: - bn.js: "npm:^4.0.0" - brorand: "npm:^1.0.1" - bin: - miller-rabin: bin/miller-rabin - checksum: 10c0/26b2b96f6e49dbcff7faebb78708ed2f5f9ae27ac8cbbf1d7c08f83cf39bed3d418c0c11034dce997da70d135cc0ff6f3a4c15dc452f8e114c11986388a64346 - languageName: node - linkType: hard - "mime-db@npm:1.52.0": version: 1.52.0 resolution: "mime-db@npm:1.52.0" @@ -12511,6 +13808,13 @@ __metadata: languageName: node linkType: hard +"mime-db@npm:^1.54.0": + version: 1.54.0 + resolution: "mime-db@npm:1.54.0" + checksum: 10c0/8d907917bc2a90fa2df842cdf5dfeaf509adc15fe0531e07bb2f6ab15992416479015828d6a74200041c492e42cce3ebf78e5ce714388a0a538ea9c53eece284 + languageName: node + linkType: hard + "mime-db@npm:~1.33.0": version: 1.33.0 resolution: "mime-db@npm:1.33.0" @@ -12518,12 +13822,12 @@ __metadata: languageName: node linkType: hard -"mime-format@npm:2.0.1": - version: 2.0.1 - resolution: "mime-format@npm:2.0.1" +"mime-format@npm:2.0.2": + version: 2.0.2 + resolution: "mime-format@npm:2.0.2" dependencies: charset: "npm:^1.0.0" - checksum: 10c0/f6c0183841c3f48eab9674384270191414112cd334359741fc2c8448ef1e488fe9740cc63dd6bf6eb09ffe5a44a8122ac8e305bc90077afbffea33338944a412 + checksum: 10c0/26f9e2640b95a5a8c972df5b4dae69797cd082220e67d5701d4974f0d076c98cf795f3d8a7c7d79183777576e980e642970879ece77035b44c665950bf494db7 languageName: node linkType: hard @@ -12536,7 +13840,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:2.1.35, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.17, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": +"mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:^2.1.35, mime-types@npm:~2.1.17, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -12545,6 +13849,15 @@ __metadata: languageName: node linkType: hard +"mime-types@npm:^3.0.1": + version: 3.0.2 + resolution: "mime-types@npm:3.0.2" + dependencies: + mime-db: "npm:^1.54.0" + checksum: 10c0/35a0dd1035d14d185664f346efcdb72e93ef7a9b6e9ae808bd1f6358227010267fab52657b37562c80fc888ff76becb2b2938deb5e730818b7983bf8bd359767 + languageName: node + linkType: hard + "mime@npm:1.6.0": version: 1.6.0 resolution: "mime@npm:1.6.0" @@ -12554,6 +13867,15 @@ __metadata: languageName: node linkType: hard +"mime@npm:3.0.0": + version: 3.0.0 + resolution: "mime@npm:3.0.0" + bin: + mime: cli.js + checksum: 10c0/402e792a8df1b2cc41cb77f0dcc46472b7944b7ec29cb5bbcd398624b6b97096728f1239766d3fdeb20551dd8d94738344c195a6ea10c4f906eb0356323b0531 + languageName: node + linkType: hard + "mimic-fn@npm:^2.1.0": version: 2.1.0 resolution: "mimic-fn@npm:2.1.0" @@ -12587,32 +13909,25 @@ __metadata: languageName: node linkType: hard -"mini-css-extract-plugin@npm:^2.9.1": - version: 2.9.2 - resolution: "mini-css-extract-plugin@npm:2.9.2" +"mini-css-extract-plugin@npm:^2.9.2": + version: 2.10.2 + resolution: "mini-css-extract-plugin@npm:2.10.2" dependencies: schema-utils: "npm:^4.0.0" tapable: "npm:^2.2.1" peerDependencies: webpack: ^5.0.0 - checksum: 10c0/5d3218dbd7db48b572925ddac05162a7415bf81b321f1a0c07016ec643cb5720c8a836ae68d45f5de826097a3013b601706c9c5aacb7f610dc2041b271de2ce0 + checksum: 10c0/ba58afb1c090be144b423a3621c4e0d09a9f8f4875410d3bc108915dfcf8e2fd6e550a7f3ba129eb07fd76599157650f86186b09f3ae2c34ccc5b50e82da0aa3 languageName: node linkType: hard -"minimalistic-assert@npm:^1.0.0, minimalistic-assert@npm:^1.0.1": +"minimalistic-assert@npm:^1.0.0": version: 1.0.1 resolution: "minimalistic-assert@npm:1.0.1" checksum: 10c0/96730e5601cd31457f81a296f521eb56036e6f69133c0b18c13fe941109d53ad23a4204d946a0d638d7f3099482a0cec8c9bb6d642604612ce43ee536be3dddd languageName: node linkType: hard -"minimalistic-crypto-utils@npm:^1.0.1": - version: 1.0.1 - resolution: "minimalistic-crypto-utils@npm:1.0.1" - checksum: 10c0/790ecec8c5c73973a4fbf2c663d911033e8494d5fb0960a4500634766ab05d6107d20af896ca2132e7031741f19888154d44b2408ada0852446705441383e9f8 - languageName: node - linkType: hard - "minimatch@npm:3.1.2, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1": version: 3.1.2 resolution: "minimatch@npm:3.1.2" @@ -12622,12 +13937,12 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^5.0.1": - version: 5.1.6 - resolution: "minimatch@npm:5.1.6" +"minimatch@npm:3.1.5": + version: 3.1.5 + resolution: "minimatch@npm:3.1.5" dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10c0/3defdfd230914f22a8da203747c42ee3c405c39d4d37ffda284dac5e45b7e1f6c49aa8be606509002898e73091ff2a3bbfc59c2c6c71d4660609f63aa92f98e3 + brace-expansion: "npm:^1.1.7" + checksum: 10c0/2ecbdc0d33f07bddb0315a8b5afbcb761307a8778b48f0b312418ccbced99f104a2d17d8aca7573433c70e8ccd1c56823a441897a45e384ea76ef401a26ace70 languageName: node linkType: hard @@ -12733,13 +14048,6 @@ __metadata: languageName: node linkType: hard -"mri@npm:^1.1.0": - version: 1.2.0 - resolution: "mri@npm:1.2.0" - checksum: 10c0/a3d32379c2554cf7351db6237ddc18dc9e54e4214953f3da105b97dc3babe0deb3ffe99cf409b38ea47cc29f9430561ba6b53b24ab8f9ce97a4b50409e4a50e7 - languageName: node - linkType: hard - "mrmime@npm:^2.0.0": version: 2.0.0 resolution: "mrmime@npm:2.0.0" @@ -12800,6 +14108,15 @@ __metadata: languageName: node linkType: hard +"nanoid@npm:^3.3.20": + version: 3.3.20 + resolution: "nanoid@npm:3.3.20" + bin: + nanoid: bin/nanoid.cjs + checksum: 10c0/856e8bf3bddb959d65997bd94908be030dbc5e6ed88fb3af2a638e51d1938f4d4f454c7c7231aba340775224f88b8cfd3ce1693c70471bfd05f5b6a2227c0c1e + languageName: node + linkType: hard + "nanoid@npm:^3.3.7": version: 3.3.7 resolution: "nanoid@npm:3.3.7" @@ -12823,6 +14140,13 @@ __metadata: languageName: node linkType: hard +"negotiator@npm:~0.6.4": + version: 0.6.4 + resolution: "negotiator@npm:0.6.4" + checksum: 10c0/3e677139c7fb7628a6f36335bf11a885a62c21d5390204590a1a214a5631fcbe5ea74ef6a610b60afe84b4d975cbe0566a23f20ee17c77c73e74b80032108dea + languageName: node + linkType: hard + "neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" @@ -12830,6 +14154,13 @@ __metadata: languageName: node linkType: hard +"neotraverse@npm:0.6.15": + version: 0.6.15 + resolution: "neotraverse@npm:0.6.15" + checksum: 10c0/44a06fb80e38a4dee9de4458c0e597cdbb6db5be12f54e731c786e41be94d7332cf0ffcf5f635949c4285bf094f9c3b2fceb1cc54fcef0a575283737785d0c9c + languageName: node + linkType: hard + "no-case@npm:^3.0.4": version: 3.0.4 resolution: "no-case@npm:3.0.4" @@ -12921,40 +14252,6 @@ __metadata: languageName: node linkType: hard -"node-polyfill-webpack-plugin@npm:^3.0.0": - version: 3.0.0 - resolution: "node-polyfill-webpack-plugin@npm:3.0.0" - dependencies: - assert: "npm:^2.1.0" - browserify-zlib: "npm:^0.2.0" - buffer: "npm:^6.0.3" - console-browserify: "npm:^1.2.0" - constants-browserify: "npm:^1.0.0" - crypto-browserify: "npm:^3.12.0" - domain-browser: "npm:^4.22.0" - events: "npm:^3.3.0" - https-browserify: "npm:^1.0.0" - os-browserify: "npm:^0.3.0" - path-browserify: "npm:^1.0.1" - process: "npm:^0.11.10" - punycode: "npm:^2.3.0" - querystring-es3: "npm:^0.2.1" - readable-stream: "npm:^4.4.2" - stream-browserify: "npm:^3.0.0" - stream-http: "npm:^3.2.0" - string_decoder: "npm:^1.3.0" - timers-browserify: "npm:^2.0.12" - tty-browserify: "npm:^0.0.1" - type-fest: "npm:^4.4.0" - url: "npm:^0.11.3" - util: "npm:^0.12.5" - vm-browserify: "npm:^1.1.2" - peerDependencies: - webpack: ">=5" - checksum: 10c0/9e47ee6c4aab6f876fa9439debd098124608ed0d58606fa166f97b8a9cd894cc96559f05368cdd85c6f1c2e796fe4c0e74af6d7be9286346d9f78a1844eb1b5c - languageName: node - linkType: hard - "node-readfiles@npm:^0.2.0": version: 0.2.0 resolution: "node-readfiles@npm:0.2.0" @@ -12978,6 +14275,13 @@ __metadata: languageName: node linkType: hard +"node-releases@npm:^2.0.57": + version: 2.0.59 + resolution: "node-releases@npm:2.0.59" + checksum: 10c0/c7fdc6c55b7e5c5fccd6274edf8afc7ab1320d7c01353cde8e60653cfd9488d4d0a5224bb4efd6d77877338f26976ae9dbcf6fb0fad75a37f37b9c22f71c9796 + languageName: node + linkType: hard + "nopt@npm:^8.0.0": version: 8.0.0 resolution: "nopt@npm:8.0.0" @@ -13142,13 +14446,10 @@ __metadata: languageName: node linkType: hard -"object-is@npm:^1.1.5": - version: 1.1.6 - resolution: "object-is@npm:1.1.6" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - checksum: 10c0/506af444c4dce7f8e31f34fc549e2fb8152d6b9c4a30c6e62852badd7f520b579c679af433e7a072f9d78eb7808d230dc12e1cf58da9154dfbf8813099ea0fe0 +"object-inspect@npm:^1.13.3, object-inspect@npm:^1.13.4": + version: 1.13.4 + resolution: "object-inspect@npm:1.13.4" + checksum: 10c0/d7f8711e803b96ea3191c745d6f8056ce1f2496e530e6a19a0e92d89b0fa3c76d910c31f0aa270432db6bd3b2f85500a376a83aaba849a8d518c8845b3211692 languageName: node linkType: hard @@ -13159,7 +14460,7 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.0, object.assign@npm:^4.1.4": +"object.assign@npm:^4.1.0": version: 4.1.5 resolution: "object.assign@npm:4.1.5" dependencies: @@ -13178,7 +14479,7 @@ __metadata: languageName: node linkType: hard -"on-finished@npm:2.4.1": +"on-finished@npm:2.4.1, on-finished@npm:^2.4.1, on-finished@npm:~2.4.1": version: 2.4.1 resolution: "on-finished@npm:2.4.1" dependencies: @@ -13194,6 +14495,13 @@ __metadata: languageName: node linkType: hard +"on-headers@npm:~1.1.0": + version: 1.1.0 + resolution: "on-headers@npm:1.1.0" + checksum: 10c0/2c3b6b0d68ec9adbd561dc2d61c9b14da8ac03d8a2f0fd9e97bdf0600c887d5d97f664ff3be6876cf40cda6e3c587d73a4745e10b426ac50c7664fc5a0dfc0a1 + languageName: node + linkType: hard + "once@npm:^1.3.0": version: 1.4.0 resolution: "once@npm:1.4.0" @@ -13212,6 +14520,18 @@ __metadata: languageName: node linkType: hard +"open@npm:^10.0.3": + version: 10.2.0 + resolution: "open@npm:10.2.0" + dependencies: + default-browser: "npm:^5.2.1" + define-lazy-prop: "npm:^3.0.0" + is-inside-container: "npm:^1.0.0" + wsl-utils: "npm:^0.1.0" + checksum: 10c0/5a36d0c1fd2f74ce553beb427ca8b8494b623fc22c6132d0c1688f246a375e24584ea0b44c67133d9ab774fa69be8e12fbe1ff12504b1142bd960fb09671948f + languageName: node + linkType: hard + "open@npm:^8.0.9, open@npm:^8.4.0": version: 8.4.2 resolution: "open@npm:8.4.2" @@ -13223,29 +14543,38 @@ __metadata: languageName: node linkType: hard -"openapi-to-postmanv2@npm:^4.21.0": - version: 4.22.0 - resolution: "openapi-to-postmanv2@npm:4.22.0" +"openapi-to-postmanv2@npm:^6.0.0": + version: 6.4.0 + resolution: "openapi-to-postmanv2@npm:6.4.0" dependencies: - ajv: "npm:8.11.0" + ajv: "npm:^8.11.0" ajv-draft-04: "npm:1.0.0" ajv-formats: "npm:2.1.1" - async: "npm:3.2.4" + async: "npm:3.2.6" commander: "npm:2.20.3" graphlib: "npm:2.1.8" - js-yaml: "npm:4.1.0" + js-yaml: "npm:4.3.0" + json-pointer: "npm:0.6.2" json-schema-merge-allof: "npm:0.8.1" - lodash: "npm:4.17.21" + lodash: "npm:4.18.1" + neotraverse: "npm:0.6.15" oas-resolver-browser: "npm:2.5.6" object-hash: "npm:3.0.0" + openapi-types: "npm:^12.1.3" path-browserify: "npm:1.0.1" - postman-collection: "npm:^4.4.0" + postman-collection: "npm:^5.0.0" swagger2openapi: "npm:7.0.8" - traverse: "npm:0.6.6" yaml: "npm:1.10.2" bin: openapi2postmanv2: bin/openapi2postmanv2.js - checksum: 10c0/0df4cc2e4e4aac41aa12886964b021fd783da46ea534622aee87157d79dfd72ac2d4999945d8931d5a554f2c5d2d7f4f7a00e3d6188a22e426c25694318c00a8 + checksum: 10c0/f7978f0c1defd4caa9a56a86a208ea36184cd5970d3c91263b2e64e0afe9bda61317cd0b4c1a127547522e7d5af6107c9438fcc220c0c67f777fc7ff3142bcc8 + languageName: node + linkType: hard + +"openapi-types@npm:^12.1.3": + version: 12.1.3 + resolution: "openapi-types@npm:12.1.3" + checksum: 10c0/4ad4eb91ea834c237edfa6ab31394e87e00c888fc2918009763389c00d02342345195d6f302d61c3fd807f17723cd48df29b47b538b68375b3827b3758cd520f languageName: node linkType: hard @@ -13258,13 +14587,6 @@ __metadata: languageName: node linkType: hard -"os-browserify@npm:^0.3.0": - version: 0.3.0 - resolution: "os-browserify@npm:0.3.0" - checksum: 10c0/6ff32cb1efe2bc6930ad0fd4c50e30c38010aee909eba8d65be60af55efd6cbb48f0287e3649b4e3f3a63dce5a667b23c187c4293a75e557f0d5489d735bcf52 - languageName: node - linkType: hard - "p-cancelable@npm:^3.0.0": version: 3.0.0 resolution: "p-cancelable@npm:3.0.0" @@ -13272,6 +14594,13 @@ __metadata: languageName: node linkType: hard +"p-finally@npm:^1.0.0": + version: 1.0.0 + resolution: "p-finally@npm:1.0.0" + checksum: 10c0/6b8552339a71fe7bd424d01d8451eea92d379a711fc62f6b2fe64cad8a472c7259a236c9a22b4733abca0b5666ad503cb497792a0478c5af31ded793d00937e7 + languageName: node + linkType: hard + "p-limit@npm:^2.0.0": version: 2.3.0 resolution: "p-limit@npm:2.3.0" @@ -13342,6 +14671,16 @@ __metadata: languageName: node linkType: hard +"p-queue@npm:^6.6.2": + version: 6.6.2 + resolution: "p-queue@npm:6.6.2" + dependencies: + eventemitter3: "npm:^4.0.4" + p-timeout: "npm:^3.2.0" + checksum: 10c0/5739ecf5806bbeadf8e463793d5e3004d08bb3f6177bd1a44a005da8fd81bb90f80e4633e1fb6f1dfd35ee663a5c0229abe26aebb36f547ad5a858347c7b0d3e + languageName: node + linkType: hard + "p-retry@npm:^4.5.0": version: 4.6.2 resolution: "p-retry@npm:4.6.2" @@ -13352,6 +14691,26 @@ __metadata: languageName: node linkType: hard +"p-retry@npm:^6.2.0": + version: 6.2.1 + resolution: "p-retry@npm:6.2.1" + dependencies: + "@types/retry": "npm:0.12.2" + is-network-error: "npm:^1.0.0" + retry: "npm:^0.13.1" + checksum: 10c0/10d014900107da2c7071ad60fffe4951675f09930b7a91681643ea224ae05649c05001d9e78436d902fe8b116d520dd1f60e72e091de097e2640979d56f3fb60 + languageName: node + linkType: hard + +"p-timeout@npm:^3.2.0": + version: 3.2.0 + resolution: "p-timeout@npm:3.2.0" + dependencies: + p-finally: "npm:^1.0.0" + checksum: 10c0/524b393711a6ba8e1d48137c5924749f29c93d70b671e6db761afa784726572ca06149c715632da8f70c090073afb2af1c05730303f915604fd38ee207b70a61 + languageName: node + linkType: hard + "p-try@npm:^2.0.0": version: 2.2.0 resolution: "p-try@npm:2.2.0" @@ -13378,6 +14737,13 @@ __metadata: languageName: node linkType: hard +"package-manager-detector@npm:^1.8.0": + version: 1.9.0 + resolution: "package-manager-detector@npm:1.9.0" + checksum: 10c0/c901b08e9d284e9b517d27be1783fc279f3e814fac9de4c30441129a3a4b1475b16314ff95b98268daf49e20d5076478c50bc7b1b3ff8a591eb39f03f02dbb16 + languageName: node + linkType: hard + "pako@npm:^0.2.5": version: 0.2.9 resolution: "pako@npm:0.2.9" @@ -13385,10 +14751,10 @@ __metadata: languageName: node linkType: hard -"pako@npm:~1.0.5": - version: 1.0.11 - resolution: "pako@npm:1.0.11" - checksum: 10c0/86dd99d8b34c3930345b8bbeb5e1cd8a05f608eeb40967b293f72fe469d0e9c88b783a8777e4cc7dc7c91ce54c5e93d88ff4b4f060e6ff18408fd21030d9ffbe +"pako@npm:^3.0.1": + version: 3.0.2 + resolution: "pako@npm:3.0.2" + checksum: 10c0/6de8283193fff07382134f1cdcd387b3bc43f2b4d1a04ed086f98183fe0b4fb7a282cd4b58397593794bba2c9d42fd008285344ba086c1f8fde49cd436587d3d languageName: node linkType: hard @@ -13411,20 +14777,6 @@ __metadata: languageName: node linkType: hard -"parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.7": - version: 5.1.7 - resolution: "parse-asn1@npm:5.1.7" - dependencies: - asn1.js: "npm:^4.10.1" - browserify-aes: "npm:^1.2.0" - evp_bytestokey: "npm:^1.0.3" - hash-base: "npm:~3.0" - pbkdf2: "npm:^3.1.2" - safe-buffer: "npm:^5.2.1" - checksum: 10c0/05eb5937405c904eb5a7f3633bab1acc11f4ae3478a07ef5c6d81ce88c3c0e505ff51f9c7b935ebc1265c868343793698fc91025755a895d0276f620f95e8a82 - languageName: node - linkType: hard - "parse-css-color@npm:^0.2.1": version: 0.2.1 resolution: "parse-css-color@npm:0.2.1" @@ -13480,13 +14832,6 @@ __metadata: languageName: node linkType: hard -"parse5@npm:^6.0.0": - version: 6.0.1 - resolution: "parse5@npm:6.0.1" - checksum: 10c0/595821edc094ecbcfb9ddcb46a3e1fe3a718540f8320eff08b8cf6742a5114cce2d46d45f95c26191c11b184dcaf4e2960abcd9c5ed9eb9393ac9a37efcfdecb - languageName: node - linkType: hard - "parse5@npm:^7.0.0": version: 7.1.2 resolution: "parse5@npm:7.1.2" @@ -13520,6 +14865,13 @@ __metadata: languageName: node linkType: hard +"path-data-parser@npm:0.1.0, path-data-parser@npm:^0.1.0": + version: 0.1.0 + resolution: "path-data-parser@npm:0.1.0" + checksum: 10c0/ba22d54669a8bc4a3df27431fe667900685585d1196085b803d0aa4066b83e709bbf2be7c1d2b56e706b49cc698231d55947c22abbfc4843ca424bbf8c985745 + languageName: node + linkType: hard + "path-exists@npm:^3.0.0": version: 3.0.0 resolution: "path-exists@npm:3.0.0" @@ -13609,6 +14961,13 @@ __metadata: languageName: node linkType: hard +"path-to-regexp@npm:~0.1.13": + version: 0.1.13 + resolution: "path-to-regexp@npm:0.1.13" + checksum: 10c0/1cae3921739c154a8926e136185a10c916f79a249b9072a5001b266d96e193860ca03867e8e8cc808b786862d750f427ed93686bc259355442c3407a62deab1a + languageName: node + linkType: hard + "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" @@ -13616,29 +14975,6 @@ __metadata: languageName: node linkType: hard -"path@npm:0.12.7": - version: 0.12.7 - resolution: "path@npm:0.12.7" - dependencies: - process: "npm:^0.11.1" - util: "npm:^0.10.3" - checksum: 10c0/f795ce5438a988a590c7b6dfd450ec9baa1c391a8be4c2dea48baa6e0f5b199e56cd83b8c9ebf3991b81bea58236d2c32bdafe2c17a2e70c3a2e4c69891ade59 - languageName: node - linkType: hard - -"pbkdf2@npm:^3.0.3, pbkdf2@npm:^3.1.2": - version: 3.1.2 - resolution: "pbkdf2@npm:3.1.2" - dependencies: - create-hash: "npm:^1.1.2" - create-hmac: "npm:^1.1.4" - ripemd160: "npm:^2.0.1" - safe-buffer: "npm:^5.0.1" - sha.js: "npm:^2.4.8" - checksum: 10c0/5a30374e87d33fa080a92734d778cf172542cc7e41b96198c4c88763997b62d7850de3fbda5c3111ddf79805ee7c1da7046881c90ac4920b5e324204518b05fd - languageName: node - linkType: hard - "periscopic@npm:^3.0.0": version: 3.1.0 resolution: "periscopic@npm:3.1.0" @@ -13657,7 +14993,7 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.1.0": +"picocolors@npm:^1.1.0, picocolors@npm:^1.1.1": version: 1.1.1 resolution: "picocolors@npm:1.1.1" checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 @@ -13671,6 +15007,13 @@ __metadata: languageName: node linkType: hard +"picomatch@npm:^4.0.4": + version: 4.0.7 + resolution: "picomatch@npm:4.0.7" + checksum: 10c0/beb6ae02c43ae44e84883b90830196d9046b1726ead292adcf7f57945e0bb0d992d68563d87e03b484b6f3c9a5c6defda7523477f047d7f0e663f126cc01787f + languageName: node + linkType: hard + "pirates@npm:^4.0.1": version: 4.0.6 resolution: "pirates@npm:4.0.6" @@ -13696,6 +15039,20 @@ __metadata: languageName: node linkType: hard +"pkijs@npm:^3.3.3": + version: 3.4.1 + resolution: "pkijs@npm:3.4.1" + dependencies: + "@noble/hashes": "npm:1.8.0" + asn1js: "npm:^3.0.6" + bytestreamjs: "npm:^2.0.1" + pvtsutils: "npm:^1.3.6" + pvutils: "npm:^1.1.3" + tslib: "npm:^2.8.1" + checksum: 10c0/9ddcbb05846bf99ee9fd9717a7e5104ba4107eb5706c93a3195f0d2d2edf142db86146f5b0dc2c2caaa969096e4a24758ded5a301f2c7de12dfc1ed4c90f76db + languageName: node + linkType: hard + "pluralize@npm:^8.0.0": version: 8.0.0 resolution: "pluralize@npm:8.0.0" @@ -13703,10 +15060,20 @@ __metadata: languageName: node linkType: hard -"possible-typed-array-names@npm:^1.0.0": - version: 1.0.0 - resolution: "possible-typed-array-names@npm:1.0.0" - checksum: 10c0/d9aa22d31f4f7680e20269db76791b41c3a32c01a373e25f8a4813b4d45f7456bfc2b6d68f752dc4aab0e0bb0721cb3d76fb678c9101cb7a16316664bc2c73fd +"points-on-curve@npm:0.2.0, points-on-curve@npm:^0.2.0": + version: 0.2.0 + resolution: "points-on-curve@npm:0.2.0" + checksum: 10c0/f0d92343fcc2ad1f48334633e580574c1e0e28038a756133e171e537f270d6d64203feada5ee556e36f448a1b46e0306dee07b30f589f4e3ad720f6ee38ef48c + languageName: node + linkType: hard + +"points-on-path@npm:^0.2.1": + version: 0.2.1 + resolution: "points-on-path@npm:0.2.1" + dependencies: + path-data-parser: "npm:0.1.0" + points-on-curve: "npm:0.2.0" + checksum: 10c0/a7010340f9f196976f61838e767bb7b0b7f6273ab4fb9eb37c61001fe26fbfc3fcd63c96d5e85b9a4ab579213ab366f2ddaaf60e2a9253e2b91a62db33f395ba languageName: node linkType: hard @@ -13744,18 +15111,18 @@ __metadata: languageName: node linkType: hard -"postcss-color-functional-notation@npm:^7.0.6": - version: 7.0.6 - resolution: "postcss-color-functional-notation@npm:7.0.6" +"postcss-color-functional-notation@npm:^7.0.12": + version: 7.0.12 + resolution: "postcss-color-functional-notation@npm:7.0.12" dependencies: - "@csstools/css-color-parser": "npm:^3.0.6" - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/css-color-parser": "npm:^3.1.0" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" + "@csstools/postcss-progressive-custom-properties": "npm:^4.2.1" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/15f6dfc9a24d6f5186fb054623a92bcf9e804f4eaa35b339551a8048cdb0c7bd2e4655fdbb09a0c9a89f854e9fb1d71e298e8749597660ac034e79bd0d38d7dd + checksum: 10c0/dc80ba1a956ae9b396596bda72d9bdb92de96874378a38ba4e2177ffa35339dc76d894920bb013b6f10c9b75cfb41778e09956a438c2e9ea41b684f766c55f4a languageName: node linkType: hard @@ -13809,46 +15176,46 @@ __metadata: languageName: node linkType: hard -"postcss-custom-media@npm:^11.0.5": - version: 11.0.5 - resolution: "postcss-custom-media@npm:11.0.5" +"postcss-custom-media@npm:^11.0.6": + version: 11.0.6 + resolution: "postcss-custom-media@npm:11.0.6" dependencies: - "@csstools/cascade-layer-name-parser": "npm:^2.0.4" - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/media-query-list-parser": "npm:^4.0.2" + "@csstools/cascade-layer-name-parser": "npm:^2.0.5" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" + "@csstools/media-query-list-parser": "npm:^4.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/5ba1ca0383818e83d5f6f398a2b0c12cfda066b5d552adfc0e030a2c5f8690c2cc6224f9a1832a9c780dae3fd8d00d78c4a5c88eb36b731da1752f0c3917d488 + checksum: 10c0/62dcb2858fd490d90aab32062621d58892a7b2a54948ee63af81a2cd61807a11815d28d4ef6bc800c5e142ac73098f7e56822c7cc63192eb20d5b16071543a73 languageName: node linkType: hard -"postcss-custom-properties@npm:^14.0.4": - version: 14.0.4 - resolution: "postcss-custom-properties@npm:14.0.4" +"postcss-custom-properties@npm:^14.0.6": + version: 14.0.6 + resolution: "postcss-custom-properties@npm:14.0.6" dependencies: - "@csstools/cascade-layer-name-parser": "npm:^2.0.4" - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/cascade-layer-name-parser": "npm:^2.0.5" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" "@csstools/utilities": "npm:^2.0.0" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/5b101ee71289657cc2e5a16f4912009c10441052e2c54bd9e4f3d4d72b652bab56adb662ddaa96881413e375cf9852e2159b3c778d953442ce86efb781c3b2bf + checksum: 10c0/0eeef77bc713551f5cb8fa5982d24da4e854075f3af020f1c94366c47a23a4cc225ebfecc978bdb17f00ee0bdee9d2c784e0d01adc64a447321e408abbe2c83b languageName: node linkType: hard -"postcss-custom-selectors@npm:^8.0.4": - version: 8.0.4 - resolution: "postcss-custom-selectors@npm:8.0.4" +"postcss-custom-selectors@npm:^8.0.5": + version: 8.0.5 + resolution: "postcss-custom-selectors@npm:8.0.5" dependencies: - "@csstools/cascade-layer-name-parser": "npm:^2.0.4" - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/cascade-layer-name-parser": "npm:^2.0.5" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/09d494d2580d0a99f57684f79793d03358286c32460b61a84063c33bdde24865771cb1205efe9a8e26a508be24eba4fb93fc7f1e96ba21ca96a5d17fadb24863 + checksum: 10c0/bd8f2f85bbec4bd56ff408cb699d9fe649e2af0db82d5752eee05481ae522f06f5a47950ca22fcb4c8601071c03346df67cf20b0b0bcade32ce58d07ebaf9b32 languageName: node linkType: hard @@ -13910,16 +15277,16 @@ __metadata: languageName: node linkType: hard -"postcss-double-position-gradients@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-double-position-gradients@npm:6.0.0" +"postcss-double-position-gradients@npm:^6.0.4": + version: 6.0.4 + resolution: "postcss-double-position-gradients@npm:6.0.4" dependencies: - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/postcss-progressive-custom-properties": "npm:^4.2.1" "@csstools/utilities": "npm:^2.0.0" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/7a0e119df1b4af59d169b1a9dfc563275ce29b4ae5e6a6c90be29a7a59272ebc55bf3b2ed05a962f73b03194f7a88f6fe738e65c1659d43351fbdc705cc951ad + checksum: 10c0/6dbbe7a3855e84a9319df434e210225f6dfa7262e5959611355f1769c2c9d30d37a19737712f20eac6354876fff4ba556d8d0b12a90c78d8ab97c9a8da534a7c languageName: node linkType: hard @@ -13975,22 +15342,22 @@ __metadata: languageName: node linkType: hard -"postcss-lab-function@npm:^7.0.6": - version: 7.0.6 - resolution: "postcss-lab-function@npm:7.0.6" +"postcss-lab-function@npm:^7.0.12": + version: 7.0.12 + resolution: "postcss-lab-function@npm:7.0.12" dependencies: - "@csstools/css-color-parser": "npm:^3.0.6" - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/css-color-parser": "npm:^3.1.0" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" + "@csstools/postcss-progressive-custom-properties": "npm:^4.2.1" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/8b8d498dbc939ee79737b29232b39d09cbda26cc92e8926fb74fe56a1bb05af1198e85a67a822f39cc69109ac6757a6ff7b20842ba5ffafce891abc9bc1c3c68 + checksum: 10c0/de39b59da3b97c18d055d81fba68993e93253184ed76f103c888273584f868c551d047814dd54445980a1bdc5987e8f8af141383d84ecc641e5a6ee7bd901095 languageName: node linkType: hard -"postcss-loader@npm:^7.3.3": +"postcss-loader@npm:^7.3.3, postcss-loader@npm:^7.3.4": version: 7.3.4 resolution: "postcss-loader@npm:7.3.4" dependencies: @@ -14004,14 +15371,14 @@ __metadata: languageName: node linkType: hard -"postcss-logical@npm:^8.0.0": - version: 8.0.0 - resolution: "postcss-logical@npm:8.0.0" +"postcss-logical@npm:^8.1.0": + version: 8.1.0 + resolution: "postcss-logical@npm:8.1.0" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/2caa04e45227ab9dec728416ccde47514e1c347ee72aac58e13ecee3bc7fbc8b53e3fe4f1e2e4396432feb1d54e70a1f06ec5a74d60e84bafff05ab82f196475 + checksum: 10c0/0e2e9e901d8a550db7f682d46b1f7e4f363c1ada061dc8e4548e2b563c5e39f3684a2d7c3f11fe061188782bca37874e34967fc6179fa6d98a49ff66a0076d27 languageName: node linkType: hard @@ -14145,16 +15512,16 @@ __metadata: languageName: node linkType: hard -"postcss-nesting@npm:^13.0.1": - version: 13.0.1 - resolution: "postcss-nesting@npm:13.0.1" +"postcss-nesting@npm:^13.0.2": + version: 13.0.2 + resolution: "postcss-nesting@npm:13.0.2" dependencies: - "@csstools/selector-resolve-nested": "npm:^3.0.0" + "@csstools/selector-resolve-nested": "npm:^3.1.0" "@csstools/selector-specificity": "npm:^5.0.0" postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/549307c272cdd4cb5105d8fbcd582f15a1cb74e5bba240b05b27f77fe0422730be966699a49a9ad15fd9d1bc551c1edbaefb21a69686a9b131b585dbc9d90ebf + checksum: 10c0/bfa0578b3b686c6374f5a7b2f6ef955cb7e13400de95a919975a982ae43c1e25db37385618f210715ff15393dc7ff8c26c7b156f06b8fb3118a426099cf7f1f2 languageName: node linkType: hard @@ -14308,66 +15675,74 @@ __metadata: languageName: node linkType: hard -"postcss-preset-env@npm:^10.1.0": - version: 10.1.1 - resolution: "postcss-preset-env@npm:10.1.1" +"postcss-preset-env@npm:^10.2.1": + version: 10.6.1 + resolution: "postcss-preset-env@npm:10.6.1" dependencies: - "@csstools/postcss-cascade-layers": "npm:^5.0.1" - "@csstools/postcss-color-function": "npm:^4.0.6" - "@csstools/postcss-color-mix-function": "npm:^3.0.6" - "@csstools/postcss-content-alt-text": "npm:^2.0.4" - "@csstools/postcss-exponential-functions": "npm:^2.0.5" + "@csstools/postcss-alpha-function": "npm:^1.0.1" + "@csstools/postcss-cascade-layers": "npm:^5.0.2" + "@csstools/postcss-color-function": "npm:^4.0.12" + "@csstools/postcss-color-function-display-p3-linear": "npm:^1.0.1" + "@csstools/postcss-color-mix-function": "npm:^3.0.12" + "@csstools/postcss-color-mix-variadic-function-arguments": "npm:^1.0.2" + "@csstools/postcss-content-alt-text": "npm:^2.0.8" + "@csstools/postcss-contrast-color-function": "npm:^2.0.12" + "@csstools/postcss-exponential-functions": "npm:^2.0.9" "@csstools/postcss-font-format-keywords": "npm:^4.0.0" - "@csstools/postcss-gamut-mapping": "npm:^2.0.6" - "@csstools/postcss-gradients-interpolation-method": "npm:^5.0.6" - "@csstools/postcss-hwb-function": "npm:^4.0.6" - "@csstools/postcss-ic-unit": "npm:^4.0.0" - "@csstools/postcss-initial": "npm:^2.0.0" - "@csstools/postcss-is-pseudo-class": "npm:^5.0.1" - "@csstools/postcss-light-dark-function": "npm:^2.0.7" + "@csstools/postcss-gamut-mapping": "npm:^2.0.11" + "@csstools/postcss-gradients-interpolation-method": "npm:^5.0.12" + "@csstools/postcss-hwb-function": "npm:^4.0.12" + "@csstools/postcss-ic-unit": "npm:^4.0.4" + "@csstools/postcss-initial": "npm:^2.0.1" + "@csstools/postcss-is-pseudo-class": "npm:^5.0.3" + "@csstools/postcss-light-dark-function": "npm:^2.0.11" "@csstools/postcss-logical-float-and-clear": "npm:^3.0.0" "@csstools/postcss-logical-overflow": "npm:^2.0.0" "@csstools/postcss-logical-overscroll-behavior": "npm:^2.0.0" "@csstools/postcss-logical-resize": "npm:^3.0.0" - "@csstools/postcss-logical-viewport-units": "npm:^3.0.3" - "@csstools/postcss-media-minmax": "npm:^2.0.5" - "@csstools/postcss-media-queries-aspect-ratio-number-values": "npm:^3.0.4" + "@csstools/postcss-logical-viewport-units": "npm:^3.0.4" + "@csstools/postcss-media-minmax": "npm:^2.0.9" + "@csstools/postcss-media-queries-aspect-ratio-number-values": "npm:^3.0.5" "@csstools/postcss-nested-calc": "npm:^4.0.0" - "@csstools/postcss-normalize-display-values": "npm:^4.0.0" - "@csstools/postcss-oklab-function": "npm:^4.0.6" - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" - "@csstools/postcss-random-function": "npm:^1.0.1" - "@csstools/postcss-relative-color-syntax": "npm:^3.0.6" + "@csstools/postcss-normalize-display-values": "npm:^4.0.1" + "@csstools/postcss-oklab-function": "npm:^4.0.12" + "@csstools/postcss-position-area-property": "npm:^1.0.0" + "@csstools/postcss-progressive-custom-properties": "npm:^4.2.1" + "@csstools/postcss-property-rule-prelude-list": "npm:^1.0.0" + "@csstools/postcss-random-function": "npm:^2.0.1" + "@csstools/postcss-relative-color-syntax": "npm:^3.0.12" "@csstools/postcss-scope-pseudo-class": "npm:^4.0.1" - "@csstools/postcss-sign-functions": "npm:^1.1.0" - "@csstools/postcss-stepped-value-functions": "npm:^4.0.5" - "@csstools/postcss-text-decoration-shorthand": "npm:^4.0.1" - "@csstools/postcss-trigonometric-functions": "npm:^4.0.5" + "@csstools/postcss-sign-functions": "npm:^1.1.4" + "@csstools/postcss-stepped-value-functions": "npm:^4.0.9" + "@csstools/postcss-syntax-descriptor-syntax-production": "npm:^1.0.1" + "@csstools/postcss-system-ui-font-family": "npm:^1.0.0" + "@csstools/postcss-text-decoration-shorthand": "npm:^4.0.3" + "@csstools/postcss-trigonometric-functions": "npm:^4.0.9" "@csstools/postcss-unset-value": "npm:^4.0.0" - autoprefixer: "npm:^10.4.19" - browserslist: "npm:^4.23.1" + autoprefixer: "npm:^10.4.23" + browserslist: "npm:^4.28.1" css-blank-pseudo: "npm:^7.0.1" - css-has-pseudo: "npm:^7.0.1" + css-has-pseudo: "npm:^7.0.3" css-prefers-color-scheme: "npm:^10.0.0" - cssdb: "npm:^8.2.1" + cssdb: "npm:^8.6.0" postcss-attribute-case-insensitive: "npm:^7.0.1" postcss-clamp: "npm:^4.1.0" - postcss-color-functional-notation: "npm:^7.0.6" + postcss-color-functional-notation: "npm:^7.0.12" postcss-color-hex-alpha: "npm:^10.0.0" postcss-color-rebeccapurple: "npm:^10.0.0" - postcss-custom-media: "npm:^11.0.5" - postcss-custom-properties: "npm:^14.0.4" - postcss-custom-selectors: "npm:^8.0.4" + postcss-custom-media: "npm:^11.0.6" + postcss-custom-properties: "npm:^14.0.6" + postcss-custom-selectors: "npm:^8.0.5" postcss-dir-pseudo-class: "npm:^9.0.1" - postcss-double-position-gradients: "npm:^6.0.0" + postcss-double-position-gradients: "npm:^6.0.4" postcss-focus-visible: "npm:^10.0.1" postcss-focus-within: "npm:^9.0.1" postcss-font-variant: "npm:^5.0.0" postcss-gap-properties: "npm:^6.0.0" postcss-image-set-function: "npm:^7.0.0" - postcss-lab-function: "npm:^7.0.6" - postcss-logical: "npm:^8.0.0" - postcss-nesting: "npm:^13.0.1" + postcss-lab-function: "npm:^7.0.12" + postcss-logical: "npm:^8.1.0" + postcss-nesting: "npm:^13.0.2" postcss-opacity-percentage: "npm:^3.0.0" postcss-overflow-shorthand: "npm:^6.0.0" postcss-page-break: "npm:^3.0.4" @@ -14377,7 +15752,7 @@ __metadata: postcss-selector-not: "npm:^8.0.1" peerDependencies: postcss: ^8.4 - checksum: 10c0/99931117735a66827c7318be023ddb614990457617ccbe7fd2fdc1f10345554652df180d4842768d68d57e14fc0be4d86d0b413c65e77e02db5511e57ed07c4f + checksum: 10c0/e8da96f208918ebc0dc9acc8ba8961a92569f1d130b29abe25adaf7dbd56ef29fc6f778b75964c80fe7f3469012c763ea9447e5c2f559a002a155bc0462cce35 languageName: node linkType: hard @@ -14527,45 +15902,55 @@ __metadata: languageName: node linkType: hard -"postman-code-generators@npm:1.14.0": - version: 1.14.0 - resolution: "postman-code-generators@npm:1.14.0" +"postcss@npm:^8.5.4": + version: 8.5.30 + resolution: "postcss@npm:8.5.30" dependencies: - async: "npm:3.2.2" - detect-package-manager: "npm:3.0.2" - lodash: "npm:4.17.21" - path: "npm:0.12.7" - postman-collection: "npm:^4.4.0" - shelljs: "npm:0.8.5" - checksum: 10c0/ffdfd23835c45aeba18a950eaf4157ac5af953c2de104510dd53112feb36848f452e9393349adc6f2cd367712fec20f131ec6c9caf37651e3fe8af04f792204f + nanoid: "npm:^3.3.20" + picocolors: "npm:^1.1.1" + source-map-js: "npm:^1.2.2" + checksum: 10c0/219cdc50ba3f2b6d0f8b779c4939514cb9d9f53cc9eb92dae1a06f2d6eb910b2ce339a3ee93e7c893b89e50241509fd92c04f0639af1cdf41a1e13983a476029 languageName: node linkType: hard -"postman-collection@npm:^4.4.0": - version: 4.4.0 - resolution: "postman-collection@npm:4.4.0" +"postman-code-generators@npm:^2.0.0": + version: 2.1.1 + resolution: "postman-code-generators@npm:2.1.1" + dependencies: + async: "npm:^3.2.2" + detect-package-manager: "npm:^3.0.2" + lodash: "npm:^4.17.21" + postman-collection: "npm:^5.0.0" + shelljs: "npm:^0.8.5" + checksum: 10c0/903d4311ac1f1995bc2d79c0f2ae7833223873972bdb330129e4cd022a33b251da8de363ab96431a867007a4fe821f7f05f46e3c2ade5607fcedaf8ca8593ab8 + languageName: node + linkType: hard + +"postman-collection@npm:^5.0.0, postman-collection@npm:^5.0.2": + version: 5.3.1 + resolution: "postman-collection@npm:5.3.1" dependencies: "@faker-js/faker": "npm:5.5.3" file-type: "npm:3.9.0" http-reasons: "npm:0.1.0" iconv-lite: "npm:0.6.3" liquid-json: "npm:0.3.1" - lodash: "npm:4.17.21" - mime-format: "npm:2.0.1" - mime-types: "npm:2.1.35" - postman-url-encoder: "npm:3.0.5" - semver: "npm:7.5.4" + lodash: "npm:4.18.1" + mime: "npm:3.0.0" + mime-format: "npm:2.0.2" + postman-url-encoder: "npm:3.0.8" + semver: "npm:7.7.1" uuid: "npm:8.3.2" - checksum: 10c0/d8a636deff3752d79ea03fe64b39e9c7bb635f5dbad10def2e1ed02dd87e51274994e0a5eb65bd0882240e8687297e85b2f04b3242a4f3523869de75b4b1dc53 + checksum: 10c0/fe4045b389fda908b5581307122ef740ccc8110aed0b160efe6af542dac79f867c34b911cdb4b42183259ee1dc88df275ae0a0f3ec32511576d19899d93400f8 languageName: node linkType: hard -"postman-url-encoder@npm:3.0.5": - version: 3.0.5 - resolution: "postman-url-encoder@npm:3.0.5" +"postman-url-encoder@npm:3.0.8": + version: 3.0.8 + resolution: "postman-url-encoder@npm:3.0.8" dependencies: - punycode: "npm:^2.1.1" - checksum: 10c0/b7d389c1e7edd27e3992685caf0443fde6f47c92cb26fd9536fccbdf4f3a8bb4e723940c6fcb63eb69db72221f472143b3db3b4c28d4e0588d766f1668624b4d + punycode: "npm:^2.3.1" + checksum: 10c0/ae185e1162bf6f25be48af7272fb4cdbed261076530c8c0ead0b189a03056f5613ffdc93789a78d8ca63c0dc5ce39030a2f1d35bb3f4ce22364e520bb02d5f52 languageName: node linkType: hard @@ -14586,19 +15971,19 @@ __metadata: languageName: node linkType: hard -"prism-react-renderer@npm:2.1.0": - version: 2.1.0 - resolution: "prism-react-renderer@npm:2.1.0" +"prism-react-renderer@npm:2.4.1, prism-react-renderer@npm:^2.4.0, prism-react-renderer@npm:^2.4.1": + version: 2.4.1 + resolution: "prism-react-renderer@npm:2.4.1" dependencies: "@types/prismjs": "npm:^1.26.0" - clsx: "npm:^1.2.1" + clsx: "npm:^2.0.0" peerDependencies: react: ">=16.0.0" - checksum: 10c0/3785026a9399b6e178f097d856159d2305af094dea3ac221dd07aee1553cd0110c41414a75778f48512e87599f03500aacb74d26a70e07e5b71335389e713c56 + checksum: 10c0/ebbe8feb975224344bbdd046b3a937d121592dbe4b8f22ba0be31f5af37b9a8219f441138ef6cab1c5b96f2aa6b529015200959f7e5e85b60ca69c81d35edcd4 languageName: node linkType: hard -"prism-react-renderer@npm:^2.0.6, prism-react-renderer@npm:^2.3.0": +"prism-react-renderer@npm:^2.3.0": version: 2.3.1 resolution: "prism-react-renderer@npm:2.3.1" dependencies: @@ -14631,7 +16016,7 @@ __metadata: languageName: node linkType: hard -"process@npm:^0.11.1, process@npm:^0.11.10": +"process@npm:^0.11.10": version: 0.11.10 resolution: "process@npm:0.11.10" checksum: 10c0/40c3ce4b7e6d4b8c3355479df77aeed46f81b279818ccdc500124e6a5ab882c0cc81ff7ea16384873a95a74c4570b01b120f287abbdd4c877931460eca6084b3 @@ -14658,7 +16043,7 @@ __metadata: languageName: node linkType: hard -"prop-types@npm:^15.0.0, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": +"prop-types@npm:^15.6.2, prop-types@npm:^15.7.2": version: 15.8.1 resolution: "prop-types@npm:15.8.1" dependencies: @@ -14693,17 +16078,10 @@ __metadata: languageName: node linkType: hard -"public-encrypt@npm:^4.0.0": - version: 4.0.3 - resolution: "public-encrypt@npm:4.0.3" - dependencies: - bn.js: "npm:^4.1.0" - browserify-rsa: "npm:^4.0.0" - create-hash: "npm:^1.1.0" - parse-asn1: "npm:^5.0.0" - randombytes: "npm:^2.0.1" - safe-buffer: "npm:^5.1.2" - checksum: 10c0/6c2cc19fbb554449e47f2175065d6b32f828f9b3badbee4c76585ac28ae8641aafb9bb107afc430c33c5edd6b05dbe318df4f7d6d7712b1093407b11c4280700 +"proxy-from-env@npm:^2.1.0": + version: 2.1.0 + resolution: "proxy-from-env@npm:2.1.0" + checksum: 10c0/ed01729fd4d094eab619cd7e17ce3698b3413b31eb102c4904f9875e677cd207392795d5b4adee9cec359dfd31c44d5ad7595a3a3ad51c40250e141512281c58 languageName: node linkType: hard @@ -14714,7 +16092,7 @@ __metadata: languageName: node linkType: hard -"punycode@npm:^2.1.0, punycode@npm:^2.1.1, punycode@npm:^2.3.0": +"punycode@npm:^2.1.0, punycode@npm:^2.3.1": version: 2.3.1 resolution: "punycode@npm:2.3.1" checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 @@ -14730,6 +16108,22 @@ __metadata: languageName: node linkType: hard +"pvtsutils@npm:^1.3.6": + version: 1.3.6 + resolution: "pvtsutils@npm:1.3.6" + dependencies: + tslib: "npm:^2.8.1" + checksum: 10c0/b1b42646370505ccae536dcffa662303b2c553995211330c8e39dec9ab8c197585d7751c2c5b9ab2f186feda0219d9bb23c34ee1e565573be96450f79d89a13c + languageName: node + linkType: hard + +"pvutils@npm:^1.1.3, pvutils@npm:^1.1.5": + version: 1.2.0 + resolution: "pvutils@npm:1.2.0" + checksum: 10c0/1206766f0b9947fd44a629e2ed7945fb5d1d8ee0f31f032ec58d60cec2165b0b3afb11bf3727215348bf19132ca34986302680b5930d45b0a0d23745fd54224b + languageName: node + linkType: hard + "qs@npm:6.11.0": version: 6.11.0 resolution: "qs@npm:6.11.0" @@ -14748,10 +16142,13 @@ __metadata: languageName: node linkType: hard -"querystring-es3@npm:^0.2.1": - version: 0.2.1 - resolution: "querystring-es3@npm:0.2.1" - checksum: 10c0/476938c1adb45c141f024fccd2ffd919a3746e79ed444d00e670aad68532977b793889648980e7ca7ff5ffc7bfece623118d0fbadcaf217495eeb7059ae51580 +"qs@npm:~6.16.0": + version: 6.16.1 + resolution: "qs@npm:6.16.1" + dependencies: + es-define-property: "npm:^1.0.1" + side-channel: "npm:^1.1.1" + checksum: 10c0/84ee9124b251ab2953132fbea1d70c966aa6e6496cccabedbbb83afa412bf4177bddebc779ca3ddafe23da83b2f593d530b41be6a726e971404fabb20ff22c94 languageName: node linkType: hard @@ -14778,7 +16175,7 @@ __metadata: languageName: node linkType: hard -"randombytes@npm:^2.0.0, randombytes@npm:^2.0.1, randombytes@npm:^2.0.5, randombytes@npm:^2.1.0": +"randombytes@npm:^2.1.0": version: 2.1.0 resolution: "randombytes@npm:2.1.0" dependencies: @@ -14787,16 +16184,6 @@ __metadata: languageName: node linkType: hard -"randomfill@npm:^1.0.3": - version: 1.0.4 - resolution: "randomfill@npm:1.0.4" - dependencies: - randombytes: "npm:^2.0.5" - safe-buffer: "npm:^5.1.0" - checksum: 10c0/11aeed35515872e8f8a2edec306734e6b74c39c46653607f03c68385ab8030e2adcc4215f76b5e4598e028c4750d820afd5c65202527d831d2a5f207fe2bc87c - languageName: node - linkType: hard - "range-parser@npm:1.2.0": version: 1.2.0 resolution: "range-parser@npm:1.2.0" @@ -14823,6 +16210,18 @@ __metadata: languageName: node linkType: hard +"raw-body@npm:~2.5.3": + version: 2.5.3 + resolution: "raw-body@npm:2.5.3" + dependencies: + bytes: "npm:~3.1.2" + http-errors: "npm:~2.0.1" + iconv-lite: "npm:~0.4.24" + unpipe: "npm:~1.0.0" + checksum: 10c0/449844344fc90547fb994383a494b83300e4f22199f146a79f68d78a199a8f2a923ea9fd29c3be979bfd50291a3884733619ffc15ba02a32e703b612f8d3f74a + languageName: node + linkType: hard + "rc@npm:1.2.8": version: 1.2.8 resolution: "rc@npm:1.2.8" @@ -14869,15 +16268,14 @@ __metadata: languageName: node linkType: hard -"react-dom@npm:18.3.1": - version: 18.3.1 - resolution: "react-dom@npm:18.3.1" +"react-dom@npm:19.3.1": + version: 19.3.1 + resolution: "react-dom@npm:19.3.1" dependencies: - loose-envify: "npm:^1.1.0" - scheduler: "npm:^0.23.2" + scheduler: "npm:^0.28.0" peerDependencies: - react: ^18.3.1 - checksum: 10c0/a752496c1941f958f2e8ac56239172296fcddce1365ce45222d04a1947e0cc5547df3e8447f855a81d6d39f008d7c32eab43db3712077f09e3f67c4874973e85 + react: ^19.3.1 + checksum: 10c0/382700916313b2ebc46acee80642f300bb8601eac6a9e7fefade5b8b30e66b05bf3aaa56a3c964589fcd578d27b486e847470c2697d879264e766661ff49fac7 languageName: node linkType: hard @@ -14908,6 +16306,22 @@ __metadata: languageName: node linkType: hard +"react-helmet-async@npm:@slorber/react-helmet-async@1.3.0": + version: 1.3.0 + resolution: "@slorber/react-helmet-async@npm:1.3.0" + dependencies: + "@babel/runtime": "npm:^7.12.5" + invariant: "npm:^2.2.4" + prop-types: "npm:^15.7.2" + react-fast-compare: "npm:^3.2.0" + shallowequal: "npm:^1.1.0" + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10c0/7a13470a0d27d6305657c7fa6b066443c94acdb22bd0decca772298bc852ce04fdc65f1207f0d546995bf7d4ca09e21c81f96b4954544937c01eda82e2caa142 + languageName: node + linkType: hard + "react-helmet-async@npm:^1.3.0": version: 1.3.0 resolution: "react-helmet-async@npm:1.3.0" @@ -14924,12 +16338,16 @@ __metadata: languageName: node linkType: hard -"react-hook-form@npm:^7.43.8": - version: 7.52.1 - resolution: "react-hook-form@npm:7.52.1" +"react-hook-form@npm:^7.59.0": + version: 7.90.0 + resolution: "react-hook-form@npm:7.90.0" peerDependencies: + "@types/react": "*" react: ^16.8.0 || ^17 || ^18 || ^19 - checksum: 10c0/68f21daa66f3c2b87c83f2f9b1dbd160a856b24e9315263af24fee8737b62336dc7cc43e09c581ff957ed032a3ac2355f69b1c1d32d89893a6e1f601112eacfd + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/4278859ea6d1ed9288eade929255a21129a726e097121a9b6b290fc33e296d539e3cb290e3d07de37f3f5cc9b84722c1acf23d8657570729a6264230318b792a languageName: node linkType: hard @@ -14940,26 +16358,12 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^17.0.2": - version: 17.0.2 - resolution: "react-is@npm:17.0.2" - checksum: 10c0/2bdb6b93fbb1820b024b496042cce405c57e2f85e777c9aabd55f9b26d145408f9f74f5934676ffdc46f3dcff656d78413a6e43968e7b3f92eea35b3052e9053 - languageName: node - linkType: hard - -"react-is@npm:^18.0.0": - version: 18.3.1 - resolution: "react-is@npm:18.3.1" - checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 - languageName: node - linkType: hard - -"react-json-view-lite@npm:^1.2.0": - version: 1.4.0 - resolution: "react-json-view-lite@npm:1.4.0" +"react-json-view-lite@npm:^2.3.0": + version: 2.5.0 + resolution: "react-json-view-lite@npm:2.5.0" peerDependencies: - react: ^16.13.1 || ^17.0.0 || ^18.0.0 - checksum: 10c0/80dd21b14f9dcd93b2f473084aaa934594834a98ae2ed5725c98fae34486226d2eaa69a0bc4233f89b7bab4825e2d393efd6f7d39d59aa37a5bb44a61785f7e5 + react: ^18.0.0 || ^19.0.0 + checksum: 10c0/8ecaa23d2fddea03f84892ca96577c5416d60a59ed2cad01dff648a60d25b799dac75dea1771e2b9b639ad026ce1efa7b44e6e636bf497b1d6ea0bac5962b96d languageName: node linkType: hard @@ -14970,17 +16374,17 @@ __metadata: languageName: node linkType: hard -"react-live@npm:^4.0.0": - version: 4.1.7 - resolution: "react-live@npm:4.1.7" +"react-live@npm:^4.1.8": + version: 4.1.8 + resolution: "react-live@npm:4.1.8" dependencies: - prism-react-renderer: "npm:^2.0.6" - sucrase: "npm:^3.31.0" + prism-react-renderer: "npm:^2.4.0" + sucrase: "npm:^3.35.0" use-editable: "npm:^2.3.3" peerDependencies: react: ">=18.0.0" react-dom: ">=18.0.0" - checksum: 10c0/728a51cb0b92774076e4592f9b3cbc2af4afac1da549dbb55723728324bdc1968d3f7b268b5dd92929dcc9d3aa1fd1265f7e912b5ee6fd4fe9b5b77898b50237 + checksum: 10c0/fa96ca176bc9074e4892d6a079b94488ba74e95907ea187678afb17e4a23cc7760c3774ef17f4429d2ba562f1fda852a822e18a161ef386676371c56a7585970 languageName: node linkType: hard @@ -14996,6 +16400,18 @@ __metadata: languageName: node linkType: hard +"react-loadable-ssr-addon-v5-slorber@npm:^1.0.3": + version: 1.0.3 + resolution: "react-loadable-ssr-addon-v5-slorber@npm:1.0.3" + dependencies: + "@babel/runtime": "npm:^7.10.3" + peerDependencies: + react-loadable: "*" + webpack: ">=4.41.1 || 5.x" + checksum: 10c0/6f7af924ad0187c41925dda948587452e30b6d5306465468795daa0382524406e6421dcf5be100a4d285dcb0acc916fcce511a35865eb53ab2d7306ecb525f32 + languageName: node + linkType: hard + "react-loadable@npm:@docusaurus/react-loadable@6.0.0": version: 6.0.0 resolution: "@docusaurus/react-loadable@npm:6.0.0" @@ -15014,37 +16430,12 @@ __metadata: languageName: node linkType: hard -"react-markdown@npm:^8.0.1": - version: 8.0.7 - resolution: "react-markdown@npm:8.0.7" - dependencies: - "@types/hast": "npm:^2.0.0" - "@types/prop-types": "npm:^15.0.0" - "@types/unist": "npm:^2.0.0" - comma-separated-tokens: "npm:^2.0.0" - hast-util-whitespace: "npm:^2.0.0" - prop-types: "npm:^15.0.0" - property-information: "npm:^6.0.0" - react-is: "npm:^18.0.0" - remark-parse: "npm:^10.0.0" - remark-rehype: "npm:^10.0.0" - space-separated-tokens: "npm:^2.0.0" - style-to-object: "npm:^0.4.0" - unified: "npm:^10.0.0" - unist-util-visit: "npm:^4.0.0" - vfile: "npm:^5.0.0" - peerDependencies: - "@types/react": ">=16" - react: ">=16" - checksum: 10c0/016617fbd2f4c03c5ae017fe39e89202f2ff536b4921dc1a5f7283d4b9d5157f20797adda75a8c59a06787ad0bc8841e2e437915aec645ce528e0a04a6d450ac - languageName: node - linkType: hard - -"react-markdown@npm:^9.0.0": - version: 9.0.1 - resolution: "react-markdown@npm:9.0.1" +"react-markdown@npm:10.1.0, react-markdown@npm:^10.1.0": + version: 10.1.0 + resolution: "react-markdown@npm:10.1.0" dependencies: "@types/hast": "npm:^3.0.0" + "@types/mdast": "npm:^4.0.0" devlop: "npm:^1.0.0" hast-util-to-jsx-runtime: "npm:^2.0.0" html-url-attributes: "npm:^3.0.0" @@ -15057,43 +16448,41 @@ __metadata: peerDependencies: "@types/react": ">=18" react: ">=18" - checksum: 10c0/3a3895dbd56647bc864b8da46dd575e71a9e609eb1e43fea8e8e6209d86e208eddd5b07bf8d7b5306a194b405440760a8d134aebd5a4ce5dc7dee4299e84db96 + checksum: 10c0/4a5dc7d15ca6d05e9ee95318c1904f83b111a76f7588c44f50f1d54d4c97193b84e4f64c4b592057c989228238a2590306cedd0c4d398e75da49262b2b5ae1bf languageName: node linkType: hard -"react-modal@npm:^3.15.1": - version: 3.16.1 - resolution: "react-modal@npm:3.16.1" +"react-modal@npm:^3.16.3": + version: 3.16.3 + resolution: "react-modal@npm:3.16.3" dependencies: exenv: "npm:^1.2.0" prop-types: "npm:^15.7.2" react-lifecycles-compat: "npm:^3.0.0" warning: "npm:^4.0.3" peerDependencies: - react: ^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 - react-dom: ^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 - checksum: 10c0/7b56e2c505b2b924736c471a34754a4211df40ac2d6fb0949cf095aea5e65d3326bd9f111fa7898acf40afa54f526809ad8aa47e02b8328663d11422568dc7b1 + react: ^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 || ^19 + react-dom: ^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 || ^19 + checksum: 10c0/b541c91aef680c51ee9edf4ec14b3be29787e34d4df174150361b1d42b2416b28336e2280abdc71df082b1380d0786fe2122cdca31e19a74b54b49d17855a0f2 languageName: node linkType: hard -"react-redux@npm:^7.2.0": - version: 7.2.9 - resolution: "react-redux@npm:7.2.9" +"react-redux@npm:^9.2.0": + version: 9.3.0 + resolution: "react-redux@npm:9.3.0" dependencies: - "@babel/runtime": "npm:^7.15.4" - "@types/react-redux": "npm:^7.1.20" - hoist-non-react-statics: "npm:^3.3.2" - loose-envify: "npm:^1.4.0" - prop-types: "npm:^15.7.2" - react-is: "npm:^17.0.2" + "@types/use-sync-external-store": "npm:^0.0.6" + use-sync-external-store: "npm:^1.4.0" peerDependencies: - react: ^16.8.3 || ^17 || ^18 + "@types/react": ^18.2.25 || ^19 + react: ^18.0 || ^19 + redux: ^5.0.0 peerDependenciesMeta: - react-dom: + "@types/react": optional: true - react-native: + redux: optional: true - checksum: 10c0/904fac7f493942585ed7ebbd693b4f6b5c09c292366b4550e887ba1a2e83a92c55f0ddc35161d4ba87e3fadb6c681a59003f58df6335e5d2ddd72b06a557851d + checksum: 10c0/b9f4efcfbfbc90cac9d1709ab3affb1e18a9dc9bd3cceda43bd2e1d9d2394ee0c29df36ec2202d52b566db774888b594c8c5aa86b64f27ef34fca607c687c9e3 languageName: node linkType: hard @@ -15145,16 +16534,14 @@ __metadata: languageName: node linkType: hard -"react@npm:18.3.1": - version: 18.3.1 - resolution: "react@npm:18.3.1" - dependencies: - loose-envify: "npm:^1.1.0" - checksum: 10c0/283e8c5efcf37802c9d1ce767f302dd569dd97a70d9bb8c7be79a789b9902451e0d16334b05d73299b20f048cbc3c7d288bbbde10b701fa194e2089c237dbea3 +"react@npm:19.3.1": + version: 19.3.1 + resolution: "react@npm:19.3.1" + checksum: 10c0/f0ed036d1223562c09c8347858ca712733ea6e27a30db709ee9c3f3f176d3e9e767afce735d59956addf3d030102e256bba82dea635fc1bdb0e01107e98fef10 languageName: node linkType: hard -"readable-stream@npm:^2.0.1, readable-stream@npm:^2.3.8": +"readable-stream@npm:^2.0.1": version: 2.3.8 resolution: "readable-stream@npm:2.3.8" dependencies: @@ -15169,7 +16556,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^3.0.6, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0": +"readable-stream@npm:^3.0.6": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" dependencies: @@ -15180,23 +16567,10 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^4.4.2": - version: 4.5.2 - resolution: "readable-stream@npm:4.5.2" - dependencies: - abort-controller: "npm:^3.0.0" - buffer: "npm:^6.0.3" - events: "npm:^3.3.0" - process: "npm:^0.11.10" - string_decoder: "npm:^1.3.0" - checksum: 10c0/a2c80e0e53aabd91d7df0330929e32d0a73219f9477dbbb18472f6fdd6a11a699fc5d172a1beff98d50eae4f1496c950ffa85b7cc2c4c196963f289a5f39275d - languageName: node - linkType: hard - -"readdirp@npm:^4.0.1": - version: 4.0.2 - resolution: "readdirp@npm:4.0.2" - checksum: 10c0/a16ecd8ef3286dcd90648c3b103e3826db2b766cdb4a988752c43a83f683d01c7059158d623cbcd8bdfb39e65d302d285be2d208e7d9f34d022d912b929217dd +"readdirp@npm:^5.0.0": + version: 5.1.1 + resolution: "readdirp@npm:5.1.1" + checksum: 10c0/5e99755684b9104761e48801828f4d2614efa33b1698629929c5985184dc63a7f8233c827832c40dc7be16b00cc871d303cf9de396d2fb74b9465ee2aa2424a1 languageName: node linkType: hard @@ -15209,13 +16583,6 @@ __metadata: languageName: node linkType: hard -"reading-time@npm:^1.5.0": - version: 1.5.0 - resolution: "reading-time@npm:1.5.0" - checksum: 10c0/0f730852fd4fb99e5f78c5b0cf36ab8c3fa15db96f87d9563843f6fd07a47864273ade539ebb184b785b728cde81a70283aa2d9b80cba5ca03b81868be03cabc - languageName: node - linkType: hard - "rechoir@npm:^0.6.2": version: 0.6.2 resolution: "rechoir@npm:0.6.2" @@ -15234,21 +16601,26 @@ __metadata: languageName: node linkType: hard -"redux-thunk@npm:^2.4.2": - version: 2.4.2 - resolution: "redux-thunk@npm:2.4.2" +"redux-thunk@npm:^3.1.0": + version: 3.1.0 + resolution: "redux-thunk@npm:3.1.0" peerDependencies: - redux: ^4 - checksum: 10c0/e202d6ef7dfa7df08ed24cb221aa89d6c84dbaa7d65fe90dbd8e826d0c10d801f48388f9a7598a4fd970ecbc93d335014570a61ca7bc8bf569eab5de77b31a3c + redux: ^5.0.0 + checksum: 10c0/21557f6a30e1b2e3e470933247e51749be7f1d5a9620069a3125778675ce4d178d84bdee3e2a0903427a5c429e3aeec6d4df57897faf93eb83455bc1ef7b66fd languageName: node linkType: hard -"redux@npm:^4.0.0, redux@npm:^4.2.1": - version: 4.2.1 - resolution: "redux@npm:4.2.1" - dependencies: - "@babel/runtime": "npm:^7.9.2" - checksum: 10c0/136d98b3d5dbed1cd6279c8c18a6a74c416db98b8a432a46836bdd668475de6279a2d4fd9d1363f63904e00f0678a8a3e7fa532c897163340baf1e71bb42c742 +"redux@npm:^5.0.1": + version: 5.0.1 + resolution: "redux@npm:5.0.1" + checksum: 10c0/b10c28357194f38e7d53b760ed5e64faa317cc63de1fb95bc5d9e127fab956392344368c357b8e7a9bedb0c35b111e7efa522210cfdc3b3c75e5074718e9069c + languageName: node + linkType: hard + +"reflect-metadata@npm:^0.2.2": + version: 0.2.2 + resolution: "reflect-metadata@npm:0.2.2" + checksum: 10c0/1cd93a15ea291e420204955544637c264c216e7aac527470e393d54b4bb075f10a17e60d8168ec96600c7e0b9fcc0cb0bb6e91c3fbf5b0d8c9056f04e6ac1ec2 languageName: node linkType: hard @@ -15375,17 +16747,6 @@ __metadata: languageName: node linkType: hard -"rehype-raw@npm:^6.1.1": - version: 6.1.1 - resolution: "rehype-raw@npm:6.1.1" - dependencies: - "@types/hast": "npm:^2.0.0" - hast-util-raw: "npm:^7.2.0" - unified: "npm:^10.0.0" - checksum: 10c0/c68b460d313cad877e731d83770913417e4759b3d7a824ffc0e60a7a62cdd7e24c461ead9b081760005382dd4510330e3bb961370e58dfeed09732675037a1a9 - languageName: node - linkType: hard - "rehype-raw@npm:^7.0.0": version: 7.0.0 resolution: "rehype-raw@npm:7.0.0" @@ -15441,15 +16802,17 @@ __metadata: languageName: node linkType: hard -"remark-gfm@npm:3.0.1": - version: 3.0.1 - resolution: "remark-gfm@npm:3.0.1" +"remark-gfm@npm:4.0.1": + version: 4.0.1 + resolution: "remark-gfm@npm:4.0.1" dependencies: - "@types/mdast": "npm:^3.0.0" - mdast-util-gfm: "npm:^2.0.0" - micromark-extension-gfm: "npm:^2.0.0" - unified: "npm:^10.0.0" - checksum: 10c0/53c4e82204f82f81949a170efdeb49d3c45137b7bca06a7ff857a483aac1a44b55ef0de8fb1bbe4f1292f2a378058e2e42e644f2c61f3e0cdc3e56afa4ec2a2c + "@types/mdast": "npm:^4.0.0" + mdast-util-gfm: "npm:^3.0.0" + micromark-extension-gfm: "npm:^3.0.0" + remark-parse: "npm:^11.0.0" + remark-stringify: "npm:^11.0.0" + unified: "npm:^11.0.0" + checksum: 10c0/427ecc6af3e76222662061a5f670a3e4e33ec5fffe2cabf04034da6a3f9a1bda1fc023e838a636385ba314e66e2bebbf017ca61ebea357eb0f5200fe0625a4b7 languageName: node linkType: hard @@ -15477,17 +16840,6 @@ __metadata: languageName: node linkType: hard -"remark-parse@npm:^10.0.0": - version: 10.0.2 - resolution: "remark-parse@npm:10.0.2" - dependencies: - "@types/mdast": "npm:^3.0.0" - mdast-util-from-markdown: "npm:^1.0.0" - unified: "npm:^10.0.0" - checksum: 10c0/30cb8f2790380b1c7370a1c66cda41f33a7dc196b9e440a00e2675037bca55aea868165a8204e0cdbacc27ef4a3bdb7d45879826bd6efa07d9fdf328cb67a332 - languageName: node - linkType: hard - "remark-parse@npm:^11.0.0": version: 11.0.0 resolution: "remark-parse@npm:11.0.0" @@ -15500,18 +16852,6 @@ __metadata: languageName: node linkType: hard -"remark-rehype@npm:^10.0.0": - version: 10.1.0 - resolution: "remark-rehype@npm:10.1.0" - dependencies: - "@types/hast": "npm:^2.0.0" - "@types/mdast": "npm:^3.0.0" - mdast-util-to-hast: "npm:^12.1.0" - unified: "npm:^10.0.0" - checksum: 10c0/803e658c9b51a9b53ee2ada42ff82e8e570444bb97c873e0d602c2d8dcb69a774fd22bd6f26643dfd5ab4c181059ea6c9fb9a99a2d7f9665f3f11bef1a1489bd - languageName: node - linkType: hard - "remark-rehype@npm:^11.0.0": version: 11.1.0 resolution: "remark-rehype@npm:11.1.0" @@ -15549,13 +16889,6 @@ __metadata: languageName: node linkType: hard -"repeat-string@npm:^1.0.0": - version: 1.6.1 - resolution: "repeat-string@npm:1.6.1" - checksum: 10c0/87fa21bfdb2fbdedc44b9a5b118b7c1239bdd2c2c1e42742ef9119b7d412a5137a1d23f1a83dc6bb686f4f27429ac6f542e3d923090b44181bafa41e8ac0174d - languageName: node - linkType: hard - "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" @@ -15584,10 +16917,10 @@ __metadata: languageName: node linkType: hard -"reselect@npm:^4.1.8": - version: 4.1.8 - resolution: "reselect@npm:4.1.8" - checksum: 10c0/06a305a504affcbb67dd0561ddc8306b35796199c7e15b38934c80606938a021eadcf68cfd58e7bb5e17786601c37602a3362a4665c7bf0a96c1041ceee9d0b7 +"reselect@npm:^5.1.0": + version: 5.3.0 + resolution: "reselect@npm:5.3.0" + checksum: 10c0/c79728e4f315152bfb2d82456d35075b705392d9e72c485d7d9b1061bd80af628416216d80f02a42f24dbb24d738aec7fec45806930aaa1d17c32e9875fa1bd6 languageName: node linkType: hard @@ -15627,14 +16960,14 @@ __metadata: "resolve@patch:resolve@npm%3A^1.1.6#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin": version: 1.22.8 - resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" + resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=9bd1a5" dependencies: is-core-module: "npm:^2.13.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10c0/0446f024439cd2e50c6c8fa8ba77eaa8370b4180f401a96abf3d1ebc770ac51c1955e12764cde449fde3fff480a61f84388e3505ecdbab778f4bef5f8212c729 + checksum: 10c0/4bc6de64a713422234e0e773bff296767d77d6e545b98042ff90a796d356f2b131853f4fa1d54e2c415aa6efa6dc2eed5b3f501f63164f834619fda900e33b8e languageName: node linkType: hard @@ -15690,13 +17023,22 @@ __metadata: languageName: node linkType: hard -"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1": - version: 2.0.2 - resolution: "ripemd160@npm:2.0.2" +"robust-predicates@npm:^3.0.2": + version: 3.0.3 + resolution: "robust-predicates@npm:3.0.3" + checksum: 10c0/ae23a0318be809545f091a076818747848f144495491e24e6df5d767f2bad0a1501bbeac34e78b74681d1437ecff0585f593ebfe6c8d49a50e79c5053b962693 + languageName: node + linkType: hard + +"roughjs@npm:^4.6.6": + version: 4.6.6 + resolution: "roughjs@npm:4.6.6" dependencies: - hash-base: "npm:^3.0.0" - inherits: "npm:^2.0.1" - checksum: 10c0/f6f0df78817e78287c766687aed4d5accbebc308a8e7e673fb085b9977473c1f139f0c5335d353f172a915bb288098430755d2ad3c4f30612f4dd0c901cd2c3a + hachure-fill: "npm:^0.5.2" + path-data-parser: "npm:^0.1.0" + points-on-curve: "npm:^0.2.0" + points-on-path: "npm:^0.2.1" + checksum: 10c0/68c11bf4516aa014cef2fe52426a9bab237c2f500d13e1a4f13b523cb5723667bf2d92b9619325efdc5bc2a193588ff5af8d51683df17cfb8720e96fe2b92b0c languageName: node linkType: hard @@ -15721,6 +17063,13 @@ __metadata: languageName: node linkType: hard +"run-applescript@npm:^7.0.0": + version: 7.1.0 + resolution: "run-applescript@npm:7.1.0" + checksum: 10c0/ab826c57c20f244b2ee807704b1ef4ba7f566aa766481ae5922aac785e2570809e297c69afcccc3593095b538a8a77d26f2b2e9a1d9dffee24e0e039502d1a03 + languageName: node + linkType: hard + "run-parallel@npm:^1.1.9": version: 1.2.0 resolution: "run-parallel@npm:1.2.0" @@ -15730,12 +17079,10 @@ __metadata: languageName: node linkType: hard -"sade@npm:^1.7.3": - version: 1.8.1 - resolution: "sade@npm:1.8.1" - dependencies: - mri: "npm:^1.1.0" - checksum: 10c0/da8a3a5d667ad5ce3bf6d4f054bbb9f711103e5df21003c5a5c1a8a77ce12b640ed4017dd423b13c2307ea7e645adee7c2ae3afe8051b9db16a6f6d3da3f90b1 +"rw@npm:1": + version: 1.3.3 + resolution: "rw@npm:1.3.3" + checksum: 10c0/b1e1ef37d1e79d9dc7050787866e30b6ddcb2625149276045c262c6b4d53075ddc35f387a856a8e76f0d0df59f4cd58fe24707e40797ebee66e542b840ed6a53 languageName: node linkType: hard @@ -15746,7 +17093,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 @@ -15760,31 +17107,6 @@ __metadata: languageName: node linkType: hard -"sass-loader@npm:^10.1.1": - version: 10.5.2 - resolution: "sass-loader@npm:10.5.2" - dependencies: - klona: "npm:^2.0.4" - loader-utils: "npm:^2.0.0" - neo-async: "npm:^2.6.2" - schema-utils: "npm:^3.0.0" - semver: "npm:^7.3.2" - peerDependencies: - fibers: ">= 3.1.0" - node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 - sass: ^1.3.0 - webpack: ^4.36.0 || ^5.0.0 - peerDependenciesMeta: - fibers: - optional: true - node-sass: - optional: true - sass: - optional: true - checksum: 10c0/5ba4a83459fbb50e21d4f4b1b59baf1ddf8dd404099b6d1f2ec887c6903659e505879915030dd9efb1c6dd5fde2d515a19f418487b73d1cc59f6aad60c79bcf5 - languageName: node - linkType: hard - "sass-loader@npm:^16.0.2": version: 16.0.4 resolution: "sass-loader@npm:16.0.4" @@ -15811,33 +17133,41 @@ __metadata: languageName: node linkType: hard -"sass@npm:1.77.8": - version: 1.77.8 - resolution: "sass@npm:1.77.8" - dependencies: - chokidar: "npm:>=3.0.0 <4.0.0" - immutable: "npm:^4.0.0" - source-map-js: "npm:>=0.6.2 <2.0.0" - bin: - sass: sass.js - checksum: 10c0/2bfd62794070352c804f949e69bd8bb5b4ec846deeb924251b2c3f7b503170fb1ae186f513f0166907749eb34e0277dee747edcb78c886fb471aac01be1e864c +"sass-loader@npm:^17.0.0": + version: 17.0.1 + resolution: "sass-loader@npm:17.0.1" + peerDependencies: + "@rspack/core": 0.x || ^1.0.0 || ^2.0.0-0 + sass: ^1.3.0 + sass-embedded: "*" + webpack: ^5.0.0 + peerDependenciesMeta: + "@rspack/core": + optional: true + sass: + optional: true + sass-embedded: + optional: true + webpack: + optional: true + checksum: 10c0/a5211341426096acd7b96db6cba95935a86c3ba97a16c16d2f743f42c98ff79281f4f0f6e03fc336b77b22969eb8363379ffd52efe9bf87944cc21f1490c6595 languageName: node linkType: hard -"sass@npm:^1.80.4": - version: 1.82.0 - resolution: "sass@npm:1.82.0" +"sass@npm:1.105.1, sass@npm:^1.89.2": + version: 1.105.1 + resolution: "sass@npm:1.105.1" dependencies: "@parcel/watcher": "npm:^2.4.1" - chokidar: "npm:^4.0.0" - immutable: "npm:^5.0.2" + chokidar: "npm:^5.0.0" + immutable: "npm:^5.1.5" source-map-js: "npm:>=0.6.2 <2.0.0" dependenciesMeta: "@parcel/watcher": optional: true bin: sass: sass.js - checksum: 10c0/7f86fe6ade4f6018862c448ed69d5c52f485b0125c9dab24e63f679739a04cc7c56562d588e3cf16b5efb4d2c4d0530e62740e1cfd273e2e3707d04d11011736 + checksum: 10c0/07246d9a9cc3c7974d28e03b394791c65d6a8f701d4ed2f130f5cb72ff3ef5626e5e66afb067348b2ae87011c52e18cd29f294025a6430851ee8617ef8c94f38 languageName: node linkType: hard @@ -15866,12 +17196,17 @@ __metadata: languageName: node linkType: hard -"scheduler@npm:^0.23.2": - version: 0.23.2 - resolution: "scheduler@npm:0.23.2" - dependencies: - loose-envify: "npm:^1.1.0" - checksum: 10c0/26383305e249651d4c58e6705d5f8425f153211aef95f15161c151f7b8de885f24751b377e4a0b3dd42cce09aad3f87a61dab7636859c0d89b7daf1a1e2a5c78 +"scheduler@npm:^0.28.0": + version: 0.28.0 + resolution: "scheduler@npm:0.28.0" + checksum: 10c0/783c8e5ce89d41273a02ed6dc0e3d24bd60e05c9e8f7e3adfc6c82e7c69935500d90e343f1ee26d592fc7504e8a2532573c6368def3e93bfe812391fa53efaf4 + languageName: node + linkType: hard + +"schema-dts@npm:^1.1.2": + version: 1.1.5 + resolution: "schema-dts@npm:1.1.5" + checksum: 10c0/babe23a1577c75c5df79d73acf34af3399e60928eab46f2236a0c4212061f5778d613a31c9e9ec86a2807d20b1ea460673d72d3fe1f64fb7543867460e607f76 languageName: node linkType: hard @@ -15909,6 +17244,18 @@ __metadata: languageName: node linkType: hard +"schema-utils@npm:^4.2.0": + version: 4.5.0 + resolution: "schema-utils@npm:4.5.0" + dependencies: + "@types/json-schema": "npm:^7.0.15" + ajv: "npm:^8.20.0" + ajv-formats: "npm:^3.0.1" + ajv-keywords: "npm:^5.1.0" + checksum: 10c0/b2b8e6fc1b1f2abb30741a04e9d309879fd09afcea8c8aa163bdb380d8836ab4102f60a750cb1116c5e299f597cc8d59ee8f2bbee87dd7606d45e748ce901794 + languageName: node + linkType: hard + "section-matter@npm:^1.0.0": version: 1.0.0 resolution: "section-matter@npm:1.0.0" @@ -15936,6 +17283,16 @@ __metadata: languageName: node linkType: hard +"selfsigned@npm:^5.5.0": + version: 5.5.0 + resolution: "selfsigned@npm:5.5.0" + dependencies: + "@peculiar/x509": "npm:^1.14.2" + pkijs: "npm:^3.3.3" + checksum: 10c0/a31e9d928e22cd6f4e14759a099feba79d9d789c852c7cf65ff8e2f62d7f6313fe477639590e7ed06115b4516a4bebbe0dec5d072a2d01cc372a9cfd58eb893b + languageName: node + linkType: hard + "semver-diff@npm:^4.0.0": version: 4.0.0 resolution: "semver-diff@npm:4.0.0" @@ -15945,14 +17302,12 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.5.4": - version: 7.5.4 - resolution: "semver@npm:7.5.4" - dependencies: - lru-cache: "npm:^6.0.0" +"semver@npm:7.7.1": + version: 7.7.1 + resolution: "semver@npm:7.7.1" bin: semver: bin/semver.js - checksum: 10c0/5160b06975a38b11c1ab55950cb5b8a23db78df88275d3d8a42ccf1f29e55112ac995b3a26a522c36e3b5f76b0445f1eef70d696b8c7862a2b4303d7b0e7609e + checksum: 10c0/fd603a6fb9c399c6054015433051bdbe7b99a940a8fb44b85c2b524c4004b023d7928d47cb22154f8d054ea7ee8597f586605e05b52047f048278e4ac56ae958 languageName: node linkType: hard @@ -15995,6 +17350,27 @@ __metadata: languageName: node linkType: hard +"send@npm:~0.19.0, send@npm:~0.19.1": + version: 0.19.2 + resolution: "send@npm:0.19.2" + dependencies: + debug: "npm:2.6.9" + depd: "npm:2.0.0" + destroy: "npm:1.2.0" + encodeurl: "npm:~2.0.0" + escape-html: "npm:~1.0.3" + etag: "npm:~1.8.1" + fresh: "npm:~0.5.2" + http-errors: "npm:~2.0.1" + mime: "npm:1.6.0" + ms: "npm:2.1.3" + on-finished: "npm:~2.4.1" + range-parser: "npm:~1.2.1" + statuses: "npm:~2.0.2" + checksum: 10c0/20c2389fe0fdf3fc499938cac598bc32272287e993c4960717381a10de8550028feadfb9076f959a3a3ebdea42e1f690e116f0d16468fa56b9fd41866d3dc267 + languageName: node + linkType: hard + "serialize-javascript@npm:^6.0.0, serialize-javascript@npm:^6.0.1": version: 6.0.2 resolution: "serialize-javascript@npm:6.0.2" @@ -16020,18 +17396,18 @@ __metadata: languageName: node linkType: hard -"serve-handler@npm:^6.1.6": - version: 6.1.6 - resolution: "serve-handler@npm:6.1.6" +"serve-handler@npm:^6.1.7": + version: 6.1.7 + resolution: "serve-handler@npm:6.1.7" dependencies: bytes: "npm:3.0.0" content-disposition: "npm:0.5.2" mime-types: "npm:2.1.18" - minimatch: "npm:3.1.2" + minimatch: "npm:3.1.5" path-is-inside: "npm:1.0.2" path-to-regexp: "npm:3.3.0" range-parser: "npm:1.2.0" - checksum: 10c0/1e1cb6bbc51ee32bc1505f2e0605bdc2e96605c522277c977b67f83be9d66bd1eec8604388714a4d728e036d86b629bc9aec02120ea030d3d2c3899d44696503 + checksum: 10c0/35afb68d81afd3c38d15792a5bc2451915b739bef2898a47ebd190db6a4e29846530ac00292b8008fe7297a819257c3948be2deaf4ffd32c96689e8947cf0ae9 languageName: node linkType: hard @@ -16062,6 +17438,18 @@ __metadata: languageName: node linkType: hard +"serve-static@npm:~1.16.2": + version: 1.16.3 + resolution: "serve-static@npm:1.16.3" + dependencies: + encodeurl: "npm:~2.0.0" + escape-html: "npm:~1.0.3" + parseurl: "npm:~1.3.3" + send: "npm:~0.19.1" + checksum: 10c0/36320397a073c71bedf58af48a4a100fe6d93f07459af4d6f08b9a7217c04ce2a4939e0effd842dc7bece93ffcd59eb52f58c4fff2a8e002dc29ae6b219cd42b + languageName: node + linkType: hard + "set-function-length@npm:^1.2.1": version: 1.2.2 resolution: "set-function-length@npm:1.2.2" @@ -16076,13 +17464,6 @@ __metadata: languageName: node linkType: hard -"setimmediate@npm:^1.0.4": - version: 1.0.5 - resolution: "setimmediate@npm:1.0.5" - checksum: 10c0/5bae81bfdbfbd0ce992893286d49c9693c82b1bcc00dcaaf3a09c8f428fdeacf4190c013598b81875dfac2b08a572422db7df779a99332d0fce186d15a3e4d49 - languageName: node - linkType: hard - "setprototypeof@npm:1.1.0": version: 1.1.0 resolution: "setprototypeof@npm:1.1.0" @@ -16090,25 +17471,13 @@ __metadata: languageName: node linkType: hard -"setprototypeof@npm:1.2.0": +"setprototypeof@npm:1.2.0, setprototypeof@npm:~1.2.0": version: 1.2.0 resolution: "setprototypeof@npm:1.2.0" checksum: 10c0/68733173026766fa0d9ecaeb07f0483f4c2dc70ca376b3b7c40b7cda909f94b0918f6c5ad5ce27a9160bdfb475efaa9d5e705a11d8eaae18f9835d20976028bc languageName: node linkType: hard -"sha.js@npm:^2.4.0, sha.js@npm:^2.4.8": - version: 2.4.11 - resolution: "sha.js@npm:2.4.11" - dependencies: - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.0.1" - bin: - sha.js: ./bin.js - checksum: 10c0/b7a371bca8821c9cc98a0aeff67444a03d48d745cb103f17228b96793f455f0eb0a691941b89ea1e60f6359207e36081d9be193252b0f128e0daf9cfea2815a5 - languageName: node - linkType: hard - "shallow-clone@npm:^3.0.0": version: 3.0.1 resolution: "shallow-clone@npm:3.0.1" @@ -16141,6 +17510,13 @@ __metadata: languageName: node linkType: hard +"shell-quote@npm:^1.10.0": + version: 1.12.0 + resolution: "shell-quote@npm:1.12.0" + checksum: 10c0/1605a4ed6a758bf13de7cb8197a4184d8015f7a4dbdcd6cd4a717d5b30b3ae7666300cc4ae7f3155cf80ace9739e9e82061ee5aa1a648f53f5fab31a220816d0 + languageName: node + linkType: hard + "shell-quote@npm:^1.7.3, shell-quote@npm:^1.8.1": version: 1.8.1 resolution: "shell-quote@npm:1.8.1" @@ -16148,7 +17524,7 @@ __metadata: languageName: node linkType: hard -"shelljs@npm:0.8.5, shelljs@npm:^0.8.5": +"shelljs@npm:^0.8.5": version: 0.8.5 resolution: "shelljs@npm:0.8.5" dependencies: @@ -16217,6 +17593,41 @@ __metadata: languageName: node linkType: hard +"side-channel-list@npm:^1.0.1": + version: 1.0.1 + resolution: "side-channel-list@npm:1.0.1" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.4" + checksum: 10c0/d346c787fd2f9f1c2fdea14f00e8250118db0e7596d85a6cb9faa75f105d31a73a8f7a341c93d7df2a2429098c3d37a77bd3be9e88c37094b8c01807bc77c7a2 + languageName: node + linkType: hard + +"side-channel-map@npm:^1.0.1": + version: 1.0.1 + resolution: "side-channel-map@npm:1.0.1" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + checksum: 10c0/010584e6444dd8a20b85bc926d934424bd809e1a3af941cace229f7fdcb751aada0fb7164f60c2e22292b7fa3c0ff0bce237081fd4cdbc80de1dc68e95430672 + languageName: node + linkType: hard + +"side-channel-weakmap@npm:^1.0.2": + version: 1.0.2 + resolution: "side-channel-weakmap@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + side-channel-map: "npm:^1.0.1" + checksum: 10c0/71362709ac233e08807ccd980101c3e2d7efe849edc51455030327b059f6c4d292c237f94dc0685031dd11c07dd17a68afde235d6cf2102d949567f98ab58185 + languageName: node + linkType: hard + "side-channel@npm:^1.0.4, side-channel@npm:^1.0.6": version: 1.0.6 resolution: "side-channel@npm:1.0.6" @@ -16229,6 +17640,19 @@ __metadata: languageName: node linkType: hard +"side-channel@npm:^1.1.1": + version: 1.1.1 + resolution: "side-channel@npm:1.1.1" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.4" + side-channel-list: "npm:^1.0.1" + side-channel-map: "npm:^1.0.1" + side-channel-weakmap: "npm:^1.0.2" + checksum: 10c0/dc0ab81d67f61bda9247d053ce93f41c3fd8ad2bdcb9cf9d8d2f8540d488f26d87a5e99ebfc07eea49ec025867b2452b705442d974b1478f0395e69f6bfb3270 + languageName: node + linkType: hard + "signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" @@ -16298,10 +17722,10 @@ __metadata: languageName: node linkType: hard -"slugify@npm:^1.6.5": - version: 1.6.6 - resolution: "slugify@npm:1.6.6" - checksum: 10c0/e7e63f08f389a371d6228bc19d64ec84360bf0a538333446cc49dbbf3971751a6d180d2f31551188dd007a65ca771e69f574e0283290a7825a818e90b75ef44d +"slugify@npm:^1.6.6": + version: 1.6.9 + resolution: "slugify@npm:1.6.9" + checksum: 10c0/8473c566ae00c5db26bfbf6182a4a9478ab3c912a9c926e1fdb410736a77228bfca4fdc5c755b46fafa7d2d9900de482fd7a9bd5e5c91128c4743c2c072d88da languageName: node linkType: hard @@ -16368,6 +17792,13 @@ __metadata: languageName: node linkType: hard +"source-map-js@npm:^1.2.2": + version: 1.2.2 + resolution: "source-map-js@npm:1.2.2" + checksum: 10c0/d5d6dec62266834f83dd4f8a2606a196fb1a006ca5d53b0ef80ee513b7eba2f4e2ae241f4bc129ae7e9b80dea24f6e3d92b446b7e6e96be7653cab8888168a94 + languageName: node + linkType: hard + "source-map-support@npm:~0.5.20": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" @@ -16470,6 +17901,13 @@ __metadata: languageName: node linkType: hard +"statuses@npm:~2.0.1, statuses@npm:~2.0.2": + version: 2.0.2 + resolution: "statuses@npm:2.0.2" + checksum: 10c0/a9947d98ad60d01f6b26727570f3bcceb6c8fa789da64fe6889908fe2e294d57503b14bf2b5af7605c2d36647259e856635cd4c49eab41667658ec9d0080ec3f + languageName: node + linkType: hard + "std-env@npm:^3.0.1": version: 3.7.0 resolution: "std-env@npm:3.7.0" @@ -16484,28 +17922,6 @@ __metadata: languageName: node linkType: hard -"stream-browserify@npm:^3.0.0": - version: 3.0.0 - resolution: "stream-browserify@npm:3.0.0" - dependencies: - inherits: "npm:~2.0.4" - readable-stream: "npm:^3.5.0" - checksum: 10c0/ec3b975a4e0aa4b3dc5e70ffae3fc8fd29ac725353a14e72f213dff477b00330140ad014b163a8cbb9922dfe90803f81a5ea2b269e1bbfd8bd71511b88f889ad - languageName: node - linkType: hard - -"stream-http@npm:^3.2.0": - version: 3.2.0 - resolution: "stream-http@npm:3.2.0" - dependencies: - builtin-status-codes: "npm:^3.0.0" - inherits: "npm:^2.0.4" - readable-stream: "npm:^3.6.0" - xtend: "npm:^4.0.2" - checksum: 10c0/f128fb8076d60cd548f229554b6a1a70c08a04b7b2afd4dbe7811d20f27f7d4112562eb8bce86d72a8691df3b50573228afcf1271e55e81f981536c67498bc41 - languageName: node - linkType: hard - "string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" @@ -16535,7 +17951,7 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": +"string_decoder@npm:^1.1.1": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" dependencies: @@ -16650,21 +18066,28 @@ __metadata: languageName: node linkType: hard -"sucrase@npm:^3.31.0": - version: 3.35.0 - resolution: "sucrase@npm:3.35.0" +"stylis@npm:^4.3.6": + version: 4.4.0 + resolution: "stylis@npm:4.4.0" + checksum: 10c0/259be096d90dfbfe903c8656dcb7591e52a421e577e950ef42ebd9ca02f387623a1165dd08761492fb6e92a7a562d62a53a694a10b0a2f6dcd7a0db107b4bf55 + languageName: node + linkType: hard + +"sucrase@npm:^3.35.0": + version: 3.35.1 + resolution: "sucrase@npm:3.35.1" dependencies: "@jridgewell/gen-mapping": "npm:^0.3.2" commander: "npm:^4.0.0" - glob: "npm:^10.3.10" lines-and-columns: "npm:^1.1.6" mz: "npm:^2.7.0" pirates: "npm:^4.0.1" + tinyglobby: "npm:^0.2.11" ts-interface-checker: "npm:^0.1.9" bin: sucrase: bin/sucrase sucrase-node: bin/sucrase-node - checksum: 10c0/ac85f3359d2c2ecbf5febca6a24ae9bf96c931f05fde533c22a94f59c6a74895e5d5f0e871878dfd59c2697a75ebb04e4b2224ef0bfc24ca1210735c2ec191ef + checksum: 10c0/6fa22329c261371feb9560630d961ad0d0b9c87dce21ea74557c5f3ffbe5c1ee970ea8bcce9962ae9c90c3c47165ffa7dd41865c7414f5d8ea7a40755d612c5c languageName: node linkType: hard @@ -16838,6 +18261,15 @@ __metadata: languageName: node linkType: hard +"thingies@npm:^2.5.0": + version: 2.6.1 + resolution: "thingies@npm:2.6.1" + peerDependencies: + tslib: ^2 + checksum: 10c0/eaf83b2a77dc105ff724c04777a56cea40e945a73bd50cc7554694702ad3d09d1d1843ed32315723ea45490106e8a0f972d9c12dc60d3081c551b4eb4235b24f + languageName: node + linkType: hard + "thunky@npm:^1.0.2": version: 1.1.0 resolution: "thunky@npm:1.1.0" @@ -16845,15 +18277,6 @@ __metadata: languageName: node linkType: hard -"timers-browserify@npm:^2.0.12": - version: 2.0.12 - resolution: "timers-browserify@npm:2.0.12" - dependencies: - setimmediate: "npm:^1.0.4" - checksum: 10c0/98e84db1a685bc8827c117a8bc62aac811ad56a995d07938fc7ed8cdc5bf3777bfe2d4e5da868847194e771aac3749a20f6cdd22091300fe889a76fe214a4641 - languageName: node - linkType: hard - "tiny-inflate@npm:^1.0.0": version: 1.0.3 resolution: "tiny-inflate@npm:1.0.3" @@ -16875,6 +18298,30 @@ __metadata: languageName: node linkType: hard +"tinyexec@npm:^1.3.1": + version: 1.3.1 + resolution: "tinyexec@npm:1.3.1" + checksum: 10c0/c590369cb3fa73cc18a3998caec8a00f9712d91309c881be3ac52b160fb2f80c7b1fbf3591858ab6abab47ad55385b0c86ec19982e32441a01f55298dab9ccd2 + languageName: node + linkType: hard + +"tinyglobby@npm:^0.2.11": + version: 0.2.17 + resolution: "tinyglobby@npm:0.2.17" + dependencies: + fdir: "npm:^6.5.0" + picomatch: "npm:^4.0.4" + checksum: 10c0/7f7bb0f197c88bc4b20c231e0deca4240ca3bf313a88f5a7fee93a872b84966a4d50220947c0455ad07a60b3b360961c5b7fd979222aeb716a9f99b412002e4c + languageName: node + linkType: hard + +"tinypool@npm:^1.0.2": + version: 1.1.1 + resolution: "tinypool@npm:1.1.1" + checksum: 10c0/bf26727d01443061b04fa863f571016950888ea994ba0cd8cba3a1c51e2458d84574341ab8dbc3664f1c3ab20885c8cf9ff1cc4b18201f04c2cde7d317fff69b + languageName: node + linkType: hard + "to-fast-properties@npm:^2.0.0": version: 2.0.0 resolution: "to-fast-properties@npm:2.0.0" @@ -16891,7 +18338,7 @@ __metadata: languageName: node linkType: hard -"toidentifier@npm:1.0.1": +"toidentifier@npm:1.0.1, toidentifier@npm:~1.0.1": version: 1.0.1 resolution: "toidentifier@npm:1.0.1" checksum: 10c0/93937279934bd66cc3270016dd8d0afec14fb7c94a05c72dc57321f8bd1fa97e5bea6d1f7c89e728d077ca31ea125b78320a616a6c6cd0e6b9cb94cb864381c1 @@ -16912,10 +18359,12 @@ __metadata: languageName: node linkType: hard -"traverse@npm:0.6.6": - version: 0.6.6 - resolution: "traverse@npm:0.6.6" - checksum: 10c0/72b2c95463e991063cfa3603dc80e8ca35cae4bf1a736e5b6df3a50226dca341777699f702b55f61b9a329e7be0a76fb77d994f4981f49de98bb02065ca1e7d9 +"tree-dump@npm:^1.0.3, tree-dump@npm:^1.1.0": + version: 1.1.0 + resolution: "tree-dump@npm:1.1.0" + peerDependencies: + tslib: 2 + checksum: 10c0/079f0f0163b68ee2eedc65cab1de6fb121487eba9ae135c106a8bc5e4ab7906ae0b57d86016e4a7da8c0ee906da1eae8c6a1490cd6e2a5e5ccbca321e1f959ca languageName: node linkType: hard @@ -16933,6 +18382,20 @@ __metadata: languageName: node linkType: hard +"ts-algebra@npm:^2.0.0": + version: 2.0.0 + resolution: "ts-algebra@npm:2.0.0" + checksum: 10c0/4ae93bec1bada635bba425854eec323dad50b6ffe86bc04ad2d7f9ce3fb129d673dcf483e19a6e70d07a3a9083e6a0a7f4e004bb8d2164cddc60cc9540ba187f + languageName: node + linkType: hard + +"ts-dedent@npm:^2.2.0": + version: 2.3.0 + resolution: "ts-dedent@npm:2.3.0" + checksum: 10c0/bfc3331e0740191c0134fb526e7f01e16657e50955c9395de14703c6ef17119c91651fa044cf558dc9c1dbb0fe1b2a74e303aeebcbd5e3b31acd14f72f545a54 + languageName: node + linkType: hard + "ts-interface-checker@npm:^0.1.9": version: 0.1.13 resolution: "ts-interface-checker@npm:0.1.13" @@ -16940,6 +18403,20 @@ __metadata: languageName: node linkType: hard +"tslib@npm:^1.9.3": + version: 1.14.1 + resolution: "tslib@npm:1.14.1" + checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 + languageName: node + linkType: hard + +"tslib@npm:^2.0.0, tslib@npm:^2.8.1": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 + languageName: node + linkType: hard + "tslib@npm:^2.0.3, tslib@npm:^2.6.0": version: 2.6.3 resolution: "tslib@npm:2.6.3" @@ -16947,17 +18424,12 @@ __metadata: languageName: node linkType: hard -"tty-browserify@npm:^0.0.1": - version: 0.0.1 - resolution: "tty-browserify@npm:0.0.1" - checksum: 10c0/5e34883388eb5f556234dae75b08e069b9e62de12bd6d87687f7817f5569430a6dfef550b51dbc961715ae0cd0eb5a059e6e3fc34dc127ea164aa0f9b5bb033d - languageName: node - linkType: hard - -"type-fest@npm:^0.21.3": - version: 0.21.3 - resolution: "type-fest@npm:0.21.3" - checksum: 10c0/902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 +"tsyringe@npm:^4.10.0": + version: 4.10.0 + resolution: "tsyringe@npm:4.10.0" + dependencies: + tslib: "npm:^1.9.3" + checksum: 10c0/918594b4dfac97beb8be2c041c6ec45f078ef3768ed4edfe35ae2c709ab503e2e6b454b2b37e692c658572d1972a428fbfdbc0a2b42fee727a83c1c685fbe5e1 languageName: node linkType: hard @@ -16975,13 +18447,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^4.4.0": - version: 4.30.1 - resolution: "type-fest@npm:4.30.1" - checksum: 10c0/7ee8084aa764c9703f92e4c3546e0943909a1b508c93a02f1e528b877803b4af2cd68982d1d36578738a14026d5f5a3049d840aa11fca1d690d13a1612222da1 - languageName: node - linkType: hard - "type-is@npm:~1.6.18": version: 1.6.18 resolution: "type-is@npm:1.6.18" @@ -17001,23 +18466,23 @@ __metadata: languageName: node linkType: hard -"typescript@npm:5.7.2": - version: 5.7.2 - resolution: "typescript@npm:5.7.2" +"typescript@npm:6.0.3": + version: 6.0.3 + resolution: "typescript@npm:6.0.3" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/a873118b5201b2ef332127ef5c63fb9d9c155e6fdbe211cbd9d8e65877283797cca76546bad742eea36ed7efbe3424a30376818f79c7318512064e8625d61622 + checksum: 10c0/4a25ff5045b984370f48f196b3a0120779b1b343d40b9a68d114ea5e5fff099809b2bb777576991a63a5cd59cf7bffd96ff6fe10afcefbcb8bd6fb96ad4b6606 languageName: node linkType: hard -"typescript@patch:typescript@npm%3A5.7.2#optional!builtin": - version: 5.7.2 - resolution: "typescript@patch:typescript@npm%3A5.7.2#optional!builtin::version=5.7.2&hash=5786d5" +"typescript@patch:typescript@npm%3A6.0.3#optional!builtin": + version: 6.0.3 + resolution: "typescript@patch:typescript@npm%3A6.0.3#optional!builtin::version=6.0.3&hash=5786d5" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/f3b8082c9d1d1629a215245c9087df56cb784f9fb6f27b5d55577a20e68afe2a889c040aacff6d27e35be165ecf9dca66e694c42eb9a50b3b2c451b36b5675cb + checksum: 10c0/2f25c74e65663c248fa1ade2b8459d9ce5372ff9dad07067310f132966ebec1d93f6c42f0baf77a6b6a7a91460463f708e6887013aaade22111037457c6b25df languageName: node linkType: hard @@ -17028,6 +18493,13 @@ __metadata: languageName: node linkType: hard +"undici@npm:^6.28.0": + version: 6.29.1 + resolution: "undici@npm:6.29.1" + checksum: 10c0/2d6970289fcbaca69a484e968fbb5e6fdadf7d9bff30bb5476f71b619d143ec76df1c75a309ac3cb3b3d78238793c613dcaad47dc9d92b63f9e8e73b86ffec23 + languageName: node + linkType: hard + "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" @@ -17076,21 +18548,6 @@ __metadata: languageName: node linkType: hard -"unified@npm:^10.0.0": - version: 10.1.2 - resolution: "unified@npm:10.1.2" - dependencies: - "@types/unist": "npm:^2.0.0" - bail: "npm:^2.0.0" - extend: "npm:^3.0.0" - is-buffer: "npm:^2.0.0" - is-plain-obj: "npm:^4.0.0" - trough: "npm:^2.0.0" - vfile: "npm:^5.0.0" - checksum: 10c0/da9195e3375a74ab861a65e1d7b0454225d17a61646697911eb6b3e97de41091930ed3d167eb11881d4097c51deac407091d39ddd1ee8bf1fde3f946844a17a7 - languageName: node - linkType: hard - "unified@npm:^11.0.0, unified@npm:^11.0.3, unified@npm:^11.0.4": version: 11.0.5 resolution: "unified@npm:11.0.5" @@ -17133,22 +18590,6 @@ __metadata: languageName: node linkType: hard -"unist-util-generated@npm:^2.0.0": - version: 2.0.1 - resolution: "unist-util-generated@npm:2.0.1" - checksum: 10c0/6f052dd47a7280785f3787f52cdfe8819e1de50317a1bcf7c9346c63268cf2cebc61a5980e7ca734a54735e27dbb73091aa0361a98504ab7f9409fb75f1b16bb - languageName: node - linkType: hard - -"unist-util-is@npm:^5.0.0": - version: 5.2.1 - resolution: "unist-util-is@npm:5.2.1" - dependencies: - "@types/unist": "npm:^2.0.0" - checksum: 10c0/a2376910b832bb10653d2167c3cd85b3610a5fd53f5169834c08b3c3a720fae9043d75ad32d727eedfc611491966c26a9501d428ec62467edc17f270feb5410b - languageName: node - linkType: hard - "unist-util-is@npm:^6.0.0": version: 6.0.0 resolution: "unist-util-is@npm:6.0.0" @@ -17167,15 +18608,6 @@ __metadata: languageName: node linkType: hard -"unist-util-position@npm:^4.0.0": - version: 4.0.4 - resolution: "unist-util-position@npm:4.0.4" - dependencies: - "@types/unist": "npm:^2.0.0" - checksum: 10c0/e506d702e25a0fb47a64502054f709a6ff5db98993bf139eec868cd11eb7de34392b781c6c2002e2c24d97aa398c14b32a47076129f36e4b894a2c1351200888 - languageName: node - linkType: hard - "unist-util-position@npm:^5.0.0": version: 5.0.0 resolution: "unist-util-position@npm:5.0.0" @@ -17195,15 +18627,6 @@ __metadata: languageName: node linkType: hard -"unist-util-stringify-position@npm:^3.0.0": - version: 3.0.3 - resolution: "unist-util-stringify-position@npm:3.0.3" - dependencies: - "@types/unist": "npm:^2.0.0" - checksum: 10c0/14550027825230528f6437dad7f2579a841780318569851291be6c8a970bae6f65a7feb24dabbcfce0e5e68cacae85bf12cbda3f360f7c873b4db602bdf7bb21 - languageName: node - linkType: hard - "unist-util-stringify-position@npm:^4.0.0": version: 4.0.0 resolution: "unist-util-stringify-position@npm:4.0.0" @@ -17213,16 +18636,6 @@ __metadata: languageName: node linkType: hard -"unist-util-visit-parents@npm:^5.0.0, unist-util-visit-parents@npm:^5.1.1": - version: 5.1.3 - resolution: "unist-util-visit-parents@npm:5.1.3" - dependencies: - "@types/unist": "npm:^2.0.0" - unist-util-is: "npm:^5.0.0" - checksum: 10c0/f6829bfd8f2eddf63a32e2c302cd50978ef0c194b792c6fe60c2b71dfd7232415a3c5941903972543e9d34e6a8ea69dee9ccd95811f4a795495ed2ae855d28d0 - languageName: node - linkType: hard - "unist-util-visit-parents@npm:^6.0.0": version: 6.0.1 resolution: "unist-util-visit-parents@npm:6.0.1" @@ -17233,17 +18646,6 @@ __metadata: languageName: node linkType: hard -"unist-util-visit@npm:^4.0.0": - version: 4.1.2 - resolution: "unist-util-visit@npm:4.1.2" - dependencies: - "@types/unist": "npm:^2.0.0" - unist-util-is: "npm:^5.0.0" - unist-util-visit-parents: "npm:^5.1.1" - checksum: 10c0/56a1f49a4d8e321e75b3c7821d540a45165a031dd06324bb0e8c75e7737bc8d73bdddbf0b0ca82000f9708a4c36861c6ebe88d01f7cf00e925f5d75f13a3a017 - languageName: node - linkType: hard - "unist-util-visit@npm:^5.0.0": version: 5.0.0 resolution: "unist-util-visit@npm:5.0.0" @@ -17297,6 +18699,20 @@ __metadata: languageName: node linkType: hard +"update-browserslist-db@npm:^1.3.3": + version: 1.3.4 + resolution: "update-browserslist-db@npm:1.3.4" + dependencies: + escalade: "npm:^3.2.0" + picocolors: "npm:^1.1.1" + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 10c0/5c0769472715b57371208c3146cc07a4f0917c1d18cc34f60325bc4234f4a28f332e50b99f675999ff311315231ff19beb22a815dfe04ccc1e798e1d389514d7 + languageName: node + linkType: hard + "update-notifier@npm:^6.0.2": version: 6.0.2 resolution: "update-notifier@npm:6.0.2" @@ -17345,7 +18761,7 @@ __metadata: languageName: node linkType: hard -"url@npm:^0.11.3": +"url@npm:^0.11.4": version: 0.11.4 resolution: "url@npm:0.11.4" dependencies: @@ -17364,6 +18780,15 @@ __metadata: languageName: node linkType: hard +"use-sync-external-store@npm:^1.4.0": + version: 1.7.0 + resolution: "use-sync-external-store@npm:1.7.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10c0/6bae7cb778ce611131ec830c4e469fbc2872acefc25d2e4cf1c28b8628690689770742a9f2f0642c95134f9c77041fee60f0352f81ca43f96643b0ed01774726 + languageName: node + linkType: hard + "util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -17371,28 +18796,6 @@ __metadata: languageName: node linkType: hard -"util@npm:^0.10.3": - version: 0.10.4 - resolution: "util@npm:0.10.4" - dependencies: - inherits: "npm:2.0.3" - checksum: 10c0/d29f6893e406b63b088ce9924da03201df89b31490d4d011f1c07a386ea4b3dbe907464c274023c237da470258e1805d806c7e4009a5974cd6b1d474b675852a - languageName: node - linkType: hard - -"util@npm:^0.12.5": - version: 0.12.5 - resolution: "util@npm:0.12.5" - dependencies: - inherits: "npm:^2.0.3" - is-arguments: "npm:^1.0.4" - is-generator-function: "npm:^1.0.7" - is-typed-array: "npm:^1.1.3" - which-typed-array: "npm:^1.1.2" - checksum: 10c0/c27054de2cea2229a66c09522d0fa1415fb12d861d08523a8846bf2e4cbf0079d4c3f725f09dcb87493549bcbf05f5798dce1688b53c6c17201a45759e7253f3 - languageName: node - linkType: hard - "utila@npm:~0.4": version: 0.4.0 resolution: "utila@npm:0.4.0" @@ -17423,17 +18826,12 @@ __metadata: languageName: node linkType: hard -"uvu@npm:^0.5.0": - version: 0.5.6 - resolution: "uvu@npm:0.5.6" - dependencies: - dequal: "npm:^2.0.0" - diff: "npm:^5.0.0" - kleur: "npm:^4.0.3" - sade: "npm:^1.7.3" +"uuid@npm:^11.1.0 || ^12 || ^13 || ^14.0.0": + version: 14.0.3 + resolution: "uuid@npm:14.0.3" bin: - uvu: bin.js - checksum: 10c0/ad32eb5f7d94bdeb71f80d073003f0138e24f61ed68cecc8e15d2f30838f44c9670577bb1775c8fac894bf93d1bc1583d470a9195e49bfa6efa14cc6f4942bff + uuid: dist-node/bin/uuid + checksum: 10c0/e56e610ae3bd1ca099244e01ee5eff502675ede4601d971b80fff993ad97236c80197340113f759e6ead501ee6a8d52648f6deef1332ce9f192c4720f4891f62 languageName: node linkType: hard @@ -17491,16 +18889,6 @@ __metadata: languageName: node linkType: hard -"vfile-location@npm:^4.0.0": - version: 4.1.0 - resolution: "vfile-location@npm:4.1.0" - dependencies: - "@types/unist": "npm:^2.0.0" - vfile: "npm:^5.0.0" - checksum: 10c0/77097e819579214d3346aaa2b06e4d23e2413221ac4914679d312cf64973011b76f0e2424fa8f18987befcd6ed60f4f6c4c6ebd5d5326062173a95f6b4445a96 - languageName: node - linkType: hard - "vfile-location@npm:^5.0.0": version: 5.0.2 resolution: "vfile-location@npm:5.0.2" @@ -17511,16 +18899,6 @@ __metadata: languageName: node linkType: hard -"vfile-message@npm:^3.0.0": - version: 3.1.4 - resolution: "vfile-message@npm:3.1.4" - dependencies: - "@types/unist": "npm:^2.0.0" - unist-util-stringify-position: "npm:^3.0.0" - checksum: 10c0/c4ccf9c0ced92d657846fd067fefcf91c5832cdbe2ecc431bb67886e8c959bf7fc05a9dbbca5551bc34c9c87a0a73854b4249f65c64ddfebc4d59ea24a18b996 - languageName: node - linkType: hard - "vfile-message@npm:^4.0.0": version: 4.0.2 resolution: "vfile-message@npm:4.0.2" @@ -17531,18 +18909,6 @@ __metadata: languageName: node linkType: hard -"vfile@npm:^5.0.0": - version: 5.3.7 - resolution: "vfile@npm:5.3.7" - dependencies: - "@types/unist": "npm:^2.0.0" - is-buffer: "npm:^2.0.0" - unist-util-stringify-position: "npm:^3.0.0" - vfile-message: "npm:^3.0.0" - checksum: 10c0/c36bd4c3f16ec0c6cbad0711ca99200316bbf849d6b07aa4cb5d9062cc18ae89249fe62af9521926e9659c0e6bc5c2c1da0fe26b41fb71e757438297e1a41da4 - languageName: node - linkType: hard - "vfile@npm:^6.0.0, vfile@npm:^6.0.1": version: 6.0.1 resolution: "vfile@npm:6.0.1" @@ -17554,13 +18920,6 @@ __metadata: languageName: node linkType: hard -"vm-browserify@npm:^1.1.2": - version: 1.1.2 - resolution: "vm-browserify@npm:1.1.2" - checksum: 10c0/0cc1af6e0d880deb58bc974921320c187f9e0a94f25570fca6b1bd64e798ce454ab87dfd797551b1b0cc1849307421aae0193cedf5f06bdb5680476780ee344b - languageName: node - linkType: hard - "warning@npm:^4.0.3": version: 4.0.3 resolution: "warning@npm:4.0.3" @@ -17640,7 +18999,26 @@ __metadata: languageName: node linkType: hard -"webpack-dev-server@npm:^4.15.1, webpack-dev-server@npm:^4.15.2": +"webpack-dev-middleware@npm:^7.4.2": + version: 7.4.6 + resolution: "webpack-dev-middleware@npm:7.4.6" + dependencies: + colorette: "npm:^2.0.10" + memfs: "npm:^4.43.1" + mime-types: "npm:^3.0.1" + on-finished: "npm:^2.4.1" + range-parser: "npm:^1.2.1" + schema-utils: "npm:^4.0.0" + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + checksum: 10c0/3d6cfaa36a1d7059f112c1c585b85fd041aad358f142cd913ff009c0954891704cc14f64febccbd2552add4cf119848c824a2ee37de6dbca65cc80e3aa3df28a + languageName: node + linkType: hard + +"webpack-dev-server@npm:^4.15.1": version: 4.15.2 resolution: "webpack-dev-server@npm:4.15.2" dependencies: @@ -17687,6 +19065,51 @@ __metadata: languageName: node linkType: hard +"webpack-dev-server@npm:^5.2.2": + version: 5.2.6 + resolution: "webpack-dev-server@npm:5.2.6" + dependencies: + "@types/bonjour": "npm:^3.5.13" + "@types/connect-history-api-fallback": "npm:^1.5.4" + "@types/express": "npm:^4.17.25" + "@types/express-serve-static-core": "npm:^4.17.21" + "@types/serve-index": "npm:^1.9.4" + "@types/serve-static": "npm:^1.15.5" + "@types/sockjs": "npm:^0.3.36" + "@types/ws": "npm:^8.5.10" + ansi-html-community: "npm:^0.0.8" + bonjour-service: "npm:^1.2.1" + chokidar: "npm:^3.6.0" + colorette: "npm:^2.0.10" + compression: "npm:^1.8.1" + connect-history-api-fallback: "npm:^2.0.0" + express: "npm:^4.22.1" + graceful-fs: "npm:^4.2.6" + http-proxy-middleware: "npm:^2.0.9" + ipaddr.js: "npm:^2.1.0" + launch-editor: "npm:^2.14.1" + open: "npm:^10.0.3" + p-retry: "npm:^6.2.0" + schema-utils: "npm:^4.2.0" + selfsigned: "npm:^5.5.0" + serve-index: "npm:^1.9.1" + sockjs: "npm:^0.3.24" + spdy: "npm:^4.0.2" + webpack-dev-middleware: "npm:^7.4.2" + ws: "npm:^8.18.0" + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + bin: + webpack-dev-server: bin/webpack-dev-server.js + checksum: 10c0/8240a52d7eee2ca156a708f1533236e24dae9ebd0794fb17c98cfd77804e2384d9b402e8778d6453e53542a8e99647335f0002e319ac6b9d13aa6ff1b4f4bf5e + languageName: node + linkType: hard + "webpack-merge@npm:^5.9.0": version: 5.10.0 resolution: "webpack-merge@npm:5.10.0" @@ -17716,7 +19139,7 @@ __metadata: languageName: node linkType: hard -"webpack@npm:^5.61.0, webpack@npm:^5.88.1": +"webpack@npm:^5.88.1": version: 5.93.0 resolution: "webpack@npm:5.93.0" dependencies: @@ -17803,21 +19226,23 @@ __metadata: languageName: node linkType: hard -"webpackbar@npm:^6.0.1": - version: 6.0.1 - resolution: "webpackbar@npm:6.0.1" +"webpackbar@npm:^7.0.0": + version: 7.0.0 + resolution: "webpackbar@npm:7.0.0" dependencies: - ansi-escapes: "npm:^4.3.2" - chalk: "npm:^4.1.2" + ansis: "npm:^3.2.0" consola: "npm:^3.2.3" - figures: "npm:^3.2.0" - markdown-table: "npm:^2.0.0" pretty-time: "npm:^1.1.0" std-env: "npm:^3.7.0" - wrap-ansi: "npm:^7.0.0" peerDependencies: + "@rspack/core": "*" webpack: 3 || 4 || 5 - checksum: 10c0/8dfa2c55f8122f729c7efd515a2b50fb752c0d0cb27ec2ecdbc70d90a86d5f69f466c9c5d01004f71b500dafba957ecd4413fca196a98cf99a39b705f98cae97 + peerDependenciesMeta: + "@rspack/core": + optional: true + webpack: + optional: true + checksum: 10c0/03ed85edca12af824319dfcd0fe5c3a90b9e3c86400a604a55589abe0a66a682033e7de027e89aae03652b6fb8ca7fd2831d86829179304ea3121f807808f7c6 languageName: node linkType: hard @@ -17849,19 +19274,6 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.2": - version: 1.1.15 - resolution: "which-typed-array@npm:1.1.15" - dependencies: - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.7" - for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/4465d5348c044032032251be54d8988270e69c6b7154f8fcb2a47ff706fe36f7624b3a24246b8d9089435a8f4ec48c1c1025c5d6b499456b9e5eff4f48212983 - languageName: node - linkType: hard - "which@npm:^1.3.1": version: 1.3.1 resolution: "which@npm:1.3.1" @@ -17982,6 +19394,30 @@ __metadata: languageName: node linkType: hard +"ws@npm:^8.18.0": + version: 8.22.0 + resolution: "ws@npm:8.22.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/7304d14ef38898dd366a528a85e2da389c4eebf30f4ce8a007bd2dce6025f9b619cefe44fe2354f0bad0ec541b1c9a4da06a3f3e046ab56f01fd52d5784ecfb2 + languageName: node + linkType: hard + +"wsl-utils@npm:^0.1.0": + version: 0.1.0 + resolution: "wsl-utils@npm:0.1.0" + dependencies: + is-wsl: "npm:^3.1.0" + checksum: 10c0/44318f3585eb97be994fc21a20ddab2649feaf1fbe893f1f866d936eea3d5f8c743bec6dc02e49fbdd3c0e69e9b36f449d90a0b165a4f47dd089747af4cf2377 + languageName: node + linkType: hard + "xdg-basedir@npm:^5.0.1, xdg-basedir@npm:^5.1.0": version: 5.1.0 resolution: "xdg-basedir@npm:5.1.0" @@ -17989,12 +19425,12 @@ __metadata: languageName: node linkType: hard -"xml-formatter@npm:^2.6.1": - version: 2.6.1 - resolution: "xml-formatter@npm:2.6.1" +"xml-formatter@npm:^3.6.6": + version: 3.7.0 + resolution: "xml-formatter@npm:3.7.0" dependencies: - xml-parser-xo: "npm:^3.2.0" - checksum: 10c0/97af94786f14d295eb74d5062e311f6c7b351d7b2b11c76d275eeb5197d98450bd0197de51dda9fbd6f03fbd23432e535fd13e8780a207cb1158a3d987bf02e5 + xml-parser-xo: "npm:^4.1.5" + checksum: 10c0/9558493c1146d02476b5ca562d8116d56e8aa029c10c943eb8393feccd3da8c6f770274db6fa4bedfd06bc26bcfdfed82f90e2f8f8f3d9e9c5f0fb9b1bb07a0e languageName: node linkType: hard @@ -18009,17 +19445,10 @@ __metadata: languageName: node linkType: hard -"xml-parser-xo@npm:^3.2.0": - version: 3.2.0 - resolution: "xml-parser-xo@npm:3.2.0" - checksum: 10c0/33101bc707eeccda575f2df2de20d9b01513467c16c53e9f87205ab4bcc800586f1080cf37550b681b9c123b4a7778dcdb324989782c2a6c6698ae5ab623be84 - languageName: node - linkType: hard - -"xtend@npm:^4.0.2": - version: 4.0.2 - resolution: "xtend@npm:4.0.2" - checksum: 10c0/366ae4783eec6100f8a02dff02ac907bf29f9a00b82ac0264b4d8b832ead18306797e283cf19de776538babfdcb2101375ec5646b59f08c52128ac4ab812ed0e +"xml-parser-xo@npm:^4.1.5": + version: 4.1.6 + resolution: "xml-parser-xo@npm:4.1.6" + checksum: 10c0/78966a8b310f545274d5a99cfd6d03f7d2a63544b6bc983a324e1e86dfaf2d2d6f5114c0d6bba8ebf5659efd47c033eab16fce72c8f34512a100eb9e562da39a languageName: node linkType: hard