Revamp website with new Docusaurus version
3
.gitignore
vendored
@ -18,3 +18,6 @@
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
.yarn
|
||||
.idea
|
||||
|
24855
.pnp.cjs
generated
Normal file
2126
.pnp.loader.mjs
generated
Normal file
@ -1,12 +0,0 @@
|
||||
---
|
||||
slug: first-blog-post
|
||||
title: First Blog Post
|
||||
authors: [slorber, yangshun]
|
||||
tags: [hola, docusaurus]
|
||||
---
|
||||
|
||||
Lorem ipsum dolor sit amet...
|
||||
|
||||
<!-- truncate -->
|
||||
|
||||
...consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
@ -1,44 +0,0 @@
|
||||
---
|
||||
slug: long-blog-post
|
||||
title: Long Blog Post
|
||||
authors: yangshun
|
||||
tags: [hello, docusaurus]
|
||||
---
|
||||
|
||||
This is the summary of a very long blog post,
|
||||
|
||||
Use a `<!--` `truncate` `-->` comment to limit blog post size in the list view.
|
||||
|
||||
<!-- truncate -->
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
@ -1,24 +0,0 @@
|
||||
---
|
||||
slug: mdx-blog-post
|
||||
title: MDX Blog Post
|
||||
authors: [slorber]
|
||||
tags: [docusaurus]
|
||||
---
|
||||
|
||||
Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/).
|
||||
|
||||
:::tip
|
||||
|
||||
Use the power of React to create interactive blog posts.
|
||||
|
||||
:::
|
||||
|
||||
{/* truncate */}
|
||||
|
||||
For example, use JSX to create an interactive button:
|
||||
|
||||
```js
|
||||
<button onClick={() => alert('button clicked!')}>Click me!</button>
|
||||
```
|
||||
|
||||
<button onClick={() => alert('button clicked!')}>Click me!</button>
|
Before Width: | Height: | Size: 94 KiB |
@ -1,29 +0,0 @@
|
||||
---
|
||||
slug: welcome
|
||||
title: Welcome
|
||||
authors: [slorber, yangshun]
|
||||
tags: [facebook, hello, docusaurus]
|
||||
---
|
||||
|
||||
[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog).
|
||||
|
||||
Here are a few tips you might find useful.
|
||||
|
||||
<!-- truncate -->
|
||||
|
||||
Simply add Markdown files (or folders) to the `blog` directory.
|
||||
|
||||
Regular blog authors can be added to `authors.yml`.
|
||||
|
||||
The blog post date can be extracted from filenames, such as:
|
||||
|
||||
- `2019-05-30-welcome.md`
|
||||
- `2019-05-30-welcome/index.md`
|
||||
|
||||
A blog post folder can be convenient to co-locate blog post images:
|
||||
|
||||
![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg)
|
||||
|
||||
The blog supports tags as well!
|
||||
|
||||
**And if you don't want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config.
|
@ -1,23 +0,0 @@
|
||||
yangshun:
|
||||
name: Yangshun Tay
|
||||
title: Front End Engineer @ Facebook
|
||||
url: https://github.com/yangshun
|
||||
image_url: https://github.com/yangshun.png
|
||||
page: true
|
||||
socials:
|
||||
x: yangshunz
|
||||
github: yangshun
|
||||
|
||||
slorber:
|
||||
name: Sébastien Lorber
|
||||
title: Docusaurus maintainer
|
||||
url: https://sebastienlorber.com
|
||||
image_url: https://github.com/slorber.png
|
||||
page:
|
||||
# customize the url of the author page at /blog/authors/<permalink>
|
||||
permalink: '/all-sebastien-lorber-articles'
|
||||
socials:
|
||||
x: sebastienlorber
|
||||
linkedin: sebastienlorber
|
||||
github: slorber
|
||||
newsletter: https://thisweekinreact.com
|
@ -1,19 +0,0 @@
|
||||
facebook:
|
||||
label: Facebook
|
||||
permalink: /facebook
|
||||
description: Facebook tag description
|
||||
|
||||
hello:
|
||||
label: Hello
|
||||
permalink: /hello
|
||||
description: Hello tag description
|
||||
|
||||
docusaurus:
|
||||
label: Docusaurus
|
||||
permalink: /docusaurus
|
||||
description: Docusaurus tag description
|
||||
|
||||
hola:
|
||||
label: Hola
|
||||
permalink: /hola
|
||||
description: Hola tag description
|
63
docs/compiling.mdx
Normal file
@ -0,0 +1,63 @@
|
||||
---
|
||||
id: compiling
|
||||
title: Compiling Plex
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Compiling
|
||||
Compiling Plex is straightforward as there are no dependencies that need to be added manually. Plex uses Gradle as the build system. All compiling instructions are in the ```build.gradle.kts``` file. Note that you can download an already compiled version of Plex from the [CI Server](https://ci.plex.us.org).
|
||||
|
||||
## Prerequisites
|
||||
Please ensure that you have Java 17 installed on your computer, as Plex requires JDK 17 to compile. You will get an error if you try to use an older version.
|
||||
If you have Java 17 installed, it may not be set in your path. If you do not already have Java installed, the recommended place to get Java is from [Adoptium](https://adoptium.net/). In the installer, there is an option to set JDK 17 to your path. **You must select that option if it is not already selected by default.**
|
||||
Plex does not require, but recommends having Git installed on your computer. If you do not want to install Git, you may download the source code manually. Git for Windows can be downloaded [here](https://git-scm.com). macOS and Linux users should already have Git installed by default.
|
||||
|
||||
## Using the command line
|
||||
First, clone the Plex source code from GitHub on to your computer using the following command.
|
||||
```bash
|
||||
git clone https://github.com/plexusorg/Plex
|
||||
```
|
||||
|
||||
:::note
|
||||
If you don't have Git installed, you can download a ZIP of the source code from the repository instead.
|
||||
:::
|
||||
|
||||
Next, change your working directory to the Plex folder.
|
||||
|
||||
```bash
|
||||
cd Plex-master
|
||||
```
|
||||
|
||||
Gradle is already included in the folder with Plex. Run the following command below based on your operating system to compile Plex.
|
||||
<Tabs>
|
||||
<TabItem value="macOS" label="macOS" default>
|
||||
|
||||
```bash
|
||||
./gradlew build
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="Windows" label="Windows">
|
||||
|
||||
```bash
|
||||
gradlew.bat build
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="Linux" label="Linux">
|
||||
|
||||
```bash
|
||||
./gradlew build
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
You should receive a message indicating the compilation was successful. The JAR files for the Server and Proxy are located in the `build/libs` folder.
|
||||
|
||||
Plex has no external dependencies and can be used right away after compilation. Plex works on Minecraft 1.19 to 1.20.4. You also must be running Java 17 on the server itself.
|
||||
|
||||
## Troubleshooting
|
||||
If you receive an error that says Permission denied, run `chmod a+x gradlew`. Note that this only applies to macOS / Linux users.
|
85
docs/customization/commandblocker.md
Normal file
@ -0,0 +1,85 @@
|
||||
---
|
||||
id: commandblocker
|
||||
title: Command Blocker
|
||||
---
|
||||
|
||||
# Command Blocker
|
||||
Plex features an advanced command blocker with support for matching and RegEx statements. It is recommended that you use this only in conjunction with ranks. If you are using permissions, there is not as much of a need for a command blocker.
|
||||
|
||||
## Default file
|
||||
The default `commands.yml` file is below.
|
||||
|
||||
```yaml title=/plugins/Plex/commands.yml
|
||||
#
|
||||
# Command Blocker
|
||||
#
|
||||
# Format:
|
||||
# - "<regex or match>:<rank>:command name no slash:Block message"
|
||||
#
|
||||
# Symbols to use:
|
||||
# - r for RegEx
|
||||
# - m for matching
|
||||
# - The ranks are "e" for everyone, "s" for senior admin, and "a" for admin
|
||||
# - MATCHING MODE: The command is just the command without slashes. Optional arguments are specified as well. It also accepts full plugins via specifying the plugin name followed by a ":" (e.g. "viaversion:")
|
||||
# - REGEX MODE: The command is regex that matches the desired command. It matches case insensitively.
|
||||
# - Finally the block message MUST NOT CONTAIN ":". Use _ to use the default command blocked message as specified in messages.yml, or you can optionally put your own in
|
||||
#
|
||||
# So these would be valid:
|
||||
# - "m:e:mail sendall:You cannot send messages to everyone on the server"
|
||||
# - "r:e:^[A-z]*:[A-z]*::Plugin specific commands are disabled"
|
||||
commands:
|
||||
- "m:a:break:_"
|
||||
- "m:a:delchunks:_"
|
||||
- "m:a:kickall:_"
|
||||
- "m:a:locatebiome:_"
|
||||
- "m:a:playsound:_"
|
||||
- "m:a:setspawn:_"
|
||||
- "m:a:socialspy:_"
|
||||
- "m:a:tpall:_"
|
||||
- "m:e:/eval:_"
|
||||
- "m:e:advancement:_"
|
||||
- "m:e:antioch:_"
|
||||
- "m:e:backup:_"
|
||||
- "m:e:ban-ip:_"
|
||||
- "m:e:co purge:_"
|
||||
- "m:e:d minecart_command:_"
|
||||
- "m:e:debug:_"
|
||||
- "m:e:defaultgamemode:<gray>The default gamemode should not be changed."
|
||||
- "m:e:deljail:_"
|
||||
- "m:e:disguiseradius:_"
|
||||
- "m:e:fill:_"
|
||||
- "m:e:jails:_"
|
||||
- "m:e:mail sendall:<red>You cannot send messages to everyone on the server."
|
||||
- "m:e:mail sendtempall:<red>You cannot send messages to everyone on the server."
|
||||
- "m:e:paper:_"
|
||||
- "m:e:pardon-ip:_"
|
||||
- "m:e:pardon:_"
|
||||
- "m:e:save-off:_"
|
||||
- "m:e:save-on:_"
|
||||
- "m:e:setjail:_"
|
||||
- "m:e:spigot reload:_"
|
||||
- "m:e:time:<gray>Server-side time changing is disabled. Please use /ptime to set your own personal time."
|
||||
- "m:e:togglejail:_"
|
||||
- "m:e:undisguiseradius:_"
|
||||
- "m:e:weather:_"
|
||||
- "m:e:worldborder:<gray>The worldborder does not need to be changed. This command is disabled."
|
||||
- "r:a:^(co|core|coreprotect) (rb|rollback|l|lookup|rl|reload):_"
|
||||
- "r:e:^[A-z]*:[A-z]*::<gray>Plugin specific commands are disabled."
|
||||
|
||||
# These commands will be blocked when a player is muted
|
||||
block_on_mute:
|
||||
- me
|
||||
- say
|
||||
- msg
|
||||
- reply
|
||||
- mail
|
||||
```
|
||||
|
||||
## The symbols
|
||||
- `r` represents RegEx and `m` represents matching.
|
||||
- The ranks are `e` to block for everyone, `a` to block for admins and above, and `s` to block for senior admins and above.
|
||||
|
||||
## The format
|
||||
An example formatted entry in the `commands.yml` file would look like this:
|
||||
`"m:e:mail sendall:You cannot send messages to everyone on the server"`
|
||||
The `m` will match the `mail sendall` command. The `e` stands for everyone, so it will block this command for everyone. The last part is the message. If you use `_` as the blocked message, it will use the default message specified in `messages.yml`
|
417
docs/customization/config.md
Normal file
@ -0,0 +1,417 @@
|
||||
---
|
||||
id: config
|
||||
title: Configuration
|
||||
---
|
||||
|
||||
# Config
|
||||
This page will show you how to modify the configuration file. The configuration file is located at: ```/plugins/Plex/config.yml```.
|
||||
|
||||
## Default configuration
|
||||
Below is the default `config.yml` file when Plex is loaded for the first time.
|
||||
```yaml title=/plugins/Plex/config.yml
|
||||
# Plex Configuration File
|
||||
# For documentation, please visit: https://plex.us.org
|
||||
|
||||
server:
|
||||
name: "Plexus"
|
||||
motd: "%servername% - Minecraft %mcversion%"
|
||||
colorize_motd: true
|
||||
sample:
|
||||
- "&cForums: https://forum.plex.us.org"
|
||||
# What timezone should various messages appear in (e.g. ban message end date)
|
||||
timezone: Etc/UTC
|
||||
|
||||
# Ban message is customized in the messages.yml file. The URL to appeal at is below.
|
||||
banning:
|
||||
ban_url: "https://forum.plex.us.org"
|
||||
|
||||
punishments:
|
||||
mute-timer: 300
|
||||
freeze-timer: 300
|
||||
|
||||
chat:
|
||||
# Should the server use Plex's chat system? It is recommended to keep this on if you are using ranks.
|
||||
# If you are using permissions, you should turn this off and use Vault to handle prefixes with a different chat plugin
|
||||
enabled: true
|
||||
# The maximum amount of characters a player can have for their tag
|
||||
# This does not include color tags such as <red> or <rainbow>
|
||||
max-tag-length: 64
|
||||
# Color tag for name color
|
||||
name-color: '<white>'
|
||||
|
||||
# You can define colors for each group which will appear in the tab list
|
||||
colors:
|
||||
admin: '<aqua>'
|
||||
senior: '<light_purple>'
|
||||
executive: '<blue>'
|
||||
masterbuilder: '<dark_aqua>'
|
||||
|
||||
# Login Messages
|
||||
loginmessages:
|
||||
# Should the player be required to put their name in the login message?
|
||||
name: true
|
||||
|
||||
data:
|
||||
central:
|
||||
storage: sqlite # Use mariadb, or sqlite here
|
||||
user: ""
|
||||
password: ""
|
||||
hostname: 127.0.0.1
|
||||
port: 27017
|
||||
db: "plex"
|
||||
side: # This is Redis, leave password blank if auth is false
|
||||
enabled: false
|
||||
auth: true
|
||||
hostname: 127.0.0.1
|
||||
port: 6379
|
||||
password: ""
|
||||
|
||||
# Mob limiter / Entity wiping config
|
||||
# All entities listed here will NOT be wiped upon wiping entities
|
||||
# By default this includes all mobs, as the mobpurge command can be used to purge mobs.
|
||||
entitywipe_list:
|
||||
- "ITEM_FRAME"
|
||||
- "AXOLOTL"
|
||||
- "BAT"
|
||||
- "BEE"
|
||||
- "BLAZE"
|
||||
- "CAT"
|
||||
- "CAVE_SPIDER"
|
||||
- "CHICKEN"
|
||||
- "COD"
|
||||
- "COW"
|
||||
- "CREEPER"
|
||||
- "DOLPHIN"
|
||||
- "DONKEY"
|
||||
- "DROWNED"
|
||||
- "ELDER_GUARDIAN"
|
||||
- "ENDER_DRAGON"
|
||||
- "ENDERMAN"
|
||||
- "ENDERMITE"
|
||||
- "EVOKER"
|
||||
- "FOX"
|
||||
- "GHAST"
|
||||
- "GIANT"
|
||||
- "GLOW_SQUID"
|
||||
- "GOAT"
|
||||
- "GUARDIAN"
|
||||
- "HOGLIN"
|
||||
- "HORSE"
|
||||
- "HUSK"
|
||||
- "ILLUSIONER"
|
||||
- "IRON_GOLEM"
|
||||
- "LLAMA"
|
||||
- "MAGMA_CUBE"
|
||||
- "MULE"
|
||||
- "MUSHROOM_COW"
|
||||
- "OCELOT"
|
||||
- "PANDA"
|
||||
- "PARROT"
|
||||
- "PHANTOM"
|
||||
- "PIG"
|
||||
- "PIGLIN"
|
||||
- "PIGLIN_BRUTE"
|
||||
- "PILLAGER"
|
||||
- "POLAR_BEAR"
|
||||
- "RABBIT"
|
||||
- "RAVAGER"
|
||||
- "SALMON"
|
||||
- "SHEEP"
|
||||
- "SHULKER"
|
||||
- "SILVERFISH"
|
||||
- "SKELETON"
|
||||
- "SKELETON_HORSE"
|
||||
- "SLIME"
|
||||
- "SNOWMAN"
|
||||
- "SPIDER"
|
||||
- "SQUID"
|
||||
- "STRAY"
|
||||
- "STRIDER"
|
||||
- "TRADER_LLAMA"
|
||||
- "TROPICAL_FISH"
|
||||
- "TURTLE"
|
||||
- "VEX"
|
||||
- "VILLAGER"
|
||||
- "VINDICATOR"
|
||||
- "WANDERING_TRADER"
|
||||
- "WITCH"
|
||||
- "WITHER"
|
||||
- "WITHER_SKELETON"
|
||||
- "WOLF"
|
||||
- "ZOGLIN"
|
||||
- "ZOMBIE"
|
||||
- "ZOMBIE_HORSE"
|
||||
- "ZOMBIE_VILLAGER"
|
||||
- "ZOMBIFIED_PIGLIN"
|
||||
- "PUFFERFISH"
|
||||
|
||||
# Automatically wipe the specified entities
|
||||
autowipe:
|
||||
# Should we automatically wipe entities?
|
||||
enabled: true
|
||||
# How often, in seconds, to automatically wipe entities. Default is 5 minutes.
|
||||
interval: 300
|
||||
# Entities to automatically wipe
|
||||
entities:
|
||||
- "DROPPED_ITEM"
|
||||
|
||||
# What blocks should be blocked?
|
||||
blocked_blocks:
|
||||
- "SPAWNER"
|
||||
- "STRUCTURE_BLOCK"
|
||||
- "JIGSAW"
|
||||
|
||||
# What entities should be blocked?
|
||||
blocked_entities:
|
||||
- "WITHER"
|
||||
- "ENDER_DRAGON"
|
||||
- "MINECART_TNT"
|
||||
|
||||
# Limit entities per chunk
|
||||
entity_limit:
|
||||
# Is the mob limit enabled?
|
||||
mob_limit_enabled: true
|
||||
# The maximum number of mobs allowed in a chunk
|
||||
max_mobs_per_chunk: 50
|
||||
# The available ceiling for the maximum number of mobs
|
||||
mob_limit_ceiling: 500
|
||||
|
||||
# See https://docs.plex.us.org/docs/customization/config#worlds for documentation
|
||||
# These gamerules apply to all worlds on the server
|
||||
global_gamerules:
|
||||
- "doWeatherCycle;true"
|
||||
- "doDaylightCycle;true"
|
||||
- "doMobSpawning;false"
|
||||
- "keepInventory;true"
|
||||
- "doFireTick;false"
|
||||
- "doMobLoot;false"
|
||||
- "mobGriefing;false"
|
||||
- "doTileDrops;false"
|
||||
- "commandBlockOutput;false"
|
||||
- "naturalRegeneration;true"
|
||||
- "announceAdvancements;false"
|
||||
- "showDeathMessages;false"
|
||||
- "sendCommandFeedback;false"
|
||||
|
||||
worlds:
|
||||
flatlands:
|
||||
name: "Flatlands"
|
||||
modification:
|
||||
permission: "plex.world.flatlands.modify"
|
||||
message: "<red>You do not have permission to modify this world."
|
||||
gameRules:
|
||||
# The gamerules here override the global gamerules
|
||||
- "doWeatherCycle;false"
|
||||
- "doDaylightCycle;false"
|
||||
parameters:
|
||||
grass_block: 1
|
||||
dirt: 32
|
||||
stone: 16
|
||||
bedrock: 1
|
||||
adminworld:
|
||||
name: "Admin World"
|
||||
entry:
|
||||
permission: "plex.world.adminworld.enter"
|
||||
message: "<red>You do not have permission to enter this world."
|
||||
modification:
|
||||
permission: "plex.world.adminworld.modify"
|
||||
message: "<red>You do not have permission to modify this world."
|
||||
gameRules:
|
||||
- "doWeatherCycle;false"
|
||||
- "doDaylightCycle;false"
|
||||
parameters:
|
||||
grass_block: 1
|
||||
dirt: 32
|
||||
stone: 16
|
||||
bedrock: 1
|
||||
masterbuilderworld:
|
||||
name: "MasterBuilder World"
|
||||
entry:
|
||||
permission: "plex.world.masterbuilderworld.enter"
|
||||
message: "<red>You do not have permission to enter this world."
|
||||
modification:
|
||||
permission: "plex.world.masterbuilderworld.modify"
|
||||
message: "<red>You do not have permission to modify this world."
|
||||
gameRules:
|
||||
- "doWeatherCycle;false"
|
||||
- "doDaylightCycle;false"
|
||||
parameters:
|
||||
grass_block: 1
|
||||
dirt: 32
|
||||
stone: 16
|
||||
bedrock: 1
|
||||
|
||||
# If you are running a custom fork of Plex, you may wish to check for updates from a different repository.
|
||||
update_repo: "plexusorg/Plex"
|
||||
|
||||
# What branch should Plex fetch updates from?
|
||||
update_branch: "master"
|
||||
|
||||
# Additional logging for debugging
|
||||
debug: false
|
||||
```
|
||||
|
||||
## Server
|
||||
### server.name
|
||||
The name of your server goes here and is used throughout Plex.
|
||||
|
||||
### server.motd
|
||||
The text here will appear on the server list.
|
||||
|
||||
### server.colorize_motd
|
||||
This determines if the message of the day should randomly be colorized. You can disable this option and manually colorize your MOTD.
|
||||
|
||||
### server.sample
|
||||
This lets you specify a custom message under the player count in the server list.
|
||||
|
||||
## server.timezone
|
||||
This lets you customize which timezone various messages appear in (e.g. ban message end date)
|
||||
|
||||
## Titles
|
||||
### titles.masterbuilders
|
||||
A list of players who will show up as a masterbuilder.
|
||||
|
||||
### titles.owners
|
||||
A list of players who will show up as an owner.
|
||||
|
||||
## Banning
|
||||
### banning.ban_url
|
||||
The URL to be used when a player sees the ban message. The full ban message can be changed in `messages.yml`.
|
||||
|
||||
## Chat
|
||||
### chat.enabled
|
||||
**Default:** `true`
|
||||
Determines if the chat system should be enabled. It's useful to turn this off if you're using permissions and want to use prefixes from another plugin instead.
|
||||
|
||||
### chat.max_tag_length
|
||||
**Default:** `64`
|
||||
The maximum length a tag may be in game.
|
||||
|
||||
### chat.name-color
|
||||
**Default:** `<white>`
|
||||
The default color a tag should be if a player doesn't specify any colors.
|
||||
|
||||
## System
|
||||
### system
|
||||
**Options:** `ranks` or `permissions`
|
||||
|
||||
This determines how Plex's command system works. If `ranks` is selected, Plex will use a ranking system and give all players operator status. If `permissions` is selected, no players are given operator. Instead, every command will have a permission attached to it which can be assigned in any permission system. It is **highly** recommended to use permissions if you are running Plex behind a proxy such as BungeeCord or Velocity. These proxies **rely** on permissions to give proper commands to players. On some misconfigured instances, if a player is opped, they may inherit *all* available permissions from the proxy.
|
||||
|
||||
## Data
|
||||
### data.central.storage
|
||||
**Options:** `sqlite`, `mariadb`, `mongodb`
|
||||
|
||||
Select which database software you would like to use. `sqlite` is the default. Note that if you change which data storage you use, no data will be transferred.
|
||||
|
||||
### data.central.user
|
||||
This is the username for whichever database software you use. Note that `sqlite` does not require a username.
|
||||
|
||||
### data.central.password
|
||||
This is the password for whichever database software you use. Note that `sqlite` does not require a password.
|
||||
|
||||
### data.central.hostname
|
||||
This is the hostname for whichever database software you use. Note that `sqlite` does not require a hostname.
|
||||
|
||||
### data.central.port
|
||||
This is the port for whichever database software you use. Note that `sqlite` does not require a port.
|
||||
|
||||
### data.central.db
|
||||
This is the name for whichever database software you use. Note that `sqlite` does not require a name.
|
||||
|
||||
### data.side.enabled
|
||||
**Options:** `true` / `false`
|
||||
|
||||
This will enable Plex's Redis functionality.
|
||||
|
||||
### data.side.auth
|
||||
**Options:** `true` / `false`
|
||||
|
||||
This is whether authentication mode for Redis is turned on or not.
|
||||
|
||||
:::info
|
||||
It is highly recommended to have Redis authentication turned on.
|
||||
:::
|
||||
|
||||
### data.side.hostnane
|
||||
This is the hostname for Redis. This is required for Redis to work.
|
||||
|
||||
### data.side.port
|
||||
This is the port that Redis is listening on. This is requird for Redis to work.
|
||||
|
||||
### data.side.password
|
||||
This is the password for your Redis instance. Note that this can be left blank if authentication is turned off.
|
||||
|
||||
## Entity wiping
|
||||
### entitywipe_list
|
||||
All items in the list will not be wiped. By default, this includes all mobs as these can be purged with the `mobpurge` command.
|
||||
|
||||
## Autowiping
|
||||
### autowipe.enabled
|
||||
**Options:** `true` / `false`
|
||||
Should autowiping be enabled?
|
||||
|
||||
### autowipe.interval
|
||||
**Default:** 300
|
||||
How often, in seconds, to automatically wipe entities. Default is 5 minutes.
|
||||
|
||||
### autowipe.entities
|
||||
A list of entities to automatically wipe.
|
||||
|
||||
## Blocking
|
||||
### blocked_blocks
|
||||
A list of blocks that should be blocked.
|
||||
|
||||
### blocked_entities
|
||||
A list of entities that should be blocked.
|
||||
|
||||
## Global gamerules
|
||||
### global_gamerules
|
||||
These gamerules apply to all worlds on the server. Gamerules in the generated worlds will override the global gamerules.
|
||||
|
||||
## Worlds
|
||||
An infinite amount of worlds can be generated from the configuration file. A few are automatically generated by default. The format for generating new worlds is as follows:
|
||||
```yaml title=/plugins/Plex/config.yml
|
||||
<world name>:
|
||||
name: "Human readable world name"
|
||||
entry:
|
||||
# The permission required to enter the world, optional
|
||||
permission: "plex.world.worldname.enter"
|
||||
# Minimum rank requirement, optional
|
||||
requiredLevels:
|
||||
- "Rank.ADMIN"
|
||||
# The message to be shown if a player does not have permission, optional
|
||||
message: "<red>You do not have permission to enter this world."
|
||||
modification:
|
||||
# The permission required to modify the world, optional
|
||||
permission: "plex.world.worldname.modify"
|
||||
# Minimum rank requirement, optional
|
||||
requiredLevels:
|
||||
- "Rank.ADMIN"
|
||||
# The message to be shown if a player does not have permission, optional
|
||||
message: "<red>You do not have permission to modify this world."
|
||||
gameRules:
|
||||
- "doWeatherCycle;false"
|
||||
- "doDaylightCycle;false"
|
||||
parameters:
|
||||
grass_block: 1
|
||||
dirt: 32
|
||||
stone: 16
|
||||
bedrock: 1
|
||||
```
|
||||
Note that in the `parameters` section, this is how the world should actually be generated. The order is from top to bottom. In the example above, a world will generate with one grass layer, 32 layers of dirt, 16 layers of stone, and one layer of bedrock.
|
||||
|
||||
For a list of Ranks and Titles, you can refer to the Javadocs: [Ranks](https://docs.plex.us.org/javadoc/server/dev/plex/rank/enums/Rank.html), [Title](https://docs.plex.us.org/javadoc/server/dev/plex/rank/enums/Title.html).
|
||||
|
||||
The gamerule section is what gamerules are set for the world by default. The syntax is the official gamerule name, a semicolon, and either `true` or `false`.
|
||||
|
||||
## Updates
|
||||
update_repo
|
||||
The repo to use for update checking.
|
||||
|
||||
update_branch
|
||||
The branch to use for update checking.
|
||||
|
||||
## Debugging
|
||||
**Options:** `true` / `false`
|
||||
|
||||
The `debug` option is standalone and enables additional logging. This may be useful for diagnosing issues as more information will be displayed in the console. It is recommended to keep this option turned off.
|
300
docs/customization/messages.md
Normal file
@ -0,0 +1,300 @@
|
||||
---
|
||||
id: messages
|
||||
title: Messages
|
||||
---
|
||||
|
||||
# Messages
|
||||
Almost all of the messages inside of Plex are fully customizable. This page will document how to change messages in the ```messages.yml``` file inside the Plex folder.
|
||||
|
||||
## Default file
|
||||
The default `messages.yml` file is below.
|
||||
```yaml title=/plugins/Plex/messages.yml
|
||||
# Plex Messages File
|
||||
# This file uses the MiniMessage system.
|
||||
# Documentation available at https://docs.adventure.kyori.net/minimessage/format.html
|
||||
|
||||
# Messages in here will be placed in for certain commands, actions, etc.
|
||||
# Warning: not all commands have customizable messages
|
||||
|
||||
# Variables {number} - these are code-defined replacements for things that should be inserted into messages. (e.g. names, statuses, numbers)
|
||||
# If any of these variables are supposed to be used within a message, some documentation is provided to give more context to what the variables indicate.
|
||||
# If you are wishing to change these messages it's recommended you use the same amount of variables as stated in the documentation, however it's not required.
|
||||
|
||||
# 0 - Appeal URL
|
||||
# 1 - Reason
|
||||
# 2 - Expiry
|
||||
# 3 - Punisher
|
||||
banMessage: "<red>You have been banned! You may appeal at <gold>{0}.\n<red>Reason: <gold>{1}\n<red>End date: <gold>{2}\n<red>Banned by: <gold>{3}"
|
||||
# 0 - Reason
|
||||
# 1 - Punisher
|
||||
kickMessage: "<red>You have been kicked! \n<red>Reason: <gold>{0}\n<red>Kicked by: <gold>{1}"
|
||||
# 0 - The type of indefinite ban
|
||||
# 1 - Appeal URL
|
||||
indefBanMessage: "<red>Your {0} is indefinitely banned! You may appeal at <gold>{1}."
|
||||
# 0 - The type of indefinite ban
|
||||
# 1 - Appeal URL
|
||||
# 2 - The reason
|
||||
indefBanMessageReason: "<red>Your {0} is indefinitely banned! You may appeal at <gold>{1}.\n<red>Reason: <gold>{2}"
|
||||
playerNotFound: "<red>Player not found!"
|
||||
specifyPlayer: "<red>You must specify a player!"
|
||||
worldNotFound: "<red>World not found!"
|
||||
# This will always be used for punishments where the sanctioning administrator has not provided a reason. Will ignore MiniMessage tags.
|
||||
noReasonProvided: "No reason provided."
|
||||
# 0 - The world you have been teleported to
|
||||
playerWorldTeleport: "<aqua>You have been teleported to {0}."
|
||||
# 0 - The person who is freezing
|
||||
# 1 - The person who has been frozen
|
||||
frozePlayer: "<red>{0} - Froze {1}"
|
||||
# 0 - The person who is unfreezing
|
||||
# 1 - The person who has been unfrozen
|
||||
unfrozePlayer: "<aqua>{0} - Unfroze {1}"
|
||||
# 0 - The command sender
|
||||
# 1 - The person who has been muted
|
||||
mutedPlayer: "<red>{0} - Muted {1}"
|
||||
# 0 - The command sender
|
||||
# 1 - The person who has been unmuted
|
||||
unmutedPlayer: "<aqua>{0} - Unmuted {1}"
|
||||
invalidTimeFormat: "<red>Invalid time format. Use s, m, h, d, w, mo, or y (e.g., 1h30m)."
|
||||
timeMustBeFuture: "<red>The specified time must be in the future."
|
||||
# 0 - The command sender
|
||||
# 1 - The person who has been muted
|
||||
# 2 - The time that the person is muted for
|
||||
tempMutedPlayer: "<red>{0} - Muted {1} for {2}"
|
||||
maxTimeExceeded: "<red>The specified time must be under a week."
|
||||
# 0 - The person who is locking up
|
||||
# 1 - The person who has been locked up
|
||||
lockedUpPlayer: "<aqua>{0} - Locking up {1}"
|
||||
# 0 - The person who is unlocking
|
||||
# 1 - The person who has been unlocked
|
||||
unlockedPlayer: "<aqua>{0} - Unlocking {1}"
|
||||
# 0 - The permission node required to use the command
|
||||
noPermissionNode: "<red>You must have the permission: {0} <red>to use this command!"
|
||||
noPermissionInGame: "<red>You must be in console to use this command!"
|
||||
noPermissionConsole: "<red>You must be in-game to use this command!"
|
||||
# 0 - The username of the name history
|
||||
nameHistoryTitle: "<gold>Name History of {0}"
|
||||
nameHistorySeparator: "<gold><strikethrough>-----------------------------"
|
||||
# 0 - The name
|
||||
# 1 - The date and time of the name change
|
||||
nameHistoryBody: "<gold>{0} <dark_gray>- <gold>{1}"
|
||||
# 0 - The gamemode
|
||||
gameModeSetTo: "<gray>Your gamemode has been set to {0}."
|
||||
# 0 - The player's name
|
||||
# 1 - The gamemode
|
||||
setOtherPlayerGameModeTo: "<gray>You set {0}'s gamemode to {1}."
|
||||
# 0 - The command sender
|
||||
# 1 - The gamemode
|
||||
playerSetOtherGameMode: "<gray>{0} set your gamemode to {1}."
|
||||
# 0 - The command sender
|
||||
# 1 - The gamemode
|
||||
setEveryoneGameMode: "<aqua>{0} - Changing everyone's gamemode to {1}"
|
||||
consoleMustDefinePlayer: "<red>You must define a player since you are running this command from console."
|
||||
# 0 - The command sender
|
||||
# 1 - The player
|
||||
newAdminAdded: "<aqua>{0} - Adding {1} to the admin list"
|
||||
# 0 - The command sender
|
||||
# 1 - The player
|
||||
# 2 - The rank name
|
||||
adminReadded: "<aqua>{0} - Re-adding {1} to the admin list as rank: {2}"
|
||||
# 0 - The command sender
|
||||
# 1 - The player
|
||||
adminRemoved: "<red>{0} - Removing {1} from the admin list"
|
||||
# 0 - The command sender
|
||||
# 1 - The player
|
||||
# 2 - The rank
|
||||
adminSetRank: "<aqua>{0} - Setting {1}'s rank to {2}"
|
||||
# 0 - The world name
|
||||
teleportedToWorld: "<aqua>You have been teleported to the {0}."
|
||||
higherRankThanYou: "<red>This player is an admin or a higher rank than you."
|
||||
playerNotAdmin: "<red>That player is not an admin."
|
||||
playerIsAdmin: "<red>That player is already an admin."
|
||||
rankNotFound: "<red>The rank you entered was not found."
|
||||
rankMustBeHigherThanAdmin: "<red>The rank you entered must be higher than Admin."
|
||||
consoleOnly: "<red>This command can only be executed by the console."
|
||||
# 0 - Rank
|
||||
yourRank: "<aqua>Your rank is: {0}"
|
||||
# 0 - Player name
|
||||
# 1 - Rank
|
||||
otherRank: "<aqua>{0}'s rank is: {1}"
|
||||
# 0 - The command sender
|
||||
# 1 - The player
|
||||
banningPlayer: "<red>{0} - Banning {1}"
|
||||
# 0 - The command sender
|
||||
# 1 - The player
|
||||
unbanningPlayer: "<aqua>{0} - Unbanning {1}"
|
||||
playerNotBanned: "<red>That player is not banned!"
|
||||
playerNotFrozen: "<red>That player is not frozen!"
|
||||
playerNotMuted: "<red>That player is not muted!"
|
||||
playerBanned: "<red>That player is already banned!"
|
||||
playerFrozen: "<red>That player is already frozen!"
|
||||
playerMuted: "<red>That player is already muted!"
|
||||
playerLockedUp: "<red>That player is already locked up!"
|
||||
muted: "<red>You are currently muted - STFU!"
|
||||
pvpDisabled: "<red>PVP has been disabled!"
|
||||
chatIsOff: "<red>Chat is currently toggled off!"
|
||||
# 0 - The command sender
|
||||
# 1 - The set value of the chat toggle
|
||||
chatToggled: "<red>{0} - Toggled chat {1}"
|
||||
# 0 - The command sender
|
||||
# 1 - The player
|
||||
kickedPlayer: "<red>{0} - Kicking {1}"
|
||||
teleportedToWorldSpawn: "<aqua>Teleporting to the local spawn"
|
||||
toggleCommandSpy: "<gray>CommandSpy has been"
|
||||
enabled: "<gray>enabled."
|
||||
disabled: "<gray>disabled."
|
||||
# 0 - The admin / staff member
|
||||
# 1 - The player's group's prefix if any
|
||||
# 2 - The message
|
||||
adminChatFormat: '<dark_gray>[<blue>AdminChat<dark_gray>] <dark_red>{0} {1} <gray>» <gold>{2}'
|
||||
# 0 - Whether it was toggled on or off
|
||||
adminChatToggled: '<gray>AdminChat was toggled {0}'
|
||||
# 0 - Maximum length, configured in config.yml
|
||||
maximumPrefixLength: "<red>The maximum length for a tag may only be {0}."
|
||||
prefixCleared: "<aqua>Your prefix has been cleared."
|
||||
# 0 - The player name
|
||||
otherPrefixCleared: "<aqua>You have cleared {0}'s prefix."
|
||||
# 0 - The new prefix
|
||||
prefixSetTo: "<aqua>Your prefix has been set to {0}"
|
||||
# 0 - The action (blocked / unblocked)
|
||||
# 1 - The amount of players
|
||||
blockeditSize: "<gray>{0} all block modification abilities for {1} players."
|
||||
# The action (blocked or restored)
|
||||
editsModified: "<gray>Your block modification abilities have been {0}."
|
||||
listOfPlayersBlocked: "<gray>The following have block modification abilities restricted:"
|
||||
# 0 - The player name
|
||||
editsBlocked: "<gray>Blocked block modification abilities for {0}"
|
||||
# 0 - The command sender
|
||||
# 1 - The player name
|
||||
blockingEdits: "<red>{0} - Blocking block modification abilities for {1}"
|
||||
# 0 - The command sender
|
||||
# 1 - The player
|
||||
unblockingEdits: "<aqua>{0} - Unblocking block modification abilities for {1}"
|
||||
# 0 - The player name
|
||||
editsUnblocked: "<gray>Unblocked block modification abilities for {0}"
|
||||
# 0 - The command sender
|
||||
# 1 - Number of entities removed
|
||||
removedEntities: "<red>{0} - Removed {1} entities"
|
||||
# 0 - The command sender
|
||||
# 1 - Number of entities removed
|
||||
# 2 - Entity type(s) removed
|
||||
removedEntitiesOfTypes: "<red>{0} - Removed {1} entities of type(s) {2}"
|
||||
# 0 - The command sender
|
||||
# 1 - Number of entities removed
|
||||
# 2 - Entity type removed
|
||||
removedEntitiesOfType: "<gray>Removed {1} {2}"
|
||||
# 0 - Entity type that is invalid
|
||||
invalidEntityType: "<gray>Notice: Entity type {0} is invalid!"
|
||||
noRemovedEntities: "<gray>No entities were removed."
|
||||
# 0 - Number of mobs removed
|
||||
# 1 - Type of mob removed
|
||||
amountOfMobsRemoved: "<gray>{0} {1} removed."
|
||||
notAValidMob: "<red>That is not a valid mob."
|
||||
notAValidMobButValidEntity: "<red>That is a valid entity, but is not a valid mob."
|
||||
# 0 - The command sender
|
||||
# 1 - Number of mobs removed
|
||||
removedMobs: "<red>{0} - Removed {1} mobs"
|
||||
autoWipeDisabled: "<gray>Item wiping is currently disabled in the config!"
|
||||
# 0 - The boolean for whether the limit is enabled or disabled
|
||||
mobLimitToggle: "<gray>The mob limit has been {0}"
|
||||
# 0 - The amount that the mob limit has been set to
|
||||
mobLimitSet: "<gray>The mob limit has been set to: <em><white>{0}"
|
||||
# 0 - The boolean for whether the limit is enabled or disabled
|
||||
# 1 - The current amount of mobs in the world
|
||||
# 2 - The current set mob limit
|
||||
# 3 - Chunk x value
|
||||
# 4 - Chunk z value
|
||||
mobLimitStatus: "<gray>({0}<gray>) <em><white>{1} <reset><gray>/ <em><white>{2} <reset><gray>per chunk (<em><white>Chunk<gray>: <reset>{3}, {4}<gray>)"
|
||||
# 0 - The max set limit in config
|
||||
mobLimitCeiling: "<gray>The limit you have entered is too high. Defaulting to the ceiling value from config"
|
||||
commandBlocked: "<gray>That command is blocked."
|
||||
# 0 - The command sender
|
||||
# 1 - The message being said
|
||||
sayMessage: "<blue>[Server: {0}] {1}"
|
||||
# 0 - The command sender
|
||||
# 1 - The message being said
|
||||
consoleSayMessage: "<gray>[Console: {0}] <white>{1}"
|
||||
# 0 - The number attempted to be parsed
|
||||
unableToParseNumber: "<red>Unable to parse {0} as a number!"
|
||||
noNotes: "<red>This player has no notes!"
|
||||
noteAdded: "<green>Note added."
|
||||
noteNotFound: "<red>A note with this ID could not be found."
|
||||
# 0 - The ID of the note removed
|
||||
removedNote: "<green>Removed note with ID: {0}"
|
||||
# 0 - The number of notes cleared
|
||||
clearedNotes: "<green>Cleared {0} notes."
|
||||
invalidToggle: "<red>That is not a valid toggle."
|
||||
specifyLoginMessage: "<red>Please specify a login message."
|
||||
# 0 - The login message
|
||||
setOwnLoginMessage: "<gray>Your login message is now:<newline><gray>> <reset>{0}"
|
||||
# 0 - The player
|
||||
# 1 - The login message
|
||||
setOtherPlayersLoginMessage: "<gray>{0}'s login message is now:<newline><gray>> <reset>{1}"
|
||||
removedOwnLoginMessage: "<gray>Your login message has been removed."
|
||||
# 0 - The player
|
||||
removedOtherLoginMessage: "<gray>You removed {0}'s login message."
|
||||
nameRequired: "<red>Policy requires that you must state your player name in your login message. You can either do this by inserting your name or %player%."
|
||||
rankRequired: "<red>Policy requires that you must state your rank in your login message. You can do this by using %rank% in your login message."
|
||||
# 0 - The material name
|
||||
# 1 - The players who have the material in their inventory
|
||||
playersWithMaterial: "<gray>Players with {0} in their inventory: {1}"
|
||||
# 0 - The material name
|
||||
# 1 - The players who have the material in their inventory
|
||||
playersMaterialCleared: "<gray>{0} has been removed from the following players: {1}"
|
||||
nobodyHasThatMaterial: "<gray>No one online has that in their inventory."
|
||||
# 0 - The attempted material name
|
||||
materialNotFound: "<red>{0} is not a valid item/block name."
|
||||
# 0 - The players name
|
||||
loginMessage: "<yellow>{0} joined the game"
|
||||
# 0 - The string that wasn't a valid integer
|
||||
notANumber: "<red>{0} is not a valid number!"
|
||||
# 0 - Players currently online
|
||||
# 1 - Max players
|
||||
listHeader: "<gray>There is currently <yellow>{0}<gray> player online out of <yellow>{1}<gray> players."
|
||||
# 0 - Players currently online
|
||||
# 1 - Max players
|
||||
listHeaderPlural: "<gray>There are currently <yellow>{0}<gray> players online out of <yellow>{1}<gray> players."
|
||||
# 0 - Player who is having their notes fetched
|
||||
notesHeader: "Player notes for: <green>{0}"
|
||||
# 0 - Note ID
|
||||
# 1 - Author of the note
|
||||
# 2 - Timestamp
|
||||
notePrefix: "<gold><!italic>{0} - Written by: {1} on {2}"
|
||||
# 0 - The content of the note
|
||||
noteLine: "<newline><yellow># {0}"
|
||||
# 0 - The player
|
||||
# 1 - The number of notes logged for said player
|
||||
playerNoteAlert: "<gold>{0} has {1} note. <click:run_command:/notes {0} list><underlined>Click here to view their note."
|
||||
# 0 - The player
|
||||
# 1 - The number of notes logged for said player
|
||||
playerNoteAlertPlural: "<gold>{0} has {1} notes. <click:run_command:/notes {0} list><underlined>Click here to view their notes."
|
||||
smiteTitleHeader: "<red>You've been smitten."
|
||||
# 0 - The reason for the smite. Will default to noReasonProvided if no reason is specified.
|
||||
# 1 - The admin / staff member
|
||||
smiteTitleMessage: "<yellow>Be sure to follow the rules!"
|
||||
# 0 - The player
|
||||
# 1 - The reason for the smite. Will default to noReasonProvided if no reason is specified.
|
||||
# 2 - The admin / staff member
|
||||
smiteBroadcast: "<red>{0} has been a naughty, naughty boy.<newline><red> - Reason: <yellow>{1}<newline><red> - Smitten by: <yellow>{2}"
|
||||
# 0 - The player
|
||||
smittenQuietly: "<gray>Smitten {0} quietly."
|
||||
# 0 - The reason for being smitten
|
||||
smitten: "<red>You've been smitten. Reason: <yellow>{0}"
|
||||
nukerKickMessage: "Please turn off your nuker!"
|
||||
antiSpamMessage: "<gray>Please refrain from spamming messages."
|
||||
# 0 - The player
|
||||
banExpiredBroadcast: "Plex - Automatically unbanning {0}"
|
||||
# 0 - The player
|
||||
redisResetSuccessful: "<yellow>Successfuly reset {0}'s Redis punishments!"
|
||||
redisResetPlayerNotFound: "Couldn't find player in Redis punishments."
|
||||
reappliedGamerules: "<aqua>All game rules have been re-applied!"
|
||||
commandNotFound: "<red>That command could not be found!"
|
||||
# 0 - The command
|
||||
# 1 - A list of aliases found
|
||||
commandAliases: "<aqua>Aliases for {0} are: {1}"
|
||||
```
|
||||
|
||||
## MiniMessage
|
||||
The `messages.yml` file uses MiniMessage for coloring messages. For example, writing `<aqua>`, will color the text aqua. This is not like HTML, and you should not close the tag (`</aqua>`). There are some special functions as well, such as `<rainbow>`. The default color will be gray. For a complete guide on using MiniMessage, visit: [https://docs.adventure.kyori.net/minimessage/format.html](https://docs.adventure.kyori.net/minimessage/format.html).
|
||||
|
||||
## Troubleshooting
|
||||
If you receive `No message.` when executing a command, it is likely you need to regenerate your `messages.yml` file. The default configuration file is also available on [GitHub](https://raw.githubusercontent.com/PlexDevelopment/Plex/master/src/main/resources/messages.yml). As of Plex 0.6 (Beta 6), your `messages.yml` file should automatically update with new entries.
|
41
docs/indefinitebans.md
Normal file
@ -0,0 +1,41 @@
|
||||
---
|
||||
id: indefinitebans
|
||||
title: Indefinite Bans
|
||||
---
|
||||
|
||||
# Indefinite Bans
|
||||
Similar to TotalFreedomMod, Plex has indefinite bans. Indefinite bans are reserved for players who should not automatically be unbanned. Anyone who has access to the `indefbans.yml` file can add indefinite bans. If you are using Redis, all indefinite bans will be uploaded to Redis on startup. From that point on, indefinite bans will be fetched from Redis instead of the `indefbans.yml` file. **Redis is NOT required to use indefinite bans.** If you do not use Redis, Plex will fetch indefinite bans from the `indefbans.yml` file. No matter which medium you use, you will always add new entries to the `indefbans.yml` file. Note that there is no in-game command for adding or removing indefinite bans.
|
||||
|
||||
## Default file
|
||||
```yaml title=/plugins/Plex/indefbans.yml
|
||||
# Plex Indefinite Bans File
|
||||
# Players with their UUID / IP / Usernames in here will be indefinitely banned until removed
|
||||
|
||||
# If you want to get someone's UUID, use https://api.ashcon.app/mojang/v2/user/<username>
|
||||
griefers:
|
||||
users:
|
||||
- "badplayer123"
|
||||
- "badplayer321"
|
||||
uuids:
|
||||
- 1dac0e92-f565-4479-afd5-38c7df5f9732 # badplayer123
|
||||
ips:
|
||||
- 123.123.123.123
|
||||
|
||||
# Note that these keys can be anything, they are simply to help you keep things organized.
|
||||
# They are not used within the plugin. Duplicate keys are not allowed, and will not work.
|
||||
bypassers:
|
||||
users:
|
||||
- "bypasser1"
|
||||
ips:
|
||||
- 321.321.321.321
|
||||
- 169.254.1.2
|
||||
```
|
||||
|
||||
### How it works
|
||||
Each entry starts with a description. This is to help you organize indefinite bans. For example, you could have a section `griefers` for serial griefers or `bypassers` for players who have bypassed bans. The `users` section is for usernames only, the `uuids` section is only for UUIDs, and the `ips` section is for IPs only. If you do not want to ban a type, you do not have to include it. Note that no duplicate descriptions can exist. This means you cannot have `bypassers` as a section twice. The actual descriptions are not used in the plugins and can be anything you like. They do not affect the indefinite ban in any way.
|
||||
|
||||
### Converting indefinite bans
|
||||
If you are switching from TotalFreedomMod to Plex, we have developed a tool called IBConverter to convert your existing indefinite bans into Plex's format. For more information on IBConverter, visit [the GitHub page](https://github.com/PlexDevelopment/IBConverter). This tool was written in Rust. The only thing you need to give it is your existing `indefinitebans.yml` file from TotalFreedomMod. You can download a compiled version below:
|
||||
- [IBConverter-Linux.zip](https://github.com/plexusorg/IBConverter/suites/6509280820/artifacts/242044369)
|
||||
- [IBConverter-Windows.zip](https://github.com/plexusorg/IBConverter/suites/6509280820/artifacts/242044371)
|
||||
- [IBConverter-Mac.zip](https://github.com/plexusorg/IBConverter/suites/6509280820/artifacts/242044370)
|
@ -1,47 +1,10 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
id: intro
|
||||
title: Introduction
|
||||
---
|
||||
|
||||
# Tutorial Intro
|
||||
# Welcome to Plex
|
||||
|
||||
Let's discover **Docusaurus in less than 5 minutes**.
|
||||
Plex is a new freedom plugin. It is an alternative to [TotalFreedomMod](https://github.com/TotalFreedomMC/TotalFreedomMod). It has many of the features that make a freedom server unique, but also many features that TotalFreedomMod doesn’t have. For example, there is full support for using a permissions plugin instead of ranks. It is also much more performance oriented. You can use Redis to store indefinite bans and store player data in MongoDB, MariaDB, or SQLite. Plex is also fully customizable as you can change almost all of the messages within the plugin. Plex also has a module system which can be used to add additional functionality. Plex is not a rewrite, "debloat", or related to TotalFreedomMod. Plex is an entirely new experience.
|
||||
|
||||
## Getting Started
|
||||
|
||||
Get started by **creating a new site**.
|
||||
|
||||
Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new)**.
|
||||
|
||||
### What you'll need
|
||||
|
||||
- [Node.js](https://nodejs.org/en/download/) version 18.0 or above:
|
||||
- When installing Node.js, you are recommended to check all checkboxes related to dependencies.
|
||||
|
||||
## Generate a new site
|
||||
|
||||
Generate a new Docusaurus site using the **classic template**.
|
||||
|
||||
The classic template will automatically be added to your project after you run the command:
|
||||
|
||||
```bash
|
||||
npm init docusaurus@latest my-website classic
|
||||
```
|
||||
|
||||
You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor.
|
||||
|
||||
The command also installs all necessary dependencies you need to run Docusaurus.
|
||||
|
||||
## Start your site
|
||||
|
||||
Run the development server:
|
||||
|
||||
```bash
|
||||
cd my-website
|
||||
npm run start
|
||||
```
|
||||
|
||||
The `cd` command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there.
|
||||
|
||||
The `npm run start` command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/.
|
||||
|
||||
Open `docs/intro.md` (this page) and edit some lines: the site **reloads automatically** and displays your changes.
|
||||
Use the sidebar to navigate the documentation.
|
||||
|
7
docs/modules/bukkittelnet.md
Normal file
@ -0,0 +1,7 @@
|
||||
---
|
||||
id: bukkittelnet
|
||||
title: BukkitTelnet
|
||||
---
|
||||
|
||||
# BukkitTelnet
|
||||
The BukkitTelnet is a very simple module. The only purpose of the module is to allow admins to automatically log in to telnet without needing to enter the password. If the person's rank is an Admin or above, it will let them connect. If your server is using permissions, you should add the `plex.telnet.autoconnect` to any group you want to have automatically connect to telnet.
|
28
docs/modules/httpd.md
Normal file
@ -0,0 +1,28 @@
|
||||
---
|
||||
id: httpd
|
||||
title: HTTPD
|
||||
---
|
||||
|
||||
# HTTPD
|
||||
The HTTPD module sets up a basic web server to display information from Plex.
|
||||
|
||||
## Endpoints
|
||||
The endpoints are what allow you to query the server and see information. All endpoints are formatted in JSON.
|
||||
|
||||
### /api/admins
|
||||
Displays a list of admins in JSON format. If your IP is not registered to an admin, it will not display IP addresses. If your server is using permissions, it will check if the player has the `plex.httpd.admins.access` instead.
|
||||
|
||||
### /api/indefbans
|
||||
Displays a list of indefinite players in JSON format. This page is only accessible if your IP address is linked to an admin on the server. If your server is using permissions, it will check if the player has the `plex.httpd.indefbans.access` instead.
|
||||
|
||||
### /api/list
|
||||
This will display a list of online players in JSON format. This is accessible to everyone.
|
||||
|
||||
### /api/punishments
|
||||
If you go this page, it will ask you to enter a UUID in the URL. When you enter a valid UUID to the URL, it will display that user's punishments in JSON format. An example URL would be `/api/punishments/78408086-1991-4c33-a571-d8fa325465b2`. If your IP is not registered to an admin, it will not display IP addresses. If your server is using permissions, it will check if the player has the `plex.httpd.punishments.access` instead.
|
||||
|
||||
### /api/schematics/download
|
||||
This page allows anyone to download schematics from the server. No permission is required to access the page
|
||||
|
||||
### /api/schematics/upload
|
||||
This page allows players who are an Admin or above to upload schematics. The corresponding permission to upload schematics is `plex.httpd.schematics.upload`
|
18
docs/modules/introduction.md
Normal file
@ -0,0 +1,18 @@
|
||||
---
|
||||
id: introduction
|
||||
title: Introduction
|
||||
---
|
||||
|
||||
# Introduction
|
||||
Plex lets you use optional modules to improve your server experience. Modules are placed in the `/plugins/Plex/modules` folder. They extend off of Plex and can add or change functionality. They are designed for server owners who may want a specific feature that's not built in to Plex.
|
||||
|
||||
Below is a list of current modules
|
||||
|
||||
| Name | Versions |
|
||||
| -------------- | --------- |
|
||||
| BukkitTelnet | 1.3 |
|
||||
| HTTPD | 1.3 |
|
||||
| Guilds | 1.3 |
|
||||
| LibsDisguises | 1.3 |
|
||||
| NUSH | 1.3 |
|
||||
| TFMExtras | 1.3 |
|
14
docs/modules/libsdisguises.md
Normal file
@ -0,0 +1,14 @@
|
||||
---
|
||||
id: libsdisguises
|
||||
title: LibsDisguises
|
||||
---
|
||||
|
||||
# LibsDisguises
|
||||
The LibsDisguises module adds two new commands: `undisguiseall` and `disguisetoggle`.
|
||||
|
||||
## Commands
|
||||
### undisguiseall
|
||||
The `undisguiseall` command disguises all non-admins. You can optionally add `-a` to undisguise all players including admins. If your server is using permissions, the permission to bypass being undisguised is `plex.libsdisguises.bypass`. This permission will not bypass `-a`. The permission to use the command itself is `plex.libsdisguises.undisguiseall`
|
||||
|
||||
### disguisetoggle
|
||||
The `disguisetoggle` command toggles LibsDisguises. It allows admins or players with the `plex.libsdisguises.disguisetoggle` permission to toggle LibsDisguises. When LibsDisguises is disabled, all players are undisguised and no commands from LibsDisguises can be used until reenabled.
|
102
docs/permissions.md
Normal file
@ -0,0 +1,102 @@
|
||||
---
|
||||
id: permissions
|
||||
title: Permissions
|
||||
---
|
||||
|
||||
# Permissions
|
||||
This page is a comprehensive list of all of Plex's permission nodes. Note that some of them (such as world entry and modification) are defined by the server config and may vary.
|
||||
|
||||
## Plex
|
||||
| Command | Permission | Description |
|
||||
| ------------------- | ------------------------------ | ----------------------------------------------------------------------------------------------- |
|
||||
| adminchat | plex.adminchat | Talk privately with other admins |
|
||||
| adminworld | plex.adminworld | Teleport to the adminworld |
|
||||
| adventure | plex.gamemode.adventure | Set your own gamemode to adventure mode |
|
||||
| adventure | plex.gamemode.adventure.others | Set another player's gamemode to adventure mode |
|
||||
| ban | plex.ban | Bans a player, offline or online |
|
||||
| banlist | plex.banlist | Manages the banlist |
|
||||
| blockedit | plex.blockedit | Prevent players from modifying blocks |
|
||||
| commandspy | plex.commandspy | Spy on other player's commands |
|
||||
| consolesay | plex.consolesay | Displays a message to everyone |
|
||||
| creative | plex.gamemode.creative | Set your own gamemode to creative mode |
|
||||
| creative | plex.gamemode.creative.others | Set another player's gamemode to creative mode |
|
||||
| pdebug | plex.debug | Plex's debug command |
|
||||
| entitywipe | plex.entitywipe | Remove various server entities that may cause lag, such as dropped items, minecarts, and boats. |
|
||||
| flatlands | plex.flatlands | Teleport to the flatlands |
|
||||
| freeze | plex.freeze | Freeze a player on the server |
|
||||
| kick | plex.kick | Kicks a player |
|
||||
| list | plex.list | Show a list of all online players |
|
||||
| list -v | plex.list.vanished | Filters the list command to see vanished players only |
|
||||
| localspawn | plex.localspawn | Teleport to the spawnpoint of the world you are in |
|
||||
| lockup | plex.lockup | Lockup a player on the server |
|
||||
| masterbuilderworld | plex.masterbuilderworld | Teleport to the masterbuilderworld |
|
||||
| moblimit | plex.moblimit | Manages the mob limit per chunk. |
|
||||
| mobpurge | plex.mobpurge | Purge all mobs. |
|
||||
| mute | plex.mute | Mute a player on the server |
|
||||
| notes | plex.notes | Manage notes for a player |
|
||||
| plex | N/A | Show information about Plex |
|
||||
| plex redis | plex.redis | Tests your Redis database to ensure Plex can reach it |
|
||||
| plex reload | plex.reload | Reload Plex |
|
||||
| plex modules reload | plex.modules.reload | Reload Plex's modules |
|
||||
| punishments | plex.punishments | Opens the Punishments GUI |
|
||||
| rawsay | plex.rawsay | Displays a message to everyone |
|
||||
| removeloginmessage | plex.removeloginmessage | Remove your own (or someone else's) login message |
|
||||
| say | plex.say | Displays a message to everyone |
|
||||
| setloginmessage | plex.setloginmessage | Sets your (or someone else's) login message |
|
||||
| smite | plex.smite | Someone being a little bitch? Smite them down... |
|
||||
| spectator | plex.gamemode.spectator | Set your own gamemode to spectator mode |
|
||||
| spectator | plex.gamemode.spectator.others | Set another player's gamemode to spectator mode |
|
||||
| survival | plex.gamemode.survival | Set your own gamemode to survival mode |
|
||||
| survival | plex.gamemode.survival.others | Set another player's gamemode to survival mode |
|
||||
| tag | plex.tag | Set or clear your prefix |
|
||||
| tag | plex.tag.clear.others | Clear another player's prefix |
|
||||
| tempban | plex.tempban | Temporarily ban a player |
|
||||
| tempmute | plex.tempmute | Temporarily mute a player on the server |
|
||||
| toggle | plex.toggle | Allows toggling various server aspects through a GUI |
|
||||
| unban | plex.unban | Unbans a player, offline or online |
|
||||
| unfreeze | plex.unfreeze | Unfreeze a player |
|
||||
| unmute | plex.unmute | Unmute a player |
|
||||
| whohas | plex.whohas | Returns a list of players with a specific item in their inventory. |
|
||||
| whohas | plex.whohas.clear | Clear a specific item in all player's inventories |
|
||||
| world | plex.world | Teleport to a world. |
|
||||
|
||||
## BukkitTelnet Module
|
||||
| Permission | Description |
|
||||
| ----------------------- | ----------------------------------------------------------- |
|
||||
| plex.telnet.autoconnect | Allow automatically connecting to telnet without a password |
|
||||
|
||||
## Guilds Module
|
||||
| Command | Permission | Description |
|
||||
| ------------- | ------------------- | ------------------------------------------------------------- |
|
||||
| guild | plex.guilds.guild | Guild menu |
|
||||
| guild chat | plex.guilds.chat | Toggles guild chat or sends a guild chat message |
|
||||
| guild create | plex.guilds.create | Creates a guild with a specified name |
|
||||
| guild home | plex.guilds.home | Teleports to the guild home |
|
||||
| guild info | plex.guilds.info | Shows the guild's information |
|
||||
| guild invite | plex.guilds.invite | Invites a player to the guild |
|
||||
| guild owner | plex.guilds.owner | Sets the guild owner |
|
||||
| guild prefix | plex.guilds.prefix | Sets the guild's default prefix |
|
||||
| guild sethome | plex.guilds.sethome | Sets the guild's home |
|
||||
| guild setwarp | plex.guilds.setwarp | Creates a new warp at player's location with a specified name |
|
||||
| guild warps | plex.guilds.warps | Displays a clickable list of warps |
|
||||
| guild warp | plex.guild.warp | Warps to a specified guild warp |
|
||||
|
||||
## HTTPD Module
|
||||
| Permission | Description |
|
||||
| ----------------------------- | --------------------------------------------------------------------------------------------- |
|
||||
| plex.httpd.admins.access | Allows seeing IP addresses of admins. Anyone can view the page regardless of permissions |
|
||||
| plex.httpd.indefbans.access | Allows accessing the indefinite bans. This permission is required to view the page at all. |
|
||||
| plex.httpd.punishments.access | Allows seeing IP addresses of punishments. Anyone can view the page regardless of permissions |
|
||||
| plex.httpd.schematics.upload | Allows uploading schematics to the HTTPD if the permission system is enabled. |
|
||||
|
||||
## LibsDisguises Module
|
||||
| Command | Permission | Description |
|
||||
| -------------- | --------------------------------- | ----------------------------------------------------------------------------------------------- |
|
||||
| disguisetoggle | plex.libsdisguises.disguisetoggle | Toggle LibsDisguises |
|
||||
| undisguiseall | plex.libsdisguises.undisguiseall | Undisguise all players |
|
||||
| undisguiseall | plex.libsdisguises.bypass | Bypass being undisguised. This can be overridden regardless of permission with the \`-a\` flag. |
|
||||
|
||||
## NUSH Module
|
||||
| Command | Permission | Description |
|
||||
| ------- | ----------------- | ---------------------- |
|
||||
| nush | plex.nush.command | Toggle NUSH on or off. |
|
85
docs/redis.md
Normal file
@ -0,0 +1,85 @@
|
||||
---
|
||||
id: redis
|
||||
title: Configuring Redis
|
||||
---
|
||||
|
||||
# Redis
|
||||
This page will show you how to setup and configure Redis for Plex. This tutorial assumes a moderate amount of computer knowledge. Please note that setting up Redis is optional. It offers many performance improvements, but can be dangerous if improperly configured.
|
||||
|
||||
## Using Pterodactyl
|
||||
If you are using Pterodactyl, setting up Redis is easy. You will need to download and add the Redis egg, which requires administrator privileges. If you are not an administrator, you may request an administrator to set up Redis for you.
|
||||
|
||||
### Setup the Redis egg
|
||||
Right click on [this link](https://docs.plex.us.org/egg-redis-7.json) and click "Save As". Please ensure that the filename ends in .json
|
||||
|
||||
On your Pterodactyl admin page, click on the "Nests" from the sidebar. Click the blue "Create New" button and enter "Databases" for the name.
|
||||
Then, click on the green "Import Egg" button. Import the `egg-redis-7.json` file you just downloaded and make sure the "Associated Nest" is set to "Databases".
|
||||
|
||||
### Configure the allocations
|
||||
Click on the "Nodes" tab from the sidebar. Click on the node you would like to add Redis. Click on the "Allocation" tab. On the right, you will see a box that says "Assign New Allocations". For the IP Address, enter `172.18.0.1`, and for the port enter `6380`.
|
||||
|
||||
:::danger
|
||||
Do ***NOT*** enter the public IP for the server under IP Address. If you do that, you will open up your Redis instance to the entire internet. Also, do ***NOT*** use port `6379` for Redis. Pterodactyl itself uses Redis and it will not work. You have been warned.
|
||||
:::
|
||||
|
||||
### Add a new server
|
||||
Go to the Servers tab and click the "Create New" button. The Server Name can be whatever you like. Under "Allocation Management" > "Default Allocation", select the allocation you made for Redis. If you have done the above step correctly, you should see `172.18.0.1:6380` in the list. Redis does not need much memory, 256MB is plenty.
|
||||
To ensure Redis is actually used, you need to use the Redis egg. Under "Nest Configuration", select the "Databases" nest. Redis should be the only option under there.
|
||||
|
||||
### Set the password
|
||||
The password for Redis is set under the "Service Variables" tab. Please change it from the default password. A good website to generate a secure password can be found here: [https://www.grc.com/passwords.htm](https://www.grc.com/passwords.htm).
|
||||
|
||||
:::danger
|
||||
***DO NOT USE THE DEFAULT PASSWORD PROVIDED BY THE EGG.***
|
||||
:::
|
||||
|
||||
### Configuration
|
||||
Once the Redis server has been installed, go to the "File Manager" tab and open `redis.conf`. You will need to change the bind address.
|
||||
|
||||
```title=redis.conf
|
||||
...
|
||||
################################## NETWORK #####################################
|
||||
|
||||
# By default, if no "bind" configuration directive is specified, Redis listens
|
||||
# for connections from all the network interfaces available on the server.
|
||||
# It is possible to listen to just one or multiple selected interfaces using
|
||||
# the "bind" configuration directive, followed by one or more IP addresses.
|
||||
#
|
||||
# Examples:
|
||||
#
|
||||
# bind 192.168.1.100 10.0.0.1
|
||||
# bind 127.0.0.1 ::1
|
||||
#
|
||||
# ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the
|
||||
# internet, binding to all the interfaces is dangerous and will expose the
|
||||
# instance to everybody on the internet. So by default we uncomment the
|
||||
# following bind directive, that will force Redis to listen only into
|
||||
# the IPv4 loopback interface address (this means Redis will be able to
|
||||
# accept connections only from clients running into the same computer it
|
||||
# is running).
|
||||
#
|
||||
# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
|
||||
# JUST COMMENT THE FOLLOWING LINE.
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
bind 172.18.0.1
|
||||
...
|
||||
```
|
||||
|
||||
Find this block in your Redis configuration file and ensure bind is set to `172.18.0.1`. It is normally set to `127.0.0.1`, which will **not** work.
|
||||
|
||||
### Plex Configuration
|
||||
Redis should be successfully set up! Now all you have to do is enter your credentials into the Plex configuration file.
|
||||
|
||||
```yaml title=/plugins/Plex/config.yml
|
||||
side:
|
||||
enabled: true
|
||||
auth: true
|
||||
hostname: '172.18.0.1'
|
||||
port: 6380
|
||||
password: 'your_secure_password_here'
|
||||
```
|
||||
|
||||
Replace `your_secure_password_here` with the password you made for Redis. Now, Plex will use Redis for storing punishment data. Note that the JSON files are still made as a backup no matter what.
|
||||
|
||||
### Firewall Configuraton
|
||||
If you are using a firewall, you may have to allow port `6380`. It is safe to allow connections from anywhere provided you have followed the documentation correctly.
|
@ -1,8 +0,0 @@
|
||||
{
|
||||
"label": "Tutorial - Basics",
|
||||
"position": 2,
|
||||
"link": {
|
||||
"type": "generated-index",
|
||||
"description": "5 minutes to learn the most important Docusaurus concepts."
|
||||
}
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
---
|
||||
sidebar_position: 6
|
||||
---
|
||||
|
||||
# Congratulations!
|
||||
|
||||
You have just learned the **basics of Docusaurus** and made some changes to the **initial template**.
|
||||
|
||||
Docusaurus has **much more to offer**!
|
||||
|
||||
Have **5 more minutes**? Take a look at **[versioning](../tutorial-extras/manage-docs-versions.md)** and **[i18n](../tutorial-extras/translate-your-site.md)**.
|
||||
|
||||
Anything **unclear** or **buggy** in this tutorial? [Please report it!](https://github.com/facebook/docusaurus/discussions/4610)
|
||||
|
||||
## What's next?
|
||||
|
||||
- Read the [official documentation](https://docusaurus.io/)
|
||||
- Modify your site configuration with [`docusaurus.config.js`](https://docusaurus.io/docs/api/docusaurus-config)
|
||||
- Add navbar and footer items with [`themeConfig`](https://docusaurus.io/docs/api/themes/configuration)
|
||||
- Add a custom [Design and Layout](https://docusaurus.io/docs/styling-layout)
|
||||
- Add a [search bar](https://docusaurus.io/docs/search)
|
||||
- Find inspirations in the [Docusaurus showcase](https://docusaurus.io/showcase)
|
||||
- Get involved in the [Docusaurus Community](https://docusaurus.io/community/support)
|
@ -1,34 +0,0 @@
|
||||
---
|
||||
sidebar_position: 3
|
||||
---
|
||||
|
||||
# Create a Blog Post
|
||||
|
||||
Docusaurus creates a **page for each blog post**, but also a **blog index page**, a **tag system**, an **RSS** feed...
|
||||
|
||||
## Create your first Post
|
||||
|
||||
Create a file at `blog/2021-02-28-greetings.md`:
|
||||
|
||||
```md title="blog/2021-02-28-greetings.md"
|
||||
---
|
||||
slug: greetings
|
||||
title: Greetings!
|
||||
authors:
|
||||
- name: Joel Marcey
|
||||
title: Co-creator of Docusaurus 1
|
||||
url: https://github.com/JoelMarcey
|
||||
image_url: https://github.com/JoelMarcey.png
|
||||
- name: Sébastien Lorber
|
||||
title: Docusaurus maintainer
|
||||
url: https://sebastienlorber.com
|
||||
image_url: https://github.com/slorber.png
|
||||
tags: [greetings]
|
||||
---
|
||||
|
||||
Congratulations, you have made your first post!
|
||||
|
||||
Feel free to play around and edit this post as much as you like.
|
||||
```
|
||||
|
||||
A new blog post is now available at [http://localhost:3000/blog/greetings](http://localhost:3000/blog/greetings).
|
@ -1,57 +0,0 @@
|
||||
---
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
# Create a Document
|
||||
|
||||
Documents are **groups of pages** connected through:
|
||||
|
||||
- a **sidebar**
|
||||
- **previous/next navigation**
|
||||
- **versioning**
|
||||
|
||||
## Create your first Doc
|
||||
|
||||
Create a Markdown file at `docs/hello.md`:
|
||||
|
||||
```md title="docs/hello.md"
|
||||
# Hello
|
||||
|
||||
This is my **first Docusaurus document**!
|
||||
```
|
||||
|
||||
A new document is now available at [http://localhost:3000/docs/hello](http://localhost:3000/docs/hello).
|
||||
|
||||
## Configure the Sidebar
|
||||
|
||||
Docusaurus automatically **creates a sidebar** from the `docs` folder.
|
||||
|
||||
Add metadata to customize the sidebar label and position:
|
||||
|
||||
```md title="docs/hello.md" {1-4}
|
||||
---
|
||||
sidebar_label: 'Hi!'
|
||||
sidebar_position: 3
|
||||
---
|
||||
|
||||
# Hello
|
||||
|
||||
This is my **first Docusaurus document**!
|
||||
```
|
||||
|
||||
It is also possible to create your sidebar explicitly in `sidebars.js`:
|
||||
|
||||
```js title="sidebars.js"
|
||||
export default {
|
||||
tutorialSidebar: [
|
||||
'intro',
|
||||
// highlight-next-line
|
||||
'hello',
|
||||
{
|
||||
type: 'category',
|
||||
label: 'Tutorial',
|
||||
items: ['tutorial-basics/create-a-document'],
|
||||
},
|
||||
],
|
||||
};
|
||||
```
|
@ -1,43 +0,0 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
# Create a Page
|
||||
|
||||
Add **Markdown or React** files to `src/pages` to create a **standalone page**:
|
||||
|
||||
- `src/pages/index.js` → `localhost:3000/`
|
||||
- `src/pages/foo.md` → `localhost:3000/foo`
|
||||
- `src/pages/foo/bar.js` → `localhost:3000/foo/bar`
|
||||
|
||||
## Create your first React Page
|
||||
|
||||
Create a file at `src/pages/my-react-page.js`:
|
||||
|
||||
```jsx title="src/pages/my-react-page.js"
|
||||
import React from 'react';
|
||||
import Layout from '@theme/Layout';
|
||||
|
||||
export default function MyReactPage() {
|
||||
return (
|
||||
<Layout>
|
||||
<h1>My React page</h1>
|
||||
<p>This is a React page</p>
|
||||
</Layout>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
A new page is now available at [http://localhost:3000/my-react-page](http://localhost:3000/my-react-page).
|
||||
|
||||
## Create your first Markdown Page
|
||||
|
||||
Create a file at `src/pages/my-markdown-page.md`:
|
||||
|
||||
```mdx title="src/pages/my-markdown-page.md"
|
||||
# My Markdown page
|
||||
|
||||
This is a Markdown page
|
||||
```
|
||||
|
||||
A new page is now available at [http://localhost:3000/my-markdown-page](http://localhost:3000/my-markdown-page).
|
@ -1,31 +0,0 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
---
|
||||
|
||||
# Deploy your site
|
||||
|
||||
Docusaurus is a **static-site-generator** (also called **[Jamstack](https://jamstack.org/)**).
|
||||
|
||||
It builds your site as simple **static HTML, JavaScript and CSS files**.
|
||||
|
||||
## Build your site
|
||||
|
||||
Build your site **for production**:
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
The static files are generated in the `build` folder.
|
||||
|
||||
## Deploy your site
|
||||
|
||||
Test your production build locally:
|
||||
|
||||
```bash
|
||||
npm run serve
|
||||
```
|
||||
|
||||
The `build` folder is now served at [http://localhost:3000/](http://localhost:3000/).
|
||||
|
||||
You can now deploy the `build` folder **almost anywhere** easily, **for free** or very small cost (read the **[Deployment Guide](https://docusaurus.io/docs/deployment)**).
|
@ -1,152 +0,0 @@
|
||||
---
|
||||
sidebar_position: 4
|
||||
---
|
||||
|
||||
# Markdown Features
|
||||
|
||||
Docusaurus supports **[Markdown](https://daringfireball.net/projects/markdown/syntax)** and a few **additional features**.
|
||||
|
||||
## Front Matter
|
||||
|
||||
Markdown documents have metadata at the top called [Front Matter](https://jekyllrb.com/docs/front-matter/):
|
||||
|
||||
```text title="my-doc.md"
|
||||
// highlight-start
|
||||
---
|
||||
id: my-doc-id
|
||||
title: My document title
|
||||
description: My document description
|
||||
slug: /my-custom-url
|
||||
---
|
||||
// highlight-end
|
||||
|
||||
## Markdown heading
|
||||
|
||||
Markdown text with [links](./hello.md)
|
||||
```
|
||||
|
||||
## Links
|
||||
|
||||
Regular Markdown links are supported, using url paths or relative file paths.
|
||||
|
||||
```md
|
||||
Let's see how to [Create a page](/create-a-page).
|
||||
```
|
||||
|
||||
```md
|
||||
Let's see how to [Create a page](./create-a-page.md).
|
||||
```
|
||||
|
||||
**Result:** Let's see how to [Create a page](./create-a-page.md).
|
||||
|
||||
## Images
|
||||
|
||||
Regular Markdown images are supported.
|
||||
|
||||
You can use absolute paths to reference images in the static directory (`static/img/docusaurus.png`):
|
||||
|
||||
```md
|
||||
![Docusaurus logo](/img/docusaurus.png)
|
||||
```
|
||||
|
||||
![Docusaurus logo](/img/docusaurus.png)
|
||||
|
||||
You can reference images relative to the current file as well. This is particularly useful to colocate images close to the Markdown files using them:
|
||||
|
||||
```md
|
||||
![Docusaurus logo](./img/docusaurus.png)
|
||||
```
|
||||
|
||||
## Code Blocks
|
||||
|
||||
Markdown code blocks are supported with Syntax highlighting.
|
||||
|
||||
````md
|
||||
```jsx title="src/components/HelloDocusaurus.js"
|
||||
function HelloDocusaurus() {
|
||||
return <h1>Hello, Docusaurus!</h1>;
|
||||
}
|
||||
```
|
||||
````
|
||||
|
||||
```jsx title="src/components/HelloDocusaurus.js"
|
||||
function HelloDocusaurus() {
|
||||
return <h1>Hello, Docusaurus!</h1>;
|
||||
}
|
||||
```
|
||||
|
||||
## Admonitions
|
||||
|
||||
Docusaurus has a special syntax to create admonitions and callouts:
|
||||
|
||||
```md
|
||||
:::tip My tip
|
||||
|
||||
Use this awesome feature option
|
||||
|
||||
:::
|
||||
|
||||
:::danger Take care
|
||||
|
||||
This action is dangerous
|
||||
|
||||
:::
|
||||
```
|
||||
|
||||
:::tip My tip
|
||||
|
||||
Use this awesome feature option
|
||||
|
||||
:::
|
||||
|
||||
:::danger Take care
|
||||
|
||||
This action is dangerous
|
||||
|
||||
:::
|
||||
|
||||
## MDX and React Components
|
||||
|
||||
[MDX](https://mdxjs.com/) can make your documentation more **interactive** and allows using any **React components inside Markdown**:
|
||||
|
||||
```jsx
|
||||
export const Highlight = ({children, color}) => (
|
||||
<span
|
||||
style={{
|
||||
backgroundColor: color,
|
||||
borderRadius: '20px',
|
||||
color: '#fff',
|
||||
padding: '10px',
|
||||
cursor: 'pointer',
|
||||
}}
|
||||
onClick={() => {
|
||||
alert(`You clicked the color ${color} with label ${children}`)
|
||||
}}>
|
||||
{children}
|
||||
</span>
|
||||
);
|
||||
|
||||
This is <Highlight color="#25c2a0">Docusaurus green</Highlight> !
|
||||
|
||||
This is <Highlight color="#1877F2">Facebook blue</Highlight> !
|
||||
```
|
||||
|
||||
export const Highlight = ({children, color}) => (
|
||||
<span
|
||||
style={{
|
||||
backgroundColor: color,
|
||||
borderRadius: '20px',
|
||||
color: '#fff',
|
||||
padding: '10px',
|
||||
cursor: 'pointer',
|
||||
}}
|
||||
onClick={() => {
|
||||
alert(`You clicked the color ${color} with label ${children}`);
|
||||
}}>
|
||||
{children}
|
||||
</span>
|
||||
);
|
||||
|
||||
This is <Highlight color="#25c2a0">Docusaurus green</Highlight> !
|
||||
|
||||
This is <Highlight color="#1877F2">Facebook blue</Highlight> !
|
@ -1,7 +0,0 @@
|
||||
{
|
||||
"label": "Tutorial - Extras",
|
||||
"position": 3,
|
||||
"link": {
|
||||
"type": "generated-index"
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 27 KiB |
@ -1,55 +0,0 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
# Manage Docs Versions
|
||||
|
||||
Docusaurus can manage multiple versions of your docs.
|
||||
|
||||
## Create a docs version
|
||||
|
||||
Release a version 1.0 of your project:
|
||||
|
||||
```bash
|
||||
npm run docusaurus docs:version 1.0
|
||||
```
|
||||
|
||||
The `docs` folder is copied into `versioned_docs/version-1.0` and `versions.json` is created.
|
||||
|
||||
Your docs now have 2 versions:
|
||||
|
||||
- `1.0` at `http://localhost:3000/docs/` for the version 1.0 docs
|
||||
- `current` at `http://localhost:3000/docs/next/` for the **upcoming, unreleased docs**
|
||||
|
||||
## Add a Version Dropdown
|
||||
|
||||
To navigate seamlessly across versions, add a version dropdown.
|
||||
|
||||
Modify the `docusaurus.config.js` file:
|
||||
|
||||
```js title="docusaurus.config.js"
|
||||
export default {
|
||||
themeConfig: {
|
||||
navbar: {
|
||||
items: [
|
||||
// highlight-start
|
||||
{
|
||||
type: 'docsVersionDropdown',
|
||||
},
|
||||
// highlight-end
|
||||
],
|
||||
},
|
||||
},
|
||||
};
|
||||
```
|
||||
|
||||
The docs version dropdown appears in your navbar:
|
||||
|
||||
![Docs Version Dropdown](./img/docsVersionDropdown.png)
|
||||
|
||||
## Update an existing version
|
||||
|
||||
It is possible to edit versioned docs in their respective folder:
|
||||
|
||||
- `versioned_docs/version-1.0/hello.md` updates `http://localhost:3000/docs/hello`
|
||||
- `docs/hello.md` updates `http://localhost:3000/docs/next/hello`
|
@ -1,88 +0,0 @@
|
||||
---
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
# Translate your site
|
||||
|
||||
Let's translate `docs/intro.md` to French.
|
||||
|
||||
## Configure i18n
|
||||
|
||||
Modify `docusaurus.config.js` to add support for the `fr` locale:
|
||||
|
||||
```js title="docusaurus.config.js"
|
||||
export default {
|
||||
i18n: {
|
||||
defaultLocale: 'en',
|
||||
locales: ['en', 'fr'],
|
||||
},
|
||||
};
|
||||
```
|
||||
|
||||
## Translate a doc
|
||||
|
||||
Copy the `docs/intro.md` file to the `i18n/fr` folder:
|
||||
|
||||
```bash
|
||||
mkdir -p i18n/fr/docusaurus-plugin-content-docs/current/
|
||||
|
||||
cp docs/intro.md i18n/fr/docusaurus-plugin-content-docs/current/intro.md
|
||||
```
|
||||
|
||||
Translate `i18n/fr/docusaurus-plugin-content-docs/current/intro.md` in French.
|
||||
|
||||
## Start your localized site
|
||||
|
||||
Start your site on the French locale:
|
||||
|
||||
```bash
|
||||
npm run start -- --locale fr
|
||||
```
|
||||
|
||||
Your localized site is accessible at [http://localhost:3000/fr/](http://localhost:3000/fr/) and the `Getting Started` page is translated.
|
||||
|
||||
:::caution
|
||||
|
||||
In development, you can only use one locale at a time.
|
||||
|
||||
:::
|
||||
|
||||
## Add a Locale Dropdown
|
||||
|
||||
To navigate seamlessly across languages, add a locale dropdown.
|
||||
|
||||
Modify the `docusaurus.config.js` file:
|
||||
|
||||
```js title="docusaurus.config.js"
|
||||
export default {
|
||||
themeConfig: {
|
||||
navbar: {
|
||||
items: [
|
||||
// highlight-start
|
||||
{
|
||||
type: 'localeDropdown',
|
||||
},
|
||||
// highlight-end
|
||||
],
|
||||
},
|
||||
},
|
||||
};
|
||||
```
|
||||
|
||||
The locale dropdown now appears in your navbar:
|
||||
|
||||
![Locale Dropdown](./img/localeDropdown.png)
|
||||
|
||||
## Build your localized site
|
||||
|
||||
Build your site for a specific locale:
|
||||
|
||||
```bash
|
||||
npm run build -- --locale fr
|
||||
```
|
||||
|
||||
Or build your site to include all the locales at once:
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
26
docs/versions.md
Normal file
@ -0,0 +1,26 @@
|
||||
---
|
||||
id: versions
|
||||
title: Versions
|
||||
---
|
||||
|
||||
# Versions
|
||||
Plex builds against the latest Minecraft version available. A table has been provided below to help you determine which versions of Plex work with your version of Minecraft. Note that these are only the versions we have officially tested. Plex may or may not work with versions other than in this table.
|
||||
|
||||
| Plex Version | Minecraft Versions |
|
||||
|--------------|--------------------|
|
||||
| 1.5-SNAPSHOT | 1.20.6 - 1.21.3 |
|
||||
| 1.4 | 1.20.4 |
|
||||
| 1.3 | 1.19.4 - 1.20.4 |
|
||||
| 1.2 | 1.18.2 - 1.19.2 |
|
||||
| 1.1.1 | 1.18.2 - 1.19.2 |
|
||||
| 1.1 | 1.18.2 |
|
||||
| 1.0.3 | 1.18.2 |
|
||||
| 1.0.2 | 1.18.2 |
|
||||
| 1.0.1 | 1.18.2 |
|
||||
| 1.0 | 1.18.2 |
|
||||
| 0.9 | 1.18.2 |
|
||||
| 0.8 | 1.18.2 |
|
||||
| 0.7 | 1.18 - 1.18.1 |
|
||||
| 0.6 | 1.18 - 1.18.1 |
|
||||
| 0.5 | 1.18 - 1.18.1 |
|
||||
| 0.4 | 1.16.5 - 1.18.1 |
|
@ -3,113 +3,141 @@ import type {Config} from '@docusaurus/types';
|
||||
import type * as Preset from '@docusaurus/preset-classic';
|
||||
|
||||
const config: Config = {
|
||||
title: 'Plex',
|
||||
tagline: 'Welcome to the website and documentation for Plex!',
|
||||
favicon: 'img/favicon.ico',
|
||||
title: 'Plex',
|
||||
tagline: 'Welcome to the website and documentation for Plex!',
|
||||
favicon: 'img/favicon.ico',
|
||||
|
||||
url: 'https://docs.plex.us.org',
|
||||
baseUrl: '/',
|
||||
url: 'https://docs.plex.us.org',
|
||||
baseUrl: '/',
|
||||
|
||||
organizationName: 'plexusorg', // Usually your GitHub org/user name.
|
||||
projectName: 'Website', // Usually your repo name.
|
||||
organizationName: 'plexusorg', // Usually your GitHub org/user name.
|
||||
projectName: 'Website', // Usually your repo name.
|
||||
|
||||
onBrokenLinks: 'throw',
|
||||
onBrokenMarkdownLinks: 'warn',
|
||||
onBrokenLinks: 'throw',
|
||||
onBrokenMarkdownLinks: 'warn',
|
||||
|
||||
i18n: {
|
||||
defaultLocale: 'en',
|
||||
locales: ['en'],
|
||||
},
|
||||
i18n: {
|
||||
defaultLocale: 'en',
|
||||
locales: ['en'],
|
||||
},
|
||||
|
||||
presets: [
|
||||
[
|
||||
'classic',
|
||||
{
|
||||
docs: {
|
||||
sidebarPath: './sidebars.ts',
|
||||
editUrl:
|
||||
'https://github.com/plexusorg/Website/tree/master',
|
||||
},
|
||||
theme: {
|
||||
customCss: './src/css/custom.css',
|
||||
},
|
||||
} satisfies Preset.Options,
|
||||
presets: [
|
||||
[
|
||||
'classic',
|
||||
{
|
||||
docs: {
|
||||
sidebarPath: './sidebars.ts',
|
||||
editUrl:
|
||||
'https://github.com/plexusorg/Website/tree/master',
|
||||
},
|
||||
theme: {
|
||||
customCss: './src/css/custom.css',
|
||||
},
|
||||
} satisfies Preset.Options,
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
themeConfig: {
|
||||
image: 'img/docusaurus-social-card.jpg',
|
||||
navbar: {
|
||||
title: 'Plex',
|
||||
logo: {
|
||||
alt: 'Plex Logo',
|
||||
src: 'img/plexlogo.png',
|
||||
},
|
||||
items: [
|
||||
{
|
||||
type: 'docSidebar',
|
||||
sidebarId: 'tutorialSidebar',
|
||||
position: 'left',
|
||||
label: 'Tutorial',
|
||||
themeConfig: {
|
||||
navbar: {
|
||||
title: 'Plex',
|
||||
logo: {
|
||||
alt: 'Plex Logo',
|
||||
src: 'img/plexlogo.png',
|
||||
},
|
||||
items: [
|
||||
{
|
||||
type: 'doc',
|
||||
docId: 'intro',
|
||||
position: 'left',
|
||||
label: 'Introduction',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
docId: 'compiling',
|
||||
position: 'left',
|
||||
label: 'Compiling',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
docId: 'permissions',
|
||||
position: 'left',
|
||||
label: 'Permissions',
|
||||
},
|
||||
{
|
||||
position: 'left',
|
||||
label: 'Javadocs',
|
||||
to: 'pathname:///javadoc',
|
||||
},
|
||||
{
|
||||
position: 'left',
|
||||
label: 'Downloads',
|
||||
to: 'https://ci.plex.us.org',
|
||||
},
|
||||
{
|
||||
position: 'right',
|
||||
label: 'GitHub',
|
||||
href: 'https://github.com/plexusorg',
|
||||
},
|
||||
],
|
||||
},
|
||||
{to: '/blog', label: 'Blog', position: 'left'},
|
||||
{
|
||||
href: 'https://github.com/facebook/docusaurus',
|
||||
label: 'GitHub',
|
||||
position: 'right',
|
||||
footer: {
|
||||
style: 'dark',
|
||||
links: [
|
||||
{
|
||||
title: 'Docs',
|
||||
items: [
|
||||
{
|
||||
label: 'Introduction',
|
||||
to: '/docs/intro',
|
||||
},
|
||||
{
|
||||
label: 'Compiling',
|
||||
to: '/docs/compiling',
|
||||
},
|
||||
{
|
||||
label: 'Permissions',
|
||||
to: '/docs/permissions',
|
||||
},
|
||||
{
|
||||
label: 'Javadocs',
|
||||
to: 'pathname:///javadoc',
|
||||
},
|
||||
{
|
||||
label: 'Downloads',
|
||||
to: 'https://ci.plex.us.org',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Community',
|
||||
items: [
|
||||
{
|
||||
label: 'Discord',
|
||||
href: 'https://discord.gg/MzjRjFAcrZ',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'GitHub',
|
||||
items: [
|
||||
{
|
||||
label: 'Plex',
|
||||
href: 'https://github.com/plexusorg/Plex',
|
||||
},
|
||||
{
|
||||
label: 'Docs',
|
||||
href: 'https://github.com/plexusorg/Website',
|
||||
}
|
||||
],
|
||||
},
|
||||
],
|
||||
copyright: `Copyright © ${new Date().getFullYear()} Plexus Development. Symbols from <a href="https://fontawesome.com/license">FontAwesome</a>. Built with Docusaurus.`,
|
||||
},
|
||||
],
|
||||
},
|
||||
footer: {
|
||||
style: 'dark',
|
||||
links: [
|
||||
{
|
||||
title: 'Docs',
|
||||
items: [
|
||||
{
|
||||
label: 'Tutorial',
|
||||
to: '/docs/intro',
|
||||
},
|
||||
],
|
||||
prism: {
|
||||
theme: prismThemes.github,
|
||||
darkTheme: prismThemes.dracula,
|
||||
},
|
||||
{
|
||||
title: 'Community',
|
||||
items: [
|
||||
{
|
||||
label: 'Stack Overflow',
|
||||
href: 'https://stackoverflow.com/questions/tagged/docusaurus',
|
||||
},
|
||||
{
|
||||
label: 'Discord',
|
||||
href: 'https://discordapp.com/invite/docusaurus',
|
||||
},
|
||||
{
|
||||
label: 'X',
|
||||
href: 'https://x.com/docusaurus',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'More',
|
||||
items: [
|
||||
{
|
||||
label: 'Blog',
|
||||
to: '/blog',
|
||||
},
|
||||
{
|
||||
label: 'GitHub',
|
||||
href: 'https://github.com/facebook/docusaurus',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
copyright: `Copyright © ${new Date().getFullYear()} Plexus Development. Symbols from <a href="https://fontawesome.com/license">FontAwesome</a>. Built with Docusaurus.`,
|
||||
},
|
||||
prism: {
|
||||
theme: prismThemes.github,
|
||||
darkTheme: prismThemes.dracula,
|
||||
},
|
||||
} satisfies Preset.ThemeConfig,
|
||||
} satisfies Preset.ThemeConfig,
|
||||
};
|
||||
|
||||
export default config;
|
||||
|
@ -43,5 +43,6 @@
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0"
|
||||
}
|
||||
},
|
||||
"packageManager": "yarn@4.5.3"
|
||||
}
|
||||
|
46
sidebars.ts
@ -17,17 +17,49 @@ const sidebars: SidebarsConfig = {
|
||||
tutorialSidebar: [{type: 'autogenerated', dirName: '.'}],
|
||||
|
||||
// But you can create a sidebar manually
|
||||
/*
|
||||
tutorialSidebar: [
|
||||
'intro',
|
||||
'hello',
|
||||
|
||||
defaultSidebar: [
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'Introduction',
|
||||
id: 'intro',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'Versions',
|
||||
id: 'versions',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'Compiling',
|
||||
id: 'compiling',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'Permissions',
|
||||
id: 'permissions',
|
||||
},
|
||||
{
|
||||
type: 'category',
|
||||
label: 'Tutorial',
|
||||
items: ['tutorial-basics/create-a-document'],
|
||||
label: 'Configuration files',
|
||||
items: ['customization/config', 'customization/messages', `customization/commandblocker`],
|
||||
},
|
||||
{
|
||||
type: 'category',
|
||||
label: 'Modules',
|
||||
items: ['modules/introduction', 'modules/bukkittelnet', 'modules/httpd', 'modules/libsdisguises'],
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'Indefinite Bans',
|
||||
id: 'indefinitebans',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'Configuring Redis',
|
||||
id: 'redis',
|
||||
},
|
||||
],
|
||||
*/
|
||||
};
|
||||
|
||||
export default sidebars;
|
||||
|
@ -9,36 +9,65 @@ type FeatureItem = {
|
||||
};
|
||||
|
||||
const FeatureList: FeatureItem[] = [
|
||||
{
|
||||
title: 'Easy to Use',
|
||||
Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default,
|
||||
description: (
|
||||
<>
|
||||
Docusaurus was designed from the ground up to be easily installed and
|
||||
used to get your website up and running quickly.
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: 'Focus on What Matters',
|
||||
Svg: require('@site/static/img/undraw_docusaurus_tree.svg').default,
|
||||
description: (
|
||||
<>
|
||||
Docusaurus lets you focus on your docs, and we'll do the chores. Go
|
||||
ahead and move your docs into the <code>docs</code> directory.
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: 'Powered by React',
|
||||
Svg: require('@site/static/img/undraw_docusaurus_react.svg').default,
|
||||
description: (
|
||||
<>
|
||||
Extend or customize your website layout by reusing React. Docusaurus can
|
||||
be extended while reusing the same header and footer.
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: 'Performance Oriented',
|
||||
Svg: require('@site/static/img/bolt-solid.svg').default,
|
||||
description: (
|
||||
<>
|
||||
Plex was designed with performance in mind. Plex supports SQLite or MariaDB out of the box.
|
||||
Plex also uses Redis for punishments instead of traditional YAML / JSON files.
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: 'Fully Customizable',
|
||||
Svg: require('@site/static/img/sliders-solid.svg').default,
|
||||
description: (
|
||||
<>
|
||||
Plex is designed to be customizable to fit your server's needs. Almost all messages within the plugin can be easily changed.
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: 'Permissions',
|
||||
Svg: require('@site/static/img/dice-solid.svg').default,
|
||||
description: (
|
||||
<>
|
||||
Plex allows you to use integrate with a permission system and "fake op" players. This allows server owners to have much more control over what is and isn't allowed.
|
||||
Any Vault-compatible permission plugin will integrate with Plex and can be used instead of ranks.
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: 'Modular',
|
||||
Svg: require('@site/static/img/download-solid.svg').default,
|
||||
description: (
|
||||
<>
|
||||
Plex features a fully modular system. You can add or remove modules based on how your server is configured. If you're using permissions,
|
||||
you likely won't need our command blocker, but you will if you use ranks.
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: 'Converters',
|
||||
Svg: require('@site/static/img/forward-fast-solid.svg').default,
|
||||
description: (
|
||||
<>
|
||||
We have written tools to convert your existing data from TotalFreedomMod to Plex. This will make your transition even easier so you won't
|
||||
have to start fresh.
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: 'Quality Control',
|
||||
Svg: require('@site/static/img/bug-slash-solid.svg').default,
|
||||
description: (
|
||||
<>
|
||||
Each release is tested to find bugs before you have to encounter them on your server. Plex's codebase was designed for rapid progress and
|
||||
won't unexpectedly break.
|
||||
</>
|
||||
),
|
||||
},
|
||||
];
|
||||
|
||||
function Feature({title, Svg, description}: FeatureItem) {
|
||||
|
@ -1,11 +1,11 @@
|
||||
.features {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 2rem 0;
|
||||
padding: 3rem 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.featureSvg {
|
||||
height: 200px;
|
||||
width: 200px;
|
||||
height: 115px;
|
||||
width: 115px;
|
||||
}
|
||||
|
@ -6,25 +6,25 @@
|
||||
|
||||
/* You can override the default Infima variables here. */
|
||||
:root {
|
||||
--ifm-color-primary: #2e8555;
|
||||
--ifm-color-primary-dark: #29784c;
|
||||
--ifm-color-primary-darker: #277148;
|
||||
--ifm-color-primary-darkest: #205d3b;
|
||||
--ifm-color-primary-light: #33925d;
|
||||
--ifm-color-primary-lighter: #359962;
|
||||
--ifm-color-primary-lightest: #3cad6e;
|
||||
--ifm-color-primary: #2E86C1;
|
||||
--ifm-color-primary-dark: #2874A6;
|
||||
--ifm-color-primary-darker: #21618C;
|
||||
--ifm-color-primary-darkest: #1B4F72;
|
||||
--ifm-color-primary-light: #3498DB;
|
||||
--ifm-color-primary-lighter: #5DADE2;
|
||||
--ifm-color-primary-lightest: #85C1E9;
|
||||
--ifm-code-font-size: 95%;
|
||||
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
/* For readability concerns, you should choose a lighter palette in dark mode. */
|
||||
[data-theme='dark'] {
|
||||
--ifm-color-primary: #25c2a0;
|
||||
--ifm-color-primary-dark: #21af90;
|
||||
--ifm-color-primary-darker: #1fa588;
|
||||
--ifm-color-primary-darkest: #1a8870;
|
||||
--ifm-color-primary-light: #29d5b0;
|
||||
--ifm-color-primary-lighter: #32d8b4;
|
||||
--ifm-color-primary-lightest: #4fddbf;
|
||||
--ifm-color-primary: #2471A3;
|
||||
--ifm-color-primary-dark: #1F618D;
|
||||
--ifm-color-primary-darker: #1A5276;
|
||||
--ifm-color-primary-darkest: #154360;
|
||||
--ifm-color-primary-light: #2980B9;
|
||||
--ifm-color-primary-lighter: #5499C7;
|
||||
--ifm-color-primary-lightest: #7FB3D5;
|
||||
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
@ -20,7 +20,7 @@ function HomepageHeader() {
|
||||
<Link
|
||||
className="button button--secondary button--lg"
|
||||
to="/docs/intro">
|
||||
Docusaurus Tutorial - 5min ⏱️
|
||||
Let's get started
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
@ -32,8 +32,8 @@ export default function Home(): JSX.Element {
|
||||
const {siteConfig} = useDocusaurusContext();
|
||||
return (
|
||||
<Layout
|
||||
title={`Hello from ${siteConfig.title}`}
|
||||
description="Description will go into a meta tag in <head />">
|
||||
title={`Home`}
|
||||
description="The official website and documentation for Plex">
|
||||
<HomepageHeader />
|
||||
<main>
|
||||
<HomepageFeatures />
|
||||
|
42
static/egg-redis-7.json
Normal file
@ -0,0 +1,42 @@
|
||||
{
|
||||
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
|
||||
"meta": {
|
||||
"version": "PTDL_v2",
|
||||
"update_url": null
|
||||
},
|
||||
"exported_at": "2022-08-25T20:43:36-05:00",
|
||||
"name": "Redis-7",
|
||||
"author": "contact@plex.us.org",
|
||||
"description": "Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams.",
|
||||
"features": null,
|
||||
"docker_images": {
|
||||
"docker.telesphoreo.me\/redis:7": "docker.telesphoreo.me\/redis:7"
|
||||
},
|
||||
"file_denylist": [],
|
||||
"startup": "\/usr\/local\/bin\/redis-server \/home\/container\/redis.conf --save 60 1 --dir \/home\/container\/ --bind 0.0.0.0 --port {{SERVER_PORT}} --requirepass {{SERVER_PASSWORD}} --maxmemory {{SERVER_MEMORY}}mb --daemonize yes && redis-cli -p {{SERVER_PORT}} -a {{SERVER_PASSWORD}}; redis-cli -p {{SERVER_PORT}} -a {{SERVER_PASSWORD}} shutdown save",
|
||||
"config": {
|
||||
"files": "{}",
|
||||
"startup": "{\r\n \"done\": \"Warning:\"\r\n}",
|
||||
"logs": "{}",
|
||||
"stop": "^C"
|
||||
},
|
||||
"scripts": {
|
||||
"installation": {
|
||||
"script": "#!\/bin\/ash\r\n# Redis Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\napk add --no-cache curl\r\n\r\nif [ ! -d \/mnt\/server ]; then\r\n mkdir \/mnt\/server\/\r\nfi\r\n\r\ncd \/mnt\/server\/\r\n\r\nif [ ! -d \/mnt\/server\/redis.conf ]; then\r\n curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/database\/redis\/redis-6\/redis.conf -o redis.conf\r\nfi\r\n\r\nsleep 5\r\necho -e \"Install complete. Made this to not have issues.\"",
|
||||
"container": "alpine:3.15",
|
||||
"entrypoint": "ash"
|
||||
}
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"name": "Redis Password",
|
||||
"description": "The password redis should use to secure the server.",
|
||||
"env_variable": "SERVER_PASSWORD",
|
||||
"default_value": "P@55w0rd",
|
||||
"user_viewable": true,
|
||||
"user_editable": true,
|
||||
"rules": "required|string",
|
||||
"field_type": "text"
|
||||
}
|
||||
]
|
||||
}
|
1
static/img/bolt-solid.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M240.5 224H352C365.3 224 377.3 232.3 381.1 244.7C386.6 257.2 383.1 271.3 373.1 280.1L117.1 504.1C105.8 513.9 89.27 514.7 77.19 505.9C65.1 497.1 60.7 481.1 66.59 467.4L143.5 288H31.1C18.67 288 6.733 279.7 2.044 267.3C-2.645 254.8 .8944 240.7 10.93 231.9L266.9 7.918C278.2-1.92 294.7-2.669 306.8 6.114C318.9 14.9 323.3 30.87 317.4 44.61L240.5 224z"/></svg>
|
After Width: | Height: | Size: 445 B |
1
static/img/bug-slash-solid.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M239.1 162.8C247.7 160.1 255.7 160 264 160H376C393.1 160 409.2 164.1 423.5 171.4C424.1 170.7 424.7 170 425.4 169.4L489.4 105.4C501.9 92.88 522.1 92.88 534.6 105.4C547.1 117.9 547.1 138.1 534.6 150.6L470.6 214.6C469.1 215.3 469.3 215.9 468.6 216.5C474.7 228.5 478.6 241.9 479.7 256H544C561.7 256 576 270.3 576 288C576 305.7 561.7 320 544 320H480C480 329.9 479.1 339.5 477.4 348.9L630.8 469.1C641.2 477.3 643.1 492.4 634.9 502.8C626.7 513.2 611.6 515.1 601.2 506.9L9.196 42.89C-1.236 34.71-3.065 19.63 5.112 9.196C13.29-1.236 28.37-3.065 38.81 5.112L239.1 162.8zM416 96V99.56C416 115.3 403.3 128 387.6 128H252.4C236.7 128 224 115.3 224 99.56V96C224 42.98 266.1 .001 320 .001C373 .001 416 42.98 416 96V96zM160.3 256C161.1 245.1 163.3 236.3 166.7 227.3L304 335.5V479.2C269.5 475.8 238.2 461.4 213.7 439.6L150.6 502.6C138.1 515.1 117.9 515.1 105.4 502.6C92.88 490.1 92.88 469.9 105.4 457.4L169.4 393.4C171.2 391.5 173.3 389.9 175.4 388.6C165.5 367.8 160 344.6 160 320H96C78.33 320 64 305.7 64 288C64 270.3 78.33 256 96 256H160.3zM336 479.2V360.7L430.8 435.4C405.7 459.6 372.7 475.6 336 479.2V479.2z"/></svg>
|
After Width: | Height: | Size: 1.2 KiB |
1
static/img/dice-solid.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M447.1 224c0-12.56-4.781-25.13-14.35-34.76l-174.9-174.9C249.1 4.786 236.5 0 223.1 0C211.4 0 198.9 4.786 189.2 14.35L14.35 189.2C4.783 198.9-.0011 211.4-.0011 223.1c0 12.56 4.785 25.17 14.35 34.8l174.9 174.9c9.625 9.562 22.19 14.35 34.75 14.35s25.13-4.783 34.75-14.35l174.9-174.9C443.2 249.1 447.1 236.6 447.1 224zM96 248c-13.25 0-23.1-10.75-23.1-23.1s10.75-23.1 23.1-23.1S120 210.8 120 224S109.3 248 96 248zM224 376c-13.25 0-23.1-10.75-23.1-23.1s10.75-23.1 23.1-23.1s23.1 10.75 23.1 23.1S237.3 376 224 376zM224 248c-13.25 0-23.1-10.75-23.1-23.1s10.75-23.1 23.1-23.1S248 210.8 248 224S237.3 248 224 248zM224 120c-13.25 0-23.1-10.75-23.1-23.1s10.75-23.1 23.1-23.1s23.1 10.75 23.1 23.1S237.3 120 224 120zM352 248c-13.25 0-23.1-10.75-23.1-23.1s10.75-23.1 23.1-23.1s23.1 10.75 23.1 23.1S365.3 248 352 248zM591.1 192l-118.7 0c4.418 10.27 6.604 21.25 6.604 32.23c0 20.7-7.865 41.38-23.63 57.14l-136.2 136.2v46.37C320 490.5 341.5 512 368 512h223.1c26.5 0 47.1-21.5 47.1-47.1V240C639.1 213.5 618.5 192 591.1 192zM479.1 376c-13.25 0-23.1-10.75-23.1-23.1s10.75-23.1 23.1-23.1s23.1 10.75 23.1 23.1S493.2 376 479.1 376z"/></svg>
|
After Width: | Height: | Size: 1.2 KiB |
1
static/img/download-solid.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M480 352h-133.5l-45.25 45.25C289.2 409.3 273.1 416 256 416s-33.16-6.656-45.25-18.75L165.5 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96C512 366.3 497.7 352 480 352zM432 456c-13.2 0-24-10.8-24-24c0-13.2 10.8-24 24-24s24 10.8 24 24C456 445.2 445.2 456 432 456zM233.4 374.6C239.6 380.9 247.8 384 256 384s16.38-3.125 22.62-9.375l128-128c12.49-12.5 12.49-32.75 0-45.25c-12.5-12.5-32.76-12.5-45.25 0L288 274.8V32c0-17.67-14.33-32-32-32C238.3 0 224 14.33 224 32v242.8L150.6 201.4c-12.49-12.5-32.75-12.5-45.25 0c-12.49 12.5-12.49 32.75 0 45.25L233.4 374.6z"/></svg>
|
After Width: | Height: | Size: 690 B |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 4.2 KiB |
1
static/img/forward-fast-solid.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="forward-fast" class="svg-inline--fa fa-forward-fast fa-w-20" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M512 96.03v319.9c0 17.67-14.33 31.1-31.1 31.1C462.3 447.1 448 433.6 448 415.1V284.1l-171.5 156.5C255.9 457.7 224 443.3 224 415.1V284.1l-171.5 156.5C31.88 457.7 0 443.3 0 415.1V96.03c0-27.37 31.88-41.74 52.5-24.62L224 226.8V96.03c0-27.37 31.88-41.74 52.5-24.62L448 226.8V96.03c0-17.67 14.33-31.1 31.1-31.1C497.7 64.03 512 78.36 512 96.03z"/></svg>
|
After Width: | Height: | Size: 575 B |
BIN
static/img/plexlogo.png
Normal file
After Width: | Height: | Size: 32 KiB |
1
static/img/sliders-solid.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M0 416C0 398.3 14.33 384 32 384H86.66C99 355.7 127.2 336 160 336C192.8 336 220.1 355.7 233.3 384H480C497.7 384 512 398.3 512 416C512 433.7 497.7 448 480 448H233.3C220.1 476.3 192.8 496 160 496C127.2 496 99 476.3 86.66 448H32C14.33 448 0 433.7 0 416V416zM192 416C192 398.3 177.7 384 160 384C142.3 384 128 398.3 128 416C128 433.7 142.3 448 160 448C177.7 448 192 433.7 192 416zM352 176C384.8 176 412.1 195.7 425.3 224H480C497.7 224 512 238.3 512 256C512 273.7 497.7 288 480 288H425.3C412.1 316.3 384.8 336 352 336C319.2 336 291 316.3 278.7 288H32C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224H278.7C291 195.7 319.2 176 352 176zM384 256C384 238.3 369.7 224 352 224C334.3 224 320 238.3 320 256C320 273.7 334.3 288 352 288C369.7 288 384 273.7 384 256zM480 64C497.7 64 512 78.33 512 96C512 113.7 497.7 128 480 128H265.3C252.1 156.3 224.8 176 192 176C159.2 176 131 156.3 118.7 128H32C14.33 128 0 113.7 0 96C0 78.33 14.33 64 32 64H118.7C131 35.75 159.2 16 192 16C224.8 16 252.1 35.75 265.3 64H480zM160 96C160 113.7 174.3 128 192 128C209.7 128 224 113.7 224 96C224 78.33 209.7 64 192 64C174.3 64 160 78.33 160 96z"/></svg>
|
After Width: | Height: | Size: 1.2 KiB |