Merge 2.x changes into folia branch#6438
Merged
JRoy merged 311 commits intoEssentialsX:refactor/foliafrom Feb 28, 2026
Merged
Conversation
This fixes issues where arguments converted implicitly from MiniMessage are prone to bleeding into the rest of the output. The fix mostly works since `MINI_MESSAGE_NO_TAGS` is only used for legacy conversion, while `miniMessageInstance` is used in all other cases normally. If that were not the case, we would not want strict parsing everywhere since we don't enforce this in translations anyway. Fixes EssentialsX#5729 Fixes EssentialsX#5730 Fixes EssentialsX#5732 Fixes EssentialsX#5735 Fixes EssentialsX#5720 Closes EssentialsX#5728
…tialsX#5739) Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
There has been a method for this since 1.13. Why have we been using this for so long? Since item NBT is now dead, this method for checking if an item is spawn-able is defunct and produces a console error every time the give command is ran.
How could I forget to update the md_5 magic letter Fixes EssentialsX#5818
Enchantment#getName is deprecated and gives the wrong names for enchantments starting in 1.21
Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
<!--
EssentialsX feature submission guide
====================================
NOTE: Failure to fill out this template properly may result in your PR
being
delayed or ignored without warning.
NOTE: Don't type between any arrows in the template, as this text will
be
hidden. This includes this header block and any other explanation text
blocks.
Want to discuss your PR before submitting it? Join the EssentialsX
Development
server: https://discord.gg/CUN7qVb
EssentialsX is GPL
------------------
By contributing to EssentialsX, you agree to license your code under the
GNU General Public License version 3, which can be found at the link
below:
https://github.com/EssentialsX/Essentials/blob/2.x/LICENSE
Instructions
------------
If you are submitting a new feature, please follow the following steps:
1. Fill out the template in full.
This includes providing screenshots and a link to the original feature
request. If there isn't an existing feature request, we strongly
recommend opening a new feature request BEFORE opening your PR to
implement it, as this allows us to review whether we're likely to accept
your feature in advance, and also allows us to discuss possible
implementations for the feature. If there is no associated feature
request, your PR may be delayed or rejected without warning.
You can open a new feature request by following this link:
https://github.com/EssentialsX/Essentials/issues/new/choose
2. If you are fixing a performance issue, please use the "Bug fix" PR
template
instead. The "bug fix" template is better suited to performance issues.
3. Include a demonstration.
If you are adding commands, please provide screenshots and/or a video
demonstration of the feature. Similarly, if you are adding a new API,
please include a link to example code that takes advantage of your
proposed API. This will aid us in reviewing PRs and speed up the process
significantly.
-->
### Information
<!--
Replace #nnnn with the number of the original issue. If this PR
implements
features from multiple issues, you should repeat the phrase "closes
#nnnn"
for each issue.
-->
Closes EssentialsX#6336.
### Details
<!-- Type a description of your proposed feature below this line. -->
This adds a config option that allows disabling the logging of console
and RCON commands.
**Environments tested:**
<!-- Type the OS you have used below. -->
OS: Arch Linux
<!-- Type the JDK version (from java -version) you have used below. -->
Java version: openjdk 21.0.8 2025-07-15
<!--
Put an "x" inside the boxes for the server software you have tested this
bug fix on. If this feature does not apply to a server, strike through
the server software using ~~strikethrough~~. If you have tested on other
environments, add a new line with relevant details.
-->
- [x] Most recent Paper version (1.XX.Y, git-Paper-BUILD)
- [x] CraftBukkit/Spigot/Paper 1.12.2
- [x] CraftBukkit 1.8.8
**Demonstration:**
<!--
Below this block, include screenshots/log snippets from before and after
as
necessary. If you have created or used a test case plugin, please link
to a
download of the plugin, source code and exact version used where
possible.
-->
Without these changes, with the config option not set:
<img width="680" height="69" alt="image"
src="https://github.com/user-attachments/assets/92647fc0-c0c5-4e7b-9f61-953fcadd7f93"
/>
With these changes, with the config option set to false:
<img width="635" height="68" alt="image"
src="https://github.com/user-attachments/assets/fd11572c-dfe2-4b79-89ab-69e2275d2c9f"
/>
---------
Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
<!--
EssentialsX feature submission guide
====================================
NOTE: Failure to fill out this template properly may result in your PR
being
delayed or ignored without warning.
NOTE: Don't type between any arrows in the template, as this text will
be
hidden. This includes this header block and any other explanation text
blocks.
Want to discuss your PR before submitting it? Join the EssentialsX
Development
server: https://discord.gg/CUN7qVb
EssentialsX is GPL
------------------
By contributing to EssentialsX, you agree to license your code under the
GNU General Public License version 3, which can be found at the link
below:
https://github.com/EssentialsX/Essentials/blob/2.x/LICENSE
Instructions
------------
If you are submitting a new feature, please follow the following steps:
1. Fill out the template in full.
This includes providing screenshots and a link to the original feature
request. If there isn't an existing feature request, we strongly
recommend opening a new feature request BEFORE opening your PR to
implement it, as this allows us to review whether we're likely to accept
your feature in advance, and also allows us to discuss possible
implementations for the feature. If there is no associated feature
request, your PR may be delayed or rejected without warning.
You can open a new feature request by following this link:
https://github.com/EssentialsX/Essentials/issues/new/choose
2. If you are fixing a performance issue, please use the "Bug fix" PR
template
instead. The "bug fix" template is better suited to performance issues.
3. Include a demonstration.
If you are adding commands, please provide screenshots and/or a video
demonstration of the feature. Similarly, if you are adding a new API,
please include a link to example code that takes advantage of your
proposed API. This will aid us in reviewing PRs and speed up the process
significantly.
-->
### Information
<!--
Replace #nnnn with the number of the original issue. If this PR
implements
features from multiple issues, you should repeat the phrase "closes
#nnnn"
for each issue.
-->
### Details
**Proposed feature:**
This PR add a new event when a warmpup teleport is cancelled, and it
also expose the tpType
**Environments tested:**
<!-- Type the OS you have used below. -->
OS: Debian 12
<!-- Type the JDK version (from java -version) you have used below. -->
Java version: OpenJDK Runtime Environment Corretto-8.422.05.1 (build
1.8.0_422-b05)
<!--
Put an "x" inside the boxes for the server software you have tested this
bug fix on. If this feature does not apply to a server, strike through
the server software using ~~strikethrough~~. If you have tested on other
environments, add a new line with relevant details.
-->
- [x] Most recent Paper version (1.21.8, git-Paper-60-main@29c8822)
- [ ] CraftBukkit/Spigot/Paper 1.12.2
- [x] Paper 1.8.8
---------
Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
. Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
…lsX#6371) Adds a call to super with the correct async flag based on Bukkit's primary thread status, ensuring proper event handling for TeleportWarmupCancelledEvent. fix this error: ``` [18:40:31 WARN]: [Essentials] Plugin Essentials v2.22.0-dev+278-984a0c1 generated an exception while executing task 156164 java.lang.IllegalStateException: TeleportWarmupCancelledEvent may only be triggered synchronously. at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:42) ~[paper-1.21.10.jar:1.21.10-117-df4b668] at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[paper-1.21.10.jar:1.21.10-117-df4b668] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[paper-api-1.21.10-R0.1-SNAPSHOT.jar:?] at EssentialsX-2.22.0-278.jar/com.earth2me.essentials.AsyncTimedTeleport.cancelTimer(AsyncTimedTeleport.java:160) ~[EssentialsX-2.22.0-278.jar:?] at EssentialsX-2.22.0-278.jar/com.earth2me.essentials.AsyncTimedTeleport.run(AsyncTimedTeleport.java:96) ~[EssentialsX-2.22.0-278.jar:?] at org.bukkit.craftbukkit.scheduler.CraftTask.run(CraftTask.java:78) ~[paper-1.21.10.jar:1.21.10-117-df4b668] at org.bukkit.craftbukkit.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57) ~[paper-1.21.10.jar:1.21.10-117-df4b668] at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[paper-1.21.10.jar:?] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?] at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?] ```
This will allow us to backup dumps while issues are still open since bytebins expire after a bit. We will need to set `GIST_TOKEN` to a PAT for @Flask-Bot. obviously will require new website and shouldn't be merged till. Co-authored-by: MD <1917406+mdcfe@users.noreply.github.com>
Fixes EssentialsX#6342 --------- Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
Fixes EssentialsX#6085 --------- Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
new site doesn't require .html extension, we can avoid the redirect. Co-authored-by: MD <1917406+mdcfe@users.noreply.github.com>
Show tempban IP expiration on player join, matching standard tempban behavior.
Closes EssentialsX#5535 --------- Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
I hope this message finds you well. This pull requests prevents an NPE in getPlayerLocale for offline players. Co-authored-by: JRoy <10731363+JRoy@users.noreply.github.com>
EconomyLayers relies on the scheduler to be initialized to enable properly
|
Hey @Warriorrrr, I have a comprehensively production-tested Folia iteration/branch that covers a huge number of remaining flaws with the base implementation for Folia support. I'd encourage reviewing these (if any are missing) that aren't workarounds for Folia compat.; some of the most critical ones surround open and closing inventories not being scheduled at the entity (incurring rare race conditions on large-scale servers), in addition to scheduling dropping items naturally: 2.x...FreshSMP:Essentials:folia-1.21.11 |
…nge. (EssentialsX#6442) The display name was comparing getDisplayName() to itself, making it always true which made the nickNoMore message unreachable. Now it uses FormatUtil.stripFormat() to strip color codes before comparing against getName(), also has a null-safety guard. I have built it locally and tested it - it works well. Verified: "Nick set normally", "Nick equal to Username", "Colored nick equal to Username". Had no Errors.
My take on command trees which fit the vibe of our codebase better than EssentialsX#5384 imo. Closes EssentialsX#5384
Updates /gc to use the new provider methods, allowing Paper to use getTileEntities(false) and avoid unnecessary snapshots while maintaining spigot compatibility. "Benchmarks:" Before, Paper: https://spark.lucko.me/kf2MVRQ5td - 76mspt After, Paper: https://spark.lucko.me/NhZQXtLqvh - 1mspt Spigot: https://spark.lucko.me/toXyvx0yq0
Makes us no longer dependent on adventure-platform for Paper servers as we will use their native adventure apis. Few hacks needed to be done to not remap things in places but this is the best we can do The PaperAdventureFacet has to be in PaperProvider to avoid the kyori remapping that happens on the entire EssentialsX module (we already did this for PaperChatListenerProvider) Fixes EssentialsX#6215
# Conflicts: # Essentials/src/main/java/com/earth2me/essentials/Essentials.java # Essentials/src/main/java/com/earth2me/essentials/commands/Commandessentials.java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This merges the latest changes from 2.x into the folia branch, and the bare minimum amount of fixes to get the plugin to enable properly and prepare for future work.
Comparing this branch against 2.x will provide a slightly better diff view: https://diffs.dev/?github_url=https%3A%2F%2Fgithub.com%2FEssentialsX%2FEssentials%2Fcompare%2F2.x...Warriorrrr%3Afeat%2Ffolia%2Fmerge-2.x-changes