Feature: Configurate changes (#107)
* Prepare for configurate changes, update API version, document all commands * Forgot these * Document GeyserIntegratedPack behavior * Update wiki/other/geyserintegratedpack.md * Update wiki/geyser/current-limitations.md Co-authored-by: Olivia <chew@chew.pw> --------- Co-authored-by: Olivia <chew@chew.pw>
This commit is contained in:
1 parent
5cd2029229
commit
507623b333
29 files changed
+213
-692
No files matched your search
@@ -224,12 +224,12 @@ Geyser initially rolled out a fix that forced these defaults, but has since been
|
||||
These defaults may present an issue to those running a reverse proxy in front of their Geyser instance, particularly those utilizing DDoS mitigation services like TCPShield and CosmicGuard, as to Network it will appear that all connections are originating from the same IP. To make configuration on these services easier, Geyser will disable these rate limits provided proxy protocol is enabled for the bedrock connection, and the Geyser instance is properly configured to only accept connections from the IPs of the proxy. To simplify this configuration, Geyser’s config can now accept a URL to specify proxy server IP ranges. Many DDoS mitigation providers have a static link to an always up to date text file of these.
|
||||
|
||||
```yaml
|
||||
bedrock:
|
||||
advanced.bedrock:
|
||||
# ...
|
||||
enable-proxy-protocol: true
|
||||
proxy-protocol-whitelisted-ips: [ "https://cosmic.global/ips/", "https://tcpshield.com/v4/" ]
|
||||
use-haproxy-protocol: true
|
||||
haproxy-protocol-whitelisted-ips: [ "https://cosmic.global/ips/", "https://tcpshield.com/v4/" ]
|
||||
```
|
||||
*Geyser configuration using a URL pointing a new-line separated text file containing allowed IPs for proxy-protocol usage.*
|
||||
*Geyser configuration using a URL pointing a new-line separated text file containing allowed IPs for haproxy-protocol usage.*
|
||||
|
||||
|
||||
## Long Term Impact
|
||||
|
||||
@@ -134,11 +134,6 @@ const config: Config = {
|
||||
className: 'header-utilities-link',
|
||||
position: 'left',
|
||||
items: [
|
||||
{
|
||||
|
||||
to: 'utilities/config-editor',
|
||||
label: 'Config Editor',
|
||||
},
|
||||
{
|
||||
|
||||
to: 'utilities/dump-viewer',
|
||||
|
||||
+2
-23
@@ -239,32 +239,11 @@
|
||||
"pages.download.description.geyserconnect": {
|
||||
"message": "A plugin to allow for Geyser players to connect to your server without needing to use a proxy."
|
||||
},
|
||||
"pages.download.description.geyseroptionalpack": {
|
||||
"message": "An optional Bedrock resource pack to extend Geyser functionality."
|
||||
},
|
||||
"pages.download.description.thirdpartycosmetics": {
|
||||
"message": "An extension that adds support for loading ears and other third party cosmetics on java players"
|
||||
},
|
||||
"pages.configeditor.noconfigselected.heading": {
|
||||
"message": "No config selected."
|
||||
},
|
||||
"pages.configeditor.noconfigselected.subheading": {
|
||||
"message": "Upload a file or get started with the default config!"
|
||||
},
|
||||
"pages.configeditor.button.defaultconfig": {
|
||||
"message": "Default"
|
||||
},
|
||||
"pages.configeditor.button.upload": {
|
||||
"message": "Upload"
|
||||
},
|
||||
"pages.configeditor.button.export": {
|
||||
"message": "Export"
|
||||
},
|
||||
"pages.configeditor.title": {
|
||||
"message": "Config Editor"
|
||||
},
|
||||
"pages.configeditor.subheading": {
|
||||
"message": "Edit your Geyser configuration."
|
||||
"pages.download.description.emoteoffhand": {
|
||||
"message": "An extension that allows Bedrock players to switch their offhand and mainhand item by emoting."
|
||||
},
|
||||
"pages.dumpviewer.title": {
|
||||
"message": "Dump Viewer"
|
||||
|
||||
@@ -39,10 +39,6 @@
|
||||
"message": "Other",
|
||||
"description": "Navbar item with label Other"
|
||||
},
|
||||
"item.label.Config Editor": {
|
||||
"message": "Config Editor",
|
||||
"description": "Navbar item with label Config Editor"
|
||||
},
|
||||
"item.label.Dump Viewer": {
|
||||
"message": "Dump Viewer",
|
||||
"description": "Navbar item with label Dump Viewer"
|
||||
|
||||
+1
-5
@@ -68,10 +68,6 @@ const sidebars: SidebarsConfig = {
|
||||
{
|
||||
type: 'category',
|
||||
label: 'Configuring Geyser',
|
||||
link: {
|
||||
type: 'doc',
|
||||
id: 'geyser/understanding-the-config',
|
||||
},
|
||||
items: [
|
||||
'geyser/commands',
|
||||
'geyser/translations',
|
||||
@@ -136,7 +132,7 @@ const sidebars: SidebarsConfig = {
|
||||
'other/index',
|
||||
'other/geyserconnect',
|
||||
'other/thirdpartycosmetics',
|
||||
'other/geyseroptionalpack',
|
||||
'other/geyserintegratedpack',
|
||||
'other/community-geyser-projects',
|
||||
'other/hurricane',
|
||||
'other/rainbow',
|
||||
|
||||
@@ -10,7 +10,7 @@ const descriptionTemplates = {
|
||||
}),
|
||||
ipAndPort: translate({
|
||||
id: 'providers.templates.ip_and_port',
|
||||
message: "Enable `clone-remote-port` (or manually set `bedrock port` to the Java port), uncomment `bedrock address`, and change `0.0.0.0` to your Java server's IP. Connect with the Java IP and port."
|
||||
message: "Enable `clone-remote-port` (or manually set `bedrock port` to the Java port), and change `bedrock address` from `0.0.0.0` to your Java server's IP. Connect with the Java IP and port."
|
||||
}),
|
||||
forwardingOption: translate({
|
||||
id: 'providers.templates.forwarding_option',
|
||||
@@ -18,7 +18,7 @@ const descriptionTemplates = {
|
||||
}),
|
||||
javaIp: translate({
|
||||
id: 'providers.templates.java_ip',
|
||||
message: "Make sure your remote address is 'auto', uncomment `bedrock address`, and change `0.0.0.0` to your Java server's IP."
|
||||
message: "Change `bedrock address` from `0.0.0.0` to your Java server's IP."
|
||||
})
|
||||
}
|
||||
|
||||
@@ -241,7 +241,7 @@ export const providersData: Providers = {
|
||||
url: 'https://www.bisecthosting.com/',
|
||||
description: translate({
|
||||
id: 'providers.provider.bisecthosting.description',
|
||||
message: "You must have a plan with a dedicated IP. In Geyser's config, uncomment the `bedrock address` and set it to the public IP of your server (e.g. `address: 51.79.129.18`). Leave the port as `19132`. Under the home tab, select 'Enable UDP Network' and restart the server. See Bisect's [article](https://www.bisecthosting.com/clients/index.php?rp=/knowledgebase/193/How-to-install-Geyser-and-Floodgate-on-a-Minecraft-Java-server.html) for full instructions. If you still cannot connect after following these instructions, contact Bisect Support as they reportedly have UDP disabled on some nodes."
|
||||
message: "You must have a plan with a dedicated IP. In Geyser's config, change `bedrock address` to the public IP of your server (e.g. `address: 51.79.129.18`). Leave the port as `19132`. Under the home tab, select 'Enable UDP Network' and restart the server. See Bisect's [article](https://www.bisecthosting.com/clients/index.php?rp=/knowledgebase/193/How-to-install-Geyser-and-Floodgate-on-a-Minecraft-Java-server.html) for full instructions. If you still cannot connect after following these instructions, contact Bisect Support as they reportedly have UDP disabled on some nodes."
|
||||
})
|
||||
},
|
||||
{
|
||||
@@ -506,7 +506,7 @@ export const providersData: Providers = {
|
||||
url: 'https://nfoservers.com/',
|
||||
description: translate({
|
||||
id: 'providers.provider.nfoservers.description',
|
||||
message: "Uncomment and set `bedrock address` to the server IP in the Geyser config file. As an alternative, you can run Geyser standalone separately on an Unmanaged VDS."
|
||||
message: "Set `bedrock address` to the server IP in the Geyser config file. As an alternative, you can run Geyser standalone separately on an Unmanaged VDS."
|
||||
})
|
||||
},
|
||||
{
|
||||
@@ -668,7 +668,7 @@ export const providersData: Providers = {
|
||||
url: 'https://vultam.net/',
|
||||
description: translate({
|
||||
id: 'providers.provider.vultam.description',
|
||||
message: "Enable `clone-remote-port` in the Geyser config, and connect with the Java IP and port. Alternatively, allocate an additional port to your server from the Network section of the control panel and set it as the `bedrock.port` in the Geyser config. Use that port to connect from Bedrock. Please contact [Vultam support](https://clients.vultam.net/submitticket.php?step=2&deptid=1) if you need assistance."
|
||||
message: "Enable `clone-remote-port` in the Geyser config, and connect with the Java IP and port. Alternatively, allocate an additional port to your server from the Network section of the control panel and set it as the `bedrock port` in the Geyser config. Use that port to connect from Bedrock. Please contact [Vultam support](https://clients.vultam.net/submitticket.php?step=2&deptid=1) if you need assistance."
|
||||
})
|
||||
},
|
||||
{
|
||||
|
||||
+14
-15
@@ -69,21 +69,6 @@ const DownloadPage: React.FC = () => (
|
||||
</TabItem>
|
||||
<TabItem value="other-projects" label="Other Projects">
|
||||
<Collapsibles>
|
||||
<Collapsible
|
||||
title='GeyserOptionalPack'
|
||||
subtitle={<Translate id='pages.download.description.geyseroptionalpack'>An optional Bedrock resource pack to extend Geyser functionality.</Translate>}
|
||||
id='geyseroptionalpack'
|
||||
inner={
|
||||
<ProjectDownload
|
||||
projectId="geyseroptionalpack"
|
||||
setup='/wiki/other/geyseroptionalpack'
|
||||
downloadsInfo={{
|
||||
geyseroptionalpack: <><FontAwesomeIcon icon={faFileZipper} /> GeyserOptionalPack</>,
|
||||
}}
|
||||
gridColumns={1}
|
||||
/>
|
||||
}
|
||||
/>
|
||||
<Collapsible
|
||||
title='ThirdPartyCosmetics'
|
||||
subtitle={<Translate id='pages.download.description.thirdpartycosmetics'>An extension that adds support for loading ears and other third party cosmetics on java players</Translate>}
|
||||
@@ -99,6 +84,20 @@ const DownloadPage: React.FC = () => (
|
||||
/>
|
||||
}
|
||||
/>
|
||||
<Collapsible
|
||||
title='EmoteOffhand'
|
||||
subtitle={<Translate id='pages.download.description.offhandextension'>An extension that allows Bedrock players to switch their offhand and mainhand item by emoting.</Translate>}
|
||||
id='emoteoffhand'
|
||||
inner={
|
||||
<ProjectDownload
|
||||
projectId="emoteoffhand"
|
||||
downloadsInfo={{
|
||||
emoteoffhand: <><FontAwesomeIcon icon={faFileZipper} /> EmoteOffhand</>,
|
||||
}}
|
||||
gridColumns={1}
|
||||
/>
|
||||
}
|
||||
/>
|
||||
<Collapsible
|
||||
title='Hurricane'
|
||||
subtitle={<Translate id='pages.download.description.hurricane'>A plugin with various workarounds for Geyser players that modify the server in order to achieve their goal.</Translate>}
|
||||
|
||||
@@ -1,361 +0,0 @@
|
||||
import Translate from '@docusaurus/Translate';
|
||||
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';
|
||||
|
||||
const ConfigEditorPage: React.FC = () => {
|
||||
const [config, setConfig] = useState('');
|
||||
const [parsedConfig, setParsedConfig] = useState<any>({});
|
||||
// match optional key
|
||||
const keyReg = /^#? ?[^:\sA-Z]+:(?!\S)/
|
||||
const editedConfig = useRef<any>({});
|
||||
const uploadRef = useRef<any>(null);
|
||||
|
||||
const loadDefault = async () => {
|
||||
try {
|
||||
const response = await fetch('https://raw.githubusercontent.com/GeyserMC/Geyser/master/core/src/main/resources/config.yml');
|
||||
if (!response.ok) {
|
||||
throw new Error('Network response was not ok');
|
||||
}
|
||||
const text = await response.text();
|
||||
handleConfigLoad(text);
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch default config:', error);
|
||||
}
|
||||
}
|
||||
|
||||
const handleUpload = async (e) => {
|
||||
const fileName = e.target.files[0];
|
||||
|
||||
// Makse sure the file is a .yml file
|
||||
if (!fileName.name.endsWith('.yml')) {
|
||||
alert('Please select a .yml config file!');
|
||||
return;
|
||||
}
|
||||
|
||||
// Read the file
|
||||
const fileReader = new FileReader();
|
||||
fileReader.onload = (e) => {
|
||||
handleConfigLoad(e.target.result as string);
|
||||
}
|
||||
fileReader.readAsText(fileName);
|
||||
}
|
||||
|
||||
const handleConfigLoad = (config: string) => {
|
||||
setConfig(config);
|
||||
setParsedConfig(loadConfig(config));
|
||||
}
|
||||
|
||||
const loadConfig = (config: string) => {
|
||||
const lines = config.split('\n');
|
||||
let currentSection = '';
|
||||
let currentComment = '';
|
||||
|
||||
const newConfig = {"": {}};
|
||||
|
||||
let ignore = false;
|
||||
|
||||
// Parse each line of the config
|
||||
for (let i = 0; i < lines.length; i++) {
|
||||
let line = lines[i];
|
||||
// Reset the section if we are no indented
|
||||
if (!line.startsWith(' ')) {
|
||||
currentSection = '';
|
||||
}
|
||||
|
||||
// Ignore any empty lines
|
||||
line = line.trim()
|
||||
if (line === '') {
|
||||
currentComment = '';
|
||||
continue;
|
||||
}
|
||||
|
||||
const commented = line.startsWith('#');
|
||||
|
||||
const match = line.match(keyReg);
|
||||
if (match === null) {
|
||||
// Check if we are in a comment
|
||||
if (commented) {
|
||||
currentComment += line.replace(/^# ?/i, '') + '<br>';
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
// 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) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Get the key and value
|
||||
const splitLine = line.split(':');
|
||||
splitLine[0] = splitLine[0].trim();
|
||||
let val = '';
|
||||
for (let j = 1; j < splitLine.length; j++) {
|
||||
val += splitLine[j];
|
||||
}
|
||||
val = val.trim();
|
||||
|
||||
if (splitLine[0].includes('proxy-protocol-whitelisted-ips')) {
|
||||
currentComment = '';
|
||||
continue;
|
||||
}
|
||||
|
||||
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>';
|
||||
})
|
||||
|
||||
// Add the config option to the config object
|
||||
newConfig[currentSection][splitLine[0]] = {
|
||||
desc: currentComment,
|
||||
value: val,
|
||||
line: i
|
||||
};
|
||||
|
||||
// Reset the comment
|
||||
currentComment = '';
|
||||
}
|
||||
return newConfig;
|
||||
}
|
||||
|
||||
const generateHTML = (config: any) => {
|
||||
return Object.keys(config).map(configKey => (
|
||||
<div key={configKey} className={styles.card}>
|
||||
<div className={styles.cardHeader}>{configKey === '' ? 'Root' : configKey}</div>
|
||||
<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()
|
||||
return (
|
||||
<div key={configOptionKey} className={styles.configOption}>
|
||||
<h3>{showOptionName}</h3>
|
||||
<p dangerouslySetInnerHTML={{__html: configOptionInfo.desc}}/>
|
||||
{getInput(configOptionKey, configOptionInfo.value)}
|
||||
</div>
|
||||
)
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
))
|
||||
}
|
||||
|
||||
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');
|
||||
Object.entries(editedConfig.current).forEach(([key, value]) => {
|
||||
const keys = key.split('.');
|
||||
let currentObj = parsedConfig;
|
||||
|
||||
keys.forEach((nestedKey, index) => {
|
||||
if (currentObj.hasOwnProperty(nestedKey)) {
|
||||
if (index === keys.length - 1) {
|
||||
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}`);
|
||||
} else {
|
||||
currentObj = currentObj[nestedKey];
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
newConfig = lines.join('\n');
|
||||
|
||||
// Trigger a download of the final config
|
||||
downloadString(newConfig, 'text/plain', 'config.yml');
|
||||
}
|
||||
|
||||
function getInput(name, value) {
|
||||
const handleChange = (event) => {
|
||||
const {id, value, type, checked} = event.target;
|
||||
|
||||
editedConfig.current = {
|
||||
...editedConfig.current,
|
||||
[id]: type === 'checkbox' ? checked.toString() : value
|
||||
};
|
||||
}
|
||||
|
||||
switch (name) {
|
||||
// Handle all the dropdowns
|
||||
case 'remote.auth-type':
|
||||
return (
|
||||
<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>
|
||||
</select>
|
||||
);
|
||||
case 'show-cooldown':
|
||||
return (
|
||||
<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>
|
||||
</select>
|
||||
);
|
||||
case 'emote-offhand-workaround':
|
||||
return (
|
||||
<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, '')}/>;
|
||||
case 'metrics.uuid':
|
||||
return <input key={name} className={styles.formInput} id={name} type='text' disabled
|
||||
defaultValue={value === 'generateduuid' ? crypto.randomUUID() : value}/>;
|
||||
|
||||
default:
|
||||
// Handle all the other inputs
|
||||
if (value.toLowerCase() === 'true' || value.toLowerCase() === 'false') {
|
||||
// Boolean
|
||||
return (
|
||||
<div key={name}>
|
||||
<input className={styles.checkbox} type='checkbox' id={name}
|
||||
defaultChecked={value.toLowerCase() === 'true'} onChange={handleChange}/>
|
||||
</div>
|
||||
);
|
||||
} else if (!isNaN(value)) {
|
||||
// Number
|
||||
return <input key={name} className={styles.formInput} type='number' defaultValue={value}
|
||||
id={name} onChange={handleChange}/>;
|
||||
} else {
|
||||
// String
|
||||
return <input key={name} className={styles.formInput} type='text'
|
||||
defaultValue={value.replace(/"/g, '')} id={name} onChange={handleChange}/>;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// From https://gist.github.com/danallison/3ec9d5314788b337b682
|
||||
function downloadString(text, fileType, fileName) {
|
||||
const blob = new Blob([text], {type: fileType})
|
||||
|
||||
const a = document.createElement('a')
|
||||
a.download = fileName
|
||||
a.href = URL.createObjectURL(blob)
|
||||
a.dataset.downloadurl = [fileType, a.download, a.href].join(':')
|
||||
a.style.display = 'none'
|
||||
document.body.appendChild(a)
|
||||
a.click()
|
||||
document.body.removeChild(a)
|
||||
|
||||
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>
|
||||
|
||||
<div className={styles.buttonsContainer}>
|
||||
<button className={styles.button} onClick={loadDefault}>
|
||||
<Translate id='pages.configeditor.button.defaultconfig'>Default</Translate>
|
||||
</button>
|
||||
|
||||
<button className={styles.button} onClick={() => uploadRef.current.click()}>
|
||||
<input
|
||||
ref={uploadRef}
|
||||
type='file'
|
||||
className={styles.hidden}
|
||||
accept='.yml'
|
||||
onChange={handleUpload}
|
||||
/>
|
||||
<Translate id='pages.configeditor.button.upload'>Upload</Translate>
|
||||
</button>
|
||||
</div>
|
||||
</>
|
||||
)
|
||||
|
||||
const EditorView = () => (
|
||||
<>
|
||||
<div className={styles.buttonsContainer} style={{marginBottom: '30px'}}>
|
||||
<button className={styles.button} onClick={handleExport}>
|
||||
<Translate id='pages.configeditor.button.export'>Export</Translate>
|
||||
</button>
|
||||
</div>
|
||||
{generateHTML(parsedConfig)}
|
||||
</>
|
||||
)
|
||||
|
||||
return (
|
||||
<>
|
||||
<HeroBanner
|
||||
title={<Translate id='pages.configeditor.title'>Config Editor</Translate>}
|
||||
subheading={<Translate id='pages.configeditor.subheading'>Edit your Geyser configuration.</Translate>}
|
||||
backgroundImage={HeroBackground}
|
||||
/>
|
||||
|
||||
<div className='container' style={{marginTop: '30px'}}>
|
||||
{Object.keys(parsedConfig).length === 0 ? <NoConfigSection/> : <EditorView/>}
|
||||
</div>
|
||||
|
||||
|
||||
<section id='config-options'></section>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
export default function ConfigEditor(): JSX.Element {
|
||||
return (
|
||||
<Layout
|
||||
title={`Config Editor`}
|
||||
description='Edit your Geyser configuration.'
|
||||
>
|
||||
<main>
|
||||
<div className='container container--fluid margin-vert--lg'>
|
||||
<ConfigEditorPage/>
|
||||
</div>
|
||||
</main>
|
||||
</Layout>
|
||||
)
|
||||
}
|
||||
@@ -31,6 +31,9 @@ on the proxy server to assign permissions to players. Assigning permissions on t
|
||||
| `geyser version` | `geyser.command.version` | Shows the current Geyser version and checks for updates. |
|
||||
| `geyser tooltips` | `geyser.command.tooltips` | Toggle showing Advanced Tooltips (F3 + H on Java) |
|
||||
| `geyser extensions` | `geyser.command.extensions` | Lists all currently loaded extensions. This command is only registered if any extensions are loaded. |
|
||||
| `geyser ping` | `geyser.command.ping` | Shows the ping between the player and the Geyser instance. |
|
||||
| `geyser options` | `geyser.command.options` | Opens the "pause screen additions" dialogue, if sent by the Java server |
|
||||
| `geyser quickactions` | `geyser.command.quickactions` | Opens the "quick actions" dialogue, if sent by the Java server. |
|
||||
|
||||
## Permissions for Geyser extensions {#extension-permissions}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ If you still can't make it work, join [our Discord](https://discord.gg/geysermc)
|
||||
For Floodgate issues see: [Floodgate: Known Issues/Caveats](/wiki/floodgate/issues/).
|
||||
|
||||
# I can't connect! (Either the server doesn't show up in the friends list or I get "Unable to connect to world")
|
||||
* If you don't use a reverse proxy such as TCPShield make sure that `enable-proxy-protocol` is set to false.
|
||||
* If you don't use a reverse proxy such as TCPShield make sure that `advanced.java.use-haproxy-protocol` is set to false.
|
||||
To fix "Unable to connect to world" with no console errors, see [here](/wiki/geyser/fixing-unable-to-connect-to-world/).
|
||||
|
||||
## If the server doesn't show up in the friends list {#if-the-server-doesnt-show-up-in-the-friends-list}
|
||||
@@ -51,7 +51,7 @@ One way to get around this (if you're using an online host) is to shut down your
|
||||
|
||||
You may need to update your Java version. If so, update at [Adoptium.net](https://adoptium.net/).
|
||||
|
||||
Sometimes this happens in poor-network environments. There is an `mtu` option in the Geyser config; lower this number slowly (in batches of 100), restart each time, and re-test joining.
|
||||
Sometimes this happens in poor-network environments. There is an `advanced.bedrock.mtu` option in the Geyser config; lower this number slowly (in batches of 100), restart each time, and re-test joining.
|
||||
|
||||
This option will most likely not help if you are getting "Unable to Connect to World" with no console logs indicating a connection.
|
||||
|
||||
@@ -76,8 +76,6 @@ If you have your configuration set up like this, put simply, it won't work. If a
|
||||
Connection Refused usually means that a Java server could not be found on that port, or the server denied access to the connection on a network level.
|
||||
The latter can happen with anti-DDOS plugins such as TCPShield, but otherwise ensure that the server you're trying to connect to is spelled correctly in the config, is up and is port forwarded correctly.
|
||||
|
||||
If you're updating from an old build of Geyser, set your remote address to `auto` and try again.
|
||||
|
||||
### Floodgate Misconfiguration {#floodgate-misconfiguration}
|
||||
See [this page](/wiki/floodgate/setup/) for more information.
|
||||
|
||||
@@ -109,12 +107,6 @@ The server is too new or Geyser is outdated. Make sure you're on the latest Geys
|
||||
|
||||
Update the server or ask them to install [ViaVersion](https://viaversion.com/). You can also try [VIAaaS](https://github.com/ViaVersion/VIAaaS) (ViaVersion as a Service).
|
||||
|
||||
# Query: Incorrect Magic!
|
||||
|
||||
See here: https://www.spigotmc.org/threads/query-incorrect-magic-and-high-cpu-usage.159386/#post-2709057
|
||||
|
||||
* If you don't use a reverse proxy such as TCPShield make sure that `enable-proxy-protocol` is set to false.
|
||||
|
||||
# Only for BungeeCord with floodgate
|
||||
|
||||
If you use floodgate ensure that it is installed on all of your Spigot backend servers as following:
|
||||
|
||||
@@ -14,7 +14,6 @@ The following things cannot be fixed without changes to Bedrock or the Java prot
|
||||
|
||||
- Clickable links in chat
|
||||
- Glowing effect
|
||||
- Crafting in the 2x2 menu while in creative mode - with the GeyserOptionalPack, this grid is hidden as it does not exist on Java.
|
||||
- Distinguishing between left and right clicks in inventories
|
||||
- Redstone dot blockstates
|
||||
- Potion colors implemented using NBT
|
||||
@@ -35,9 +34,9 @@ The following things cannot be fixed without changes to Bedrock or the Java prot
|
||||
- Custom furnace cook times ([GeyserMC/Geyser#4104](https://github.com/GeyserMC/Geyser/issues/4104))
|
||||
- Maximum sign length different on Java/Bedrock edition ([GeyserMC/Geyser#4130](https://github.com/GeyserMC/Geyser/issues/4130))
|
||||
|
||||
## Fixable With GeyserOptionalPack {#fixable-with-geyseroptionalpack}
|
||||
## Fixed with the included GeyserIntegratedPack {#fixed-with-geyserintegratedpack}
|
||||
|
||||
The following changes **are supported** with the [GeyserOptionalPack](/wiki/other/geyseroptionalpack/), which is a Bedrock resource pack you can install for additional functionality for features Bedrock does not natively support:
|
||||
The following changes **are supported** with the included GeyserIntegratedPack, which is a Bedrock resource pack to add features Bedrock doesn't natively support:
|
||||
- Custom armor stand poses
|
||||
- Illusioners
|
||||
- Hit particles and other miscellaneous particles not natively in Bedrock
|
||||
|
||||
@@ -9,7 +9,7 @@ It should be noted that blocks and their associated components are not very stab
|
||||
|
||||
## Enabling custom blocks {#enabling-custom-blocks}
|
||||
|
||||
Before beginning, ensure that `add-non-bedrock-items` is set to `true` in your `config.yml` file.
|
||||
Before beginning, ensure that `gameplay.enable-custom-content` is set to `true` in your `config.yml` file.
|
||||
|
||||
```yml
|
||||
# Whether to add any items and blocks which normally does not exist in Bedrock Edition.
|
||||
@@ -17,7 +17,7 @@ Before beginning, ensure that `add-non-bedrock-items` is set to `true` in your `
|
||||
# If this is disabled, furnace minecart items will be mapped to hopper minecart items.
|
||||
# Geyser's block, item, and skull mappings systems will also be disabled.
|
||||
# This option requires a restart of Geyser in order to change its setting.
|
||||
add-non-bedrock-items: true
|
||||
enable-custom-content: true
|
||||
```
|
||||
|
||||
## JSON mappings {#json-mappings}
|
||||
|
||||
@@ -9,7 +9,7 @@ To setup custom skulls in geyser, you have to choose how you are going to regist
|
||||
|
||||
## Enabling custom skulls {#enabling-custom-skulls}
|
||||
|
||||
To enable custom skulls, you must set `add-non-bedrock-items` to `true` in the `config.yml` file. This will enable the generation of the custom resource pack and the translation of custom skulls to custom blocks. You can then add custom skulls to the `custom-skulls.yml` file.
|
||||
To enable custom skulls, you must set `gameplay.enable-custom-content` to `true` in the `config.yml` file. This will enable the generation of the custom resource pack and the translation of custom skulls to custom blocks. You can then add custom skulls to the `custom-skulls.yml` file.
|
||||
|
||||
```yaml
|
||||
# Whether to add any items and blocks which normally does not exist in Bedrock Edition.
|
||||
@@ -17,7 +17,7 @@ To enable custom skulls, you must set `add-non-bedrock-items` to `true` in the `
|
||||
# If this is disabled, furnace minecart items will be mapped to hopper minecart items.
|
||||
# Geyser's block, item, and skull mappings systems will also be disabled.
|
||||
# This option requires a restart of Geyser in order to change its setting.
|
||||
add-non-bedrock-items: true
|
||||
enable-custom-content: true
|
||||
```
|
||||
|
||||
## custom-skulls.yml {#custom-skullsyml}
|
||||
|
||||
@@ -25,11 +25,7 @@ The underlying Geyser API is steadily expanding, creating more and more opportun
|
||||
|
||||
## Which Geyser Extensions exist? {#which-geyser-extensions-exist}
|
||||
|
||||
At the moment, extensions are still a new system, so there is only a small list of known extensions for Geyser.
|
||||
However, new extensions are always being created!
|
||||
|
||||
There is an [official list](https://github.com/GeyserMC/GeyserExtensionList) of available extensions you can check out.
|
||||
If you have an extension you'd like to see on this list, feel free to open a PR!
|
||||
Check out Modrinth's Geyser extensions section under the "plugins" tab!
|
||||
|
||||
## Installing Extensions {#installing-extensions}
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ Add Geyser's API codebase as a dependency:
|
||||
<dependency>
|
||||
<groupId>org.geysermc.geyser</groupId>
|
||||
<artifactId>api</artifactId>
|
||||
<version>2.8.3-SNAPSHOT</version>
|
||||
<version>2.9.0-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
```
|
||||
@@ -40,7 +40,7 @@ Add Geyser's API codebase as a dependency:
|
||||
**Gradle**
|
||||
```groovy
|
||||
dependencies {
|
||||
compileOnly('org.geysermc.geyser:api:2.8.3-SNAPSHOT')
|
||||
compileOnly('org.geysermc.geyser:api:2.9.0-SNAPSHOT')
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ Here are a few selected guides that will help you get started with Geyser!
|
||||
<DocCardList items={[
|
||||
'setup',
|
||||
'supported-versions',
|
||||
'understanding-the-config',
|
||||
'commands',
|
||||
'faq',
|
||||
'common-issues',
|
||||
'extensions'
|
||||
|
||||
@@ -23,7 +23,7 @@ The playit.gg Minecraft server plugin does not support UDP tunnels. You will nee
|
||||

|
||||
4. Once "Add tunnel" is clicked, it should create a new tunnel, and you are set! Scroll down until you see this:
|
||||

|
||||
In Geyser config, set the `broadcast-port` to the playit.gg port from the "Allocation" tab. This will fix ping issues.
|
||||
In Geyser config, set the `advanced.bedrock.broadcast-port` to the playit.gg port from the "Allocation" tab. It is necessary for the motd to appear.
|
||||
|
||||
**Please do not change your Geyser port in `config.yml`** unless you have a reason to (e.g. hosting another Geyser server on the same machine), in which case skip to the paragraph below. The bedrock (Geyser) port in `config.yml` and the playit.gg ports are entirely seperate, playit.gg will forward its port to the default Geyser port and should already work. Changing it can cause errors. If you have changed your config port, change the bedrock port back to the default of 19132 and ensure that `clone-remote-port` is `false`.
|
||||
|
||||
|
||||
@@ -21,17 +21,17 @@ Geyser only works with **server-side** mods. Mods that require a client-side ins
|
||||
|
||||
```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 IP address that will listen for connections.
|
||||
# Generally, you should only change this if you want to limit what IPs can connect to your server.
|
||||
address: 0.0.0.0
|
||||
|
||||
# The port that will listen for connections. This is the port that Bedrock players will use to connect to your server.
|
||||
port: 19132
|
||||
# The port that will Geyser will listen on for incoming Bedrock connections.
|
||||
# Since Minecraft: Bedrock Edition uses UDP, this port must allow UDP traffic.
|
||||
port: 19132
|
||||
|
||||
# Some hosting services change your Java port everytime you start the server and require the same port to be used for Bedrock.
|
||||
# This option makes the Bedrock port the same as the Java port every time you start the server.
|
||||
# This option is for the plugin version only.
|
||||
clone-remote-port: false
|
||||
# Some hosting services change your Java port everytime you start the server and require the same port to be used for Bedrock.
|
||||
# This option makes the Bedrock port the same as the Java port every time you start the server.
|
||||
clone-remote-port: false
|
||||
```
|
||||
The vital part is the port. This is the port that Bedrock players will use to connect to your server.
|
||||
Follow the instructions in the provider selector - change the port, and if necessary, `clone-remote-port` & `address`.
|
||||
|
||||
@@ -16,20 +16,20 @@ See also [this page](/wiki/geyser/supported-versions/) on supported versions.
|
||||
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
|
||||
```yaml
|
||||
bedrock:
|
||||
# The IP address that will listen for connections.
|
||||
# Generally, you should only change this if you want to limit what IPs can connect to your server.
|
||||
address: 0.0.0.0
|
||||
|
||||
# The port that will listen for connections. This is the port that Bedrock players will use to connect to your server.
|
||||
port: 19132
|
||||
# The port that will Geyser will listen on for incoming Bedrock connections.
|
||||
# Since Minecraft: Bedrock Edition uses UDP, this port must allow UDP traffic.
|
||||
port: 19132
|
||||
|
||||
# Some hosting services change your Java port everytime you start the server and require the same port to be used for Bedrock.
|
||||
# This option makes the Bedrock port the same as the Java port every time you start the server.
|
||||
# This option is for the plugin version only.
|
||||
clone-remote-port: false
|
||||
```
|
||||
# Some hosting services change your Java port everytime you start the server and require the same port to be used for Bedrock.
|
||||
# This option makes the Bedrock port the same as the Java port every time you start the server.
|
||||
clone-remote-port: false
|
||||
```
|
||||
The vital part is the port. This is the port that Bedrock players will use to connect to your server.
|
||||
Follow the instructions in the provider selector - change the port, and if necessary, `clone-remote-port` & `address`.
|
||||
If `clone-remote-port` is enabled, the bedrock port will be overwritten with the Java port!
|
||||
|
||||
@@ -17,23 +17,23 @@ import { Versions } from '@site/src/components/Versions'
|
||||
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
|
||||
```yaml
|
||||
bedrock:
|
||||
# The IP address that will listen for connections.
|
||||
# Generally, you should only change this if you want to limit what IPs can connect to your server.
|
||||
address: 0.0.0.0
|
||||
|
||||
# The port that will listen for connections. This is the port that Bedrock players will use to connect to your server.
|
||||
port: 19132
|
||||
# The port that will Geyser will listen on for incoming Bedrock connections.
|
||||
# Since Minecraft: Bedrock Edition uses UDP, this port must allow UDP traffic.
|
||||
port: 19132
|
||||
|
||||
# Some hosting services change your Java port everytime you start the server and require the same port to be used for Bedrock.
|
||||
# This option makes the Bedrock port the same as the Java port every time you start the server.
|
||||
# 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.
|
||||
# Some hosting services change your Java port everytime you start the server and require the same port to be used for Bedrock.
|
||||
# This option makes the Bedrock port the same as the Java port every time you start the server.
|
||||
clone-remote-port: false
|
||||
```
|
||||
The vital part is the port. This is the port that Bedrock players will use to connect to your server.
|
||||
Follow the instructions in the provider selector - change the port, and if necessary, `clone-remote-port` & `address`.
|
||||
If `clone-remote-port` is enabled, the bedrock port will be overwritten with the Java port!
|
||||
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.
|
||||
|
||||
@@ -20,13 +20,18 @@ Geyser only works with **server-side** mods. Mods that require a client-side ins
|
||||
3. Open your Geyser config, located in `/config/Geyser-Fabric/config.yml` (or `/config/Geyser-NeoForge/config.yml`), and find the following:
|
||||
|
||||
```yaml
|
||||
bedrock:
|
||||
# The IP address that will listen for connections.
|
||||
# Generally, you should only uncomment and change this if you want to limit what IPs can connect to your server.
|
||||
#address: 0.0.0.0
|
||||
bedrock:
|
||||
# The IP address that will listen for connections.
|
||||
# Generally, you should only change this if you want to limit what IPs can connect to your server.
|
||||
address: 0.0.0.0
|
||||
|
||||
# The port that will listen for connections. This is the port that Bedrock players will use to connect to your server.
|
||||
port: 19132
|
||||
# The port that will Geyser will listen on for incoming Bedrock connections.
|
||||
# Since Minecraft: Bedrock Edition uses UDP, this port must allow UDP traffic.
|
||||
port: 19132
|
||||
|
||||
# Some hosting services change your Java port everytime you start the server and require the same port to be used for Bedrock.
|
||||
# This option makes the Bedrock port the same as the Java port every time you start the server.
|
||||
clone-remote-port: false
|
||||
```
|
||||
The vital part is the port. This is the port that Bedrock players will use to connect to your server!
|
||||
If you enable `clone-remote-port`, the port will be overridden and the Java port is used.
|
||||
|
||||
@@ -15,13 +15,18 @@ See also [this page](/wiki/geyser/supported-versions/) on supported versions.
|
||||
3. Open your Geyser config, located in `/plugins/Geyser-Spigot/config.yml`, and find the following:
|
||||
|
||||
```yaml
|
||||
bedrock:
|
||||
# The IP address that will listen for connections.
|
||||
# Generally, you should only uncomment and change this if you want to limit what IPs can connect to your server.
|
||||
#address: 0.0.0.0
|
||||
bedrock:
|
||||
# The IP address that will listen for connections.
|
||||
# Generally, you should only change this if you want to limit what IPs can connect to your server.
|
||||
address: 0.0.0.0
|
||||
|
||||
# The port that will listen for connections. This is the port that Bedrock players will use to connect to your server.
|
||||
port: 19132
|
||||
# The port that will Geyser will listen on for incoming Bedrock connections.
|
||||
# Since Minecraft: Bedrock Edition uses UDP, this port must allow UDP traffic.
|
||||
port: 19132
|
||||
|
||||
# Some hosting services change your Java port everytime you start the server and require the same port to be used for Bedrock.
|
||||
# This option makes the Bedrock port the same as the Java port every time you start the server.
|
||||
clone-remote-port: false
|
||||
```
|
||||
The vital part is the port. This is the port that Bedrock players will use to connect to your server!
|
||||
If you enable `clone-remote-port`, the port will be overridden and the Java port is used.
|
||||
|
||||
@@ -16,14 +16,19 @@ import { Versions } from '@site/src/components/Versions'
|
||||
2. Place the Geyser jar in the `plugins` folder, and restart the server.
|
||||
3. Open your Geyser config, located in `/plugins/Geyser-xyz/config.yml`, and find the following:
|
||||
|
||||
```yaml
|
||||
bedrock:
|
||||
# The IP address that will listen for connections.
|
||||
# Generally, you should only uncomment and change this if you want to limit what IPs can connect to your server.
|
||||
#address: 0.0.0.0
|
||||
```yaml
|
||||
bedrock:
|
||||
# The IP address that will listen for connections.
|
||||
# Generally, you should only change this if you want to limit what IPs can connect to your server.
|
||||
address: 0.0.0.0
|
||||
|
||||
# The port that will listen for connections. This is the port that Bedrock players will use to connect to your server.
|
||||
port: 19132
|
||||
# The port that will Geyser will listen on for incoming Bedrock connections.
|
||||
# Since Minecraft: Bedrock Edition uses UDP, this port must allow UDP traffic.
|
||||
port: 19132
|
||||
|
||||
# Some hosting services change your Java port everytime you start the server and require the same port to be used for Bedrock.
|
||||
# This option makes the Bedrock port the same as the Java port every time you start the server.
|
||||
clone-remote-port: false
|
||||
```
|
||||
The vital part is the port. This is the port that Bedrock players will use to connect to your server!
|
||||
If you enable `clone-remote-port`, the port will be overridden and the Java port is used.
|
||||
|
||||
@@ -26,13 +26,15 @@ Geyser-Standalone is NOT a plugin or mod! It is a standalone Java program that y
|
||||
4. Open your Geyser config (`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
|
||||
bedrock:
|
||||
# The IP address that Geyser will bind on to listen for incoming Bedrock connections.
|
||||
# Generally, you should only change this if you want to limit what IPs can connect to your server.
|
||||
address: 0.0.0.0
|
||||
|
||||
# The port that will Geyser will listen on for incoming Bedrock connections.
|
||||
# Since Minecraft: Bedrock Edition uses UDP, this port must allow UDP traffic.
|
||||
port: 19132
|
||||
|
||||
# The port that will listen for connections. This is the port that Bedrock players will use to connect to your server.
|
||||
port: 19132
|
||||
```
|
||||
The `port` is the port Bedrock players will enter to connect to the server.
|
||||
Uncommenting and changing `address` here is only needed if you need to limit connections to a specific IP address.
|
||||
@@ -40,18 +42,18 @@ Geyser-Standalone is NOT a plugin or mod! It is a standalone Java program that y
|
||||
|
||||
To configure which Java Edition server Geyser Standalone will send players to, find the remote section:
|
||||
```yaml
|
||||
remote:
|
||||
# The IP address of the remote (Java Edition) server
|
||||
# If it is "auto", for standalone version the remote address will be set to 127.0.0.1.
|
||||
address: auto
|
||||
java:
|
||||
# The IP address of the Java Edition server.
|
||||
address: 127.0.0.1
|
||||
|
||||
# The port of the remote (Java Edition) server
|
||||
port: 25565
|
||||
|
||||
# Authentication type. Can be offline, online, or floodgate (see https://github.com/GeyserMC/Geyser/wiki/Floodgate).
|
||||
auth-type: online
|
||||
# The port of the Java Edition server.
|
||||
port: 25565
|
||||
|
||||
# What type of authentication Bedrock players will be checked against when logging into the Java server.
|
||||
# Can be "floodgate" (see https://wiki.geysermc.org/floodgate/), "online", or "offline".
|
||||
auth-type: online
|
||||
```
|
||||
Here, change `address` to the Java server's address, or to `auto` if the server is on the same machine as Geyser-Standalone.
|
||||
Here, change `address` to the Java server's address, or leave it as-is if the server is on the same machine as Geyser-Standalone.
|
||||
Then, change `port` to the Java server's port. If you have set up Floodgate on the remote Java server, you can set auth-type to "floodgate" - otherwise,
|
||||
set it to either `online` for an online mode server, or `offline` for an offline mode server. To install and set up Floodgate with a Standalone server, see [here](/wiki/floodgate/setup).
|
||||
|
||||
|
||||
@@ -9,13 +9,18 @@ description: Learn how to set up Geyser with ViaProxy.
|
||||
4. Open your Geyser config, located in `/plugins/Geyser/config.yml`, and find the following:
|
||||
|
||||
```yaml
|
||||
bedrock:
|
||||
# The IP address that will listen for connections.
|
||||
# Generally, you should only uncomment and change this if you want to limit what IPs can connect to your server.
|
||||
#address: 0.0.0.0
|
||||
bedrock:
|
||||
# The IP address that will listen for connections.
|
||||
# Generally, you should only change this if you want to limit what IPs can connect to your server.
|
||||
address: 0.0.0.0
|
||||
|
||||
# The port that will listen for connections. This is the port that Bedrock players will use to connect to your server.
|
||||
port: 19132
|
||||
# The port that will Geyser will listen on for incoming Bedrock connections.
|
||||
# Since Minecraft: Bedrock Edition uses UDP, this port must allow UDP traffic.
|
||||
port: 19132
|
||||
|
||||
# Some hosting services change your Java port everytime you start the server and require the same port to be used for Bedrock.
|
||||
# This option makes the Bedrock port the same as the Java port every time you start the server.
|
||||
clone-remote-port: false
|
||||
```
|
||||
The vital part is the port. This is the port that Bedrock players will use to connect to your server!
|
||||
If you enable `clone-remote-port`, the port will be overridden and the ViaProxy port is used.
|
||||
|
||||
@@ -1,142 +0,0 @@
|
||||
---
|
||||
title: Understanding the Config
|
||||
description: This page covers basic information about the Geyser config and the function of each option.
|
||||
---
|
||||
|
||||
This page covers basic information about the Geyser config and what each option does. Though they are explained in the configuration itself, this explains what each option does in more detail.
|
||||
|
||||
## Bedrock Section {#bedrock-section}
|
||||
The options for Geyser on the Bedrock-facing end. Mostly contains options for how Bedrock edition will see the server.
|
||||
|
||||
**`address`**: The address of Geyser on the Bedrock end. In most all scenarios, this should not need to be changed, unless you want to limit what IPs can connect to your server. Leave it at 0.0.0.0 (default), unless otherwise instructed in the setup guide.
|
||||
|
||||
**`port`**: The port Geyser will run on. By default, it is 19132 in Bedrock. If you are using a server hosting provider, you may not have this port available to you - in which case, read the setup guide to proceed.
|
||||
|
||||
**`clone-remote-port`**: Some hosting services change your Java port everytime you start the server and require the same port to be used for Bedrock/UDP connections. This option makes the Bedrock port the same as the Java port every time you start the server. This option does not do anything on the Standalone version of Geyser.
|
||||
|
||||
**`motd1`**: The first line of the MOTD for Geyser.
|
||||
|
||||
**`motd2`**: The second line of the MOTD for Geyser. **Please keep in mind, this option will only work if Geyser is shown in the Friends tab!**
|
||||
|
||||
**`server-name`**: The world name that is shown in the top-right area of the pause menu and the settings menu.
|
||||
|
||||
**`compression-level`**: An number value that represents how much to compress outgoing traffic. Can be any number from -1 to 9; any other value will be replaced with the nearest acceptable value. The higher the number, the more CPU processing that is used but with less bandwidth used. Default is 6.
|
||||
|
||||
**`broadcast-port`**: The port to broadcast to Bedrock clients with the MOTD that they should use to connect to the server. DO NOT uncomment and change this unless Geyser runs on a different internal port than the one that is used to connect.
|
||||
|
||||
**`enable-proxy-protocol`**: Whether to enable PROXY protocol or not for clients. You DO NOT WANT this feature unless you run UDP reverse proxy in front of your Geyser instance. You do NOT need this for BungeeCord (and forks), Velocity, or Waterfall.
|
||||
|
||||
**`proxy-protocol-whitelisted-ips`**: Disabled by default, and only enable this if you use "enable-proxy-protocol". A list of allowed PROXY protocol speaking proxy IP addresses/subnets. Should really only be used when you are not able to use a proper firewall (usually true with shared hosting providers etc.). Keeping this list empty means there is no IP address whitelist. IP addresses, subnets, and links to plain text files containing either are supported.
|
||||
|
||||
## Remote Section {#remote-section}
|
||||
Options for the remote (Java) server.
|
||||
|
||||
**`address`**: The address of the Minecraft: Java Edition server you want to join. By default, this value is `auto`. By keeping it as `auto`, the address, port, and Floodgate support will be automatically configured. In standalone, keeping this as `auto` sets the remote address to 127.0.0.1.
|
||||
|
||||
**`port`**: The port of the Minecraft: Java Edition server you specified in the `address` section. For plugin versions, if address has been set to "auto", the port will also follow the server's listening port.
|
||||
|
||||
**`auth-type`**: The authentication type of the Minecraft: Java Edition server. Valid options are `online`, `offline`, and `floodgate`.
|
||||
|
||||
**Please keep in mind, what you specify in the Geyser `auth-type` option MUST be the same as what the remote server has (with the exception of Geyser being in online mode and remote being in offline mode). You simply cannot join an online mode server without a genuine account. If you want to allow Minecraft: Bedrock Edition accounts to join without a Minecraft: Java Edition account, see the [Floodgate](/wiki/floodgate/) wiki page.**
|
||||
|
||||
**`use-proxy-protocol`**: Whether to enable PROXY/HAProxy protocol or not while connecting to the server. This is useful only when:
|
||||
- Your server supports PROXY protocol (it probably doesn't)
|
||||
- You run Velocity or BungeeCord with its respective option enabled.
|
||||
- IF YOU DON'T KNOW WHAT THIS IS, DON'T TOUCH IT!
|
||||
|
||||
**`forward-hostname`**: Forwards the hostname/IP address that the Bedrock client used to connect over to the Java server. This is designed to be used for forced hosts on proxies.
|
||||
|
||||
## General Options {#general-options}
|
||||
General Geyser options that are mostly specific to Geyser itself.
|
||||
|
||||
**`floodgate-key-file`**: Floodgate uses encryption to ensure use from authorised sources. This should point to the public key generated by Floodgate (BungeeCord, Spigot or Velocity). You can ignore this when not using Floodgate. If you're using a plugin version of Floodgate on the same server, the key will automatically be picked up from Floodgate.The key file path for Floodgate. Requires that you have [Floodgate](/wiki/floodgate/) installed and the `auth-type` set to `floodgate`.
|
||||
|
||||
**`saved-user-logins`**: For online mode authentication type only.
|
||||
Stores a list of Bedrock player usernames that should have their Java Edition account saved after login.
|
||||
This saves an auth chain token that can be reused to authenticate the player later. This does not save emails or passwords,
|
||||
but you should still be cautious when adding to this list and giving others access to this Geyser instance's files.
|
||||
Removing a name from this list will delete its cached login information on the next Geyser startup.
|
||||
The file that tokens will be saved in is in the same folder as this config, named `saved-auth-chains.json`.
|
||||
|
||||
Format:
|
||||
|
||||
```yml
|
||||
saved-user-logins:
|
||||
- jeb_
|
||||
- Dinnerbone
|
||||
```
|
||||
|
||||
**`command-suggestions`**: Bedrock clients freeze or crash when opening up the command prompt for the first time with a large amount of command suggestions. This config option disables command suggestions being sent to prevent any freezing. **Since 1.16.100:** command freezing and crashing has been largely reduced; you may no longer need this option disabled.
|
||||
|
||||
**`passthrough-motd`**: If the MOTD should be relayed from the remote server. Causes the `motd1` and `motd2` options in the bedrock section to no longer have a use.
|
||||
|
||||
**`passthrough-player-count`**: If the current and max player counts should be relayed from the remote server.
|
||||
|
||||
**`legacy-ping-passthrough`**: If enabled, manually pings the server by impersonating a Minecraft client instead of using the server's API. **This option should *only* be enabled if your MOTD or player count is not accurate,** as it can cause errors especially on BungeeCord. This option does nothing on Geyser Standalone.
|
||||
|
||||
**`ping-passthrough-interval`**: How often the fake Minecraft client should attempt to ping the remote server to update information, in seconds (a setting of 1 will ping the server every second; a setting of 3 will ping the server every three seconds). Only relevant for standalone and legacy ping passthrough. Increase the number if you're getting timeout or BrokenPipe exceptions.
|
||||
|
||||
**`forward-player-ping`**: Whether to forward player ping to the server. While enabling this will allow Bedrock players to have more accurate ping, it may also cause players to time out more easily.
|
||||
|
||||
**`max-players`**: The maximum amount of players shown when pinging the server. This does not actually cap how many players can join the Geyser instance at this time. The number will visually increase when pinging if the amount of players is greater, as Bedrock clients will not even attempt to join a full server.
|
||||
|
||||
**`debug-mode`**: If debug messages should be printed in console. Useful if you run into an error and need more context. Yes, this will cause more messages, warnings or even errors in console - some packets aren't translated.
|
||||
|
||||
**`allow-third-party-capes`**: If third party (Optifine, 5zig, LabyMod, etc.) capes should be displayed to the bedrock player.
|
||||
|
||||
**`allow-third-party-ears`**: If third party Deadmau5-style ears should be enabled. Currently only supports MinecraftCapes.
|
||||
|
||||
**`show-cooldown`**: Bedrock Edition currently does not have Java Edition 1.9+ combat mechanics. In order to get around this, Geyser sends a fake cooldown by sending a title message. This cooldown should not show if 1.8 combat mechanics are in use. The options available for this setting are `false` (no cooldown is sent), `title`/`true` (a cooldown indication is shown in the title), or `actionbar` (a cooldown indication is shown in the action bar). All other options default to `false`.
|
||||
|
||||
**`show-coordinates`**: Bedrock Edition has an option to show coordinates in the top-left part of your screen. This setting enables or disables this.
|
||||
|
||||
**`disable-bedrock-scaffolding`**: Whether Bedrock players are blocked from performing their scaffolding-style bridging.
|
||||
|
||||
**`emote-offhand-workaround`**: Since Java Edition 1.9, clients have had the ability to switch the item in their mainhand and offhand with a keybind. Bedrock Edition does not have this ability, so this config option makes up for it, If set, when a Bedrock player performs any emote, it will swap the offhand and mainhand items, just like the Java Edition keybind. There are three options this can be set to:
|
||||
- `disabled` - the default/fallback, which doesn't apply this workaround
|
||||
- `no-emotes` - emotes will NOT be sent to other Bedrock clients and offhand will be swapped. This effectively disables all emotes from being seen.
|
||||
- `emotes-and-offhand` - emotes will be sent to Bedrock clients and offhand will be swapped
|
||||
|
||||
**`default-locale`**: The default locale to send to players if their locale could not be found. This option is disabled by default - to enable it, remove the "#" in front of the option.
|
||||
|
||||
**`cache-images`**: Specify how many days images will be cached to disk to save downloading them from the internet. A value of 0 is disabled. (Default: 0)
|
||||
|
||||
**`allow-custom-skulls`**: Allows custom skulls to be displayed when placed. Keeping them enabled may cause a performance decrease on older/weaker devices.
|
||||
|
||||
**`max-visible-custom-skulls`**: The maximum number of custom skulls to be displayed per player. Increasing this may decrease performance on weaker devices. Setting this to -1 will cause all custom skulls to be displayed regardless of distance or number.
|
||||
|
||||
**`custom-skull-render-distance`**: A number value specifying the radius in blocks around the player in which custom skulls are displayed. 32 by default.
|
||||
|
||||
**`add-non-bedrock-items`**: Whether to add (at this time, only) the furnace minecart as a separate item in the game, which normally does not exist in Bedrock Edition. This should only need to be disabled if using a proxy that does not use the "transfer packet" style of server switching. If this is disabled, furnace minecart items will be mapped to hopper minecart items. This option requires a restart of Geyser in order to change its setting.
|
||||
|
||||
**`above-bedrock-nether-building`**: Bedrock prevents building and displaying blocks above Y127 in the Nether - enabling this config option works around that by changing the Nether dimension ID to the End ID. The main downside to this is that the sky will resemble that of the End sky in the Nether, but ultimately it's the only way for this feature to work.
|
||||
|
||||
**`force-resource-packs`**: Force clients to load all resource packs if there are any. If set to false, it allows the user to disconnect from the server if they don't want to download the resource packs.
|
||||
|
||||
**`xbox-achievements-enabled`**: Allows Xbox achievements to be unlocked.
|
||||
|
||||
**`log-player-ip-addresses`**: Whether player IP addresses will be logged by the server.
|
||||
|
||||
**`notify-on-new-bedrock-update`**: Whether to alert the console and operators that a new Geyser version is available that supports a Bedrock version that this Geyser version does not support. It's recommended to keep this option enabled, as many Bedrock platforms auto-update.
|
||||
|
||||
**`unusable-space-block`**: Which item to use to mark unavailable slots in a Bedrock player inventory. Examples of this are the 2x2 crafting grid while in creative, or custom inventory menus with sizes different from the usual 3x9. A barrier block is the default item (minecraft:barrier is therefore the default value). Takes any Minecraft Bedrock item identifier, e.g. `minecraft:apple`. To set this to a custom item, you will need to add the `geyser_custom:` namespace.
|
||||
|
||||
## Metrics {#metrics}
|
||||
|
||||
bStats is a stat tracker that is entirely anonymous and tracks only basic information about Geyser, such as how many people are online, how many servers are using Geyser, what OS is being used, etc. You can learn more about bStats [here](https://bstats.org/). To see Geyser Stats, see [here](https://bstats.org/plugin/server-implementation/GeyserMC/).
|
||||
|
||||
**`enabled`**: If metrics are enabled
|
||||
|
||||
**`uuid`**: UUID of the server, don't change this!
|
||||
|
||||
## Advanced Options {#advanced-options}
|
||||
|
||||
**`scoreboard-packet-threshold`**: Geyser updates the Scoreboard after every Scoreboard packet, but when Geyser tries to handle a lot of scoreboard packets per second can cause serious lag. This option allows you to specify after how many Scoreboard packets per seconds the Scoreboard updates will be then limited to four updates per second.
|
||||
|
||||
**`enable-proxy-connections`**: Allow connections from ProxyPass and Waterdog. See https://www.spigotmc.org/wiki/firewall-guide/ for assistance - use UDP instead of TCP. **This option does not need to be enabled in instances like BungeeCord or Velocity**.
|
||||
|
||||
**`mtu`**: https://en.wikipedia.org/wiki/Maximum_transmission_unit - The internet supports a maximum MTU of 1492 but could cause issues with packet fragmentation. 1400 is the default.
|
||||
|
||||
**`use-direct-connection`**: Whether to connect directly into the Java server without creating a TCP connection. This should only be disabled if a plugin that interfaces with packets or the network does not work correctly with Geyser. If enabled on plugin versions, the remote address and port sections are ignored. If disabled on plugin versions, expect performance decrease and latency increase.
|
||||
|
||||
Default Geyser Config: [config.yml](https://github.com/GeyserMC/Geyser/blob/master/core/src/main/resources/config.yml)
|
||||
@@ -0,0 +1,66 @@
|
||||
---
|
||||
title: GeyserIntegratedPack
|
||||
description: GeyserIntegratedPack is a Bedrock resource pack that fixes parity issues with Geyser to bring Bedrock Edition in line with Java Edition.
|
||||
---
|
||||
|
||||
:::info
|
||||
Geyser includes the GeyserIntegratedPack (previously called "GeyserOptionalPack"), you do not need to add it manually!
|
||||
See the "Migration" section for further details.
|
||||
:::
|
||||
|
||||
GeyserIntegratedPack is a Bedrock resource pack that adds more features to Geyser to bring Bedrock Edition in line with Java Edition.
|
||||
A resource pack allows various features and bug fixes to be implemented in Bedrock, including:
|
||||
|
||||
- Armor base arms/baseplate visibility
|
||||
- Armor stand poses
|
||||
- Illusioners
|
||||
- Missing particles
|
||||
- Offhand animations
|
||||
- Shulker invisibility parity
|
||||
- Spectral arrow entity texture
|
||||
- Bypass for the scoreboard character limit
|
||||
- Hides UI elements that do not exist on Java edition, such as:
|
||||
- Text input field in the cartography table
|
||||
- 2x2 crafting grid while in creative mode
|
||||
- Tick-delay and rename fields in the command block menu
|
||||
- Structure block options that do not exist on Java
|
||||
- Hides the accessibility background on titles for the weapon cooldown
|
||||
|
||||
A more complete list can be found on the integrated pack's [README](https://github.com/GeyserMC/GeyserIntegratedPack/blob/master/README.md).
|
||||
Implementation details for those interested in how features are added can be found [here](https://github.com/GeyserMC/GeyserIntegratedPack/blob/master/developer_documentation.md).
|
||||
|
||||
## Migration from GeyserOptionalPack {#migration}
|
||||
|
||||
Users previously using the GeyserOptionalPack should remove it to allow Geyser to serve the GeyserIntegratedPack instead.
|
||||
This change has one main benefit: automatic updates, and it is a preparation for advanced features that are tied-in to Geyser (such
|
||||
as a proper Java-style attack indicator!).
|
||||
|
||||
You can also disable the GeyserIntegratedPack in Geyser's config if you do not wish to have these changes applied.
|
||||
|
||||
### What changed?
|
||||
- The resource pack uuid and version have been changed
|
||||
- The GeyserIntegratedPack is being sent with a lower priority in the clients resource pack stack (the order in which
|
||||
resource packs are applied), so manual overrides are possible
|
||||
- With Geyser including the pack, you no longer need to worry about updating the pack yourself!
|
||||
|
||||
### How to migrate?
|
||||
|
||||
If you previously downloaded the GeyserOptionalPack from Geyser's download page, you can simply remove it from Geyser's
|
||||
`packs` folder and let Geyser apply the GeyserIntegratedPack - and you're done!
|
||||
|
||||
However, if you were applying modifications to the resource pack, there are more things to be done:
|
||||
- You should separate out your changes into a separate resource pack. The GeyserIntegratedPack has a low priority in the
|
||||
resource pack stack, so your changes in your resource pack will take priority.
|
||||
- If you modify entity definitions that the GeyserIntegratedPack changes, make sure to merge the definitions manually!
|
||||
|
||||
Users utilizing the UrlPackCodec should also serve the GeyserIntegratedPack instead (available [here](https://github.com/GeyserMC/GeyserIntegratedPack)).
|
||||
Geyser will still perform checks to ensure the "manually" included version isn't outdated, so we recommend to regularly poll
|
||||
Geyser's downloads API for pack updates.
|
||||
|
||||
## Resource pack conflicts {#resource-pack-conflicts}
|
||||
|
||||
If your current server resource pack contains any entity definitions that overlap with Geyser's changes (found [here](https://github.com/GeyserMC/GeyserIntegratedPack/tree/master/src/main/resources/integratedpack/entity)
|
||||
and [here](https://github.com/GeyserMC/GeyserIntegratedPack/tree/master/src/main/resources/patches/entity)),
|
||||
you will need to merge the definitions for these entities for the optional pack and your own pack to work correctly.
|
||||
The Bedrock client will prioritize the entity definition based on pack application order - highest wins! This process is best performed manually
|
||||
due to the complexity of entity definition files, though it can also be [scripted](https://gist.github.com/Kas-tle/89c6adc3e7901fbabd1b9f71d902d0a6).
|
||||
@@ -3,29 +3,10 @@ title: GeyserOptionalPack
|
||||
description: GeyserOptionalPack is a Bedrock resource pack that fixes parity issues with Geyser to bring Bedrock Edition in line with Java Edition.
|
||||
---
|
||||
|
||||
## [Download here](/download?project=other-projects&geyseroptionalpack=expanded) {#download-here}
|
||||
# GeyserOptionalPack
|
||||
|
||||
GeyserOptionalPack is a Bedrock resource pack that adds more features to Geyser to bring Bedrock Edition in line with Java Edition. A resource pack allows various features and bug fixes to be implemented in Bedrock, including:
|
||||
|
||||
- Armor base arms/baseplate visibility
|
||||
- Armor stand poses
|
||||
- Illusioners
|
||||
- Missing particles
|
||||
- Offhand animations
|
||||
- Shulker invisibility parity
|
||||
- Spectral arrow entity texture
|
||||
- Bypass for the scoreboard character limit
|
||||
- Hides UI elements that do not exist on Java edition, such as:
|
||||
- Text input field in the cartography table
|
||||
- 2x2 crafting grid while in creative mode
|
||||
- Tick-delay and rename fields in the command block menu
|
||||
- Structure block options that do not exist on Java
|
||||
- Hides the accessibility background on titles for the weapon cooldown
|
||||
|
||||
A more complete list can be found on the optional pack's [README](https://github.com/GeyserMC/GeyserOptionalPack/blob/master/README.md). Implementation details for those interested in how features are added can be found [here](https://github.com/GeyserMC/GeyserOptionalPack/blob/master/developer_documentation.md).
|
||||
|
||||
While recommended, it is not required to install the resource pack on the server - clients can install it themselves. Additionally, if you use a proxy like WaterdogPE, you can install the pack on the server without impacting gameplay on other Bedrock servers.
|
||||
|
||||
## Resource pack conflicts {#resource-pack-conflicts}
|
||||
|
||||
If your current server resource pack contains any [entity definitions](https://github.com/GeyserMC/GeyserOptionalPack/tree/master/entity) that overlap with the optional pack, you will need to merge the definitions for these entities for the optional pack and your own pack to work correctly. Otherwise, the prevailing entity definition will be based on pack application order. This process is best performed manually due to the complexity of entity definition files, though it can also be [scripted](https://gist.github.com/Kas-tle/89c6adc3e7901fbabd1b9f71d902d0a6).
|
||||
:::info
|
||||
This page has been [moved](/wiki/other/geyserintegratedpack/).
|
||||
Geyser now includes the GeyserIntegratedPack, so users no longer need to manually add this resource pack as it is natively integrated
|
||||
into Geyser!
|
||||
:::
|
||||
@@ -15,7 +15,7 @@ This includes community projects, but also other projects by the GeyserMC team,
|
||||
<DocCardList items={[
|
||||
'community-geyser-projects',
|
||||
'hurricane',
|
||||
'geyseroptionalpack',
|
||||
'thunder',
|
||||
'thirdpartycosmetics',
|
||||
'hydraulic',
|
||||
'geyserconnect',
|
||||
|
||||
Reference in new issue
Block a user