Revamp website with new Docusaurus version

This commit is contained in:
Telesphoreo 2024-11-30 14:00:25 -06:00
parent efc22a7bc6
commit ab9280f8d4
52 changed files with 41244 additions and 846 deletions

3
.gitignore vendored
View File

@ -18,3 +18,6 @@
npm-debug.log* npm-debug.log*
yarn-debug.log* yarn-debug.log*
yarn-error.log* yarn-error.log*
.yarn
.idea

24855
.pnp.cjs generated Normal file

File diff suppressed because one or more lines are too long

2126
.pnp.loader.mjs generated Normal file

File diff suppressed because it is too large Load Diff

View 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

View File

@ -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

View File

@ -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>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

View File

@ -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.

View File

@ -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

View File

@ -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
View 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.

View 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`

View 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.

View 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
View 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)

View File

@ -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 doesnt 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 Use the sidebar to navigate the documentation.
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.

View 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
View 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`

View 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 |

View 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
View 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
View 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.

View File

@ -1,8 +0,0 @@
{
"label": "Tutorial - Basics",
"position": 2,
"link": {
"type": "generated-index",
"description": "5 minutes to learn the most important Docusaurus concepts."
}
}

View File

@ -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)

View File

@ -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).

View File

@ -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'],
},
],
};
```

View File

@ -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).

View File

@ -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)**).

View File

@ -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> !

View File

@ -1,7 +0,0 @@
{
"label": "Tutorial - Extras",
"position": 3,
"link": {
"type": "generated-index"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

View File

@ -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`

View File

@ -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
View 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 |

View File

@ -38,7 +38,6 @@ const config: Config = {
], ],
themeConfig: { themeConfig: {
image: 'img/docusaurus-social-card.jpg',
navbar: { navbar: {
title: 'Plex', title: 'Plex',
logo: { logo: {
@ -47,16 +46,37 @@ const config: Config = {
}, },
items: [ items: [
{ {
type: 'docSidebar', type: 'doc',
sidebarId: 'tutorialSidebar', docId: 'intro',
position: 'left', position: 'left',
label: 'Tutorial', 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',
}, },
{to: '/blog', label: 'Blog', position: 'left'},
{ {
href: 'https://github.com/facebook/docusaurus',
label: 'GitHub',
position: 'right', position: 'right',
label: 'GitHub',
href: 'https://github.com/plexusorg',
}, },
], ],
}, },
@ -67,39 +87,47 @@ const config: Config = {
title: 'Docs', title: 'Docs',
items: [ items: [
{ {
label: 'Tutorial', label: 'Introduction',
to: '/docs/intro', 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', title: 'Community',
items: [ items: [
{
label: 'Stack Overflow',
href: 'https://stackoverflow.com/questions/tagged/docusaurus',
},
{ {
label: 'Discord', label: 'Discord',
href: 'https://discordapp.com/invite/docusaurus', href: 'https://discord.gg/MzjRjFAcrZ',
},
{
label: 'X',
href: 'https://x.com/docusaurus',
}, },
], ],
}, },
{ {
title: 'More', title: 'GitHub',
items: [ items: [
{ {
label: 'Blog', label: 'Plex',
to: '/blog', href: 'https://github.com/plexusorg/Plex',
}, },
{ {
label: 'GitHub', label: 'Docs',
href: 'https://github.com/facebook/docusaurus', href: 'https://github.com/plexusorg/Website',
}, }
], ],
}, },
], ],

View File

@ -43,5 +43,6 @@
}, },
"engines": { "engines": {
"node": ">=18.0" "node": ">=18.0"
} },
"packageManager": "yarn@4.5.3"
} }

View File

