Author SHA1 Message Date
onebeastchris a02d0af349 Start on new troubleshooting pages 2024-12-16 11:04:04 +08:00
onebeastchris 06f12d2248 changes 2024-12-04 00:26:20 +08:00
rtm516 5641161aa8 Add markdown step support 2024-09-26 13:59:58 +01:00
rtm516 5277c30f68 Add initial troubleshooting tree framework 2024-09-26 12:48:42 +01:00
22 changed files with 539 additions and 2 deletions

No files matched your search

+1
View File
@@ -37,6 +37,7 @@
"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"
},
@@ -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
-------------------------------------------------------------------------------
+2 -2
View File
@@ -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.
@@ -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.
+36
View File
@@ -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!
@@ -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.
+10
View File
@@ -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.
---
+5
View File
@@ -8547,6 +8547,11 @@ rc@1.2.8:
minimist "^1.2.0"
strip-json-comments "~2.0.1"
react-decision-tree-flow@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/react-decision-tree-flow/-/react-decision-tree-flow-2.1.0.tgz#c8b114212b420316f83bfa62a42c49c1a82131a5"
integrity sha512-LuMj5/O1vKxfpbRcw5mI1iSL4eIxxxJf1eDa4ZJbjkduiLGYqaM5KB0r8zNQ8uZl8DA1MtXj9RDT2gXtn5w61A==
react-dev-utils@^12.0.1:
version "12.0.1"
resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73"