Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a02d0af349 | ||
|
|
06f12d2248 | ||
|
|
5641161aa8 | ||
|
|
5277c30f68 |
No files matched your search
@@ -30,29 +30,22 @@ jobs:
|
||||
name: Deploy to GitHub Pages
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af
|
||||
with:
|
||||
node-version: 22
|
||||
|
||||
- name: Enable Corepack
|
||||
run: corepack enable
|
||||
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup Pages
|
||||
uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b
|
||||
|
||||
- uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af
|
||||
- uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b
|
||||
with:
|
||||
node-version: 22
|
||||
node-version: 18
|
||||
cache: yarn
|
||||
|
||||
- name: Install dependencies
|
||||
run: yarn install --frozen-lockfile
|
||||
|
||||
- uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57
|
||||
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
|
||||
with:
|
||||
path: |
|
||||
${{ github.workspace }}/.docusaurus
|
||||
@@ -78,4 +71,4 @@ jobs:
|
||||
steps:
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e
|
||||
uses: actions/deploy-pages@decdde0ac072f6dcbe43649d82d9c635fff5b4e4
|
||||
@@ -8,26 +8,19 @@ jobs:
|
||||
name: Build PR
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af
|
||||
with:
|
||||
node-version: 22
|
||||
|
||||
- name: Enable Corepack
|
||||
run: corepack enable
|
||||
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af
|
||||
- uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b
|
||||
with:
|
||||
node-version: 22
|
||||
node-version: 18
|
||||
cache: yarn
|
||||
|
||||
- name: Install dependencies
|
||||
run: yarn install --frozen-lockfile
|
||||
|
||||
- uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57
|
||||
- uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
|
||||
with:
|
||||
path: |
|
||||
${{ github.workspace }}/.docusaurus
|
||||
|
||||
+1
-6
@@ -26,9 +26,4 @@ vendor
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
package-lock.json
|
||||
|
||||
.pnp.*
|
||||
.yarn/*
|
||||
!.yarn/patches
|
||||
!.yarn/versions
|
||||
package-lock.json
|
||||
@@ -1 +0,0 @@
|
||||
nodeLinker: node-modules
|
||||
@@ -770,46 +770,5 @@
|
||||
"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. <br> 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."
|
||||
},
|
||||
"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"
|
||||
}
|
||||
}
|
||||
@@ -182,9 +182,5 @@
|
||||
"sidebar.geyserSidebar.category.Geyser API": {
|
||||
"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"
|
||||
}
|
||||
}
|
||||
@@ -2,73 +2,5 @@
|
||||
"copyright": {
|
||||
"message": "Copyright © 2024 GeyserMC. Built with Docusaurus.",
|
||||
"description": "The footer copyright"
|
||||
},
|
||||
"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.Geyser": {
|
||||
"message": "Geyser",
|
||||
"description": "The label of footer link with label=Geyser linking to download?project=geyser"
|
||||
},
|
||||
"link.item.label.Floodgate": {
|
||||
"message": "Floodgate",
|
||||
"description": "The label of footer link with label=Floodgate linking to download?project=floodgate"
|
||||
},
|
||||
"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.Crowdin": {
|
||||
"message": "Crowdin",
|
||||
"description": "The label of footer link with label=Crowdin linking to https://translate.geysermc.org/"
|
||||
},
|
||||
"link.item.label.Discord": {
|
||||
"message": "Discord",
|
||||
"description": "The label of footer link with label=Discord linking to https://discord.gg/geysermc"
|
||||
},
|
||||
"link.item.label.GitHub": {
|
||||
"message": "GitHub",
|
||||
"description": "The label of footer link with label=GitHub linking to https://github.com/GeyserMC/Geyser"
|
||||
},
|
||||
"link.item.label.Reddit": {
|
||||
"message": "Reddit",
|
||||
"description": "The label of footer link with label=Reddit linking to https://www.reddit.com/r/GeyserMC/"
|
||||
},
|
||||
"link.item.label.Twitter": {
|
||||
"message": "Twitter",
|
||||
"description": "The label of footer link with label=Twitter linking to https://twitter.com/Geyser_MC"
|
||||
},
|
||||
"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/"
|
||||
},
|
||||
"logo.alt": {
|
||||
"message": "GeyserMC logo",
|
||||
"description": "The alt text of footer logo"
|
||||
}
|
||||
}
|
||||
+23
-26
@@ -23,33 +23,31 @@
|
||||
"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",
|
||||
"@docusaurus/core": "^3.4.0",
|
||||
"@docusaurus/preset-classic": "^3.4.0",
|
||||
"@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",
|
||||
"@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",
|
||||
"@mdx-js/react": "^3.0.0",
|
||||
"clsx": "^1.2.1",
|
||||
"docusaurus-plugin-openapi-docs": "^3.0.1",
|
||||
"docusaurus-theme-openapi-docs": "^3.0.1",
|
||||
"prism-react-renderer": "^2.1.0",
|
||||
"react": "^18.0.0",
|
||||
"react-decision-tree-flow": "^2.1.0",
|
||||
"react-dom": "^18.0.0",
|
||||
"react-markdown": "^9.0.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.4.0",
|
||||
"@docusaurus/tsconfig": "^3.4.0",
|
||||
"@docusaurus/types": "^3.4.0",
|
||||
"docusaurus-plugin-sass": "^0.2.5",
|
||||
"sass": "^1.77.8",
|
||||
"typescript": "~5.2.2"
|
||||
},
|
||||
"browserslist": {
|
||||
"production": [
|
||||
@@ -64,7 +62,6 @@
|
||||
]
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=22.0"
|
||||
},
|
||||
"packageManager": "yarn@4.5.3"
|
||||
"node": ">=18.0"
|
||||
}
|
||||
}
|
||||
+15
-14
@@ -1,7 +1,8 @@
|
||||
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 { translate } from "@docusaurus/Translate";
|
||||
import Translate, { translate } from "@docusaurus/Translate";
|
||||
import { providersData } from "../data/providers";
|
||||
|
||||
export const noP = (props: { children: any; }) => {
|
||||
@@ -28,7 +29,7 @@ export const Provider = ({ type }) => {
|
||||
)
|
||||
}
|
||||
|
||||
export const ProviderSelector = ({setProvider}) => {
|
||||
export const ProviderSelector = () => {
|
||||
const providers: HostingProvider[] = [
|
||||
...Object.values(providersData.built_in),
|
||||
...Object.values(providersData.support),
|
||||
@@ -37,17 +38,9 @@ export const ProviderSelector = ({setProvider}) => {
|
||||
|
||||
providers.unshift({
|
||||
name: 'Not listed',
|
||||
url: null,
|
||||
config: {
|
||||
clone_remote_port: true
|
||||
},
|
||||
connect_instructions: translate({
|
||||
id: 'providers.connect.templates.java_ip_port',
|
||||
message: 'Connect with the Java server IP and Java server port.'
|
||||
}),
|
||||
info: translate({
|
||||
id: 'providers.provider.not_listed.info',
|
||||
message: "If these instructions do not work, contact your server hosting provider and ask for a UDP port. Then, set clone-remote-port to false, and set 'bedrock port' to the port you got. For VPS/KVM servers, please follow the self-hosting steps."
|
||||
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. <br> 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."
|
||||
})
|
||||
} as HostingProvider);
|
||||
|
||||
@@ -58,7 +51,6 @@ export const ProviderSelector = ({setProvider}) => {
|
||||
const selectedName = event.target.value;
|
||||
const provider = providers.find(p => p.name === selectedName);
|
||||
setSelectedProvider(provider);
|
||||
setProvider(provider);
|
||||
}
|
||||
|
||||
return (
|
||||
@@ -71,6 +63,15 @@ export const ProviderSelector = ({setProvider}) => {
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
<Admonition type="tip" title={<Translate id='components.provider.instructions'>Provider Instructions</Translate>}>
|
||||
{selectedProvider ? (
|
||||
<ReactMarkdown>{selectedProvider.description}</ReactMarkdown>
|
||||
) : (
|
||||
<p>
|
||||
<Translate id='components.provider.select'>Select a provider to see specific installation instructions</Translate>
|
||||
</p>
|
||||
)}
|
||||
</Admonition>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
export interface StepData {
|
||||
path: string[];
|
||||
}
|
||||
|
||||
export default interface StepProps {
|
||||
data: StepData;
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
import { Controls, Step, useControls, Wizard } from 'react-decision-tree-flow'
|
||||
|
||||
import Step1 from './steps/Step1'
|
||||
import Step2 from './steps/Step2'
|
||||
import Step3 from './steps/Step3'
|
||||
import Error from './steps/Error'
|
||||
import { useEffect, useState } from 'react'
|
||||
import { StepData } from './StepProps'
|
||||
import MarkDownStep from './steps/MarkDownStep'
|
||||
|
||||
|
||||
// React components for each step
|
||||
const stepComponents = [
|
||||
Step1,
|
||||
Step2,
|
||||
Step3,
|
||||
Error
|
||||
]
|
||||
|
||||
// Build the steps object from the stepComponents array
|
||||
function formatStepName(name: string): string {
|
||||
return name.charAt(0).toLowerCase() + name.slice(1)
|
||||
}
|
||||
let steps = Object.fromEntries(stepComponents.map((Component) => [formatStepName(Component.name), Component]))
|
||||
|
||||
// Add the markdown steps
|
||||
steps = {
|
||||
//test: MarkDownStep(Test),
|
||||
...steps
|
||||
}
|
||||
|
||||
|
||||
// Make a tree so all steps can go to all others
|
||||
const tree = Object.fromEntries(Object.keys(steps).map((key, i, arr) => {
|
||||
return [key, arr]
|
||||
}))
|
||||
|
||||
function TreeInternals(): JSX.Element {
|
||||
const [data, setData] = useState<StepData>({
|
||||
path: []
|
||||
})
|
||||
|
||||
const { step } = useControls();
|
||||
useEffect(() => {
|
||||
if (step == 'internalStep') {
|
||||
console.log()
|
||||
}
|
||||
setData(data => ({...data, path: [...data.path, step as string]}))
|
||||
}, [step])
|
||||
|
||||
return (
|
||||
<>
|
||||
{Object.entries(steps).map(([name, Component]) => <Step key={name} name={name}><Component data={data}/></Step>)}
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
export default function TroubleshootingTree(): JSX.Element {
|
||||
return (
|
||||
<Wizard tree={tree} first={Object.keys(steps)[0]}>
|
||||
<TreeInternals />
|
||||
</Wizard>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
import { useControls } from "react-decision-tree-flow";
|
||||
import StepProps from "../StepProps";
|
||||
|
||||
export default function Error({ data }: StepProps): JSX.Element {
|
||||
const { step, tree, destinations, back } = useControls();
|
||||
|
||||
return (
|
||||
<>
|
||||
I am error
|
||||
<br />
|
||||
Path: {data.path.join(' -> ')}
|
||||
<br />
|
||||
<button onClick={() => destinations.step1({...data, path: [...data.path, step]})}>Go back to start</button>
|
||||
</>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
import { useControls } from "react-decision-tree-flow";
|
||||
import StepProps from "../StepProps";
|
||||
|
||||
export default function MarkDownStep(Component: any): Function {
|
||||
return function InternalStep({ data }: StepProps): JSX.Element {
|
||||
const { step, tree, destinations, back } = useControls();
|
||||
|
||||
return (<Component step={step} tree={tree} destinations={destinations} back={back} data={data}/>)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
import { useControls } from "react-decision-tree-flow";
|
||||
import StepProps from "../StepProps";
|
||||
|
||||
export default function OwnerPrerequesites({ data }: StepProps): JSX.Element {
|
||||
const { step, tree, destinations, back } = useControls();
|
||||
|
||||
return (
|
||||
<>
|
||||
|
||||
# Before we start...
|
||||
|
||||
Are you hosting a Geyser instance yourself?
|
||||
|
||||
You should click "Yes" if you...:
|
||||
- ...own and operate a Minecraft: Java edition server with the Geyser plugin/mod installed.
|
||||
- ...have a Geyser-Standalone / Geyser-ViaProxy instance set up to connect to other servers.
|
||||
- ...use any variant of Geyser on any supported platform.
|
||||
|
||||
If you are NOT hosting your own Geyser instance or server - and are intead connecting to someone's server -
|
||||
then please contact the server administrator for help.
|
||||
|
||||
<br />
|
||||
// TODO add "return" button
|
||||
<button onClick={() => destinations.step2({...data, path: [...data.path, step]})}>Go to Step 2</button>
|
||||
</>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
import { useControls } from "react-decision-tree-flow";
|
||||
import StepProps from "../StepProps";
|
||||
|
||||
export default function Step1({ data }: StepProps): JSX.Element {
|
||||
const { step, tree, destinations, back } = useControls();
|
||||
|
||||
return (
|
||||
<>
|
||||
I am step 1
|
||||
<br />
|
||||
<button onClick={() => destinations.step2({...data, path: [...data.path, step]})}>Go to Step 2</button>
|
||||
</>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
import { useControls } from "react-decision-tree-flow";
|
||||
import StepProps from "../StepProps";
|
||||
|
||||
export default function Step2({ data }: StepProps): JSX.Element {
|
||||
const { step, tree, destinations, back } = useControls();
|
||||
|
||||
return (
|
||||
<>
|
||||
I am step 2
|
||||
<br />
|
||||
<div>
|
||||
<button onClick={() => destinations.error({...data, path: [...data.path, step]})}>Go to error</button>
|
||||
<button onClick={() => destinations.step3({...data, path: [...data.path, step]})}>Go to Step 3</button>
|
||||
</div>
|
||||
</>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
import { useControls } from "react-decision-tree-flow";
|
||||
import StepProps from "../StepProps";
|
||||
|
||||
export default function Step3({ data }: StepProps): JSX.Element {
|
||||
const { step, tree, destinations, back } = useControls();
|
||||
|
||||
return (
|
||||
<>
|
||||
I am step 3. No steps after me!
|
||||
</>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
steps:
|
||||
|
||||
init: u owner?
|
||||
"""
|
||||
|
||||
// TODO figure out steps; simplify language
|
||||
|
||||
# Before we start...
|
||||
|
||||
Are you hosting a Geyser instance yourself?
|
||||
|
||||
You should click "Yes" if you...:
|
||||
- ...own and operate a Minecraft: Java edition server with the Geyser plugin/mod installed.
|
||||
- ...have a Geyser-Standalone / Geyser-ViaProxy instance set up to connect to other servers.
|
||||
- ...use any variant of Geyser on any supported platform.
|
||||
|
||||
If you are NOT hosting your own Geyser instance or server - and are intead connecting to someone's server -
|
||||
then please contact the server administrator for help.
|
||||
|
||||
options: y/n -> y: start troubleshooting; n -> show a link to send to administrator
|
||||
"""
|
||||
|
||||
then: u using right guide?
|
||||
|
||||
"""
|
||||
|
||||
any errors in your log? do you see a connection attempt? conntest command?
|
||||
|
||||
"""
|
||||
|
||||
1. Toubleshooting start
|
||||
|
||||
Self hosting vs minecraft server hosting provider
|
||||
|
||||
"""
|
||||
Hosting provider:
|
||||
Select this option if you are using a Minecraft server hosting provider that
|
||||
provides you with a Minecraft server.
|
||||
|
||||
Self-Hosted @ home:
|
||||
Select this option if you are hosting on your own Windows/Linux/MacOS computer,
|
||||
server located at your location.
|
||||
|
||||
Self-Hosted @ nothome:
|
||||
Applies for KVM/VPS/Bare-Metal servers (and similar) that are not located at your location.
|
||||
"""
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Hosting provider:
|
||||
|
||||
1. Select provider (dropdown w. search / not listed)
|
||||
|
||||
Non-Listed:
|
||||
- recommend clone-remote-port, do basic dump checks for bad options/system properties
|
||||
- pls contact host!
|
||||
|
||||
"""
|
||||
We unfortunately do not have instructions available for the server hosting provider you're using.
|
||||
|
||||
However, we recommend trying these configurations:
|
||||
|
||||
1. Runnning Geyser on the Java server port
|
||||
|
||||
- Open the Geyser configuration, and set `clone-remote-port` to `true`. Then, save the changes, and restart the server.
|
||||
|
||||
- Verify connecting works:
|
||||
-> directly connect with the java server ip and port
|
||||
or
|
||||
-> connectiontest command
|
||||
|
||||
If none of these options work, please contact your server hosting provider for help on how to set up Geyser.
|
||||
|
||||
"""
|
||||
|
||||
Listed:
|
||||
- geyser dump
|
||||
-> configuration check (match with instructions???)
|
||||
-> bad options: proxy protocol; remote address
|
||||
-> check for system properties
|
||||
|
||||
- options:
|
||||
-> re-ask for a geyser dump (verify correct changes)
|
||||
-> still not working; continue troubleshooting
|
||||
-> errors in log?
|
||||
-> else: contact host pls
|
||||
-> works now -> send to feedback page?
|
||||
|
||||
OR: unable to get dump
|
||||
-> is server running? log???
|
||||
|
||||
Options:
|
||||
-> addr. in use -> show setup steps
|
||||
-> port in use (-> check for voice plugins/query???)
|
||||
-> startup errors -> join discord/open github issue
|
||||
-> ...
|
||||
|
||||
IF server running/config correct:
|
||||
-> ensure connection to proper ip/port
|
||||
-> contact server hosting provider for help
|
||||
-> join discord if unclear
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Self-Hosted @ home:
|
||||
|
||||
First stage: Gather information!
|
||||
|
||||
Which OS are you hosting on? Linux/Win/MacOS
|
||||
|
||||
-> Windows
|
||||
-> MacOS
|
||||
-> Linux
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
+279
-504
File diff suppressed because it is too large.
Load diff
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"bedrock": {
|
||||
"supported": "1.21.40-1.21.51",
|
||||
"supported": "1.20.80-1.21.30",
|
||||
"latest": {
|
||||
"id": 766,
|
||||
"name": "1.21.51"
|
||||
"id": 729,
|
||||
"name": "1.21.30"
|
||||
}
|
||||
},
|
||||
"java": {
|
||||
"supported": "1.21.4"
|
||||
"supported": "1.21/1.21.1"
|
||||
}
|
||||
}
|
||||
@@ -129,7 +129,7 @@ const DownloadPage: React.FC = () => (
|
||||
/>
|
||||
}
|
||||
/>
|
||||
{/* <Collapsible
|
||||
<Collapsible
|
||||
title='Hydraulic'
|
||||
subtitle={<Translate id='pages.download.description.hydraulic'>A companion mod to Geyser which allows for Bedrock players to join modded Minecraft: Java Edition servers.</Translate>}
|
||||
id='hydraulic'
|
||||
@@ -145,7 +145,7 @@ const DownloadPage: React.FC = () => (
|
||||
gridColumns={1}
|
||||
/>
|
||||
}
|
||||
/> */}
|
||||
/>
|
||||
</Collapsibles>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
@@ -3,7 +3,7 @@ import HeroBanner from '@site/src/components/HeroBanner';
|
||||
import HeroBackground from '@site/static/img/site/split-background.webp';
|
||||
import Layout from '@theme/Layout';
|
||||
import styles from './utilities.module.scss';
|
||||
import {useRef, useState} from 'react';
|
||||
import { useRef, useState } from 'react';
|
||||
|
||||
const ConfigEditorPage: React.FC = () => {
|
||||
const [config, setConfig] = useState('');
|
||||
@@ -53,9 +53,7 @@ const ConfigEditorPage: React.FC = () => {
|
||||
let currentSection = '';
|
||||
let currentComment = '';
|
||||
|
||||
const newConfig = {"": {}};
|
||||
|
||||
let ignore = false;
|
||||
const newConfig = {};
|
||||
|
||||
// Parse each line of the config
|
||||
for (let i = 0; i < lines.length; i++) {
|
||||
@@ -74,7 +72,7 @@ const ConfigEditorPage: React.FC = () => {
|
||||
|
||||
const commented = line.startsWith('#');
|
||||
|
||||
const match = line.match(keyReg);
|
||||
const match = line.match(keyReg)
|
||||
if (match === null) {
|
||||
// Check if we are in a comment
|
||||
if (commented) {
|
||||
@@ -86,26 +84,12 @@ const ConfigEditorPage: React.FC = () => {
|
||||
// Check if we are in a new section
|
||||
if (line.endsWith(':')) {
|
||||
currentSection = line.replace(':', '');
|
||||
|
||||
// Ignore user auths section
|
||||
if (currentSection === 'saved-user-logins') {
|
||||
ignore = true;
|
||||
continue;
|
||||
}
|
||||
ignore = false;
|
||||
if (commented) {
|
||||
currentComment += '<strong>Note: This option is commented out by default. It will be automatically uncommented if modified.</strong>' + '<br>';
|
||||
}
|
||||
|
||||
currentComment = currentComment.replace(URL_REGEX, function ($0) {
|
||||
return '<a href="' + $0 + '">' + $0 + '</a>';
|
||||
})
|
||||
newConfig[currentSection] = {sectionDesc0: currentComment};
|
||||
currentComment = '';
|
||||
continue;
|
||||
}
|
||||
|
||||
if (ignore) {
|
||||
// Ignore user auths section
|
||||
if (currentSection === 'saved-user-logins') {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -113,7 +97,7 @@ const ConfigEditorPage: React.FC = () => {
|
||||
const splitLine = line.split(':');
|
||||
splitLine[0] = splitLine[0].trim();
|
||||
let val = '';
|
||||
for (let j = 1; j < splitLine.length; j++) {
|
||||
for (let j = 1;j<splitLine.length;j++) {
|
||||
val += splitLine[j];
|
||||
}
|
||||
val = val.trim();
|
||||
@@ -124,14 +108,11 @@ const ConfigEditorPage: React.FC = () => {
|
||||
}
|
||||
|
||||
if (commented) {
|
||||
currentComment += '<strong>Note: This option is commented out by default. It will be automatically uncommented if modified.</strong>' + '<br>';
|
||||
currentComment += '<strong>Note: This option is commented on, and if you change it, it will be automatically uncommented.</strong>' + '<br>';
|
||||
}
|
||||
|
||||
currentComment = currentComment.replace(URL_REGEX, function ($0) {
|
||||
return '<a href="' + $0 + '">' + $0 + '</a>';
|
||||
})
|
||||
|
||||
// Add the config option to the config object
|
||||
newConfig[currentSection] = newConfig[currentSection] || {};
|
||||
newConfig[currentSection][splitLine[0]] = {
|
||||
desc: currentComment,
|
||||
value: val,
|
||||
@@ -151,22 +132,12 @@ const ConfigEditorPage: React.FC = () => {
|
||||
<div className={styles.cardBody}>
|
||||
{Object.keys(config[configKey]).map(configOption => {
|
||||
const configOptionInfo = config[configKey][configOption];
|
||||
if (configOption == "sectionDesc0") {
|
||||
if (configOptionInfo === "") {
|
||||
return;
|
||||
}
|
||||
return (
|
||||
<div className={styles.configOption}>
|
||||
<p dangerouslySetInnerHTML={{__html: configOptionInfo}}/>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
const configOptionKey = configKey === '' ? configOption : `${configKey}.${configOption}`;
|
||||
const showOptionName = configOption.replace('#', '').trim()
|
||||
const showOptionName = configOption.replace('#','').trim()
|
||||
return (
|
||||
<div key={configOptionKey} className={styles.configOption}>
|
||||
<h3>{showOptionName}</h3>
|
||||
<p dangerouslySetInnerHTML={{__html: configOptionInfo.desc}}/>
|
||||
<p dangerouslySetInnerHTML={{ __html: configOptionInfo.desc }} />
|
||||
{getInput(configOptionKey, configOptionInfo.value)}
|
||||
</div>
|
||||
)
|
||||
@@ -176,8 +147,6 @@ const ConfigEditorPage: React.FC = () => {
|
||||
))
|
||||
}
|
||||
|
||||
const URL_REGEX = /https?:\/\/(([0-9a-z.]+\.[a-z]+)|(([0-9]{1,3}\.){3}[0-9]{1,3}))(:[0-9]+)?(\/[0-9a-z%\/.\-_]*)?(\?[0-9a-z=&%_\-]*)?(#[0-9a-z=&%_\-]*)?/ig;
|
||||
|
||||
const handleExport = () => {
|
||||
let newConfig = config;
|
||||
const lines = newConfig.split('\n');
|
||||
@@ -191,8 +160,8 @@ const ConfigEditorPage: React.FC = () => {
|
||||
const option = currentObj[nestedKey];
|
||||
const oldValue = option.value;
|
||||
const index = option.line;
|
||||
const newKey = nestedKey.replace('#', '').trim();
|
||||
lines[index] = lines[index].replace(` ${nestedKey}: ${oldValue}`, ` ${newKey}: ${value}`);
|
||||
const newKey = nestedKey.replace('#','').trim();
|
||||
lines[index] = lines[index].replace(` ${nestedKey}: ${oldValue}`,` ${newKey}: ${value}`);
|
||||
} else {
|
||||
currentObj = currentObj[nestedKey];
|
||||
}
|
||||
@@ -207,7 +176,7 @@ const ConfigEditorPage: React.FC = () => {
|
||||
|
||||
function getInput(name, value) {
|
||||
const handleChange = (event) => {
|
||||
const {id, value, type, checked} = event.target;
|
||||
const { id, value, type, checked } = event.target;
|
||||
|
||||
editedConfig.current = {
|
||||
...editedConfig.current,
|
||||
@@ -219,8 +188,7 @@ const ConfigEditorPage: React.FC = () => {
|
||||
// Handle all the dropdowns
|
||||
case 'remote.auth-type':
|
||||
return (
|
||||
<select key={name} className={styles.formInput} id={name} defaultValue={value}
|
||||
onChange={handleChange}>
|
||||
<select key={name} className={styles.formInput} id={name} defaultValue={value} onChange={handleChange}>
|
||||
<option value='offline'>offline</option>
|
||||
<option value='online'>online</option>
|
||||
<option value='floodgate'>floodgate</option>
|
||||
@@ -228,8 +196,7 @@ const ConfigEditorPage: React.FC = () => {
|
||||
);
|
||||
case 'show-cooldown':
|
||||
return (
|
||||
<select key={name} className={styles.formInput} id={name} defaultValue={value}
|
||||
onChange={handleChange}>
|
||||
<select key={name} className={styles.formInput} id={name} defaultValue={value} onChange={handleChange}>
|
||||
<option value='title'>title</option>
|
||||
<option value='actionbar'>actionbar</option>
|
||||
<option value='false'>false</option>
|
||||
@@ -237,19 +204,16 @@ const ConfigEditorPage: React.FC = () => {
|
||||
);
|
||||
case 'emote-offhand-workaround':
|
||||
return (
|
||||
<select key={name} className={styles.formInput} id={name} defaultValue={value}
|
||||
onChange={handleChange}>
|
||||
<select key={name} className={styles.formInput} id={name} defaultValue={value} onChange={handleChange}>
|
||||
<option value='disabled'>disabled</option>
|
||||
<option value='no-emotes'>no-emotes</option>
|
||||
<option value='emotes-and-offhand'>emotes-and-offhand</option>
|
||||
</select>
|
||||
);
|
||||
case 'config-version':
|
||||
return <input key={name} className={styles.formInput} type='text' disabled
|
||||
defaultValue={value.replace(/"/g, '')}/>;
|
||||
return <input key={name} className={styles.formInput} type='text' disabled defaultValue={value.replace(/"/g, '')} />;
|
||||
case 'metrics.uuid':
|
||||
return <input key={name} className={styles.formInput} id={name} type='text' disabled
|
||||
defaultValue={value === 'generateduuid' ? crypto.randomUUID() : value}/>;
|
||||
return <input key={name} className={styles.formInput} id={name} type='text' disabled defaultValue={value === 'generateduuid' ? crypto.randomUUID() : value} />;
|
||||
|
||||
default:
|
||||
// Handle all the other inputs
|
||||
@@ -276,7 +240,7 @@ const ConfigEditorPage: React.FC = () => {
|
||||
|
||||
// From https://gist.github.com/danallison/3ec9d5314788b337b682
|
||||
function downloadString(text, fileType, fileName) {
|
||||
const blob = new Blob([text], {type: fileType})
|
||||
const blob = new Blob([text], { type: fileType })
|
||||
|
||||
const a = document.createElement('a')
|
||||
a.download = fileName
|
||||
@@ -287,16 +251,13 @@ const ConfigEditorPage: React.FC = () => {
|
||||
a.click()
|
||||
document.body.removeChild(a)
|
||||
|
||||
setTimeout(() => {
|
||||
URL.revokeObjectURL(a.href)
|
||||
}, 1500)
|
||||
setTimeout(() => { URL.revokeObjectURL(a.href) }, 1500)
|
||||
}
|
||||
|
||||
const NoConfigSection = () => (
|
||||
<>
|
||||
<h1><Translate id='pages.configeditor.noconfigselected.heading'>No config selected.</Translate></h1>
|
||||
<h3 className={styles.fontNormal}><Translate id='pages.configeditor.noconfigselected.subheading'>Upload a
|
||||
file or get started with the default config!</Translate></h3>
|
||||
<h3 className={styles.fontNormal}><Translate id='pages.configeditor.noconfigselected.subheading'>Upload a file or get started with the default config!</Translate></h3>
|
||||
|
||||
<div className={styles.buttonsContainer}>
|
||||
<button className={styles.button} onClick={loadDefault}>
|
||||
@@ -319,7 +280,7 @@ const ConfigEditorPage: React.FC = () => {
|
||||
|
||||
const EditorView = () => (
|
||||
<>
|
||||
<div className={styles.buttonsContainer} style={{marginBottom: '30px'}}>
|
||||
<div className={styles.buttonsContainer} style={{ marginBottom: '30px' }}>
|
||||
<button className={styles.button} onClick={handleExport}>
|
||||
<Translate id='pages.configeditor.button.export'>Export</Translate>
|
||||
</button>
|
||||
@@ -336,8 +297,8 @@ const ConfigEditorPage: React.FC = () => {
|
||||
backgroundImage={HeroBackground}
|
||||
/>
|
||||
|
||||
<div className='container' style={{marginTop: '30px'}}>
|
||||
{Object.keys(parsedConfig).length === 0 ? <NoConfigSection/> : <EditorView/>}
|
||||
<div className='container' style={{ marginTop: '30px' }}>
|
||||
{Object.keys(parsedConfig).length === 0 ? <NoConfigSection /> : <EditorView />}
|
||||
</div>
|
||||
|
||||
|
||||
@@ -354,7 +315,7 @@ export default function ConfigEditor(): JSX.Element {
|
||||
>
|
||||
<main>
|
||||
<div className='container container--fluid margin-vert--lg'>
|
||||
<ConfigEditorPage/>
|
||||
<ConfigEditorPage />
|
||||
</div>
|
||||
</main>
|
||||
</Layout>
|
||||
|
||||
@@ -2,133 +2,38 @@ import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { LoadContext, Plugin, PluginOptions } from '@docusaurus/types';
|
||||
import logger from '@docusaurus/logger';
|
||||
import ts from "typescript";
|
||||
import Module from 'module';
|
||||
|
||||
// Welcome to hell
|
||||
const createProvidersJsonPlugin = (_context: LoadContext, _options: PluginOptions): Plugin => {
|
||||
return {
|
||||
name: 'docusaurus-plugin-create-providers-json',
|
||||
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);
|
||||
async postBuild({ outDir, routes, plugins }) {
|
||||
const originalResolveFilename = Module._resolveFilename
|
||||
|
||||
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<string, string> {
|
||||
const map: Record<string, string> = {};
|
||||
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');
|
||||
// This is a hack to allow us to import a custom module instead of the normal translation module
|
||||
Module._resolveFilename = function (request, parent, isMain, options) {
|
||||
if (request == '@docusaurus/Translate') {
|
||||
request = path.resolve(__dirname, 'custom_modules', 'translate.ts');
|
||||
}
|
||||
};
|
||||
return originalResolveFilename.call(this, request, parent, isMain, options);
|
||||
};
|
||||
|
||||
// Import the providers data
|
||||
const { providersData } = await import('../data/providers');
|
||||
|
||||
// Restore the original resolve function
|
||||
Module._resolveFilename = originalResolveFilename
|
||||
|
||||
const providersFilePath = path.join(outDir, 'data/providers.json');
|
||||
|
||||
fs.mkdirSync(path.dirname(providersFilePath), { recursive: true });
|
||||
|
||||
fs.writeFileSync(providersFilePath, JSON.stringify(providersData, null, 2), 'utf-8');
|
||||
|
||||
logger.success(`Created providers.json file at ${providersFilePath}`);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
export default createProvidersJsonPlugin;
|
||||
+1
-18
@@ -3,24 +3,7 @@ import React from "react";
|
||||
export type HostingProvider = {
|
||||
name: string;
|
||||
url: string;
|
||||
hosting_article?: String; // Many hosts have their own articles for Geyser
|
||||
hosting_support?: String; // A link to the host support, can show when setup help fails
|
||||
custom_install_location?: React.ReactNode; // e.g. aternos, can skip the entire download/config process on setup guide
|
||||
config?: ConfigDetails; // If present, geyser config must be modified to function
|
||||
connect_instructions: React.ReactNode; // what players must input to connect
|
||||
additional_step?: React.ReactNode; // e.g.: must enable udp in settings/enable geyser mode
|
||||
info?: React.ReactNode; // Additional information. Displayed in info bubble.
|
||||
warn?: React.ReactNode; // shaming server hosting providers with issues.
|
||||
}
|
||||
|
||||
// Either: clone-remote-port, or
|
||||
export type ConfigDetails = {
|
||||
port?: number;
|
||||
address?: string;
|
||||
clone_remote_port?: boolean;
|
||||
port_instruction?: React.ReactNode; // Instructions on where to get a port
|
||||
address_instruction?: React.ReactNode; // Instructions on where to get the bedrock address
|
||||
other_instructions?: React.ReactNode; // Other message on which config settings can be changed
|
||||
description: React.ReactNode;
|
||||
}
|
||||
|
||||
export type ProviderType = "built_in" | "support" | "no_support";
|
||||
|
||||
+2
-3
@@ -1,13 +1,12 @@
|
||||
{
|
||||
// This file is not used in compilation. It is here just for a nice editor experience.
|
||||
"extends": "@docusaurus/tsconfig",
|
||||
"esModuleInterop": true,
|
||||
"compilerOptions": {
|
||||
"lib": ["DOM", "DOM.Iterable", "ESNext"],
|
||||
"target": "ESNext",
|
||||
"baseUrl": "."
|
||||
},
|
||||
"exclude": [
|
||||
"**/node_modules",
|
||||
"build",
|
||||
"**/node_modules"
|
||||
]
|
||||
}
|
||||
@@ -45,7 +45,7 @@ Set `allow-invalid-usernames` to `true` in LuckPerms' config.
|
||||
|
||||
## Failed to verify username! (with Paper) {#failed-to-verify-username-with-paper}
|
||||
|
||||
To completely mitigate this issue, disable `perform-username-validation` in the [unsupported settings of the `config/paper-global.yml` file](https://docs.papermc.io/paper/reference/global-configuration#unsupported_settings) (`paper.yml` in the root server folder on servers below 1.19). Using Floodgate on the backend servers will also mitigate this issue.
|
||||
To completely mitigate this issue, disable `perform-username-validation` in the [unsupported settings of the `config/paper-global.yml` file](https://paper.readthedocs.io/en/latest/server/configuration.html#unsupported_settings) (`paper.yml` in the root server folder on servers below 1.19). Using Floodgate on the backend servers will also mitigate this issue.
|
||||
|
||||
## Error with Forge or Fabric Bukkit Hybrid {#error-with-forge-or-fabric-bukkit-hybrid}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ description: Learn how to set up Floodgate on your Paper or Spigot server.
|
||||
hide_title: true
|
||||
---
|
||||
|
||||
1. Download Floodgate-Spigot from the [download page](/download/?project=floodgate).
|
||||
1. Download Floodgate-Spigot from the [download page](https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/spigot).
|
||||
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.
|
||||
@@ -9,7 +9,7 @@ You only need to install Floodgate on the BungeeCord or Velocity proxy server, u
|
||||
Additionally, it will display Bedrock edition skins properly.
|
||||
:::
|
||||
|
||||
1. Download Floodgate for your proxy software from the [download page](/download/?project=floodgate).
|
||||
1. Download Floodgate for your proxy software from the [download page](https://geysermc.org/download#floodgate).
|
||||
2. Place the Floodgate jar in the `plugins` folder, and restart the proxy server.
|
||||
3. Change `auth-type` in Geyser's config to `floodgate`.
|
||||
4. Restart the server.
|
||||
|
||||
@@ -8,7 +8,7 @@ hide_title: true
|
||||
To be able to use Floodgate authentication, you need to be able to install Floodgate on the Java server you are connecting to.
|
||||
:::
|
||||
|
||||
1. Download and install the platform-specific Floodgate jar (e.g. floodgate-spigot, or floodgate-fabric) [here](/download/?project=floodgate).
|
||||
1. Download and install the platform-specific Floodgate jar (e.g. floodgate-spigot, or floodgate-fabric) [here](https://geysermc.org/download#floodgate).
|
||||
See the platform setup instructions for a detailed, platform specific setup guide. Then, continue with the instructions below.
|
||||
2. Change `auth-type` in Geyser Standalone's config to `floodgate`.
|
||||
3. Copy the `key.pem` file in the Floodgate config folder to the same directory as Geyser Standalone.
|
||||
|
||||
@@ -8,7 +8,7 @@ hide_title: true
|
||||
To be able to use Floodgate authentication, you need to be able to install Floodgate on the Java server you are connecting to.
|
||||
:::
|
||||
|
||||
1. Download and install the platform-specific Floodgate jar (e.g. floodgate-spigot, or floodgate-fabric) [here](/download/?project=floodgate).
|
||||
1. Download and install the platform-specific Floodgate jar (e.g. floodgate-spigot, or floodgate-fabric) [here](https://geysermc.org/download#floodgate).
|
||||
See the platform setup instructions for a detailed, platform specific setup guide. Then, continue with the instructions below.
|
||||
2. Copy the `key.pem` file in the Floodgate config folder to the `/plugins/Geyser/´ directory.
|
||||
3. Restart ViaProxy.
|
||||
|
||||
@@ -21,7 +21,7 @@ Full Compatibility (Checks Bedrock Players Accurately)
|
||||
|
||||
Partially Compatible (Does not Check/Ignores Bedrock Players)
|
||||
|
||||
- [GrimAC](https://github.com/GrimAnticheat/Grim) - Last checked on 8th November 2024
|
||||
- [GrimAC](https://github.com/MWHunter/Grim) - Last checked on 30th June 2024
|
||||
- [Intave](https://intave.ac) (Paid) Requires [GeyserMC addon](https://github.com/intave/bedrock) - Last checked on 2nd July 2024
|
||||
- [Matrix](https://matrix.rip/) (Paid) - Last checked on 23rd July 2024
|
||||
- [Spartan: Java Edition](https://www.spigotmc.org/resources/25638/) (Paid) - Last checked on 18th July 2024
|
||||
|
||||
@@ -37,7 +37,7 @@ This means something (likely another instance of Geyser) is running on the port
|
||||
|
||||
### [...]` has been compiled by a more recent version of the Java Runtime (class file version 60.0)` {#-has-been-compiled-by-a-more-recent-version-of-the-java-runtime-class-file-version-600}
|
||||
|
||||
See this link for updating to Java 17: https://docs.papermc.io/misc/java-install.
|
||||
See this link for updating to Java 17: https://paper.readthedocs.io/en/latest/java-update/index.html.
|
||||
|
||||
### Hosting provider will not immediately open up UDP. {#hosting-provider-will-not-immediately-open-up-udp}
|
||||
|
||||
@@ -99,9 +99,9 @@ It has other benefits too. Here's a plugin that can just do that:
|
||||
[CommandWhitelist](https://www.spigotmc.org/resources/81326/). Alternatively, use the [HideCommands](https://github.com/Redned235/HideCommands) Geyser extension to hide commands just for Bedrock players.
|
||||
|
||||
# Failed to load locale asset cache: Unrecognized token 'Cannot'
|
||||
This or anything else related to failing to download a locale file on startup is usually caused by java trying to connect using IPv6 and Mojang only use IPv4, so start Geyser or the server up with this flag `-Djava.net.preferIPv4Stack=true`, EG: `java -Xms1024M -Djava.net.preferIPv4Stack=true -jar Geyser.jar`
|
||||
This or anything else related to failing to download a locale file on startup is usually caused by java trying to connect using IPv6 and Mojadng only use IPv4, so start Geyser or the server up with this flag `-Djava.net.preferIPv4Stack=true`, EG: `java -Xms1024M -Djava.net.preferIPv4Stack=true -jar Geyser.jar`
|
||||
|
||||
# Outdated client! Please use 1.x.x
|
||||
# Outdated client! Please use 1.x.x
|
||||
|
||||
The server is too new or Geyser is outdated. Make sure you're on the latest Geyser.
|
||||
|
||||
|
||||
@@ -292,12 +292,12 @@ The following details the schema for the mappings file. Only the `name` field is
|
||||
- Type: `string`
|
||||
- Default: `building_blocks`
|
||||
- Description: The creative category to place the block in.
|
||||
- Range: See [Menu Categories](https://wiki.bedrock.dev/documentation/menu-categories.html#list-of-categories) on the Bedrock Wiki.
|
||||
- Range: See [Creative Categories](https://wiki.bedrock.dev/documentation/creative-categories.html#list-of-creative-categories) on the Bedrock Wiki.
|
||||
- `creative_group`:
|
||||
- Type: `string`
|
||||
- Default: none
|
||||
- Description: The creative group to place the block in.
|
||||
- Range: See [Menu Groups](https://wiki.bedrock.dev/documentation/menu-categories.html#list-of-groups) on the Bedrock Wiki.
|
||||
- Range: See [Creative Tabs](https://wiki.bedrock.dev/documentation/creative-categories.html#list-of-creative-tabs) on the Bedrock Wiki.
|
||||
- `included_in_creative_inventory`:
|
||||
- Type: `boolean`
|
||||
- Default: `true`
|
||||
@@ -311,7 +311,7 @@ The following details the schema for the mappings file. Only the `name` field is
|
||||
- Description: An object containing state overrides for the block.
|
||||
- `property1=value1,property2=value2,...`:
|
||||
- Type: `object`
|
||||
- Description: An override for a specific block state. Possible states are listed in Geyser's [Block Mappings](https://raw.githubusercontent.com/GeyserMC/mappings/6b661f0d517d895aebc1f55a25d2c86f033beb1d/blocks.json)
|
||||
- Description: An override for a specific block state. Possible states are listed in Geyser's [Block Mappings](https://raw.githubusercontent.com/GeyserMC/mappings/master/blocks.json)
|
||||
- Accepts all of the same properties as a block definition except `creative_category`, `creative_group`, `included_in_creative_inventory`, `only_override_states`, and `state_overrides`.
|
||||
|
||||
</div>
|
||||
|
||||
@@ -41,7 +41,7 @@ To setup custom items in geyser, you have to choose how you are going to registe
|
||||
* `allow_offhand` (boolean) default: false
|
||||
* `texture_size` (int) default: 16
|
||||
* `creative_category` (int) default: not set. This can take values between 1-5, and defines the creative category the item appears in. Note: Adding your item to a creative category is needed if you want recipes that output this custom item to show up in the recipe book! However, including it does NOT mean you can get the custom item from the creative inventory.
|
||||
* `creative_group` (string) default: not set. Requires a creative category to also be set - allows you to group the custom item in a sub-group. See [here](https://wiki.bedrock.dev/documentation/menu-categories.html#list-of-categories) for all categories.
|
||||
* `creative_group` (string) default: not set. Requires a creative category to also be set - allows you to group the custom item in a sub-group. See [here](https://wiki.bedrock.dev/documentation/creative-categories.html#list-of-categories) for all categories.
|
||||
* `render_offsets` (object) It works as follows. Note that all the sub-objects are optional, except x, y and z. You can have for example only a main hand with a position, and noting else. default: no render offset
|
||||
* `tags` (array) default: no tags. Allows defining tags that can be used in Molang queries. Example value: ["test:tag_one", "test:tag_two"].
|
||||
```json
|
||||
|
||||
@@ -36,13 +36,6 @@ If you have an extension you'd like to see on this list, feel free to open a PR!
|
||||
To install an extension, simply put the extension .jar file into Geyser's `extensions` folder.
|
||||
Then, restart Geyser (or the server Geyser runs on).
|
||||
|
||||
## Updating Extensions {#updating-extensions}
|
||||
To update extensions, use the `update` folder within the extensions directory as follows:
|
||||
|
||||
1. Copy the updated versions of your extension jars into the `update` folder inside the extensions directory.
|
||||
2. On the next server or application restart, any extensions in the `update` folder will automatically replace the corresponding extensions in the main extensions directory. If an extension is new, it will be added.
|
||||
3. If an update fails, it will be logged, and the server/application will proceed with loading extensions as usual. You can review the logs to address any issues.
|
||||
|
||||
## Creating Geyser Extensions {#creating-geyser-extensions}
|
||||
|
||||
The easiest way to create an extension would be utilizing [this official template](https://github.com/GeyserMC/GeyserExampleExtension/).
|
||||
|
||||
+4
@@ -3,6 +3,10 @@ title: Fixing 'Unable to Connect to World'
|
||||
description: Common issues and solutions for the 'Unable to Connect to World' error.
|
||||
---
|
||||
|
||||
import TroubleshootingTree from '@site/src/components/TroubleshootingTree';
|
||||
|
||||
<TroubleshootingTree />
|
||||
|
||||
## Fixing 'Unable to Connect to World' errors {#fixing-unable-to-connect-to-world-errors}
|
||||
This is by far the most common error people get when attempting to set up Geyser. Here's some steps on how to solve it.
|
||||
Usually, this error is caused by improper configuration of Geyser, or issues with your network.
|
||||
@@ -5,7 +5,7 @@ description: 'Geyser is a bridge between Minecraft: Bedrock Edition and Minecraf
|
||||
---
|
||||
|
||||
import { Versions } from '@site/src/components/Versions'
|
||||
import { useDocById } from '@docusaurus/plugin-content-docs/client'
|
||||
import { useDocById } from '@docusaurus/theme-common/internal'
|
||||
import DocCardList from '@theme/DocCardList'
|
||||
|
||||
# Overview
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
title: Information for server hosting providers
|
||||
description: Useful information specifically aimed at server hosting providers.
|
||||
---
|
||||
|
||||
# Information for server hosting providers
|
||||
|
||||
Hello! If you see this page, it's likely one of your users sent it to you as they wish to use the Geyser plugin/mod. This page aims to explain the configuration needed for Geyser, your options to automatically configure it to make it easier for users, and other noteworthy details.
|
||||
|
||||
# What is Geyser/Floodgate?
|
||||
|
||||
Geyser is a proxy allowing Minecraft: Bedrock edition users to play on Minecraft: Java edition servers. It can be used as a plugin, a mod, or as a standalone program.
|
||||
|
||||
# Requirements
|
||||
|
||||
Since Bedrock edition uses UDP (instead of TCP, as Java edition does), Geyser requires a port with UDP traffic allowed on it to properly function. Some setups, such as running Geyser in docker/pterodactyl or some providers such as OVH have specific configuration requirements. See our [portforwarding guide](/wiki/geyser/port-forwarding.md) for further information.
|
||||
|
||||
It can be the same port as the Java server, but it cannot be shared with other plugins using UDP traffic, such as voice chat plugins/mods, or Minecraft's query.
|
||||
|
||||
Further, see [here](/wiki/geyser/supported-versions/) for which Minecraft versions are currently supported.
|
||||
|
||||
# Geyser Download API
|
||||
|
||||
Geyser can be automatically downloaded from Geyser's download api. See [our api docs](/wiki/api/downloads.geysermc.org/) for usage instructions. Our current download api is based on Paper's downloads api, so you might be able to re-use existing scripts.
|
||||
|
||||
# Auto-Configuring Geyser
|
||||
|
||||
For maximum convenience for users, Geyser supports automatic configuration via system properties. See [here](/wiki/geyser/geyser-command-line-arguments-and-system-properties.md) for more information.
|
||||
|
||||
# Adding your host to our wiki
|
||||
|
||||
You can add usage instructions for your host [here](/src/data/providers.ts). Doing so allows us to direct users to proper instructions.
|
||||
|
||||
# Contacting us
|
||||
|
||||
Join our discord!
|
||||
+48
-64
@@ -4,76 +4,60 @@ page_sidebar: false
|
||||
description: Guides to setup Geyser on all supported platforms
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs'
|
||||
import TabItem from '@theme/TabItem'
|
||||
import Admonition from '@theme/Admonition';
|
||||
import Translate from "@docusaurus/Translate";
|
||||
import Tabs from "@theme/Tabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
|
||||
import ModdedServers from '@site/wiki/geyser/setup/provider/_modded-servers.mdx'
|
||||
import ProxyServers from '@site/wiki/geyser/setup/provider/_proxy-servers.mdx'
|
||||
import PaperSpigot from '@site/wiki/geyser/setup/provider/_paper-spigot.mdx'
|
||||
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 '@site/wiki/geyser/setup/self/modded-servers.mdx'
|
||||
import ProxyServersSelf from '@site/wiki/geyser/setup/self/proxy-servers.mdx'
|
||||
import PaperSpigotSelf from '@site/wiki/geyser/setup/self/paper-spigot.mdx'
|
||||
import ViaProxy from '@site/wiki/geyser/setup/self/viaproxy.mdx'
|
||||
import Standalone from '@site/wiki/geyser/setup/self/standalone.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 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 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 { ProviderSelector } from '@site/src/components/Provider'
|
||||
import { useState } from 'react'
|
||||
import { ProviderSelector } from "@site/src/components/Provider";
|
||||
|
||||
export const SetupGuide = () => {
|
||||
const [provider, setProvider] = useState(null)
|
||||
return (
|
||||
<Tabs queryString='host' className='tabs-host-type'>
|
||||
<TabItem value='provider' label='Host Provider' default>
|
||||
<ProviderSelector setProvider={setProvider} />
|
||||
{provider ? (
|
||||
<>
|
||||
{provider.connect_instructions ? (
|
||||
<Tabs queryString='platform'>
|
||||
<TabItem value='paper-spigot' label={<PlatformIcon img={PaperSpigotIcon} text='Paper / Spigot' />} default>
|
||||
<PaperSpigot provider={provider} />
|
||||
</TabItem>
|
||||
<TabItem value='modded-servers' label={<PlatformIcon img={ModIcon} text='Modded Servers' />}>
|
||||
<ModdedServers provider={provider}/>
|
||||
</TabItem>
|
||||
<TabItem value='proxy-servers' label={<PlatformIcon img={ProxyServersIcon} text='Proxy Servers' />}>
|
||||
<ProxyServers provider={provider}/>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
) : (<Admonition type="warning" title={<Translate id='components.provider.no_support'>Not supported</Translate>}>{provider.warn}</Admonition>)}
|
||||
</>
|
||||
) : null}
|
||||
<Tabs queryString="host" className="tabs-host-type">
|
||||
<TabItem value="provider" label="Host Provider" default>
|
||||
<ProviderSelector/>
|
||||
<Tabs queryString="platform">
|
||||
<TabItem value="paper-spigot" label={<PlatformIcon img={PaperSpigotIcon} text="Paper / Spigot"/>} default>
|
||||
<PaperSpigot/>
|
||||
</TabItem>
|
||||
<TabItem value='self' label='Self Host'>
|
||||
<Tabs queryString='platform'>
|
||||
<TabItem value='paper-spigot' label={<PlatformIcon img={PaperSpigotIcon} text='Paper / Spigot' />} default>
|
||||
<PaperSpigotSelf />
|
||||
</TabItem>
|
||||
<TabItem value='modded-servers' label={<PlatformIcon img={ModIcon} text='Modded Servers' />}>
|
||||
<ModdedServersSelf />
|
||||
</TabItem>
|
||||
<TabItem value='proxy-servers' label={<PlatformIcon img={ProxyServersIcon} text='Proxy Servers' />}>
|
||||
<ProxyServersSelf />
|
||||
</TabItem>
|
||||
<TabItem value='viaproxy' label={<PlatformIcon img={ViaProxyIcon} text='ViaProxy' />}>
|
||||
<ViaProxy />
|
||||
</TabItem>
|
||||
<TabItem value='standalone' label={<PlatformIcon img={StandaloneIcon} text='Standalone' />}>
|
||||
<Standalone />
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
<TabItem value="modded-servers" label={<PlatformIcon img={ModIcon} text="Modded Servers"/>}>
|
||||
<ModdedServers/>
|
||||
</TabItem>
|
||||
<TabItem value="proxy-servers" label={<PlatformIcon img={ProxyServersIcon} text="Proxy Servers"/>}>
|
||||
<ProxyServers/>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
)
|
||||
}
|
||||
|
||||
<SetupGuide />
|
||||
</TabItem>
|
||||
<TabItem value="self" label="Self Host">
|
||||
<Tabs queryString="platform">
|
||||
<TabItem value="paper-spigot" label={<PlatformIcon img={PaperSpigotIcon} text="Paper / Spigot"/>} default>
|
||||
<PaperSpigotSelf/>
|
||||
</TabItem>
|
||||
<TabItem value="modded-servers" label={<PlatformIcon img={ModIcon} text="Modded Servers"/>}>
|
||||
<ModdedServersSelf/>
|
||||
</TabItem>
|
||||
<TabItem value="proxy-servers" label={<PlatformIcon img={ProxyServersIcon} text="Proxy Servers"/>}>
|
||||
<ProxyServersSelf/>
|
||||
</TabItem>
|
||||
<TabItem value="viaproxy" label={<PlatformIcon img={ViaProxyIcon} text="ViaProxy"/>}>
|
||||
<ViaProxy/>
|
||||
</TabItem>
|
||||
<TabItem value="standalone" label={<PlatformIcon img={StandaloneIcon} text="Standalone"/>}>
|
||||
<Standalone/>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
@@ -1,70 +0,0 @@
|
||||
import Admonition from '@theme/Admonition';
|
||||
|
||||
import { Versions } from '@site/src/components/Versions'
|
||||
|
||||
:::caution
|
||||
Geyser-Fabric and Geyser-NeoForge run **only** on a <Versions platform="java"/> 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!
|
||||
:::
|
||||
|
||||
{props.provider.warn ? <Admonition type="warning" title='Warn'>{props.provider.warn}</Admonition> : null}
|
||||
|
||||
<h3>Installing Geyser:</h3>
|
||||
{props.provider.custom_install_location ? props.provider.custom_install_location : (
|
||||
<ol>
|
||||
<li>Download the mod from [the download page](/download).</li>
|
||||
<li>Place the Geyser mod jar in the `mods` folder. **For Fabric, you will also need the [FabricAPI](https://modrinth.com/mod/fabric-api) mod.**</li>
|
||||
<li>Restart the server.</li>
|
||||
</ol>
|
||||
)}
|
||||
<br />
|
||||
|
||||
{props.provider.config ? (
|
||||
<>
|
||||
<h3>Geyser config changes:</h3>
|
||||
Open your Geyser config. It is located in `/config/Geyser-Fabric/config.yml` (or
|
||||
`/config/Geyser-NeoForge/config.yml`), and change the following:
|
||||
<ul>
|
||||
{props.provider.config.address ? <li>Change the `address` to `{props.provider.config.address}`</li> : null}
|
||||
{props.provider.config.port ? <li>Change the `port` to `{props.provider.config.port}`</li> : null}
|
||||
{props.provider.config.clone_remote_port ? <li>Change `clone-remote-port` to `true`</li> : null}
|
||||
{props.provider.config.port_instruction ? <li>{props.provider.config.port_instruction}</li> : null}
|
||||
{props.provider.config.address_instruction ? <li>{props.provider.config.address_instruction}</li> : null}
|
||||
{props.provider.config.other_instructions ? <li>{props.provider.config.other_instructions}</li> : null}
|
||||
</ul>
|
||||
</>
|
||||
) : null}
|
||||
|
||||
{props.provider.additional_step ? (
|
||||
<>
|
||||
<h3>Additional Steps:</h3>
|
||||
{props.provider.additional_step}
|
||||
<br />
|
||||
</>
|
||||
) : null}
|
||||
|
||||
|
||||
{props.provider.connect_instructions ? (
|
||||
<>
|
||||
<h3>Connecting on Bedrock:</h3>
|
||||
{props.provider.connect_instructions}
|
||||
</>
|
||||
) : null}
|
||||
|
||||
|
||||
{props.provider.info ? <Admonition type="info" title='Info'>{props.provider.info}</Admonition> : null}
|
||||
|
||||
|
||||
{props.provider.hosting_article || props.provider.hosting_support ? (
|
||||
<>
|
||||
<h4>More Information:</h4>
|
||||
<ul>
|
||||
{props.provider.hosting_article ? (<li><a href={props.provider.hosting_article} target='_blank'>Hosting provider article</a></li>) : null}
|
||||
{props.provider.hosting_support ? (<li><a href={props.provider.hosting_support} target='_blank'>Hosting provider support</a></li>) : null}
|
||||
</ul>
|
||||
</>
|
||||
) : null}
|
||||
@@ -1,65 +0,0 @@
|
||||
import Admonition from '@theme/Admonition';
|
||||
|
||||
import { Versions } from '@site/src/components/Versions'
|
||||
|
||||
:::info
|
||||
If your server is not running <Versions platform="java"/>, you will need to install <a href="https://viaversion.com/">ViaVersion</a>.
|
||||
See also [this page](/wiki/geyser/supported-versions/) on supported versions.
|
||||
:::
|
||||
|
||||
{props.provider.warn ? <Admonition type="warning" title='Warn'>{props.provider.warn}</Admonition> : null}
|
||||
|
||||
<h3>Installing Geyser:</h3>
|
||||
{props.provider.custom_install_location ? props.provider.custom_install_location : (
|
||||
<ol>
|
||||
<li>Download the plugin from [the download page](/download).</li>
|
||||
<li>Place the Geyser-Spigot.jar in the `plugins` folder.</li>
|
||||
<li>Restart the server.</li>
|
||||
</ol>
|
||||
)}
|
||||
<br />
|
||||
|
||||
{props.provider.config ? (
|
||||
<>
|
||||
<h3>Geyser config changes:</h3>
|
||||
Open your Geyser config. It is located in `/plugins/Geyser-Spigot/config.yml`.
|
||||
<ul>
|
||||
{props.provider.config.address ? <li>Change the `address` to `{props.provider.config.address}`</li> : null}
|
||||
{props.provider.config.port ? <li>Change the `port` to `{props.provider.config.port}`</li> : null}
|
||||
{props.provider.config.clone_remote_port ? <li>Change `clone-remote-port` to `true`</li> : null}
|
||||
{props.provider.config.port_instruction ? <li>{props.provider.config.port_instruction}</li> : null}
|
||||
{props.provider.config.address_instruction ? <li>{props.provider.config.address_instruction}</li> : null}
|
||||
{props.provider.config.other_instructions ? <li>{props.provider.config.other_instructions}</li> : null}
|
||||
</ul>
|
||||
</>
|
||||
) : null}
|
||||
|
||||
{props.provider.additional_step ? (
|
||||
<>
|
||||
<h3>Additional Steps:</h3>
|
||||
{props.provider.additional_step}
|
||||
<br />
|
||||
</>
|
||||
) : null}
|
||||
|
||||
|
||||
{props.provider.connect_instructions ? (
|
||||
<>
|
||||
<h3>Connecting on Bedrock:</h3>
|
||||
{props.provider.connect_instructions}
|
||||
</>
|
||||
) : null}
|
||||
<br />
|
||||
|
||||
{props.provider.info ? <Admonition type="info" title='Info'>{props.provider.info}</Admonition> : null}
|
||||
|
||||
|
||||
{props.provider.hosting_article || props.provider.hosting_support ? (
|
||||
<>
|
||||
<h4>More Information:</h4>
|
||||
<ul>
|
||||
{props.provider.hosting_article ? (<li><a href={props.provider.hosting_article} target='_blank'>Hosting provider article</a></li>) : null}
|
||||
{props.provider.hosting_support ? (<li><a href={props.provider.hosting_support} target='_blank'>Hosting provider support</a></li>) : null}
|
||||
</ul>
|
||||
</>
|
||||
) : null}
|
||||
@@ -1,68 +0,0 @@
|
||||
import Admonition from '@theme/Admonition';
|
||||
|
||||
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 <Versions platform="java"/> Java clients, as Geyser imitates one.
|
||||
:::
|
||||
|
||||
{props.provider.warn ? <Admonition type="warning" title='Warn'>{props.provider.warn}</Admonition> : null}
|
||||
|
||||
<h3>Installing Geyser:</h3>
|
||||
{props.provider.custom_install_location ? props.provider.custom_install_location : (
|
||||
<ol>
|
||||
<li>Download the plugin for your proxy software from [the download page](/download).</li>
|
||||
<li>Place the Geyser plugin jar in the `plugins` folder.</li>
|
||||
<li>Restart the proxy.</li>
|
||||
</ol>
|
||||
)}
|
||||
<br />
|
||||
|
||||
{props.provider.config ? (
|
||||
<>
|
||||
<h3>Geyser config changes:</h3>
|
||||
Open your Geyser config. It is located in `/config/Geyser-Velocity/config.yml` (or
|
||||
`/config/Geyser-BungeeCord/config.yml`), and change the following:
|
||||
<ol>
|
||||
{props.provider.config.address ? <li>Change the `address` to `{props.provider.config.address}`</li> : null}
|
||||
{props.provider.config.port ? <li>Change the `port` to `{props.provider.config.port}`</li> : null}
|
||||
{props.provider.config.clone_remote_port ? <li>Change `clone-remote-port` to `true`</li> : null}
|
||||
{props.provider.config.port_instruction ? <li>{props.provider.config.port_instruction}</li> : null}
|
||||
{props.provider.config.address_instruction ? <li>{props.provider.config.address_instruction}</li> : null}
|
||||
{props.provider.config.other_instructions ? <li>{props.provider.config.other_instructions}</li> : null}
|
||||
</ol>
|
||||
</>
|
||||
) : null}
|
||||
|
||||
|
||||
{props.provider.additional_step ? (
|
||||
<>
|
||||
<h3>Additional Steps:</h3>
|
||||
{props.provider.additional_step}
|
||||
<br />
|
||||
</>
|
||||
) : null}
|
||||
|
||||
|
||||
{props.provider.connect_instructions ? (
|
||||
<>
|
||||
<h3>Connecting on Bedrock:</h3>
|
||||
{props.provider.connect_instructions}
|
||||
</>
|
||||
) : null}
|
||||
|
||||
|
||||
{props.provider.info ? <Admonition type="info" title='Info'>{props.provider.info}</Admonition> : null}
|
||||
|
||||
|
||||
{props.provider.hosting_article || props.provider.hosting_support ? (
|
||||
<>
|
||||
<h4>More Information:</h4>
|
||||
<ul>
|
||||
{props.provider.hosting_article ? (<li><a href={props.provider.hosting_article} target='_blank'>Hosting provider article</a></li>) : null}
|
||||
{props.provider.hosting_support ? (<li><a href={props.provider.hosting_support} target='_blank'>Hosting provider support</a></li>) : null}
|
||||
</ul>
|
||||
</>
|
||||
) : null}
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
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 <Versions platform="java"/> server.
|
||||
See [this page](/wiki/geyser/supported-versions#using-geyser-fabric-or-geyser-neoforge-on-servers-that-do-not-run-) 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](https://geysermc.org/download#geyser).
|
||||
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 uncomment and change this if you want to limit what IPs can connect to your server.
|
||||
#address: 0.0.0.0
|
||||
|
||||
# The port that will listen for connections. This is the port that Bedrock players will use to connect to your server.
|
||||
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.
|
||||
# This option is for the plugin version only.
|
||||
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 <ip> <port>` 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 <a href="/wiki/floodgate/setup/">Floodgate</a>.
|
||||
:::
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
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 not running <Versions platform="java"/>, you will need to install <a href="https://viaversion.com/">ViaVersion</a>.
|
||||
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](https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/spigot).
|
||||
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 uncomment and change this if you want to limit what IPs can connect to your server.
|
||||
#address: 0.0.0.0
|
||||
|
||||
# The port that will listen for connections. This is the port that Bedrock players will use to connect to your server.
|
||||
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.
|
||||
# This option is for the plugin version only.
|
||||
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 <ip> <port>` 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 <a href="/wiki/floodgate/setup/">Floodgate</a>.
|
||||
:::
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
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 <Versions platform="java"/> 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](https://geysermc.org/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 uncomment and change this if you want to limit what IPs can connect to your server.
|
||||
#address: 0.0.0.0
|
||||
|
||||
# The port that will listen for connections. This is the port that Bedrock players will use to connect to your server.
|
||||
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.
|
||||
# This option is for the plugin version only.
|
||||
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 <ip> <port>` 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 <a href="/wiki/floodgate/setup/">Floodgate</a>.
|
||||
:::
|
||||
@@ -8,14 +8,14 @@ import { Versions } from '@site/src/components/Versions'
|
||||
|
||||
:::caution
|
||||
Geyser-Fabric and Geyser-NeoForge run **only** on a <Versions platform="java"/> server.
|
||||
See [this page](/wiki/geyser/supported-versions#fabric-neoforge-servers) for more details.
|
||||
See [this page](/wiki/geyser/supported-versions#using-geyser-fabric-or-geyser-neoforge-on-servers-that-do-not-run-) 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).
|
||||
1. Download the mod from [the download page](https://geysermc.org/download#geyser).
|
||||
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:
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ If your server is not running <Versions platform="java"/>, you will need to inst
|
||||
See also [this page](/wiki/geyser/supported-versions/) on supported versions.
|
||||
:::
|
||||
|
||||
1. Download the plugin from [the download page](/download).
|
||||
1. Download the plugin from [the download page](https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/spigot).
|
||||
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:
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ import { Versions } from '@site/src/components/Versions'
|
||||
- All servers on the network must accept <Versions platform="java"/> Java clients, as Geyser imitates one.
|
||||
:::
|
||||
|
||||
1. Download the plugin for your proxy software from [the download page](/download).
|
||||
1. Download the plugin for your proxy software from [the download page](https://geysermc.org/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:
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ Geyser-Standalone is NOT a plugin or mod! It is a standalone Java program that y
|
||||
|
||||
### General Setup & Configuration {#general-setup--configuration}
|
||||
|
||||
1. Download Geyser Standalone from [here](/download).
|
||||
1. Download Geyser Standalone from [here](https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/standalone).
|
||||
2. Create a new folder for Geyser, and drop the jar in there.
|
||||
3. Start Geyser Standalone:
|
||||
- **GUI** (Recommended):
|
||||
|
||||
@@ -4,7 +4,7 @@ description: Learn how to set up Geyser with ViaProxy.
|
||||
---
|
||||
|
||||
1. [Setup ViaProxy](https://github.com/ViaVersion/ViaProxy?tab=readme-ov-file#usage-for-players-gui).
|
||||
2. Download the plugin from [the download page](/download).
|
||||
2. Download the plugin from [the download page](https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/viaproxy).
|
||||
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:
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ 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://github.com/ViaVersion/ViaVersion) plugin. Another alternative would be to install [ViaProxy](https://github.com/ViaVersion/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-Fabric or Geyser-NeoForge on servers that do not run <Versions platform="java"/>
|
||||
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://github.com/ViaVersion/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.
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
title: Resolving Address already in use
|
||||
description: A small guide on resolving the "Address already in use" error.
|
||||
---
|
||||
|
||||
# Resolving "Address already in use"
|
||||
|
||||
This error means that something else using UDP is already running on the address/port that Geyser
|
||||
is trying to bind to.
|
||||
|
||||
## Potential causes
|
||||
The following section lists potential causes for this issue.
|
||||
|
||||
### Incorrect configuration
|
||||
|
||||
If you are using a Minecraft server hosting provider, this can also be caused by your Geyser configuration not using
|
||||
the port assigned to your server. Please make sure you configured Geyser properly by checking our [setup guide](/wiki/geyser/setup).
|
||||
|
||||
:::info
|
||||
If you are using a Minecraft server hosting provider, you may only have one UDP port assigned to you.
|
||||
In that case, you **cannot** use multiple of the features listed here, and may need to choose one over another.
|
||||
:::
|
||||
|
||||
### Minecraft's Query system
|
||||
It also utilizes UDP, and some server hosting providers automatically enable it or change the port it is running on.
|
||||
If you suspect it is conflicting with Geyser, you can disable query entirely, or change the query port.
|
||||
|
||||
To *disable* it:
|
||||
|
||||
| Platform | Spigot/Paper/Fabric/NeoForge | BungeeCord | Velocity |
|
||||
|:---------|:-----------------------------|:--------------------------|:-------------------------------------|
|
||||
| Filename | `server.properties` | BungeeCord's `config.yml` | `velocity.toml` |
|
||||
| Options | `enable-query=false` | `query_enabled:false` | `[query]` section: `enabled = false` |
|
||||
|
||||
To *change the port* it is running on:
|
||||
|
||||
| Platform | Spigot/Paper/Fabric/NeoForge | BungeeCord | Velocity |
|
||||
|:---------|:-----------------------------|:--------------------------|:---------------------------------|
|
||||
| Filename | `server.properties` | BungeeCord's `config.yml` | `velocity.toml` |
|
||||
| Options | change `query.port` | change `query_port` | `[query]` section: change `port` |
|
||||
|
||||
### Voice Chat plugins/mods
|
||||
You can remove them, or change the port in their respective configuration. Please consult their documentation to find out how!
|
||||
|
||||
### Another application using UDP
|
||||
|
||||
If you are self-hosting, it can also mean that something (likely another instance of Geyser) is running on the port you have specified in the config.
|
||||
Please make sure you close all applications running on this port. If you don't recall opening anything, usually restarting your computer fixes this.
|
||||
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: Command/Permission issues
|
||||
description: This page aims to resolve issues about being unable to run or use Geyser commands.
|
||||
---
|
||||
|
||||
# Resolving issues related to commands and command permissions
|
||||
|
||||
---------
|
||||
|
||||
# Geyser commands not available to players
|
||||
|
||||
See [our page on commands](/wiki/geyser/commands/) for information on how to grant permissions to players.
|
||||
For Floodgate commands, see [here](/wiki/floodgate/commands).
|
||||
|
||||
---------
|
||||
|
||||
# Bedrock clients freeze when opening up commands for the first time
|
||||
|
||||
Disable `command-suggestions` in your Geyser config. This will stop the freezing at the expense of removing command suggestions from Bedrock clients.
|
||||
If you're a dedicated server admin, you can have a list of commands players should be using. This will remove any unnecessary commands from tab completion as well for Java players.
|
||||
It has other benefits too. Here's a plugin that can just do that:
|
||||
[CommandWhitelist](https://www.spigotmc.org/resources/81326/). Alternatively, use the [HideCommands](https://github.com/Redned235/HideCommands) Geyser extension to hide commands just for Bedrock players.
|
||||
|
||||
---------
|
||||
|
||||
# Unable to whitelist / op Bedrock players
|
||||
|
||||
## Whitelist command
|
||||
To whitelist Bedrock players when using Floodgate, use the [`/fwhitelist` command](/wiki/floodgate/features#whitelist-command) provided by Floodgate.
|
||||
|
||||
## For other commands:
|
||||
In some instances, like if you have the `username-prefix` set to `*`, you may need to wrap the Bedrock player's username in quotes; for example: `/tp "*BedrockPlayer"`. Setting the prefix to `.` should also fix this.
|
||||
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: Connecting to your Geyser instance
|
||||
description: This page aims to show how to connect to your server.
|
||||
---
|
||||
|
||||
# TODO
|
||||
|
||||
TODO! GeyserConnect (what is ip???)
|
||||
|
||||
# Connecting to your Geyser instance
|
||||
|
||||
## Finding your IP / port
|
||||
|
||||
## Connecting
|
||||
|
||||
## Connecting on consoles
|
||||
@@ -0,0 +1,58 @@
|
||||
---
|
||||
title: Resolving Connection closed or End of Stream
|
||||
description: This page aims to resolve various issues that can result in that error.
|
||||
---
|
||||
|
||||
# Resolving `Connection closed` or `End of Stream`
|
||||
|
||||
This error indicated that the Java server closed or ended the connection between Geyser and the Java server.
|
||||
|
||||
There are a lot of potential reasons for this, so this guide will show only general troubleshooting steps.
|
||||
|
||||
# 1. Check your server log / console
|
||||
|
||||
First, check your server console and/or server logs.
|
||||
There, look for the connection attempt you made
|
||||
|
||||
// TODO image of a connection attempt
|
||||
|
||||
If you do not see a connection attempt nor anything else in your console when you try to connect,
|
||||
make sure that you connect to the correct IP / port of your server!
|
||||
|
||||
If you found the connection attempt, read further until you see Geyser's or the server's disconnection
|
||||
message.
|
||||
|
||||
// TODO image stacktrace
|
||||
|
||||
Now, look for other errors, warnings, or stacktraces that occur when joining (or even when starting the server!).
|
||||
Those should give you a hint of what is not working.
|
||||
|
||||
Example:
|
||||
|
||||
// TODO add some screenshot
|
||||
|
||||
Here, the plugin `aewce` is malfunctioning as it is not updated to the correct server version.
|
||||
To resolve the case here, update or remove it.
|
||||
|
||||
# 2. Check for incompatible plugins
|
||||
|
||||
Sometimes there are no obvious errors or warnings. In this case, you should check for conflicts with other plugins,
|
||||
specifically those that purposefully prevent players from joining (such as anti-ddos or block plugins).
|
||||
|
||||
Known to cause this:
|
||||
- The Cosmicguard plugin blocks all Geyser conenctions. It is not compatible and should be removed to use Geyser.
|
||||
- The TCPshield plugin
|
||||
|
||||
If you are not running any of these, try a binary search to find the troublemaker.
|
||||
|
||||
::: Binary search
|
||||
// TODO
|
||||
:::
|
||||
|
||||
-> TCPshield, Cosmicguard plugins
|
||||
-> ??? (plugin debugging)
|
||||
|
||||
# 3. Still not working?
|
||||
|
||||
Sometimes, it might be tricky to spot the issue. In this case, please join the Geyser discord server and ask for help there!
|
||||
Make sure to send a full log showing the error, alonside a link to this page to show which steps you've tried.
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
title: Other issues
|
||||
description: This page lists quick fixes for various other issues.
|
||||
---
|
||||
|
||||
# illegal nickname
|
||||
# luckperms invalid usernames
|
||||
|
||||
|
||||
# proxy setups invalid usernames
|
||||
File renamed without changes.
@@ -0,0 +1,39 @@
|
||||
---
|
||||
title: Troubleshooting
|
||||
description: This page aims to resolve various issues related to using Geyser or Floodgate.
|
||||
---
|
||||
|
||||
# Troubleshooting
|
||||
|
||||
:::info
|
||||
|
||||
These guides are for **server admins**.
|
||||
**If you are *not* hosting a Geyser/Floodgate instance yourself, ask your server admin for help.
|
||||
If you are seeing errors on a Java client, you should look at other troubleshooting info.**
|
||||
|
||||
:::
|
||||
|
||||
## Connection issues
|
||||
---------------------------------------
|
||||
|
||||
- [How to connect to your server](/wiki/geyser/troubleshooting/connecting-to-the-server.mdx)
|
||||
- Unable to connect
|
||||
- [`Address in use`](/wiki/geyser/troubleshooting/address-already-in-use)
|
||||
- [secure profiles](/wiki/geyser/troubleshooting/secure-chat)
|
||||
- [`Connection Closed` or `End of Stream`](/wiki/geyser/troubleshooting/connection-closed.md)
|
||||
- outdated server/client
|
||||
- connect through the official geyser
|
||||
- log in xbox
|
||||
|
||||
## Gameplay related
|
||||
-------
|
||||
- skins not loading
|
||||
- [Unable to chat](/wiki/geyser/troubleshooting/secure-chat/)
|
||||
- [Command issues](/wiki/geyser/troubleshooting/command-issues/)
|
||||
|
||||
## Warnings in the server log/console
|
||||
-------
|
||||
- scoreboard related
|
||||
- custom item/blocks
|
||||
- ???
|
||||
-------
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
title: Resolving Unable to connect to world
|
||||
description: This page aims to resolve various issues that can result in that error.
|
||||
---
|
||||
|
||||
@@ -7,7 +7,7 @@ description: Information on how to use Geyser with consoles, including how to jo
|
||||
|
||||
All consoles can join third-party servers - including Geyser servers - with workarounds. Xbox One, Nintendo Switch, and PS4 systems can join third-party servers using a third-party program called BedrockConnect. For technical information about the program, including how to run your own setup, see [their GitHub repository](https://github.com/Pugmatt/BedrockConnect) (*This program is not affiliated with GeyserMC*). Other methods are also available for use.
|
||||
|
||||
<!--There is also a tool anyone can set up that allows you to connect to the server via adding a user to your friends list - [FriendConnect](https://github.com/jrcarl624/FriendConnect), and [MCXboxBroadcast](https://github.com/rtm516/MCXboxBroadcast). The latter one can even be set up as a Geyser Extension.-->
|
||||
<!--There is also a tool anyone can set up that allows you to connect to the server via adding a user to your friends list - [FriendConnect](https://github.com/Androecia/FriendConnect), and [MCXboxBroadcast](https://github.com/rtm516/MCXboxBroadcast). The latter one can even be set up as a Geyser Extension.-->
|
||||
|
||||
:::note
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ GeyserConnect is a extension for Geyser that allows you to join multiple servers
|
||||
|
||||
## Setup {#setup}
|
||||
(For GeyserConnect to work you need an open UDP port, by default it's `19132`).
|
||||
1. Download the latest Geyser build from the [downloads page](/download)
|
||||
1. Download the latest Geyser build from the [downloads page](https://geysermc.org/download#standalone)
|
||||
2. Download the latest build from [here](https://geysermc.org/download/?project=other-projects&geyserconnect=expanded)
|
||||
3. Extract the downloaded ZIP file, and put the extracted JAR file into the `extensions` folder in your GeyserMC standalone installation.
|
||||
4. Start Geyser standalone as you do with a normal Geyser install. EG: `java -Xms1024M -jar Geyser.jar` (More info on [Creating a Startup Script](/wiki/geyser/creating-a-startup-script/))
|
||||
|
||||
@@ -17,7 +17,7 @@ Supported Versions:
|
||||
- Fabric: 1.21/1.21.1
|
||||
|
||||
## Download {#download}
|
||||
- Spigot/Paper: [GeyserMC downloads page](/download/?project=other-projects&hurricane=expanded)
|
||||
- Spigot/Paper: [GeyserMC downloads page](/download?project=other-projects&hurricane=expanded)
|
||||
- Fabric/NeoForge: [Modrinth](https://modrinth.com/mod/hurricane/versions)
|
||||
|
||||
## Source {#source}
|
||||
|
||||
@@ -17,7 +17,7 @@ This project is still in very early development and should not be used on produc
|
||||
|
||||
## Download {#download}
|
||||
|
||||
You can download Hydraulic [here](/download/?project=other-projects&hydraulic=expanded).
|
||||
You can download Hydraulic [here](https://geysermc.org/download/?project=other-projects&hydraulic=expanded).
|
||||
|
||||
## Contributing {#contributing}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ description: 'Other projects or guides not directly referring to Geyser or Flood
|
||||
---
|
||||
|
||||
import DocCardList from '@theme/DocCardList'
|
||||
import { useDocById } from '@docusaurus/plugin-content-docs/client'
|
||||
import { useDocById } from '@docusaurus/theme-common/internal'
|
||||
|
||||
# Overview of Other projects
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ title: ThirdPartyCosmetics
|
||||
description: An optional Bedrock resource pack to extend Geyser functionality.
|
||||
---
|
||||
|
||||
## [Download here](/download/?project=other-projects&thirdpartycosmetics=expanded) {#download-here}
|
||||
## [Download here](https://download.geysermc.org/v2/projects/thirdpartycosmetics/versions/latest/builds/latest/downloads/thirdpartycosmetics) {#download-here}
|
||||
|
||||
ThirdPartyCosmetics is an extension that adds support for loading ears and other third party cosmetics on java players.
|
||||
|
||||
|
||||
Reference in new issue
Block a user