@ -17,17 +17,49 @@ const sidebars: SidebarsConfig = {
tutorialSidebar: [{type: 'autogenerated', dirName: '.'}], tutorialSidebar: [{type: 'autogenerated', dirName: '.'}],
// But you can create a sidebar manually // But you can create a sidebar manually
/*
tutorialSidebar: [ defaultSidebar: [
'intro', {
'hello', 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', type: 'category',
label: 'Tutorial', label: 'Configuration files',
items: ['tutorial-basics/create-a-document'], 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; export default sidebars;

View File

@ -10,32 +10,61 @@ type FeatureItem = {
const FeatureList: FeatureItem[] = [ const FeatureList: FeatureItem[] = [
{ {
title: 'Easy to Use', title: 'Performance Oriented',
Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default, Svg: require('@site/static/img/bolt-solid.svg').default,
description: ( description: (
<> <>
Docusaurus was designed from the ground up to be easily installed and Plex was designed with performance in mind. Plex supports SQLite or MariaDB out of the box.
used to get your website up and running quickly. Plex also uses Redis for punishments instead of traditional YAML / JSON files.
</> </>
), ),
}, },
{ {
title: 'Focus on What Matters', title: 'Fully Customizable',
Svg: require('@site/static/img/undraw_docusaurus_tree.svg').default, Svg: require('@site/static/img/sliders-solid.svg').default,
description: ( description: (
<> <>
Docusaurus lets you focus on your docs, and we&apos;ll do the chores. Go Plex is designed to be customizable to fit your server's needs. Almost all messages within the plugin can be easily changed.
ahead and move your docs into the <code>docs</code> directory.
</> </>
), ),
}, },
{ {
title: 'Powered by React', title: 'Permissions',
Svg: require('@site/static/img/undraw_docusaurus_react.svg').default, Svg: require('@site/static/img/dice-solid.svg').default,
description: ( description: (
<> <>
Extend or customize your website layout by reusing React. Docusaurus can 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.
be extended while reusing the same header and footer. 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.
</> </>
), ),
}, },

View File

@ -1,11 +1,11 @@
.features { .features {
display: flex; display: flex;
align-items: center; align-items: center;
padding: 2rem 0; padding: 3rem 0;
width: 100%; width: 100%;
} }
.featureSvg { .featureSvg {
height: 200px; height: 115px;
width: 200px; width: 115px;
} }

View File

@ -6,25 +6,25 @@
/* You can override the default Infima variables here. */ /* You can override the default Infima variables here. */
:root { :root {
--ifm-color-primary: #2e8555; --ifm-color-primary: #2E86C1;
--ifm-color-primary-dark: #29784c; --ifm-color-primary-dark: #2874A6;
--ifm-color-primary-darker: #277148; --ifm-color-primary-darker: #21618C;
--ifm-color-primary-darkest: #205d3b; --ifm-color-primary-darkest: #1B4F72;
--ifm-color-primary-light: #33925d; --ifm-color-primary-light: #3498DB;
--ifm-color-primary-lighter: #359962; --ifm-color-primary-lighter: #5DADE2;
--ifm-color-primary-lightest: #3cad6e; --ifm-color-primary-lightest: #85C1E9;
--ifm-code-font-size: 95%; --ifm-code-font-size: 95%;
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1);
} }
/* For readability concerns, you should choose a lighter palette in dark mode. */ /* For readability concerns, you should choose a lighter palette in dark mode. */
[data-theme='dark'] { [data-theme='dark'] {
--ifm-color-primary: #25c2a0; --ifm-color-primary: #2471A3;
--ifm-color-primary-dark: #21af90; --ifm-color-primary-dark: #1F618D;
--ifm-color-primary-darker: #1fa588; --ifm-color-primary-darker: #1A5276;
--ifm-color-primary-darkest: #1a8870; --ifm-color-primary-darkest: #154360;
--ifm-color-primary-light: #29d5b0; --ifm-color-primary-light: #2980B9;
--ifm-color-primary-lighter: #32d8b4; --ifm-color-primary-lighter: #5499C7;
--ifm-color-primary-lightest: #4fddbf; --ifm-color-primary-lightest: #7FB3D5;
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3);
} }

View File

@ -20,7 +20,7 @@ function HomepageHeader() {
<Link <Link
className="button button--secondary button--lg" className="button button--secondary button--lg"
to="/docs/intro"> to="/docs/intro">
Docusaurus Tutorial - 5min Let's get started
</Link> </Link>
</div> </div>
</div> </div>
@ -32,8 +32,8 @@ export default function Home(): JSX.Element {
const {siteConfig} = useDocusaurusContext(); const {siteConfig} = useDocusaurusContext();
return ( return (
<Layout <Layout
title={`Hello from ${siteConfig.title}`} title={`Home`}
description="Description will go into a meta tag in <head />"> description="The official website and documentation for Plex">
<HomepageHeader /> <HomepageHeader />
<main> <main>
<HomepageFeatures /> <HomepageFeatures />

42
static/egg-redis-7.json Normal file
View 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"
}
]
}

View 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

View 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

View 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

View 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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View 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

12776
yarn.lock Normal file

File diff suppressed because it is too large Load Diff