├── .gitignore ├── README.md ├── eula.txt ├── plugins ├── Essentials │ └── config.yml └── LuckPerms │ ├── config.yml │ └── luckperms-h2.mv.db └── startfiles ├── README.md ├── linux ├── README.md ├── restart.sh └── start.sh └── windows └── start.bat /.gitignore: -------------------------------------------------------------------------------- 1 | # Ignored MC Configs: 2 | 3 | *console_history* 4 | banned-ips.json 5 | banned-players.json 6 | bukkit.yml 7 | commands.yml 8 | help.yml 9 | ops.json 10 | paper.yml 11 | permissions.yml 12 | server.yml 13 | spigot.yml 14 | usercache.json 15 | version_history.json 16 | whitelist.json 17 | server.properties 18 | 19 | # Ignored JARs 20 | 21 | paper.jar 22 | plugins/EssentialsX*.jar 23 | plugins/LuckPerms*.jar 24 | plugins/Vault.jar 25 | 26 | # Ignored Directories 27 | 28 | cache/** 29 | logs/** 30 | world/** 31 | world_nether/** 32 | world_the_end/** 33 | 34 | # Specific Ignored Plugin Files 35 | 36 | plugins/bStats/** 37 | plugins/Vault/** 38 | 39 | plugins/Essentials/userdata/** 40 | plugins/Essentials/custom_items.yml 41 | plugins/Essentials/items.json 42 | plugins/Essentials/kits.yml 43 | plugins/Essentials/motd.txt 44 | plugins/Essentials/tpr.yml 45 | plugins/Essentials/upgrades-done.yml 46 | plugins/Essentials/usermap.* 47 | plugins/Essentials/worth.yml 48 | 49 | plugins/LuckPerms/libs/** 50 | plugins/LuckPerms/translations/** 51 | plugins/LuckPerms/contexts.json -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Syscraft Starter Server 2 | 3 | This is a repository that contains a basic Java Edition Minecraft server. The server here is *not* intended to be the next Hypixel out of the box, instead it should be seen as an easy way to get an up-to-date Minecraft server quickly, in order to play with some friends in a home-hosted or at least self-hosted environment. 4 | 5 | Since it's not intended to be fantastic or comprehensive, it contains just a few plugins: 6 | 7 | - LuckPerms 8 | - EssentialsX 9 | - EssentialsXAntiBuild 10 | - EssentialsXChat 11 | - Vault 12 | 13 | This is so that out-of-the-box, you get a basic permissions setup, the ability to use Essentials commands as the owner, and a cool prefix as a sort of showcase for what is possible. EssentialsXAntiBuild is included as an easy way to prevent anyone who just joins the server from interacting, as a form of security for those who do not enable the whitelist. **You must add players to the group *trusted* in order for them to build**. 14 | 15 | As always, for any help with or questions about the following, feel free to [join our Discord server](https://discord.gg/Dx6SSkx) and we'll do our best to give you a hand. 16 | 17 | ## How to Get Started 18 | 19 | At the moment, this example will be for users who want to run a small server on their own Windows machine. **Please have at least 4GB of usable RAM**. 20 | 21 | If you do not have Git installed, please do so before starting. [This is a tutorial for installing Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 22 | 23 | Ensure you have Java 16 or newer on the machine the server will be running on - there are multitudes of articles online for how to do this. 24 | 25 | 1. Open command prompt. This can be done by typing `cmd` into the Windows search bar, or several other methods which you can Google. 26 | 27 | 2. Navigate to the folder that you want the server's folder to be in. [This is a basic tutorial for navigating in the Windows Command Prompt](https://riptutorial.com/cmd/example/8646/navigating-in-cmd). 28 | 29 | 3. Run this command once you are at your destination: 30 | 31 | ``` 32 | git clone https://github.com/syscraft-mc/starter-server.git MCServer 33 | ``` 34 | 35 | 4. Now you have a folder called `MCServer` inside of the folder you navigated to earlier. Open the folder in Windows' File Explorer, open `eula.txt` in any text editor, and change `eula=false` to `eula=true`. Save the file and exit. 36 | > *Note: It's a good idea to read and understand the EULA if you haven't before!* 37 | 38 | 5. Go to https://papermc.io/downloads and download the latest build of PaperMC. Place it in the MCServer folder. **Rename it to `paper.jar`** 39 | 40 | 6. Go to https://essentialsx.net/downloads.html and download the following: 41 | 42 | - EssentialsX (Core) 43 | - EssentialsXChat 44 | - EssentialsXAntiBuild 45 | 46 | **Place the downloaded JARs in the `plugins` folder that is inside the MCServer folder.** 47 | 48 | > Note: EssentialsXAntibuild **prevents normal users from building anything by default** - this is why we have set up LuckPerms with a `trusted` group for you. Don't forget to read and follow this whole tutorial! 49 | 50 | 7. Go to https://luckperms.net/download and click on the download button labelled *Bukkit*. **Place the downloaded JAR inside the `plugins` folder that is inside the MCServer folder.** 51 | 52 | 8. Go to https://www.spigotmc.org/resources/vault.34315/ and click on the download button. **Place the downloaded JAR inside the `plugins` folder that is inside the MCServer folder.** 53 | 54 | 9. As we assume you are on Windows, go to the `startfiles` folder and move `start.bat` out of it and into the main directory. If you are not on Windows, take a look at the README in that folder for information on starting your server on a non-Windows system. 55 | 56 | 10. Double click on `start.bat` to start the server! It will take a few moments longer the first time you do it, as the server needs to create your worlds. 57 | 58 | > You can now connect to the server at the IP address of the machine running it - if it's your own computer, you can connect with the address `localhost`. 59 | 60 | 11. The server console should have appeared when you started the server. Once it's done starting up, you can input commands into it to tell the server what to do. For your first command, add yourself to the `owner` group using LuckPerms: 61 | 62 | ``` 63 | lp user parent add owner 64 | ``` 65 | 66 | > Don't worry about creating the group - that's already been done for you. If it says that a player cannot be found for your username, it's because you need to join the server at least once first! 67 | 68 | 11. Congratulations! You're the owner of a brand new server, and it's time to start playing or get your friends on! They can connect to the server at the IP address of the machine running it. If it's your own machine, and it's a personal computer on a home network, you may need to [port forward](#port-forwarding) it so others can connect. 69 | > Be careful, allowing public access to your home network and then sharing your public IP address with people you don't trust can be hazardous. If you're doing this, you should probably be using a professional hosting company or a machine dedicated to the task. 70 | 71 | ## Troubleshooting and FAQ 72 | 73 | ### The first time I start the server, I get a whole load of errors and cannot connect 74 | 75 | Please ensure that when you start the server, you have a connection to the Internet - it's required. 76 | 77 | If that isn't the problem, try deleting the directory with the server in it and following steps 3-7 again. 78 | 79 | Also ensure you have at least 4GB of usable RAM for the server. 80 | 81 | Should you still get errors the first time you start up the server, feel free to ask for help in the [Syscraft Discord](https://discord.gg/Dx6SSkx). 82 | 83 | ### My friends cannot connect to my server but I can using `localhost` 84 | 85 | Your friends, at least those that are not connected to your home internet network, will not be able to connect using `localhost` and will need to connect using the public IPv4 of your network. To find what that is, go to [this website](https://www.whatismyip.com/) on the computer running the server. 86 | 87 | If they still cannot connect, it is because you need to [port forward](#port-forwarding) your internal IPv4 and server port to your public IPv4. 88 | 89 | ### I get a CANNOT BIND TO PORT error 90 | 91 | This error is because you've got another Minecraft server running! Make sure to use the `stop` command to close your server before trying to start it up again! 92 | 93 | ### I port forwarded and it worked for a little while, but it doesn't work anymore 94 | 95 | This is most likely because you forgot to ensure that the internal IPv4 of your computer was *reserved*, *static*, or *bound*. The process for doing this is documented under step 4 of [port forwarding](#port-forwarding). 96 | 97 | ### I do not have permission to interact with anything 98 | 99 | This is because you have not given yourself permission to do so via LuckPerms, which is the permissions manager for your server. Both the premade `owner` and `trusted` groups have permission to do this, and to add someone to either of them simply run the following command in your Minecraft server's console: 100 | 101 | ``` 102 | lp user parent add trusted 103 | ``` 104 | 105 | > You can replace `trusted` in the above example with `owner` to add them to owner. For a very comprehensive wiki on the entire LuckPerms plugin, [click here](https://luckperms.net/wiki/Home). For support with the LuckPerms plugin, [join the discord here](https://discord.gg/luckperms). 106 | 107 | ## Port Forwarding 108 | 109 | Port forwarding is the process of telling your router that attempts to connect to your public IP address at port 25565 should be redirected (forwarded) to your single machine's local IP address at port 25565. Port 25565 is the port (kind of like the name of the door) behind which your Minecraft server is running and can be connected to. 110 | 111 | > Port forwarding is a highly varying process from router to router, and the basic processes here will look very different depending on who manufactured your particular router. That said, you will be able to find tons of information for your specific circumstances by using Google effectively - don't be afraid to Google things! 112 | 113 | The basic steps of port forwarding are: 114 | 115 | 1. Find your computer's internal IPv4 and default gateway. Open Windows Command Prompt and run `ipconfig`. The output will look something like this: 116 | ``` 117 | Connection-specific DNS Suffix . : sub.domain.net 118 | IPv6 Address. . . . . . . . . . . : 2614:3203:1c85:s542::h66 119 | IPv6 Address. . . . . . . . . . . : 2614:3203:1c85:s542:e6ha:ree:5901:6b53 120 | Temporary IPv6 Address. . . . . . : 2614:3203:1c85:s542:25f4:5217:601f:1jaa 121 | Link-local IPv6 Address . . . . . : ft30::13f5:15d:4513:8bf2%19 122 | IPv4 Address. . . . . . . . . . . : 10.0.0.69 123 | Subnet Mask . . . . . . . . . . . : 255.255.255.0 124 | Default Gateway . . . . . . . . . : ab91::213:64fg:aech:425y%19 125 | 10.0.0.1 126 | ``` 127 | > The line labelled `IPv4 Address` is your internal IPv4 address, and it usually looks like `10.0.0.#` or `192.168.#.#`. It will be different for everyone. The line labelled `Default Gateway` is your default gateway, in this case `10.0.0.1`. 128 | 129 | 2. Open a browser and in the address bar, enter your `Default Gateway` address. In this case, it is `10.0.0.1`. 130 | 131 | 3. Log in to your router's control panel. 132 | 133 | > The credentials for this will vary depending on the router and if you have changed it. Usually the default information is written somewhere on the router, and some routers have the ability to be reset to that default information via a physical button. 134 | 135 | 4. Ensure your internal IP is static/bound to your machine. Then: 136 | 137 | 1. Go to your router's list of connected devices (explore the control panel to find it) and locate the one which currently has your internal IPv4 as its IP address. 138 | 139 | 2. Find the button for editing or modifying the connection - sometimes this will be a gear, sometimes a button labelled `EDIT`, and sometimes the information to edit will be simply be displayed. 140 | 141 | 3. Click the `Bind` button, the `Reserve` button, or toggle your computer from DHCP to Reserved IP. Make sure the bound IP address is the one you found earlier, in step 1, and save the change. 142 | > If it's already bound or static, no need to change anything - take note of the IP address your device is bound to, as that's your internal IP. 143 | 144 | 5. Navigate to the `Port Forwarding` page. 145 | 146 | > Usually this is located under the `Advanced` section - do a little exploring if you can't find it! 147 | 148 | 6. Add a port forward. Your target/internal/inbound port will be `25565`, the outbound port will be `25565`, the IP address will be the *internal* IPv4 you found in step 1. There may be a protocol field - leave it if it says `TCP` or `TCP/UDP`, but make sure that `TCP` is part of the protocol. If possible `TCP/UDP` is a better choice than just `TCP`. 149 | 150 | 7. Save everything and give it a moment to apply - perhaps have a friend try to connect to your server using your *public* IPv4 to make sure everything works! 151 | 152 | ## What to do now? 153 | 154 | Now you have a fully functional Minecraft server! Feel free to play as you'd like with friends, or by yourself - it's your kingdom! 155 | 156 | You can add plugins to this server to change what you can do in it. Spigot plugins, Paper plugins, and any bukkit-based plugins will all work on your server. To add them, simply drag and drop the JAR file of the plugin you downloaded into the plugins folder. 157 | 158 | Most plugins require that you have *permissions* to do things with them. [This is a fantastic resource for understanding and setting up permissions](https://luckperms.net/wiki/Usage). [It also has documentation for prefixes, which are another concept you may want to get into](https://luckperms.net/wiki/Prefixes,-Suffixes-&-Meta). 159 | 160 | To add permissions to all of your trusted players, you simply look up what the permission is (this is usually found on the documentation website for the plugin), and add it with: 161 | 162 | ``` 163 | lp group trusted permission set 164 | ``` 165 | 166 | To add permissions to the owner only, perhaps to toggle things or take care of admin responsibilities, use: 167 | 168 | ``` 169 | lp group owner permission set 170 | ``` 171 | 172 | > Note: By default, Owner group has *all* permissions. This is because we've enable the **LuckPerms AutoOp** system for you and given Owner group the permission `luckperms.autoop`! This is very different from using the `*` permission, which means every permission as well but includes those permissions that plugin authors do not want people to have, even if they're OPped - things like permissions that prevent actions which OPs should be allowed to do. Never use the `*` on its own! 173 | 174 | If you ever want to expand and take your server public, it's best to use a professional hosting company - you can find providers that specialize in Minecraft servers specifically, or even ones that provide a machine (or virtual machine) that you can connect to and set up entirely on your own. 175 | 176 | > Note: Do not run a public Minecraft server on your home computer. Required uptimes, hardware failures, and most importantly, security, are all considerations that make it nearly always a bad decision. 177 | -------------------------------------------------------------------------------- /eula.txt: -------------------------------------------------------------------------------- 1 | #By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula). 2 | eula=false 3 | -------------------------------------------------------------------------------- /plugins/Essentials/config.yml: -------------------------------------------------------------------------------- 1 | ############################################################ 2 | # +------------------------------------------------------+ # 3 | # | Notes | # 4 | # +------------------------------------------------------+ # 5 | ############################################################ 6 | 7 | # This is the config file for EssentialsX. 8 | # This config was generated for version 2.19.0-dev+221-1556b91. 9 | 10 | # If you want to use special characters in this document, such as accented letters, you MUST save the file as UTF-8, not ANSI. 11 | # If you receive an error when Essentials loads, ensure that: 12 | # - No tabs are present: YAML only allows spaces 13 | # - Indents are correct: YAML hierarchy is based entirely on indentation 14 | # - You have "escaped" all apostrophes in your text: If you want to write "don't", for example, write "don''t" instead (note the doubled apostrophe) 15 | # - Text with symbols is enclosed in single or double quotation marks 16 | 17 | # If you need help, you can join the EssentialsX community: https://essentialsx.net/community.html 18 | 19 | ############################################################ 20 | # +------------------------------------------------------+ # 21 | # | Essentials (Global) | # 22 | # +------------------------------------------------------+ # 23 | ############################################################ 24 | 25 | # A color code between 0-9 or a-f. Set to 'none' to disable. 26 | # In 1.16+ you can use hex color codes here as well. (For example, #613e1d is brown). 27 | ops-name-color: 'none' 28 | 29 | # The character(s) to prefix all nicknames, so that you know they are not true usernames. 30 | nickname-prefix: '~' 31 | 32 | # The maximum length allowed in nicknames. The nickname prefix is included in this. 33 | max-nick-length: 15 34 | 35 | # A list of phrases that cannot be used in nicknames. You can include regular expressions here. 36 | # Users with essentials.nick.blacklist.bypass will be able to bypass this filter. 37 | nick-blacklist: 38 | #- Notch 39 | #- '^Dinnerbone' 40 | 41 | # When this option is enabled, nickname length checking will exclude color codes in player names. 42 | # ie: "&6Notch" has 7 characters (2 are part of a color code), a length of 5 is used when this option is set to true 43 | ignore-colors-in-max-nick-length: false 44 | 45 | # When this option is enabled, display names for hidden users will not be shown. This prevents players from being 46 | # able to see that they are online while vanished. 47 | hide-displayname-in-vanish: true 48 | 49 | # Disable this if you have any other plugin, that modifies the displayname of a user. 50 | change-displayname: true 51 | 52 | # When this option is enabled, the (tab) player list will be updated with the displayname. 53 | # The value of change-displayname (above) has to be true. 54 | #change-playerlist: true 55 | 56 | # When EssentialsChat.jar isn't used, force essentials to add the prefix and suffix from permission plugins to displayname. 57 | # This setting is ignored if EssentialsChat.jar is used, and defaults to 'true'. 58 | # The value of change-displayname (above) has to be true. 59 | # Do not edit this setting unless you know what you are doing! 60 | add-prefix-suffix: false 61 | 62 | # When this option is enabled, player prefixes will be shown in the playerlist. 63 | # This feature only works for Minecraft version 1.8 and higher. 64 | # This value of change-playerlist has to be true 65 | #add-prefix-in-playerlist: true 66 | 67 | # When this option is enabled, player suffixes will be shown in the playerlist. 68 | # This feature only works for Minecraft version 1.8 and higher. 69 | # This value of change-playerlist has to be true 70 | #add-suffix-in-playerlist: true 71 | 72 | # If the teleport destination is unsafe, should players be teleported to the nearest safe location? 73 | # If this is set to true, Essentials will attempt to teleport players close to the intended destination. 74 | # If this is set to false, attempted teleports to unsafe locations will be cancelled with a warning. 75 | teleport-safety: true 76 | 77 | # This forcefully disables teleport safety checks without a warning if attempting to teleport to unsafe locations. 78 | # teleport-safety and this option need to be set to true to force teleportation to dangerous locations. 79 | force-disable-teleport-safety: false 80 | 81 | # If a player is teleporting to an unsafe location in creative, adventure, or god mode; they will not be teleported to a 82 | # safe location. If you'd like players to be teleported to a safe location all of the time, set this option to true. 83 | force-safe-teleport-location: false 84 | 85 | # If a player has any passengers, the teleport will fail. Should their passengers be dismounted before they are teleported? 86 | # If this is set to true, Essentials will dismount the player's passengers before teleporting. 87 | # If this is set to false, attempted teleports will be canceled with a warning. 88 | teleport-passenger-dismount: true 89 | 90 | # The delay, in seconds, required between /home, /tp, etc. 91 | teleport-cooldown: 0 92 | 93 | # The delay, in seconds, before a user actually teleports. If the user moves or gets attacked in this timeframe, the teleport is cancelled. 94 | teleport-delay: 0 95 | 96 | # The delay, in seconds, a player can't be attacked by other players after they have been teleported by a command. 97 | # This will also prevent the player attacking other players. 98 | teleport-invulnerability: 4 99 | 100 | # Whether to make all teleportations go to the center of the block; where the x and z coordinates decimal become .5 101 | teleport-to-center: true 102 | 103 | # The delay, in seconds, required between /heal or /feed attempts. 104 | heal-cooldown: 60 105 | 106 | # Do you want to remove potion effects when healing a player? 107 | remove-effects-on-heal: true 108 | 109 | # Near Radius 110 | # The default radius with /near 111 | # Used to use chat radius but we are going to make it separate. 112 | near-radius: 200 113 | 114 | # What to prevent from /item and /give. 115 | # e.g item-spawn-blacklist: 10,11,46 116 | item-spawn-blacklist: 117 | 118 | # Set this to true if you want permission based item spawn rules. 119 | # Note: The blacklist above will be ignored then. 120 | # Example permissions (these go in your permissions manager): 121 | # - essentials.itemspawn.item-all 122 | # - essentials.itemspawn.item-[itemname] 123 | # - essentials.itemspawn.item-[itemid] 124 | # - essentials.give.item-all 125 | # - essentials.give.item-[itemname] 126 | # - essentials.give.item-[itemid] 127 | # - essentials.unlimited.item-all 128 | # - essentials.unlimited.item-[itemname] 129 | # - essentials.unlimited.item-[itemid] 130 | # - essentials.unlimited.item-bucket # Unlimited liquid placing 131 | # 132 | # For more information, visit http://wiki.ess3.net/wiki/Command_Reference/ICheat#Item.2FGive 133 | permission-based-item-spawn: false 134 | 135 | # Mob limit on the /spawnmob command per execution. 136 | spawnmob-limit: 10 137 | 138 | # Shall we notify users when using /lightning? 139 | warn-on-smite: true 140 | 141 | # Shall we drop items instead of adding to inventory if the target inventory is full? 142 | drop-items-if-full: false 143 | 144 | # Essentials Mail Notification 145 | # Should we notify players if they have no new mail? 146 | notify-no-new-mail: true 147 | 148 | # Specifies the duration (in seconds) between each time a player is notified of mail they have. 149 | # Useful for servers with a lot of mail traffic. 150 | notify-player-of-mail-cooldown: 60 151 | 152 | # The motd and rules are now configured in the files motd.txt and rules.txt. 153 | 154 | # When a command conflicts with another plugin, by default, Essentials will try to force the OTHER plugin to take priority. 155 | # Commands in this list, will tell Essentials to 'not give up' the command to other plugins. 156 | # In this state, which plugin 'wins' appears to be almost random. 157 | # 158 | # If you have two plugin with the same command and you wish to force Essentials to take over, you need an alias. 159 | # To force essentials to take 'god' alias 'god' to 'egod'. 160 | # See http://wiki.bukkit.org/Commands.yml#aliases for more information. 161 | 162 | overridden-commands: 163 | # - god 164 | # - info 165 | 166 | # Disabling commands here will prevent Essentials handling the command, this will not affect command conflicts. 167 | # You should not have to disable commands used in other plugins, they will automatically get priority. 168 | # See http://wiki.bukkit.org/Commands.yml#aliases to map commands to other plugins. 169 | disabled-commands: 170 | # - nick 171 | # - clear 172 | 173 | # These commands will be shown to players with socialSpy enabled. 174 | # You can add commands from other plugins you may want to track or 175 | # remove commands that are used for something you dont want to spy on. 176 | # Set - '*' in order to listen on all possible commands. 177 | socialspy-commands: 178 | - msg 179 | - w 180 | - r 181 | - mail 182 | - m 183 | - t 184 | - whisper 185 | - emsg 186 | - tell 187 | - er 188 | - reply 189 | - ereply 190 | - email 191 | - action 192 | - describe 193 | - eme 194 | - eaction 195 | - edescribe 196 | - etell 197 | - ewhisper 198 | - pm 199 | 200 | # Whether the private and public messages from muted players should appear in the social spy. 201 | # If so, they will be differentiated from those sent by normal players. 202 | socialspy-listen-muted-players: true 203 | 204 | # Whether social spy should spy on private messages or just the commands from the list above. 205 | # If false, social spy will only monitor commands from the list above. 206 | socialspy-messages: true 207 | 208 | # The following settings listen for when a player changes worlds. 209 | # If you use another plugin to control speed and flight, you should change these to false. 210 | 211 | # When a player changes world, should EssentialsX reset their flight? 212 | # This will disable flight if the player does not have essentials.fly. 213 | world-change-fly-reset: true 214 | 215 | # When a player changes world, should we reset their speed according to their permissions? 216 | # This resets the player's speed to the default if they don't have essentials.speed. 217 | # If the player doesn't have essentials.speed.bypass, this resets their speed to the maximum specified above. 218 | world-change-speed-reset: true 219 | 220 | # Mute Commands 221 | # These commands will be disabled when a player is muted. 222 | # Use '*' to disable every command. 223 | # Essentials already disabled Essentials messaging commands by default. 224 | # It only cares about the root command, not args after that (it sees /f chat the same as /f) 225 | mute-commands: 226 | - f 227 | - kittycannon 228 | # - '*' 229 | 230 | # If you do not wish to use a permission system, you can define a list of 'player perms' below. 231 | # This list has no effect if you are using a supported permissions system. 232 | # If you are using an unsupported permissions system, simply delete this section. 233 | # Whitelist the commands and permissions you wish to give players by default (everything else is op only). 234 | # These are the permissions without the "essentials." part. 235 | # 236 | # To enable this feature, please set use-bukkit-permissions to false. 237 | player-commands: 238 | - afk 239 | - afk.auto 240 | - back 241 | - back.ondeath 242 | - balance 243 | - balance.others 244 | - balancetop 245 | - build 246 | - chat.color 247 | - chat.format 248 | - chat.shout 249 | - chat.question 250 | - clearinventory 251 | - compass 252 | - depth 253 | - delhome 254 | - getpos 255 | - geoip.show 256 | - help 257 | - helpop 258 | - home 259 | - home.others 260 | - ignore 261 | - info 262 | - itemdb 263 | - kit 264 | - kits.tools 265 | - list 266 | - mail 267 | - mail.send 268 | - me 269 | - motd 270 | - msg 271 | - msg.color 272 | - nick 273 | - near 274 | - pay 275 | - ping 276 | - protect 277 | - r 278 | - rules 279 | - realname 280 | - seen 281 | - sell 282 | - sethome 283 | - setxmpp 284 | - signs.create.protection 285 | - signs.create.trade 286 | - signs.break.protection 287 | - signs.break.trade 288 | - signs.use.balance 289 | - signs.use.buy 290 | - signs.use.disposal 291 | - signs.use.enchant 292 | - signs.use.free 293 | - signs.use.gamemode 294 | - signs.use.heal 295 | - signs.use.info 296 | - signs.use.kit 297 | - signs.use.mail 298 | - signs.use.protection 299 | - signs.use.repair 300 | - signs.use.sell 301 | - signs.use.time 302 | - signs.use.trade 303 | - signs.use.warp 304 | - signs.use.weather 305 | - spawn 306 | - suicide 307 | - time 308 | - tpa 309 | - tpaccept 310 | - tpahere 311 | - tpdeny 312 | - warp 313 | - warp.list 314 | - world 315 | - worth 316 | - xmpp 317 | 318 | # Use this option to force superperms-based permissions handler regardless of detected installed perms plugin. 319 | # This is useful if you want superperms-based permissions (with wildcards) for custom permissions plugins. 320 | # If you wish to use EssentialsX's built-in permissions using the `player-commands` section above, set this to false. 321 | # Default is true. 322 | use-bukkit-permissions: true 323 | 324 | # When this option is enabled, one-time use kits (ie. delay < 0) will be 325 | # removed from the /kit list when a player can no longer use it 326 | skip-used-one-time-kits-from-kit-list: false 327 | 328 | # When enabled, armor from kits will automatically be equipped as long as the player's armor slots are empty. 329 | kit-auto-equip: false 330 | 331 | # Determines the functionality of the /createkit command. 332 | # If this is true, /createkit will give the user a link with the kit code. 333 | # If this is false, /createkit will add the kit to the kits.yml config file directly. 334 | # Default is false. 335 | pastebin-createkit: false 336 | 337 | # Determines if /createkit will generate kits using NBT item serialization. 338 | # If this is true, /createkit will store items as NBT; otherwise, it will use Essentials' human-readable item format. 339 | # By using NBT serialization, /createkit can store items with complex metadata such as shulker boxes and weapons with custom attributes. 340 | # WARNING: This option only works on 1.15.2+ Paper servers, and it will bypass any custom serializers from other plugins such as Magic. 341 | # WARNING: When creating kits via /createkit with this option enabled, you will not be able to downgrade your server with these kit items. 342 | # This option only affects /createkit - you can still create kits by hand in `kits.yml` using Essentials' human-readable item format. 343 | # Default is false. 344 | use-nbt-serialization-in-createkit: false 345 | 346 | # Essentials Sign Control 347 | # See http://wiki.ess3.net/wiki/Sign_Tutorial for instructions on how to use these. 348 | # To enable signs, remove # symbol. To disable all signs, comment/remove each sign. 349 | # Essentials colored sign support will be enabled when any sign types are enabled. 350 | # Color is not an actual sign, it's for enabling using color codes on signs, when the correct permissions are given. 351 | 352 | enabledSigns: 353 | #- color 354 | #- balance 355 | #- buy 356 | #- sell 357 | #- trade 358 | #- free 359 | #- warp 360 | #- kit 361 | #- mail 362 | #- enchant 363 | #- gamemode 364 | #- heal 365 | #- info 366 | #- spawnmob 367 | #- repair 368 | #- time 369 | #- weather 370 | #- anvil 371 | #- cartography 372 | #- disposal 373 | #- grindstone 374 | #- loom 375 | #- smithing 376 | #- workbench 377 | 378 | # How many times per second can Essentials signs be interacted with per player. 379 | # Values should be between 1-20, 20 being virtually no lag protection. 380 | # Lower numbers will reduce the possibility of lag, but may annoy players. 381 | sign-use-per-second: 4 382 | 383 | # Allow item IDs on pre-existing signs on 1.13 and above. 384 | # You cannot use item IDs on new signs, but this will allow players to interact with signs that 385 | # were placed before 1.13. 386 | allow-old-id-signs: false 387 | 388 | # List of sign names Essentials should not protect. This feature is especially useful when 389 | # another plugin provides a sign that EssentialsX provides, but Essentials overrides. 390 | # For example, if a plugin provides a [kit] sign, and you wish to use theirs instead of 391 | # Essentials's, then simply add kit below and Essentials will not protect it. 392 | # 393 | # See https://github.com/drtshock/Essentials/pull/699 for more information. 394 | unprotected-sign-names: 395 | #- kit 396 | 397 | # Backup runs a custom batch/bash command at a specified interval. 398 | # The server will save the world before executing the backup command, and disable 399 | # saving during the backup to prevent world corruption or other conflicts. 400 | # Backups can also be triggered manually with /backup. 401 | backup: 402 | # Interval in minutes. 403 | interval: 30 404 | # If true, the backup task will run even if there are no players online. 405 | always-run: false 406 | # Unless you add a valid backup command or script here, this feature will be useless. 407 | # Use 'save-all' to simply force regular world saving without backup. 408 | # The example command below utilizes rdiff-backup: https://rdiff-backup.net/ 409 | #command: 'rdiff-backup World1 backups/World1' 410 | 411 | # Set this true to enable permission per warp. 412 | per-warp-permission: false 413 | 414 | # Sort output of /list command by groups. 415 | # You can hide and merge the groups displayed in /list by defining the desired behaviour here. 416 | # Detailed instructions and examples can be found on the wiki: http://wiki.ess3.net/wiki/List 417 | list: 418 | # To merge groups, list the groups you wish to merge 419 | #Staff: owner admin moderator 420 | Admins: owner admin 421 | # To limit groups, set a max user limit 422 | #builder: 20 423 | # To hide groups, set the group as hidden 424 | #default: hidden 425 | # Uncomment the line below to simply list all players with no grouping 426 | #Players: '*' 427 | 428 | # Displays real names in /list next to players who are using a nickname. 429 | real-names-on-list: false 430 | 431 | # More output to the console. 432 | debug: false 433 | 434 | # Set the locale for all messages. 435 | # If you don't set this, the default locale of the server will be used. 436 | # For example, to set language to English, set locale to en, to use the file "messages_en.properties". 437 | # Don't forget to remove the # in front of the line. 438 | # For more information, visit http://wiki.ess3.net/wiki/Locale 439 | #locale: en 440 | 441 | # Turn off god mode when people leave the server. 442 | remove-god-on-disconnect: false 443 | 444 | # Auto-AFK 445 | # After this timeout in seconds, the user will be set as AFK. 446 | # This feature requires the player to have essentials.afk.auto node. 447 | # Set to -1 for no timeout. 448 | auto-afk: 300 449 | 450 | # Auto-AFK Kick 451 | # After this timeout in seconds, the user will be kicked from the server. 452 | # essentials.afk.kickexempt node overrides this feature. 453 | # Set to -1 for no timeout. 454 | auto-afk-kick: -1 455 | 456 | # Set this to true, if you want to freeze the player, if the player is AFK. 457 | # Other players or monsters can't push the player out of AFK mode then. 458 | # This will also enable temporary god mode for the AFK player. 459 | # The player has to use the command /afk to leave the AFK mode. 460 | freeze-afk-players: false 461 | 462 | # When the player is AFK, should he be able to pickup items? 463 | # Enable this, when you don't want people idling in mob traps. 464 | disable-item-pickup-while-afk: false 465 | 466 | # This setting controls if a player is marked as active on interaction. 467 | # When this setting is false, the player would need to manually un-AFK using the /afk command. 468 | cancel-afk-on-interact: true 469 | 470 | # Should we automatically remove afk status when a player moves? 471 | # Player will be removed from AFK on chat/command regardless of this setting. 472 | # Disable this to reduce server lag. 473 | cancel-afk-on-move: true 474 | 475 | # Should we automatically remove afk status when a player sends a chat message? 476 | cancel-afk-on-chat: true 477 | 478 | # Should AFK players be ignored when other players are trying to sleep? 479 | # When this setting is false, players won't be able to skip the night if some players are AFK. 480 | # Users with the permission node essentials.sleepingignored will always be ignored. 481 | sleep-ignores-afk-players: true 482 | 483 | # Should vanished players be ignored when other players are trying to sleep? 484 | # When this setting is false, player's won't be able to skip the night if vanished players are not sleeping. 485 | # Users with the permission node essentials.sleepingignored will always be ignored. 486 | sleep-ignores-vanished-player: true 487 | 488 | # Set the player's list name when they are AFK. This is none by default which specifies that Essentials 489 | # should not interfere with the AFK player's list name. 490 | # You may use color codes, use {USERNAME} the player's name or {PLAYER} for the player's displayname. 491 | afk-list-name: "none" 492 | 493 | # When a player enters or exits AFK mode, should the AFK notification be broadcast 494 | # to the entire server, or just to the player? 495 | # When this setting is false, only the player will be notified upon changing their AFK state. 496 | broadcast-afk-message: true 497 | 498 | # You can disable the death messages of Minecraft here. 499 | death-messages: true 500 | 501 | # How should essentials handle players with the essentials.keepinv permission who have items with 502 | # curse of vanishing when they die? 503 | # You can set this to "keep" (to keep the item), "drop" (to drop the item), or "delete" (to delete the item). 504 | # Defaults to "keep" 505 | vanishing-items-policy: keep 506 | 507 | # How should essentials handle players with the essentials.keepinv permission who have items with 508 | # curse of binding when they die? 509 | # You can set this to "keep" (to keep the item), "drop" (to drop the item), or "delete" (to delete the item). 510 | # Defaults to "keep" 511 | binding-items-policy: keep 512 | 513 | # When players die, should they receive the coordinates they died at? 514 | send-info-after-death: false 515 | 516 | # Should players with permissions be able to join and part silently? 517 | # You can control this with essentials.silentjoin and essentials.silentquit permissions if it is enabled. 518 | # In addition, people with essentials.silentjoin.vanish will be vanished on join. 519 | allow-silent-join-quit: false 520 | 521 | # You can set custom join and quit messages here. Set this to "none" to use the default Minecraft message, 522 | # or set this to "" to hide the message entirely. 523 | 524 | # Available placeholders: 525 | # {PLAYER} - The player's displayname. 526 | # {USERNAME} - The player's username. 527 | # {PREFIX} - The player's prefix. 528 | # {SUFFIX} - The player's suffix. 529 | # {ONLINE} - The number of players online. 530 | # {UNIQUE} - The number of unique players to join the server. 531 | # {UPTIME} - The amount of time the server has been online. 532 | custom-join-message: "none" 533 | custom-quit-message: "none" 534 | 535 | # You can set a custom join message for users who join with a new username here. 536 | # This message will only be used if a user has joined before and have since changed their username. 537 | # This will be displayed INSTEAD OF custom-join-message, so if you intend to keep them similar, make sure they match. 538 | # Set this to "none" to use the the "custom-join-message" above for every join. 539 | 540 | # Available placeholders: 541 | # {PLAYER} - The player's displayname. 542 | # {USERNAME} - The player's username. 543 | # {OLDUSERNAME} - The player's old username. 544 | # {PREFIX} - The player's prefix. 545 | # {SUFFIX} - The player's suffix. 546 | # {ONLINE} - The number of players online. 547 | # {UNIQUE} - The number of unique players to join the server. 548 | # {UPTIME} - The amount of time the server has been online. 549 | custom-new-username-message: "none" 550 | 551 | # Should Essentials override the vanilla "Server Full" message with its own from the language file? 552 | # Set to false to keep the vanilla message. 553 | use-custom-server-full-message: true 554 | 555 | # You can disable join and quit messages when the player count reaches a certain limit. 556 | # When the player count is below this number, join/quit messages will always be shown. 557 | # Set this to -1 to always show join and quit messages regardless of player count. 558 | hide-join-quit-messages-above: -1 559 | 560 | # Add worlds to this list, if you want to automatically disable god mode there. 561 | no-god-in-worlds: 562 | # - world_nether 563 | 564 | # Set to true to enable per-world permissions for teleporting between worlds with essentials commands. 565 | # This applies to /world, /back, /tp[a|o][here|all], but not warps. 566 | # Give someone permission to teleport to a world with essentials.worlds. 567 | # This does not affect the /home command, there is a separate toggle below for this. 568 | world-teleport-permissions: false 569 | 570 | # The number of items given if the quantity parameter is left out in /item or /give. 571 | # If this number is below 1, the maximum stack size size is given. If over-sized stacks. 572 | # are not enabled, any number higher than the maximum stack size results in more than one stack. 573 | default-stack-size: -1 574 | 575 | # Over-sized stacks are stacks that ignore the normal max stack size. 576 | # They can be obtained using /give and /item, if the player has essentials.oversizedstacks permission. 577 | # How many items should be in an over-sized stack? 578 | oversized-stacksize: 64 579 | 580 | # Allow repair of enchanted weapons and armor. 581 | # If you set this to false, you can still allow it for certain players using the permission. 582 | # essentials.repair.enchanted 583 | repair-enchanted: true 584 | 585 | # Allow 'unsafe' enchantments in kits and item spawning. 586 | # Warning: Mixing and overleveling some enchantments can cause issues with clients, servers and plugins. 587 | unsafe-enchantments: false 588 | 589 | #Do you want Essentials to keep track of previous location for /back in the teleport listener? 590 | #If you set this to true any plugin that uses teleport will have the previous location registered. 591 | register-back-in-listener: false 592 | 593 | #Delay to wait before people can cause attack damage after logging in. 594 | login-attack-delay: 5 595 | 596 | #Set the max fly speed, values range from 0.1 to 1.0 597 | max-fly-speed: 0.8 598 | 599 | #Set the max walk speed, values range from 0.1 to 1.0 600 | max-walk-speed: 0.8 601 | 602 | #Set the maximum amount of mail that can be sent within a minute. 603 | mails-per-minute: 1000 604 | 605 | # Set the maximum time /mute can be used for in seconds. 606 | # Set to -1 to disable, and essentials.mute.unlimited can be used to override. 607 | max-mute-time: -1 608 | 609 | # Set the maximum time /tempban can be used for in seconds. 610 | # Set to -1 to disable, and essentials.tempban.unlimited can be used to override. 611 | max-tempban-time: -1 612 | 613 | # Changes the default /reply functionality. This can be changed on a per-player basis using /rtoggle. 614 | # If true, /r goes to the person you messaged last, otherwise the first person that messaged you. 615 | # If false, /r goes to the last person that messaged you. 616 | last-message-reply-recipient: true 617 | 618 | # If last-message-reply-recipient is enabled for a particular player, 619 | # this specifies the duration, in seconds, that would need to elapse for the 620 | # reply-recipient to update when receiving a message. 621 | # Default is 180 (3 minutes) 622 | last-message-reply-recipient-timeout: 180 623 | 624 | # Changes the default /reply functionality. 625 | # If true, /reply will not check if the person you're replying to has vanished. 626 | # If false, players will not be able to /reply to players who they can no longer see due to vanish. 627 | last-message-reply-vanished: false 628 | 629 | # Toggles whether or not left clicking mobs with a milk bucket turns them into a baby. 630 | milk-bucket-easter-egg: true 631 | 632 | # Toggles whether or not the fly status message should be sent to players on join 633 | send-fly-enable-on-join: true 634 | 635 | # Set to true to enable per-world permissions for setting time for individual worlds with essentials commands. 636 | # This applies to /time, /day, /eday, /night, /enight, /etime. 637 | # Give someone permission to teleport to a world with essentials.time.world.. 638 | world-time-permissions: false 639 | 640 | # Specify cooldown for both Essentials commands and external commands as well. 641 | # All commands do not start with a Forward Slash (/). Instead of /msg, write msg 642 | # 643 | # Wildcards are supported. E.g. 644 | # - '*i*': 50 645 | # adds a 50 second cooldown to all commands that include the letter i 646 | # 647 | # EssentialsX supports regex by starting the command with a caret ^ 648 | # For example, to target commands starting with ban and not banip the following would be used: 649 | # '^ban([^ip])( .*)?': 60 # 60 seconds /ban cooldown. 650 | # Note: If you have a command that starts with ^, then you can escape it using backslash (\). e.g. \^command: 123 651 | command-cooldowns: 652 | # feed: 100 # 100 second cooldown on /feed command 653 | # '*': 5 # 5 Second cooldown on all commands 654 | 655 | # Whether command cooldowns should be persistent past server shutdowns 656 | command-cooldown-persistence: true 657 | 658 | # Whether NPC balances should be listed in balance ranking features such as /balancetop. 659 | # NPC balances can include features like factions from FactionsUUID plugin. 660 | npcs-in-balance-ranking: false 661 | 662 | # Allow bulk buying and selling signs when the player is sneaking. 663 | # This is useful when a sign sells or buys one item at a time and the player wants to sell a bunch at once. 664 | allow-bulk-buy-sell: true 665 | 666 | # Allow selling of items with custom names with the /sell command. 667 | # This may be useful to prevent players accidentally selling named items. 668 | allow-selling-named-items: false 669 | 670 | # Delay for the MOTD display for players on join, in milliseconds. 671 | # This has no effect if the MOTD command or permission are disabled. 672 | delay-motd: 0 673 | 674 | # A list of commands that should have their complementary confirm commands enabled by default. 675 | # This is empty by default, for the latest list of valid commands see the latest source config.yml. 676 | default-enabled-confirm-commands: 677 | #- pay 678 | #- clearinventory 679 | 680 | # Where should Essentials teleport players when they are freed from jail? 681 | # You can set to "back" to have them teleported to where they were before they were jailed, "spawn" to have them 682 | # teleport to spawn, or "off" to not have them teleport. 683 | teleport-when-freed: back 684 | 685 | # Whether or not jail time should only be counted while the user is online. 686 | # If true, a jailed player's time will only decrement when they are online. 687 | jail-online-time: false 688 | 689 | # Set the timeout, in seconds for players to accept a tpa before the request is cancelled. 690 | # Set to 0 for no timeout. 691 | tpa-accept-cancellation: 120 692 | 693 | # Allow players to set hats by clicking on their helmet slot. 694 | allow-direct-hat: true 695 | 696 | # Allow in-game players to specify a world when running /broadcastworld. 697 | # If false, running /broadcastworld in-game will always send a message to the player's current world. 698 | # This doesn't affect running the command from the console, where a world is always required. 699 | allow-world-in-broadcastworld: true 700 | 701 | # Consider water blocks as "safe," therefore allowing players to teleport 702 | # using commands such as /home or /spawn to a location that is occupied 703 | # by water blocks 704 | is-water-safe: false 705 | 706 | # Should the usermap try to sanitise usernames before saving them? 707 | # You should only change this to false if you use Minecraft China. 708 | safe-usermap-names: true 709 | 710 | # Should Essentials output logs when a command block executes a command? 711 | # Example: CommandBlock at ,, issued server command: / 712 | log-command-block-commands: true 713 | 714 | # Set the maximum speed for projectiles spawned with /fireball. 715 | max-projectile-speed: 8 716 | 717 | # Should EssentialsX check for updates? 718 | # If set to true, EssentialsX will show notifications when a new version is available. 719 | # This uses the public GitHub API and no identifying information is sent or stored. 720 | update-check: true 721 | 722 | ############################################################ 723 | # +------------------------------------------------------+ # 724 | # | Homes | # 725 | # +------------------------------------------------------+ # 726 | ############################################################ 727 | 728 | # Allows people to set their bed during the day. 729 | # This setting has no effect in Minecraft 1.15+, as Minecraft will always allow the player to set their bed location during the day. 730 | update-bed-at-daytime: true 731 | 732 | # Set to true to enable per-world permissions for using homes to teleport between worlds. 733 | # This applies to the /home command only. 734 | # Give someone permission to teleport to a world with essentials.worlds. 735 | world-home-permissions: false 736 | 737 | # Allow players to have multiple homes. 738 | # Players need essentials.sethome.multiple before they can have more than 1 home. 739 | # You can set the default number of multiple homes using the 'default' rank below. 740 | # To remove the home limit entirely, give people 'essentials.sethome.multiple.unlimited'. 741 | # To grant different home amounts to different people, you need to define a 'home-rank' below. 742 | # Create the 'home-rank' below, and give the matching permission: essentials.sethome.multiple. 743 | # For more information, visit http://wiki.ess3.net/wiki/Multihome 744 | sethome-multiple: 745 | default: 3 746 | vip: 5 747 | staff: 10 748 | 749 | # In this example someone with 'essentials.sethome.multiple' and 'essentials.sethome.multiple.vip' will have 5 homes. 750 | # Remember, they MUST have both permission nodes in order to be able to set multiple homes. 751 | 752 | # Controls whether players need the permission "essentials.home.compass" in order to point 753 | # the player's compass at their first home. 754 | # 755 | # Leaving this as false will retain Essentials' original behaviour, which is to always 756 | # change the compass' direction to point towards their first home. 757 | compass-towards-home-perm: false 758 | 759 | # If no home is set, would you like to send the player to spawn? 760 | # If set to false, players will not be teleported when they run /home without setting a home first. 761 | spawn-if-no-home: true 762 | 763 | # Should players be asked to provide confirmation for homes which they attempt to overwrite? 764 | confirm-home-overwrite: false 765 | 766 | ############################################################ 767 | # +------------------------------------------------------+ # 768 | # | Economy | # 769 | # +------------------------------------------------------+ # 770 | ############################################################ 771 | 772 | # For more information, visit http://wiki.ess3.net/wiki/Essentials_Economy 773 | 774 | # You can control the values of items that are sold to the server by using the /setworth command. 775 | 776 | # Defines the balance with which new players begin. Defaults to 0. 777 | starting-balance: 0 778 | 779 | # Defines the cost to use the given commands PER USE. 780 | # Some commands like /repair have sub-costs, check the wiki for more information. 781 | command-costs: 782 | # /example costs $1000 PER USE 783 | #example: 1000 784 | # /kit tools costs $1500 PER USE 785 | #kit-tools: 1500 786 | 787 | # Set this to a currency symbol you want to use. 788 | # Remember, if you want to use special characters in this document, 789 | # such as accented letters, you MUST save the file as UTF-8, not ANSI. 790 | currency-symbol: '$' 791 | 792 | # Enable this to make the currency symbol appear at the end of the amount rather than at the start. 793 | # For example, the euro symbol typically appears after the current amount. 794 | currency-symbol-suffix: false 795 | 796 | # Set the maximum amount of money a player can have. 797 | # The amount is always limited to 10 trillion because of the limitations of a java double. 798 | max-money: 10000000000000 799 | 800 | # Set the minimum amount of money a player can have (must be above the negative of max-money). 801 | # Setting this to 0, will disable overdrafts/loans completely. Users need 'essentials.eco.loan' perm to go below 0. 802 | min-money: -10000 803 | 804 | # Enable this to log all interactions with trade/buy/sell signs and sell command. 805 | economy-log-enabled: false 806 | 807 | # Enable this to also log all transactions from other plugins through Vault. 808 | # This can cause the economy log to fill up quickly so should only be enabled for testing purposes! 809 | economy-log-update-enabled: false 810 | 811 | # Minimum acceptable amount to be used in /pay. 812 | minimum-pay-amount: 0.001 813 | 814 | # Enable this to block users who try to /pay another user which ignore them. 815 | pay-excludes-ignore-list: false 816 | 817 | # Whether or not users with a balance less than or equal to $0 should be shown in balance-top. 818 | # Setting to false will not show people with balances <= 0 in balance-top. 819 | # NOTE: After reloading the config, you must also run '/baltop force' for this to appear 820 | show-zero-baltop: true 821 | 822 | # The format of currency, excluding symbols. See currency-symbol-format-locale for symbol configuration. 823 | # 824 | # "#,##0.00" is how the majority of countries display currency. 825 | #currency-format: "#,##0.00" 826 | 827 | # Format currency symbols. Some locales use , and . interchangeably. 828 | # Some formats do not display properly in-game due to faulty Minecraft font rendering. 829 | # 830 | # For 1.234,50 use de-DE 831 | # For 1,234.50 use en-US 832 | # For 1'234,50 use fr-ch 833 | #currency-symbol-format-locale: en-US 834 | 835 | ############################################################ 836 | # +------------------------------------------------------+ # 837 | # | Help | # 838 | # +------------------------------------------------------+ # 839 | ############################################################ 840 | 841 | # Show other plugins commands in help. 842 | non-ess-in-help: true 843 | 844 | # Hide plugins which do not give a permission. 845 | # You can override a true value here for a single plugin by adding a permission to a user/group. 846 | # The individual permission is: essentials.help., anyone with essentials.* or '*' will see all help regardless. 847 | # You can use negative permissions to remove access to just a single plugins help if the following is enabled. 848 | hide-permissionless-help: true 849 | 850 | ############################################################ 851 | # +------------------------------------------------------+ # 852 | # | EssentialsX Chat | # 853 | # +------------------------------------------------------+ # 854 | ############################################################ 855 | 856 | # You need to install EssentialsX Chat for this section to work. 857 | # See https://essentialsx.net/wiki/Module-Breakdown.html for more information. 858 | 859 | chat: 860 | 861 | # If EssentialsX Chat is installed, this will define how far a player's voice travels, in blocks. Set to 0 to make all chat global. 862 | # Note that users with the "essentials.chat.spy" permission will hear everything, regardless of this setting. 863 | # Users with essentials.chat.shout can override this by prefixing their message with an exclamation mark (!) 864 | # Users with essentials.chat.question can override this by prefixing their message with a question mark (?) 865 | # You can add command costs for shout/question by adding chat-shout and chat-question to the command costs section. 866 | radius: 0 867 | 868 | # Chat formatting can be done in two ways, you can either define a standard format for all chat. 869 | # Or you can give a group specific chat format, to give some extra variation. 870 | # For more information of chat formatting, check out the wiki: http://wiki.ess3.net/wiki/Chat_Formatting 871 | # Note: Using the {PREFIX} and {SUFFIX} placeholders along with {DISPLAYNAME} may cause double prefixes/suffixes to be shown in chat unless add-prefix-suffix is uncommented and set to false. 872 | 873 | # Available placeholders: 874 | # {MESSAGE} - The content of the chat message. 875 | # {USERNAME} - The sender's username. 876 | # {DISPLAYNAME} - The sender's display name. 877 | # {NICKNAME} - The sender's Essentials nickname. If the sender has no nickname, the username is shown. 878 | # {PREFIX} - The sender's prefix, supplied by a permissions plugin. 879 | # {SUFFIX} - The sender's suffix, supplied by a permissions plugin. 880 | # {GROUP} - The sender's primary group name, supplied by a permissions plugin. 881 | # {WORLD} - The world alias of the sender's current world. See the world-aliases section below for details. 882 | # {WORLDNAME} - The full name of the sender's current world. 883 | # {SHORTWORLDNAME} - The first character of the sender's current world. 884 | # {TEAMNAME} - The sender's scoreboard team name. 885 | # {TEAMPREFIX} - The sender's scoreboard team prefix. 886 | # {TEAMSUFFIX} - The sender's scoreboard team suffix. 887 | 888 | format: '{PREFIX}{DISPLAYNAME}{SUFFIX}: {MESSAGE}' 889 | #format: '&7[{GROUP}]&r {DISPLAYNAME}&7:&r {MESSAGE}' 890 | #format: '&7{PREFIX}&r {DISPLAYNAME}&r &7{SUFFIX}&r: {MESSAGE}' 891 | 892 | group-formats: 893 | # default: '{WORLDNAME} {DISPLAYNAME}&7:&r {MESSAGE}' 894 | # admins: '{WORLDNAME} &c[{GROUP}]&r {DISPLAYNAME}&7:&c {MESSAGE}' 895 | 896 | # If you are using group formats make sure to remove the '#' to allow the setting to be read. 897 | # Note: Group names are case-sensitive so you must match them up with your permission plugin. 898 | 899 | # You can use permissions to control whether players can use formatting codes in their chat messages. 900 | # See https://essentialsx.net/wiki/Color-Permissions.html for more information. 901 | 902 | # World aliases allow you to replace the world name with something different in the chat format. 903 | # If you are using world aliases, make sure to remove the '#' at the start to allow the setting to be read. 904 | world-aliases: 905 | # plots: "&dP&r" 906 | # creative: "&eC&r" 907 | 908 | ############################################################ 909 | # +------------------------------------------------------+ # 910 | # | EssentialsX Protect | # 911 | # +------------------------------------------------------+ # 912 | ############################################################ 913 | 914 | # You need to install EssentialsX Protect for this section to work. 915 | # See https://essentialsx.net/wiki/Module-Breakdown.html for more information. 916 | 917 | protect: 918 | 919 | # General physics/behavior modifications. Set these to true to disable behaviours. 920 | prevent: 921 | lava-flow: false 922 | water-flow: false 923 | water-bucket-flow: false 924 | fire-spread: true 925 | lava-fire-spread: true 926 | lava-itemdamage: false 927 | flint-fire: false 928 | lightning-fire-spread: true 929 | portal-creation: false 930 | tnt-explosion: false 931 | tnt-playerdamage: false 932 | tnt-itemdamage: false 933 | tnt-minecart-explosion: false 934 | tnt-minecart-playerdamage: false 935 | tnt-minecart-itemdamage: false 936 | fireball-explosion: false 937 | fireball-fire: false 938 | fireball-playerdamage: false 939 | fireball-itemdamage: false 940 | witherskull-explosion: false 941 | witherskull-playerdamage: false 942 | witherskull-itemdamage: false 943 | wither-spawnexplosion: false 944 | wither-blockreplace: false 945 | creeper-explosion: false 946 | creeper-playerdamage: false 947 | creeper-itemdamage: false 948 | creeper-blockdamage: false 949 | ender-crystal-explosion: false 950 | enderdragon-blockdamage: true 951 | enderman-pickup: false 952 | villager-death: false 953 | bed-explosion: false 954 | respawn-anchor-explosion: false 955 | # Monsters won't follow players. 956 | # permission essentials.protect.entitytarget.bypass disables this. 957 | entitytarget: false 958 | # Prevents zombies from breaking down doors 959 | zombie-door-break: false 960 | # Prevents Ravagers from stealing blocks 961 | ravager-thief: false 962 | # Prevents sheep from turning grass to dirt 963 | sheep-eat-grass: false 964 | # Prevent certain transformations. 965 | transformation: 966 | # Prevent creepers becoming charged when struck by lightning. 967 | charged-creeper: false 968 | # Prevent villagers becoming zombie villagers. 969 | zombie-villager: false 970 | # Prevent zombie villagers being cured. 971 | villager: false 972 | # Prevent villagers becoming witches when struck by lightning. 973 | witch: false 974 | # Prevent pigs becoming zombie pigmen when struck by lightning. 975 | zombie-pigman: false 976 | # Prevent zombies turning into drowneds, and husks turning into zombies. 977 | drowned: false 978 | # Prevent mooshrooms changing colour when struck by lightning. 979 | mooshroom: false 980 | # Prevent the spawning of creatures. If a creature is missing, you can add it following the format below. 981 | spawn: 982 | creeper: false 983 | skeleton: false 984 | spider: false 985 | giant: false 986 | zombie: false 987 | slime: false 988 | ghast: false 989 | pig_zombie: false 990 | enderman: false 991 | cave_spider: false 992 | silverfish: false 993 | blaze: false 994 | magma_cube: false 995 | ender_dragon: false 996 | pig: false 997 | sheep: false 998 | cow: false 999 | chicken: false 1000 | squid: false 1001 | wolf: false 1002 | mushroom_cow: false 1003 | snowman: false 1004 | ocelot: false 1005 | iron_golem: false 1006 | villager: false 1007 | wither: false 1008 | bat: false 1009 | witch: false 1010 | horse: false 1011 | phantom: false 1012 | 1013 | # Maximum height the creeper should explode. -1 allows them to explode everywhere. 1014 | # Set prevent.creeper-explosion to true, if you want to disable creeper explosions. 1015 | creeper: 1016 | max-height: -1 1017 | 1018 | # Disable various default physics and behaviors. 1019 | disable: 1020 | # Should fall damage be disabled? 1021 | fall: false 1022 | 1023 | # Users with the essentials.protect.pvp permission will still be able to attack each other if this is set to true. 1024 | # They will be unable to attack users without that same permission node. 1025 | pvp: false 1026 | 1027 | # Should drowning damage be disabled? 1028 | # (Split into two behaviors; generally, you want both set to the same value.) 1029 | drown: false 1030 | suffocate: false 1031 | 1032 | # Should damage via lava be disabled? Items that fall into lava will still burn to a crisp. ;) 1033 | lavadmg: false 1034 | 1035 | # Should arrow damage be disabled? 1036 | projectiles: false 1037 | 1038 | # This will disable damage from touching cacti. 1039 | contactdmg: false 1040 | 1041 | # Burn, baby, burn! Should fire damage be disabled? 1042 | firedmg: false 1043 | 1044 | # Should the damage after hit by a lightning be disabled? 1045 | lightning: false 1046 | 1047 | # Should Wither damage be disabled? 1048 | wither: false 1049 | 1050 | # Disable weather options? 1051 | weather: 1052 | storm: false 1053 | thunder: false 1054 | lightning: false 1055 | 1056 | ############################################################ 1057 | # +------------------------------------------------------+ # 1058 | # | EssentialsX AntiBuild | # 1059 | # +------------------------------------------------------+ # 1060 | ############################################################ 1061 | 1062 | # You need to install EssentialsX AntiBuild for this section to work. 1063 | # See https://essentialsx.net/wiki/Module-Breakdown.html and http://wiki.ess3.net/wiki/AntiBuild for more information. 1064 | 1065 | # Should people without the essentials.build permission be allowed to build? 1066 | # Set true to disable building for those people. 1067 | # Setting to false means EssentialsAntiBuild will never prevent you from building. 1068 | build: true 1069 | 1070 | # Should people without the essentials.build permission be allowed to use items? 1071 | # Set true to disable using for those people. 1072 | # Setting to false means EssentialsAntiBuild will never prevent you from using items. 1073 | use: true 1074 | 1075 | # Should we warn people when they are not allowed to build? 1076 | warn-on-build-disallow: true 1077 | 1078 | # For which block types would you like to be alerted? 1079 | # You can find a list of items at https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html. 1080 | alert: 1081 | on-placement: LAVA,TNT,LAVA_BUCKET 1082 | on-use: LAVA_BUCKET 1083 | on-break: 1084 | 1085 | blacklist: 1086 | 1087 | # Which blocks should people be prevented from placing? 1088 | placement: LAVA,TNT,LAVA_BUCKET 1089 | 1090 | # Which items should people be prevented from using? 1091 | usage: LAVA_BUCKET 1092 | 1093 | # Which blocks should people be prevented from breaking? 1094 | break: 1095 | 1096 | # Which blocks should not be moved by pistons? 1097 | piston: 1098 | 1099 | # Which blocks should not be dispensed by dispensers 1100 | dispenser: 1101 | 1102 | ############################################################ 1103 | # +------------------------------------------------------+ # 1104 | # | EssentialsX Spawn + New Players | # 1105 | # +------------------------------------------------------+ # 1106 | ############################################################ 1107 | 1108 | # You need to install EssentialsX Spawn for this section to work. 1109 | # See https://essentialsx.net/wiki/Module-Breakdown.html for more information. 1110 | 1111 | newbies: 1112 | # Should we announce to the server when someone logs in for the first time? 1113 | # If so, use this format, replacing {DISPLAYNAME} with the player name. 1114 | # If not, set to '' 1115 | #announce-format: '' 1116 | announce-format: '&dWelcome {DISPLAYNAME}&d to the server!' 1117 | 1118 | # When we spawn for the first time, which spawnpoint do we use? 1119 | # Set to "none" if you want to use the spawn point of the world. 1120 | spawnpoint: newbies 1121 | 1122 | # Do we want to give users anything on first join? Set to '' to disable 1123 | # This kit will be given regardless of cost and permissions, and will not trigger the kit delay. 1124 | #kit: '' 1125 | kit: tools 1126 | 1127 | # What priority should we use for handling respawns? 1128 | # Set this to none, if you want vanilla respawning behaviour. 1129 | # Set this to lowest, if you want Multiverse to handle the respawning. 1130 | # Set this to high, if you want EssentialsSpawn to handle the respawning. 1131 | # Set this to highest, if you want to force EssentialsSpawn to handle the respawning. 1132 | # Note: Changes will not apply until after the server is restarted. 1133 | respawn-listener-priority: high 1134 | 1135 | # What priority should we use for handling spawning on joining the server? 1136 | # See respawn-listener-priority for possible values. 1137 | # Note: Changing this may impact or break spawn-on-join functionality. 1138 | # Note: Changes will not apply until after the server is restarted. 1139 | spawn-join-listener-priority: high 1140 | 1141 | # When users die, should they respawn at their first home or bed, instead of the spawnpoint? 1142 | respawn-at-home: false 1143 | 1144 | # When users die, should they respawn at their bed instead of the spawnpoint? 1145 | # The value of respawn-at-home (above) has to be true. 1146 | respawn-at-home-bed: true 1147 | 1148 | # When users die, should EssentialsSpawn respect users' respawn anchors? 1149 | respawn-at-anchor: false 1150 | 1151 | # Teleport all joining players to the spawnpoint 1152 | spawn-on-join: false 1153 | # The following value of `guests` states that all players in group `guests` will be teleported to spawn when joining. 1154 | #spawn-on-join: guests 1155 | # The following list value states that all players in group `guests` and `admin` are to be teleported to spawn when joining. 1156 | #spawn-on-join: 1157 | #- guests 1158 | #- admin 1159 | 1160 | # End of file <-- No seriously, you're done with configuration. 1161 | -------------------------------------------------------------------------------- /plugins/LuckPerms/config.yml: -------------------------------------------------------------------------------- 1 | #################################################################################################### 2 | # +----------------------------------------------------------------------------------------------+ # 3 | # | __ __ ___ __ __ | # 4 | # | | | | / ` |__/ |__) |__ |__) |\/| /__` | # 5 | # | |___ \__/ \__, | \ | |___ | \ | | .__/ | # 6 | # | | # 7 | # | https://luckperms.net | # 8 | # | | # 9 | # | WIKI: https://luckperms.net/wiki | # 10 | # | DISCORD: https://discord.gg/luckperms | # 11 | # | BUG REPORTS: https://github.com/lucko/LuckPerms/issues | # 12 | # | | # 13 | # | Each option in this file is documented and explained here: | # 14 | # | ==> https://luckperms.net/wiki/Configuration | # 15 | # | | # 16 | # | New options are not added to this file automatically. Default values are used if an | # 17 | # | option cannot be found. The latest config versions can be obtained at the link above. | # 18 | # +----------------------------------------------------------------------------------------------+ # 19 | #################################################################################################### 20 | 21 | # +----------------------------------------------------------------------------------------------+ # 22 | # | | # 23 | # | ESSENTIAL SETTINGS | # 24 | # | | # 25 | # | Important settings that control how LuckPerms functions. | # 26 | # | | # 27 | # +----------------------------------------------------------------------------------------------+ # 28 | 29 | # The name of the server, used for server specific permissions. 30 | # 31 | # - When set to "global" this setting is effectively ignored. 32 | # - In all other cases, the value here is added to all players in a "server" context. 33 | # - See: https://luckperms.net/wiki/Context 34 | server: global 35 | 36 | # If the servers own UUID cache/lookup facility should be used when there is no record for a player 37 | # already in LuckPerms. 38 | # 39 | # - When this is set to 'false', commands using a player's username will not work unless the player 40 | # has joined since LuckPerms was first installed. 41 | # - To get around this, you can use a player's uuid directly in the command, or enable this option. 42 | # - When this is set to 'true', the server facility is used. This may use a number of methods, 43 | # including checking the servers local cache, or making a request to the Mojang API. 44 | use-server-uuid-cache: false 45 | 46 | 47 | 48 | 49 | # +----------------------------------------------------------------------------------------------+ # 50 | # | | # 51 | # | STORAGE SETTINGS | # 52 | # | | # 53 | # | Controls which storage method LuckPerms will use to store data. | # 54 | # | | # 55 | # +----------------------------------------------------------------------------------------------+ # 56 | 57 | # How the plugin should store data 58 | # 59 | # - The various options are explained in more detail on the wiki: 60 | # https://luckperms.net/wiki/Storage-types 61 | # 62 | # - Possible options: 63 | # 64 | # | Remote databases - require connection information to be configured below 65 | # |=> MySQL 66 | # |=> MariaDB (preferred over MySQL) 67 | # |=> PostgreSQL 68 | # |=> MongoDB 69 | # 70 | # | Flatfile/local database - don't require any extra configuration 71 | # |=> H2 (preferred over SQLite) 72 | # |=> SQLite 73 | # 74 | # | Readable & editable text files - don't require any extra configuration 75 | # |=> YAML (.yml files) 76 | # |=> JSON (.json files) 77 | # |=> HOCON (.conf files) 78 | # |=> TOML (.toml files) 79 | # | 80 | # | By default, user, group and track data is separated into different files. Data can be combined 81 | # | and all stored in the same file by switching to a combined storage variant. 82 | # | Just add '-combined' to the end of the storage-method, e.g. 'yaml-combined' 83 | # 84 | # - A H2 database is the default option. 85 | # - If you want to edit data manually in "traditional" storage files, we suggest using YAML. 86 | storage-method: h2 87 | 88 | # The following block defines the settings for remote database storage methods. 89 | # 90 | # - You don't need to touch any of the settings here if you're using a local storage method! 91 | # - The connection detail options are shared between all remote storage types. 92 | data: 93 | 94 | # Define the address and port for the database. 95 | # - The standard DB engine port is used by default 96 | # (MySQL: 3306, PostgreSQL: 5432, MongoDB: 27017) 97 | # - Specify as "host:port" if differs 98 | address: localhost 99 | 100 | # The name of the database to store LuckPerms data in. 101 | # - This must be created already. Don't worry about this setting if you're using MongoDB. 102 | database: minecraft 103 | 104 | # Credentials for the database. 105 | username: root 106 | password: '' 107 | 108 | # These settings apply to the MySQL connection pool. 109 | # - The default values will be suitable for the majority of users. 110 | # - Do not change these settings unless you know what you're doing! 111 | pool-settings: 112 | 113 | # Sets the maximum size of the MySQL connection pool. 114 | # - Basically this value will determine the maximum number of actual 115 | # connections to the database backend. 116 | # - More information about determining the size of connection pools can be found here: 117 | # https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing 118 | maximum-pool-size: 10 119 | 120 | # Sets the minimum number of idle connections that the pool will try to maintain. 121 | # - For maximum performance and responsiveness to spike demands, it is recommended to not set 122 | # this value and instead allow the pool to act as a fixed size connection pool. 123 | # (set this value to the same as 'maximum-pool-size') 124 | minimum-idle: 10 125 | 126 | # This setting controls the maximum lifetime of a connection in the pool in milliseconds. 127 | # - The value should be at least 30 seconds less than any database or infrastructure imposed 128 | # connection time limit. 129 | maximum-lifetime: 1800000 # 30 minutes 130 | 131 | # This setting controls how frequently the pool will 'ping' a connection in order to prevent it 132 | # from being timed out by the database or network infrastructure, measured in milliseconds. 133 | # - The value should be less than maximum-lifetime and greater than 30000 (30 seconds). 134 | # - Setting the value to zero will disable the keepalive functionality. 135 | keepalive-time: 0 136 | 137 | # This setting controls the maximum number of milliseconds that the plugin will wait for a 138 | # connection from the pool, before timing out. 139 | connection-timeout: 5000 # 5 seconds 140 | 141 | # This setting allows you to define extra properties for connections. 142 | # 143 | # By default, the following options are set to enable utf8 encoding. (you may need to remove 144 | # these if you are using PostgreSQL) 145 | # useUnicode: true 146 | # characterEncoding: utf8 147 | # 148 | # You can also use this section to disable SSL connections, by uncommenting the 'useSSL' and 149 | # 'verifyServerCertificate' options below. 150 | properties: 151 | useUnicode: true 152 | characterEncoding: utf8 153 | #useSSL: false 154 | #verifyServerCertificate: false 155 | 156 | # The prefix for all LuckPerms SQL tables. 157 | # 158 | # - This only applies for remote SQL storage types (MySQL, MariaDB, etc). 159 | # - Change this if you want to use different tables for different servers. 160 | table-prefix: 'luckperms_' 161 | 162 | # The prefix to use for all LuckPerms MongoDB collections. 163 | # 164 | # - This only applies for the MongoDB storage type. 165 | # - Change this if you want to use different collections for different servers. The default is no 166 | # prefix. 167 | mongodb-collection-prefix: '' 168 | 169 | # The connection string URI to use to connect to the MongoDB instance. 170 | # 171 | # - When configured, this setting will override anything defined in the address, database, 172 | # username or password fields above. 173 | # - If you have a connection string that starts with 'mongodb://' or 'mongodb+srv://', enter it 174 | # below. 175 | # - For more information, please see https://docs.mongodb.com/manual/reference/connection-string/ 176 | mongodb-connection-uri: '' 177 | 178 | # Define settings for a "split" storage setup. 179 | # 180 | # - This allows you to define a storage method for each type of data. 181 | # - The connection options above still have to be correct for each type here. 182 | split-storage: 183 | # Don't touch this if you don't want to use split storage! 184 | enabled: false 185 | methods: 186 | # These options don't need to be modified if split storage isn't enabled. 187 | user: h2 188 | group: h2 189 | track: h2 190 | uuid: h2 191 | log: h2 192 | 193 | 194 | 195 | 196 | # +----------------------------------------------------------------------------------------------+ # 197 | # | | # 198 | # | UPDATE PROPAGATION & MESSAGING SERVICE | # 199 | # | | # 200 | # | Controls the ways in which LuckPerms will sync data & notify other servers of changes. | # 201 | # | These options are documented on greater detail on the wiki under "Instant Updates". | # 202 | # | | # 203 | # +----------------------------------------------------------------------------------------------+ # 204 | 205 | # This option controls how frequently LuckPerms will perform a sync task. 206 | # 207 | # - A sync task will refresh all data from the storage, and ensure that the most up-to-date data is 208 | # being used by the plugin. 209 | # - This is disabled by default, as most users will not need it. However, if you're using a remote 210 | # storage type without a messaging service setup, you may wish to set this to something like 3. 211 | # - Set to -1 to disable the task completely. 212 | sync-minutes: -1 213 | 214 | # If the file watcher should be enabled. 215 | # 216 | # - When using a file-based storage type, LuckPerms can monitor the data files for changes, and 217 | # automatically update when changes are detected. 218 | # - If you don't want this feature to be active, set this option to false. 219 | watch-files: true 220 | 221 | # Define which messaging service should be used by the plugin. 222 | # 223 | # - If enabled and configured, LuckPerms will use the messaging service to inform other connected 224 | # servers of changes. 225 | # - Use the command "/lp networksync" to manually push changes. 226 | # - Data is NOT stored using this service. It is only used as a messaging platform. 227 | # 228 | # - If you decide to enable this feature, you should set "sync-minutes" to -1, as there is no need 229 | # for LuckPerms to poll the database for changes. 230 | # 231 | # - Possible options: 232 | # => sql Uses the SQL database to form a queue system for communication. Will only work when 233 | # 'storage-method' is set to MySQL or MariaDB. This is chosen by default if the 234 | # option is set to 'auto' and SQL storage is in use. Set to 'notsql' to disable this. 235 | # => pluginmsg Uses the plugin messaging channels to communicate with the proxy. 236 | # LuckPerms must be installed on your proxy & all connected servers backend servers. 237 | # Won't work if you have more than one proxy. 238 | # => lilypad Uses LilyPad pub-sub to push changes. You need to have the LilyPad-Connect plugin 239 | # installed. 240 | # => redis Uses Redis pub-sub to push changes. Your server connection info must be configured 241 | # below. 242 | # => rabbitmq Uses RabbitMQ pub-sub to push changes. Your server connection info must be 243 | # configured below. 244 | # => auto Attempts to automatically setup a messaging service using redis or sql. 245 | messaging-service: auto 246 | 247 | # If LuckPerms should automatically push updates after a change has been made with a command. 248 | auto-push-updates: true 249 | 250 | # If LuckPerms should push logging entries to connected servers via the messaging service. 251 | push-log-entries: true 252 | 253 | # If LuckPerms should broadcast received logging entries to players on this platform. 254 | # 255 | # - If you have LuckPerms installed on your backend servers as well as a BungeeCord proxy, you 256 | # should set this option to false on either your backends or your proxies, to avoid players being 257 | # messaged twice about log entries. 258 | broadcast-received-log-entries: true 259 | 260 | # Settings for Redis. 261 | # Port 6379 is used by default; set address to "host:port" if differs 262 | redis: 263 | enabled: false 264 | address: localhost 265 | password: '' 266 | 267 | # Settings for RabbitMQ. 268 | # Port 5672 is used by default; set address to "host:port" if differs 269 | rabbitmq: 270 | enabled: false 271 | address: localhost 272 | vhost: '/' 273 | username: 'guest' 274 | password: 'guest' 275 | 276 | 277 | 278 | 279 | # +----------------------------------------------------------------------------------------------+ # 280 | # | | # 281 | # | CUSTOMIZATION SETTINGS | # 282 | # | | # 283 | # | Settings that allow admins to customize the way LuckPerms operates. | # 284 | # | | # 285 | # +----------------------------------------------------------------------------------------------+ # 286 | 287 | # Controls how temporary permissions/parents/meta should be accumulated. 288 | # 289 | # - The default behaviour is "deny". 290 | # - This behaviour can also be specified when the command is executed. See the command usage 291 | # documentation for more info. 292 | # 293 | # - Possible options: 294 | # => accumulate durations will be added to the existing expiry time 295 | # => replace durations will be replaced if the new duration is later than the current 296 | # expiration 297 | # => deny the command will just fail if you try to add another node with the same expiry 298 | temporary-add-behaviour: deny 299 | 300 | # Controls how LuckPerms will determine a users "primary" group. 301 | # 302 | # - The meaning and influence of "primary groups" are explained in detail on the wiki. 303 | # - The preferred approach is to let LuckPerms automatically determine a users primary group 304 | # based on the relative weight of their parent groups. 305 | # 306 | # - Possible options: 307 | # => stored use the value stored against the users record in the file/database 308 | # => parents-by-weight just use the users most highly weighted parent 309 | # => all-parents-by-weight same as above, but calculates based upon all parents inherited from 310 | # both directly and indirectly 311 | primary-group-calculation: parents-by-weight 312 | 313 | # If the plugin should check for "extra" permissions with users run LP commands. 314 | # 315 | # - These extra permissions allow finer control over what users can do with each command, and who 316 | # they have access to edit. 317 | # - The nature of the checks are documented on the wiki under "Argument based command permissions". 318 | # - Argument based permissions are *not* static, unlike the 'base' permissions, and will depend upon 319 | # the arguments given within the command. 320 | argument-based-command-permissions: false 321 | 322 | # If the plugin should check whether senders are a member of a given group before they're able to 323 | # edit the groups data or add/remove other users to/from it. 324 | # Note: these limitations do not apply to the web editor! 325 | require-sender-group-membership-to-modify: false 326 | 327 | # If the plugin should send log notifications to users whenever permissions are modified. 328 | # 329 | # - Notifications are only sent to those with the appropriate permission to receive them 330 | # - They can also be temporarily enabled/disabled on a per-user basis using 331 | # '/lp log notify ' 332 | log-notify: true 333 | 334 | # Defines a list of log entries which should not be sent as notifications to users. 335 | # 336 | # - Each entry in the list is a RegEx expression which is matched against the log entry description. 337 | log-notify-filtered-descriptions: 338 | # - "parent add example" 339 | 340 | # If LuckPerms should automatically install translation bundles and periodically update them. 341 | auto-install-translations: true 342 | 343 | # Defines the options for prefix and suffix stacking. 344 | # 345 | # - The feature allows you to display multiple prefixes or suffixes alongside a players username in 346 | # chat. 347 | # - It is explained and documented in more detail on the wiki under "Prefix & Suffix Stacking". 348 | # 349 | # - The options are divided into separate sections for prefixes and suffixes. 350 | # - The 'duplicates' setting refers to how duplicate elements are handled. Can be 'retain-all', 351 | # 'first-only' or 'last-only'. 352 | # - The value of 'start-spacer' is included at the start of the resultant prefix/suffix. 353 | # - The value of 'end-spacer' is included at the end of the resultant prefix/suffix. 354 | # - The value of 'middle-spacer' is included between each element in the resultant prefix/suffix. 355 | # 356 | # - Possible format options: 357 | # => highest Selects the value with the highest weight, from all values 358 | # held by or inherited by the player. 359 | # 360 | # => lowest Same as above, except takes the one with the lowest weight. 361 | # 362 | # => highest_own Selects the value with the highest weight, but will not 363 | # accept any inherited values. 364 | # 365 | # => lowest_own Same as above, except takes the value with the lowest weight. 366 | # 367 | # => highest_inherited Selects the value with the highest weight, but will only 368 | # accept inherited values. 369 | # 370 | # => lowest_inherited Same as above, except takes the value with the lowest weight. 371 | # 372 | # => highest_on_track_ Selects the value with the highest weight, but only if the 373 | # value was inherited from a group on the given track. 374 | # 375 | # => lowest_on_track_ Same as above, except takes the value with the lowest weight. 376 | # 377 | # => highest_not_on_track_ Selects the value with the highest weight, but only if the 378 | # value was inherited from a group not on the given track. 379 | # 380 | # => lowest_not_on_track_ Same as above, except takes the value with the lowest weight. 381 | # 382 | # => highest_from_group_ Selects the value with the highest weight, but only if the 383 | # value was inherited from the given group. 384 | # 385 | # => lowest_from_group_ Same as above, except takes the value with the lowest weight. 386 | # 387 | # => highest_not_from_group_ Selects the value with the highest weight, but only if the 388 | # value was not inherited from the given group. 389 | # 390 | # => lowest_not_from_group_ Same as above, except takes the value with the lowest weight. 391 | meta-formatting: 392 | prefix: 393 | format: 394 | - "highest" 395 | duplicates: first-only 396 | start-spacer: "" 397 | middle-spacer: " " 398 | end-spacer: "" 399 | suffix: 400 | format: 401 | - "highest" 402 | duplicates: first-only 403 | start-spacer: "" 404 | middle-spacer: " " 405 | end-spacer: "" 406 | 407 | 408 | 409 | 410 | # +----------------------------------------------------------------------------------------------+ # 411 | # | | # 412 | # | PERMISSION CALCULATION AND INHERITANCE | # 413 | # | | # 414 | # | Modify the way permission checks, meta lookups and inheritance resolutions are handled. | # 415 | # | | # 416 | # +----------------------------------------------------------------------------------------------+ # 417 | 418 | # The algorithm LuckPerms should use when traversing the "inheritance tree". 419 | # 420 | # - Possible options: 421 | # => breadth-first See: https://en.wikipedia.org/wiki/Breadth-first_search 422 | # => depth-first-pre-order See: https://en.wikipedia.org/wiki/Depth-first_search 423 | # => depth-first-post-order See: https://en.wikipedia.org/wiki/Depth-first_search 424 | inheritance-traversal-algorithm: depth-first-pre-order 425 | 426 | # If a final sort according to "inheritance rules" should be performed after the traversal algorithm 427 | # has resolved the inheritance tree. 428 | # 429 | # "Inheritance rules" refers to things such as group weightings, primary group status, and the 430 | # natural contextual ordering of the group nodes. 431 | # 432 | # Setting this to 'true' will allow for the inheritance rules to take priority over the structure of 433 | # the inheritance tree. 434 | # 435 | # Effectively when this setting is 'true': the tree is flattened, and rules applied afterwards, 436 | # and when this setting is 'false':, the rules are just applied during each step of the traversal. 437 | post-traversal-inheritance-sort: false 438 | 439 | # Defines the mode used to determine whether a set of contexts are satisfied. 440 | # 441 | # - Possible options: 442 | # => at-least-one-value-per-key Set A will be satisfied by another set B, if at least one of the 443 | # key-value entries per key in A are also in B. 444 | # => all-values-per-key Set A will be satisfied by another set B, if all key-value 445 | # entries in A are also in B. 446 | context-satisfy-mode: at-least-one-value-per-key 447 | 448 | # LuckPerms has a number of built-in contexts. These can be disabled by adding the context key to 449 | # the list below. 450 | disabled-contexts: 451 | # - "world" 452 | 453 | # +----------------------------------------------------------------------------------------------+ # 454 | # | Permission resolution settings | # 455 | # +----------------------------------------------------------------------------------------------+ # 456 | 457 | # If users on this server should have their global permissions applied. 458 | # When set to false, only server specific permissions will apply for users on this server 459 | include-global: true 460 | 461 | # If users on this server should have their global world permissions applied. 462 | # When set to false, only world specific permissions will apply for users on this server 463 | include-global-world: true 464 | 465 | # If users on this server should have global (non-server specific) groups applied 466 | apply-global-groups: true 467 | 468 | # If users on this server should have global (non-world specific) groups applied 469 | apply-global-world-groups: true 470 | 471 | # +----------------------------------------------------------------------------------------------+ # 472 | # | Meta lookup settings | # 473 | # +----------------------------------------------------------------------------------------------+ # 474 | 475 | # Defines how meta values should be selected. 476 | # 477 | # - Possible options: 478 | # => inheritance Selects the meta value that was inherited first 479 | # => highest-number Selects the highest numerical meta value 480 | # => lowest-number Selects the lowest numerical meta value 481 | meta-value-selection-default: inheritance 482 | 483 | # Defines how meta values should be selected per key. 484 | meta-value-selection: 485 | # max-homes: highest-number 486 | 487 | # +----------------------------------------------------------------------------------------------+ # 488 | # | Inheritance settings | # 489 | # +----------------------------------------------------------------------------------------------+ # 490 | 491 | # If the plugin should apply wildcard permissions. 492 | # 493 | # - If set to true, LuckPerms will detect wildcard permissions, and resolve & apply all registered 494 | # permissions matching the wildcard. 495 | apply-wildcards: true 496 | 497 | # If LuckPerms should resolve and apply permissions according to the Sponge style implicit wildcard 498 | # inheritance system. 499 | # 500 | # - That being: If a user has been granted "example", then the player should have also be 501 | # automatically granted "example.function", "example.another", "example.deeper.nesting", 502 | # and so on. 503 | apply-sponge-implicit-wildcards: false 504 | 505 | # If the plugin should apply negated Bukkit default permissions before it considers wildcard 506 | # assignments. 507 | # 508 | # - Plugin authors can define permissions which explicitly should not be given automatically to OPs. 509 | # This is usually used for so called "anti-permissions" - permissions which, when granted, apply 510 | # something negative. 511 | # - If this option is set to true, LuckPerms will consider any negated declarations made by 512 | # plugins before it considers wildcards. (similar to the way the OP system works) 513 | # - If this option is set to false, LuckPerms will consider any wildcard assignments first. 514 | apply-default-negated-permissions-before-wildcards: false 515 | 516 | # If the plugin should parse regex permissions. 517 | # 518 | # - If set to true, LuckPerms will detect regex permissions, marked with "r=" at the start of the 519 | # node, and resolve & apply all registered permissions matching the regex. 520 | apply-regex: true 521 | 522 | # If the plugin should complete and apply shorthand permissions. 523 | # 524 | # - If set to true, LuckPerms will detect and expand shorthand node patterns. 525 | apply-shorthand: true 526 | 527 | # If the plugin should apply Bukkit child permissions. 528 | # 529 | # - Plugin authors can define custom permissions structures for their plugin, which will be resolved 530 | # and used by LuckPerms if this setting is enabled. 531 | apply-bukkit-child-permissions: true 532 | 533 | # If the plugin should apply Bukkit default permissions. 534 | # 535 | # - Plugin authors can define permissions which should be given to all users by default, or setup 536 | # permissions which should/shouldn't be given to opped players. 537 | # - If this option is set to false, LuckPerms will ignore these defaults. 538 | apply-bukkit-default-permissions: true 539 | 540 | # If the plugin should apply attachment permissions. 541 | # 542 | # - Other plugins on the server are able to add their own "permission attachments" to players. 543 | # - This allows them to grant players additional permissions which last until the end of the 544 | # session, or until they're removed. 545 | # - If this option is set to false, LuckPerms will not include these attachment permissions when 546 | # considering if a player should have access to a certain permission. 547 | apply-bukkit-attachment-permissions: true 548 | 549 | # +----------------------------------------------------------------------------------------------+ # 550 | # | Extra settings | # 551 | # +----------------------------------------------------------------------------------------------+ # 552 | 553 | # Allows you to set "aliases" for the worlds sent forward for context calculation. 554 | # 555 | # - These aliases are provided in addition to the real world name. Applied recursively. 556 | # - Remove the comment characters for the default aliases to apply. 557 | world-rewrite: 558 | # world_nether: world 559 | # world_the_end: world 560 | 561 | # Define special group weights for this server. 562 | # 563 | # - Group weights can also be applied directly to group data, using the setweight command. 564 | # - This section allows weights to be set on a per-server basis. 565 | group-weight: 566 | # admin: 10 567 | 568 | 569 | 570 | 571 | # +----------------------------------------------------------------------------------------------+ # 572 | # | | # 573 | # | FINE TUNING OPTIONS | # 574 | # | | # 575 | # | A number of more niche settings for tweaking and changing behaviour. The section also | # 576 | # | contains toggles for some more specialised features. It is only necessary to make changes to | # 577 | # | these options if you want to fine-tune LuckPerms behaviour. | # 578 | # | | # 579 | # +----------------------------------------------------------------------------------------------+ # 580 | 581 | # +----------------------------------------------------------------------------------------------+ # 582 | # | Server Operator (OP) settings | # 583 | # +----------------------------------------------------------------------------------------------+ # 584 | 585 | # Controls whether server operators should exist at all. 586 | # 587 | # - When set to 'false', all players will be de-opped, and the /op and /deop commands will be 588 | # disabled. 589 | enable-ops: true 590 | 591 | # Enables or disables a special permission based system in LuckPerms for controlling OP status. 592 | # 593 | # - If set to true, any user with the permission "luckperms.autoop" will automatically be granted 594 | # server operator status. This permission can be inherited, or set on specific servers/worlds, 595 | # temporarily, etc. 596 | # - Additionally, setting this to true will force the "enable-ops" option above to false. All users 597 | # will be de-opped unless they have the permission node, and the op/deop commands will be 598 | # disabled. 599 | # - It is recommended that you use this option instead of assigning a single '*' permission. 600 | auto-op: true 601 | 602 | # Defines if "opped" players should be able to use all LuckPerms commands by default. 603 | # 604 | # - Set to false to only allow users who have the permissions access to the commands 605 | commands-allow-op: true 606 | 607 | # +----------------------------------------------------------------------------------------------+ # 608 | # | Vault integration settings | # 609 | # +----------------------------------------------------------------------------------------------+ # 610 | 611 | # If Vault lookups for offline players on the main server thread should be enabled. 612 | # 613 | # LuckPerms has a "catch" for plugins attempting to perform unsafe offline player data lookups 614 | # from the main server thread. This catch raises an exception (causes an error to occur) when unsafe 615 | # lookups are made, instead of allowing the lookup to happen, which would likely cause the server 616 | # to lag. 617 | # 618 | # However, if you're willing to accept the consequences, the catch can be disabled by setting this 619 | # option to 'true. 620 | vault-unsafe-lookups: false 621 | 622 | # If LuckPerms should use the 'display name' of a group when returning groups in Vault API calls. 623 | # 624 | # - When this option is set to true, the display name of the group is returned. 625 | # - When this option is set to false, the standard name/id of the group is returned. 626 | vault-group-use-displaynames: true 627 | 628 | # Controls which group LuckPerms should use for NPC players when handling Vault requests. 629 | # 630 | # - As NPCs aren't actually real players, LuckPerms does not load any user data for them. This 631 | # becomes an issue when plugins want to check for their permissions using Vault. 632 | # - As a solution, Vault checks for NPCs fallback to a group, which is defined below. 633 | vault-npc-group: default 634 | 635 | # Controls how LuckPerms should consider the OP status of NPC players when handing Vault requests. 636 | # 637 | # - If you want NPCs to have the same permissions as "normal" players, set this option to false. 638 | # - If you want NPCs to have OP status, set this option to true. 639 | vault-npc-op-status: false 640 | 641 | # If the vault-server option below should be used. 642 | # 643 | # - When this option is set to false, the server value defined above under "server" is used. 644 | use-vault-server: false 645 | 646 | # The name of the server used within Vault operations. 647 | # 648 | # - If you don't want Vault operations to be server specific, set this to "global". 649 | # - Will only take effect if use-vault-server is set to true above. 650 | vault-server: global 651 | 652 | # If global permissions should be considered when retrieving meta or player groups 653 | vault-include-global: true 654 | 655 | # If Vault operations should ignore any world arguments if supplied. 656 | vault-ignore-world: false 657 | 658 | # +----------------------------------------------------------------------------------------------+ # 659 | # | Miscellaneous (and rarely used) settings | # 660 | # +----------------------------------------------------------------------------------------------+ # 661 | 662 | # If LuckPerms should produce extra logging output when it handles logins. 663 | # 664 | # - Useful if you're having issues with UUID forwarding or data not being loaded. 665 | debug-logins: false 666 | 667 | # If LuckPerms should allow usernames with non alphanumeric characters. 668 | # 669 | # - Note that due to the design of the storage implementation, usernames must still be 16 characters 670 | # or less. 671 | allow-invalid-usernames: false 672 | 673 | # If LuckPerms should not require users to confirm bulkupdate operations. 674 | # 675 | # - When set to true, operations will be executed immediately. 676 | # - This is not recommended, as bulkupdate has the potential to irreversibly delete large amounts of 677 | # data, and is not designed to be executed automatically. 678 | # - If automation is needed, users should prefer using the LuckPerms API. 679 | skip-bulkupdate-confirmation: false 680 | 681 | # If LuckPerms should allow a users primary group to be removed with the 'parent remove' command. 682 | # 683 | # - When this happens, the plugin will set their primary group back to default. 684 | prevent-primary-group-removal: false 685 | 686 | # If LuckPerms should update the list of commands sent to the client when permissions are changed. 687 | update-client-command-list: true 688 | 689 | # If LuckPerms should attempt to register "Brigadier" command list data for its commands. 690 | register-command-list-data: true 691 | 692 | # If LuckPerms should attempt to resolve Vanilla command target selectors for LP commands. 693 | # See here for more info: https://minecraft.gamepedia.com/Commands#Target_selectors 694 | resolve-command-selectors: false 695 | -------------------------------------------------------------------------------- /plugins/LuckPerms/luckperms-h2.mv.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/syscraft-mc/starter-server/4be500da7482afbdbc538a10cb0459311730bebb/plugins/LuckPerms/luckperms-h2.mv.db -------------------------------------------------------------------------------- /startfiles/README.md: -------------------------------------------------------------------------------- 1 | # Start Files 2 | 3 | Depending on the OS, different files must be used to properly, quickly, and easily start up the server. 4 | 5 | ## Windows 6 | If you are on Windows, simply move the `start.bat` file from the `windows` directory into the main server directory, and double click it to start the server. 7 | 8 | ## Linux 9 | 10 | If you are on Linux, take a look in the `linux` directory. It contains its own `README` with some very helpful information, as well as two functional scripts: `start.sh` and `restart.sh`. 11 | 12 | ### To get started right away: 13 | 14 | 1. Move both `start.sh` and `restart.sh` into the main server directory. 15 | 2. In `spigot.yml`, label the following: 16 | ```yaml 17 | settings: 18 | restart-script: ./restart.sh 19 | ``` 20 | 3. Mark the scripts as executable by running `chmod +x *.sh` 21 | 4. Run `./start.sh`, and the server should start! 22 | > It is good practice to look into using `tmux` or `screen` to be able to keep the server running when you close out of the terminal. As this is not a comprehensive Linux tutorial, you can find more information using Google. If you want to know which to go with, `screen` is simple and easy, and worth looking into. -------------------------------------------------------------------------------- /startfiles/linux/README.md: -------------------------------------------------------------------------------- 1 | # What is spigot restart script 2 | 3 | Spigot added a feature allowing for server to automatically restart on crashes, 4 | as well as when authorized user executes `/restart` command. 5 | 6 | # How it works 7 | 8 | When server starts to shut down, it spawns a new process which runs your restart script, 9 | as specified in `spigot.yml` under `settings.restart-script`, which defaults to `./start.sh`. 10 | The idea is that the original server will stop completely, and the new instance will take its place. 11 | 12 | # Why is it an issue 13 | 14 | Because the new server is created before old one fully stopped, this means: 15 | 16 | 1. You need enough spare resources, to temporarily run 2 servers at the same time, 17 | as the old instance haven't freed up CPU/RAM while the new one starts and prepares itself. 18 | 2. You might hit `Unable to bind to port` errors, because old server is still occupying the port. 19 | 3. You might hit `Is another instance running` error, mentioning that `world/session.lock` is in use 20 | 21 | Because the new server is being detached, that means that if you use `tmux` or `screen` to start your server, 22 | it no longer will give you access to server console after restart. 23 | 24 | # How can this be fixed 25 | 26 | The solution is simple - don't let the restart script start any server, 27 | but instead have it communicate with your start script that when old instance is shut down, 28 | it should start a new one instead. 29 | 30 | # How can I do it? 31 | 32 | The easiest way is to simply create 2 scripts - `start.sh` which will be the start script, 33 | and `restart.sh` which will be used by Spigot to notify that a restart is needed. 34 | 35 | First, configure `spigot.yml` to use your restart script instead: 36 | 37 | ```yaml 38 | settings: 39 | restart-script: ./restart.sh 40 | ``` 41 | 42 | Finally, copy the attached to this gist `start.sh` and `restart.sh` scripts 43 | and place them in your server folder from where you start it, 44 | which usually is the same directory where server jar, settings and worlds are in. 45 | Make sure to understand what they do and change memory setting and other flags to your liking. 46 | You'll also need to mark them as executable, by running `chmod +x *.sh`. 47 | 48 | Now you can start your `tmux`/`screen` session as usual and run `./start.sh`. That's it! 49 | 50 | # But what about Windows? 51 | 52 | I haven't used Windows in years, so I don't know batch or PS language well enough. 53 | If someone can rewrite these scripts to Windows equivalents, I'll gladly add them. 54 | 55 | # I have questions / issues 56 | 57 | If you have questions, feel free to ask them in Syscraft Discord. 58 | You can ping me there `Prof_Bloodstone#0123`. 59 | 60 | # Known issues 61 | 62 | ### Illegal option -o pipefail 63 | 64 | Error: `start.sh: 4: set: Illegal option -o pipefail` 65 | 66 | It means that the script was started with a shell not supporting `pipefail` option. 67 | This is most common, when you start the script as `sh start.sh` while `sh` is symlinked to `dash` or other minimal shell: 68 | 69 | ```sh 70 | $ which sh 71 | /bin/sh 72 | $ ls -l /bin/sh 73 | lrwxrwxrwx 1 root root 4 Feb 23 18:52 /bin/sh -> dash 74 | ``` 75 | 76 | Solution: Start it using bash - either use `bash start.sh`, 77 | or first mark the file as executable with `chmod +x start.sh` 78 | and then execute the file directly using `./start.sh`. 79 | 80 | ### bad substitution 81 | 82 | Error: `start.sh: line 55: ${restart_on_crash,,}: bad substitution` 83 | 84 | It means that you sucessfully started the script using bash, but it's probably too old. 85 | Run `bash --version` to confirm - I believe required features were added in version `4`. 86 | 87 | Solutions: 88 | 1. Upgrade bash to more modern version 89 | 2. Replace the mentioned substitution to remove the lowercasing (remove the two `,,`). 90 | From now on you need to make sure that `restart_on_crash` setting is lowercase. 91 | -------------------------------------------------------------------------------- /startfiles/linux/restart.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | # We need to use sh, since it's hardcoded in spigot 3 | # Doesn't matter much, since it doesn't do much anyway 4 | 5 | # This script only creates a file which tells `start.sh` that it should restart, instead of exiting. 6 | 7 | # Make sure to change this, if you modified `restart_flag` in `start.sh`! 8 | touch .restart_flag 9 | -------------------------------------------------------------------------------- /startfiles/linux/start.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # NOTE: We use bash for better readability and error handling here 3 | # but it's not hard to make it work with regular shell 4 | set -euo pipefail 5 | 6 | # SETTINGS 7 | # Path to file used to communicate from restart script 8 | readonly restart_flag='.restart_flag' 9 | # How long (in seconds) to wait before restarting 10 | readonly restart_delay=10 11 | # Whether to restart on crash or not 12 | # The `settings.restart-on-crash` setting in spigot.yml doesn't always work 13 | # but also sometimes server might not return proper exit code, 14 | # so it's best to keep both options enabled 15 | # Accepted values: y/yes/true/n/no/false 16 | readonly restart_on_crash='yes' 17 | # The name of your server jar 18 | readonly server_jar='paperclip.jar' 19 | # What will be passed to `-Xms` and `-Xmx` 20 | readonly heap_size='1G' 21 | # JVM startup flags, one per line for better readability 22 | # NOTE: -Xms and -Xmx are set separately 23 | # These are mostly "Aikar flags" 24 | # taken from: https://mcflags.emc.gs/ 25 | readonly jvm_flags=( 26 | -XX:+UseG1GC 27 | -XX:+ParallelRefProcEnabled 28 | -XX:MaxGCPauseMillis=200 29 | -XX:+UnlockExperimentalVMOptions 30 | -XX:+DisableExplicitGC 31 | -XX:+AlwaysPreTouch 32 | -XX:G1NewSizePercent=30 33 | -XX:G1MaxNewSizePercent=40 34 | -XX:G1HeapRegionSize=8M 35 | -XX:G1ReservePercent=20 36 | -XX:G1HeapWastePercent=5 37 | -XX:G1MixedGCCountTarget=4 38 | -XX:InitiatingHeapOccupancyPercent=15 39 | -XX:G1MixedGCLiveThresholdPercent=90 40 | -XX:G1RSetUpdatingPauseTimePercent=5 41 | -XX:SurvivorRatio=32 42 | -XX:+PerfDisableSharedMem 43 | -XX:MaxTenuringThreshold=1 44 | -Dusing.aikars.flags=https://mcflags.emc.gs 45 | -Daikars.new.flags=true 46 | ) 47 | # Minecraft args you might want to start your server with 48 | # Usually there isn't much to configure here: 49 | readonly mc_args=( 50 | --nogui # Start the server without GUI 51 | ) 52 | # END OF SETTINGS 53 | 54 | should_restart_on_crash() { 55 | case "${restart_on_crash,,}" in 56 | y|yes|true) return 0;; 57 | n|no|false) return 1;; 58 | *) 59 | printf 'ERROR: Invalid value for "restart_on_crash" variable: %s\n' "${restart_on_crash}" >&2 60 | exit 1 61 | ;; 62 | esac 63 | } 64 | 65 | # The arguments that will be passed to java: 66 | readonly java_args=( 67 | -Xms"${heap_size}" # Set heap min size 68 | -Xmx"${heap_size}" # Set heap max size 69 | "${jvm_flags[@]}" # Use jvm flags specified above 70 | -jar "${server_jar}" # Run the server 71 | "${mc_args[@]}" # And pass it these settings 72 | ) 73 | 74 | # Remove restart flag, if it exists, 75 | # so that we won't restart the server after first stop, 76 | # unless restart script was called 77 | rm "${restart_flag}" &>/dev/null || true 78 | 79 | # Check if `restart_on_crash` has valid value 80 | should_restart_on_crash || true 81 | 82 | while :; do # Loop infinitely 83 | # Run server 84 | java "${java_args[@]}" || { 85 | # Oops, server didn't exit gracefully 86 | printf 'Detected server crash (exit code: %s)\n' "${?}" >&2 87 | # Check if we should restart on crash or not 88 | if should_restart_on_crash; then 89 | touch "${restart_flag}" 90 | fi 91 | } 92 | # Check if restart file exists or exit 93 | if [ -e "${restart_flag}" ]; then 94 | # The flag exists - try to remove it 95 | rm "${restart_flag}" || { 96 | # If we can't remove it (permissions?), then exit to avoid endless restart loop 97 | printf 'Error removing restart flag (exit code: %s) - cowardly exiting\n' "${?}" >&2 98 | exit 1 99 | } 100 | else 101 | break # Flag doesn't exist, so break out of the loop 102 | fi 103 | printf 'Restarting server in 10 seconds, press Ctrl+C to abort.\n' >&2 104 | sleep "${restart_delay}" || break # Exit if sleep is interrupted (for example Ctrl+C) 105 | done 106 | 107 | printf 'Server stopped\n' >&2 108 | -------------------------------------------------------------------------------- /startfiles/windows/start.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | java -Xms4G -Xmx4G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Daikars.new.flags=true -Dusing.aikars.flags=https://mcflags.emc.gs -jar paper.jar --nogui 3 | pause --------------------------------------------------------------------------------