From 7a7d6987393aa03af49bb4b4094db82ee4d8b94d Mon Sep 17 00:00:00 2001 From: Strokkur24 Date: Thu, 5 Mar 2026 16:32:52 +0100 Subject: [PATCH 1/4] chore: update Java requirement to 25 --- src/content/docs/misc/java-install.md | 34 +++++++++---------- .../admin/getting-started/getting-started.mdx | 2 +- .../dev/getting-started/project-setup.mdx | 2 +- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/content/docs/misc/java-install.md b/src/content/docs/misc/java-install.md index 9b3b6f80b..4fa155c5b 100644 --- a/src/content/docs/misc/java-install.md +++ b/src/content/docs/misc/java-install.md @@ -1,6 +1,6 @@ --- title: Installing or updating Java -description: How to install or update to Java 21 on Linux (apt/rpm), Windows, or Mac. +description: How to install or update to Java 25 on Linux (apt/rpm), Windows, or Mac. slug: misc/java-install --- @@ -31,7 +31,7 @@ previous hostile licensing. ### Ubuntu/Debian -Installing Java 21 on Debian-based Linux distributions is very simple. First, ensure your system has +Installing Java 25 on Debian-based Linux distributions is very simple. First, ensure your system has all required tools to successfully install Java. ```bash @@ -46,18 +46,18 @@ wget -O - https://apt.corretto.aws/corretto.key | sudo gpg --dearmor -o /usr/sha echo "deb [signed-by=/usr/share/keyrings/corretto-keyring.gpg] https://apt.corretto.aws stable main" | sudo tee /etc/apt/sources.list.d/corretto.list ``` -Then, install Java 21 and other dependencies using the following command: +Then, install Java 25 and other dependencies using the following command: ```bash sudo apt-get update -sudo apt-get install -y java-21-amazon-corretto-jdk libxi6 libxtst6 libxrender1 +sudo apt-get install -y java-25-amazon-corretto-jdk libxi6 libxtst6 libxrender1 ``` Proceed to [verify your installation](#verifying-installation). ### RPM-based -To install Java 21 on CentOS, RHEL, Fedora, openSUSE, SLES, or any other RPM-based Linux +To install Java 25 on CentOS, RHEL, Fedora, openSUSE, SLES, or any other RPM-based Linux distribution, execute the following commands depending on your package manager. Once you have finished, precede to [verify your installation](#verifying-installation). @@ -68,7 +68,7 @@ DNF is used on Fedora, CentOS/RHEL 7+, and related distributions. ```bash sudo rpm --import https://yum.corretto.aws/corretto.key sudo curl -Lo /etc/yum.repos.d/corretto.repo https://yum.corretto.aws/corretto.repo -sudo dnf -y install java-21-amazon-corretto-devel +sudo dnf -y install java-25-amazon-corretto-devel ``` #### Zypper @@ -78,7 +78,7 @@ Zypper is used on openSUSE, SLES, and related distributions. ```bash sudo zypper addrepo https://yum.corretto.aws/corretto.repo sudo zypper refresh -sudo zypper install java-21-amazon-corretto-devel +sudo zypper install java-25-amazon-corretto-devel ``` #### YUM @@ -88,14 +88,14 @@ YUM is used on older releases of CentOS/RHEL, and excessively old releases of Fe ```bash sudo rpm --import https://yum.corretto.aws/corretto.key sudo curl -Lo /etc/yum.repos.d/corretto.repo https://yum.corretto.aws/corretto.repo -sudo yum -y install java-21-amazon-corretto-devel +sudo yum -y install java-25-amazon-corretto-devel ``` ## Windows 10 & 11 If you're on Windows 10 or 11, installing Java is just like installing any other program. Download the Amazon Corretto installer from -[their website](https://corretto.aws/downloads/latest/amazon-corretto-21-x64-windows-jdk.msi). +[their website](https://corretto.aws/downloads/latest/amazon-corretto-25-x64-windows-jdk.msi). Once you have run the installer, it is safe to click "next" through the whole process. No additional bloatware or toolbars will be installed, and all the required features are enabled out of the box. @@ -109,7 +109,7 @@ If you're on macOS, the best way to manage Java installations is with a tool cal terminal run the following command: ```bash -brew install openjdk@21 +brew install openjdk@25 ``` Once this command has completed, continue to [verify your installation](#verifying-installation). @@ -129,14 +129,14 @@ prompt you to update like this: ![Pterodactyl Automatic Prompt](./assets/pterodactyl-prompt.png) If this does not show up for you, the Java version can be manually changed. Navigate to the -"Startup" tab of your server, select `Java 21` from the "Docker Image" +"Startup" tab of your server, select `Java 25` from the "Docker Image" dropdown as shown in the image below. ![Pterodactyl Manual Java Version Change](./assets/pterodactyl-manual.png) :::note -If you don't see `Java 21` in the dropdown, an administrator account is required to update the Paper egg. +If you don't see `Java 25` in the dropdown, an administrator account is required to update the Paper egg. ::: @@ -144,7 +144,7 @@ The Verifying Installation section does not apply for Pterodactyl. ## Verifying installation -Now that you have installed Java 21, run this command in your terminal to ensure the process was +Now that you have installed Java 25, run this command in your terminal to ensure the process was successful. ```bash @@ -152,13 +152,13 @@ java -version ``` The output should be similar to this. The important parts to look out for is that it starts with -`openjdk 21` and contains `64-Bit` in the last line. If the output you get is similar to +`openjdk 25` and contains `64-Bit` in the last line. If the output you get is similar to `java: command not found`, try creating a new terminal session. ``` -openjdk version "21" 2023-09-19 LTS -OpenJDK Runtime Environment Corretto-21.0.0.35.1 (build 21+35-LTS) -OpenJDK 64-Bit Server VM Corretto-21.0.0.35.1 (build 21+35-LTS, mixed mode, sharing) +openjdk version "25" 2025-09-16 +OpenJDK Runtime Environment (build 25+36-3489) +OpenJDK 64-Bit Server VM (build 25+36-3489, mixed mode, sharing) ``` If your installation has failed, do not hesitate to reach out in the `#paper-help` channel of our diff --git a/src/content/docs/paper/admin/getting-started/getting-started.mdx b/src/content/docs/paper/admin/getting-started/getting-started.mdx index 9bc0eaf8e..cede419c1 100644 --- a/src/content/docs/paper/admin/getting-started/getting-started.mdx +++ b/src/content/docs/paper/admin/getting-started/getting-started.mdx @@ -8,7 +8,7 @@ slug: paper/getting-started :::tip -Paper requires at least **Java 21** to run, which [is easy to download and install](/misc/java-install). +Paper requires at least **Java 25** to run, which [is easy to download and install](/misc/java-install). ::: diff --git a/src/content/docs/paper/dev/getting-started/project-setup.mdx b/src/content/docs/paper/dev/getting-started/project-setup.mdx index 6ee1a2007..cee7f8b65 100644 --- a/src/content/docs/paper/dev/getting-started/project-setup.mdx +++ b/src/content/docs/paper/dev/getting-started/project-setup.mdx @@ -215,7 +215,7 @@ You will be asked to provide some information about your project. | **Group ID** | The group ID of your project. This is used for Maven and Gradle. This is usually your domain name in reverse. If you don't know what you should put here, you can use something like `io.github.` or if you don't have GitHub you can use `me.`. | | **Artifact ID** | The artifact ID of your project. This is used for Maven and Gradle. This is usually the name of your project. This is usually the same as the `Name` field. | | **Version** | The version of your project. This is used for Maven and Gradle. This is usually `1.0-SNAPSHOT` and does not really matter for now. | -| **JDK** | The JDK you want to use. This can be anything from Java 21 and above. | +| **JDK** | The JDK you want to use. This can be anything from Java 25 and above. | Now you can click on the `Create` button and IntelliJ will create the project for you. If everything went well, you should see something like this: From 45916050ffb786917ac73c8021903da8e85e93fc Mon Sep 17 00:00:00 2001 From: Strokkur24 Date: Thu, 5 Mar 2026 17:31:52 +0100 Subject: [PATCH 2/4] chore(paper): cleanup system properties --- .../admin/reference/system-properties.md | 53 ++++++------------- 1 file changed, 15 insertions(+), 38 deletions(-) diff --git a/src/content/docs/paper/admin/reference/system-properties.md b/src/content/docs/paper/admin/reference/system-properties.md index ebcbecbec..65d3f39b9 100644 --- a/src/content/docs/paper/admin/reference/system-properties.md +++ b/src/content/docs/paper/admin/reference/system-properties.md @@ -50,6 +50,12 @@ In most cases, you will not need to use these, unless you are running Paper in a #### timings.bypassMax +:::danger[Deprecation] + +Timings are deprecated. Due to that, this flag does not have any effect. + +::: + - **default**: `unset` - **description**: Allows for bypassing the max amount of data to send to the Aikar's Timings API. Setting this will not permit bypassing the limit unless the API is configured to allow it. @@ -113,25 +119,9 @@ In most cases, you will not need to use these, unless you are running Paper in a - **default**: `unset` - **description**: Bypasses the host pattern matching attempt for the client when connecting to the server. -#### paper.ticklist-warn-on-excessive-delay - -- **default**: `unset` -- **description**: Enables the warning when a tick list is scheduled with an excessive delay. - -#### debug.rewriteForIde - -- **default**: `unset` -- **description**: Removes the NMS revision from the stack trace to allow for easier debugging in IDEs. -It also remaps plugin CB calls to remove the version information. - -#### convertLegacySigns - -- **default**: `unset` -- **description**: Converts legacy signs to the new format. - #### paper.maxCustomChannelName -- **default**: `64` +- **default**: `32767` - **description**: Sets the largest size that a plugin channel name can take. #### Paper.maxSignLength @@ -159,21 +149,11 @@ It also remaps plugin CB calls to remove the version information. - **default**: `unset` - **description**: Suppresses the nag message about using `System.out`/`System.err` in a plugin. -#### paper.strict-thread-checks - -- **default**: `unset` -- **description**: This sets the status of the AsyncCatcher so that it will always log an error if code is not run on the main thread. - #### Paper.skipServerPropertiesComments - **default**: `unset` - **description**: Skips the comments in the `server.properties` file. -#### Paper.debugInvalidSkullProfiles - -- **default**: `unset` -- **description**: Enables debug logging for invalid skull profiles. This logs any invalid skulls in the world with the appropriate location information. - #### paper.alwaysPrintWarningState - **default**: `unset` @@ -184,7 +164,7 @@ It also remaps plugin CB calls to remove the version information. - **default**: `true` - **description**: Sets whether to parse comments in YAML files by default. -#### paperclip.patchonly: +#### paperclip.patchonly - **default**: `false` - **description**: If the server is started via the Paperclip patch utility (the default distribution on the downloads page) then this sets whether it should only patch the Vanilla server and download libraries without starting the server. @@ -204,21 +184,11 @@ It also remaps plugin CB calls to remove the version information. - **default**: `false` - **description**: Allows cyclic plugin loading. See [here](/paper/reference/paper-plugins#cyclic-plugin-loading) for more info. -#### Paper.DisableCommandConverter - -- **default**: `false` -- **description**: Disables Paper's automatic upgrading of commands, including items with custom data defined in command blocks and other places that may contain commands, to the new component format introduced in version 1.20.5. - #### paper.disableOldApiSupport - **default**: `false` - **description**: Disables plugin compatibility measures that can otherwise result in a considerable delay of class loading (also known as "Commodore" plugin rewriting). This generally requires all of your plugins to be compiled against a recent API version. -#### paper.disablePluginRemapping - -- **default**: `false` -- **description**: Disables plugin remapping introduced in 1.20.5. For more information see the [userdev](/paper/dev/userdev#1205-and-beyond) documentation and the official [announcement](https://discord.com/channels/289587909051416579/976631292747735080/1232740079097876570). - #### paper.preferSparkPlugin - **default**: `false` @@ -231,6 +201,13 @@ It also remaps plugin CB calls to remove the version information. #### paper.disableGameRuleLimits +:::note + +Whilst this system property exists, its associated code is not currently referenced anywhere, +resulting in this property not having any effect. + +::: + - **default**: `false` - **description**: Disables limits on certain game rule values, e.g. `minecartMaxSpeed` and `spawnChunkRadius`. From 6bf9f9b6e994459645330565ba975ad406869576 Mon Sep 17 00:00:00 2001 From: Strokkur24 Date: Thu, 5 Mar 2026 17:41:18 +0100 Subject: [PATCH 3/4] chore(paper): update userdev page in preparation of obfuscation support removal --- .../docs/paper/dev/getting-started/userdev.md | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/content/docs/paper/dev/getting-started/userdev.md b/src/content/docs/paper/dev/getting-started/userdev.md index 74f6c8063..20769a0d4 100644 --- a/src/content/docs/paper/dev/getting-started/userdev.md +++ b/src/content/docs/paper/dev/getting-started/userdev.md @@ -26,10 +26,11 @@ fully deobfuscated types, names, and fields during development, and then remaps server. However, this does not apply to reflection. Look at something like [this library](https://github.com/jpenilla/reflection-remapper) to be able to use non-obfuscated names in reflection if you want to support obfuscated servers. -:::note[1.20.5 Mojang-mapped runtime] +:::note[Removal of obfuscations in 26.1] -As of Minecraft version 1.20.5, Paper ships with a Mojang-mapped runtime instead of re-obfuscating the server to Spigot mappings. -See [here](#1205-and-beyond) for more details. +From Minecraft version **26.1** onwards, Paper no longer supports obfuscated plugins due to Mojang themselves +removing obfuscation of their server jar. As Minecraft now ships unobfuscated, there are no 26.1 Spigot mappings +to obfuscated to. For this reason, the obfuscation function no longer works for dev bundles for 26.1+. ::: @@ -110,15 +111,21 @@ makes use of this feature. ::: -## Gradle tasks +## Reobfuscation (up to 1.21.11) -### `reobfJar` +:::danger -This task creates a plugin JAR that is re-obfuscated to Spigot's runtime mappings. +Since Minecraft version **26.1**, Paper no longer supports remapping your plugin to Spigot +runtime mappings. This section is kept as a reference for older versions, however +reobfuscated plugins will not work from Paper 26.1 onwards! + +::: + +The `reobfJar` task creates a plugin JAR that is re-obfuscated to Spigot's runtime mappings. This means it will work on standard Paper servers. The output will be inside the `build/libs` folder. The JAR whose filename includes `-dev` -is Mojang-mapped (not re-obfuscated) and will not work on most servers. +is Mojang-mapped (not re-obfuscated) and will not work on non-Paper servers. :::note[Shadow] From fc0e7148cbaa4c23e97eca2154bcf3f873a67ad4 Mon Sep 17 00:00:00 2001 From: Strokkur24 Date: Sat, 7 Mar 2026 13:15:39 +0100 Subject: [PATCH 4/4] Apply suggestion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Matouš Kučera --- src/content/docs/paper/dev/getting-started/userdev.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/docs/paper/dev/getting-started/userdev.md b/src/content/docs/paper/dev/getting-started/userdev.md index 20769a0d4..0a4daf004 100644 --- a/src/content/docs/paper/dev/getting-started/userdev.md +++ b/src/content/docs/paper/dev/getting-started/userdev.md @@ -29,8 +29,8 @@ use non-obfuscated names in reflection if you want to support obfuscated servers :::note[Removal of obfuscations in 26.1] From Minecraft version **26.1** onwards, Paper no longer supports obfuscated plugins due to Mojang themselves -removing obfuscation of their server jar. As Minecraft now ships unobfuscated, there are no 26.1 Spigot mappings -to obfuscated to. For this reason, the obfuscation function no longer works for dev bundles for 26.1+. +removing obfuscation of their server JAR. As Minecraft now ships unobfuscated, there are no 26.1 Spigot mappings +to obfuscate to. For this reason, the reobfuscation function no longer works for dev bundles for 26.1+. :::