Async move#1
Merged
Merged
Conversation
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>
…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
…alsX#6445) ### What does this PR do? Fixes an issue where `EssentialsTreeNode` instances did not receive updated `Essentials` and `IEssentialsModule` references after registration. This could lead to null references during command execution, especially in test environments. ### Changes made - Override `setEssentials` in `EssentialsTreeCommand` - Override `setEssentialsModule` in `EssentialsTreeCommand` - Propagate updated references to all registered nodes ### Why is this needed? Nodes only received references during registration. If the parent command updated its references later, the nodes would retain outdated (null) values. ### Does this PR break compatibility? No.
…X#6448) Rearranged logger addition to message entry for filtering by logger name. --------- Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
<!--
EssentialsX bug fix 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 bug fix, please follow the following steps:
1. Fill out the template in full.
This includes providing screenshots and a link to the original bug
report. If there isn't an existing bug report, we recommend opening a
new
detailed bug report BEFORE opening your PR to fix it, else your PR may
be
delayed or rejected without warning.
You can open a new bug report by following this link:
https://github.com/EssentialsX/Essentials/issues/new/choose
2. When linking logs or config files, do not attach them to the post!
Copy and paste any logs into https://gist.github.com/, then paste a
link to them in the relevant parts of the template. Do not use Hastebin
or Pastebin, as this can cause issues with future reviews.
DO NOT drag logs directly into this text box, as we cannot read these!
3. If you are fixing a performance issue, please include a link to a
Timings and/or profiler report, both before and after your PR.
4. If you are fixing a visual bug, such as in commands, please include
screenshots so that we can more easily review the proposed fix.
(You can drag screenshots into the bottom of the editor.)
-->
### Information
<!--
Replace #nnnn with the number of the original issue. If this PR fixes
multiple issues, you should repeat the phrase "fixes #nnnn" for each
issue.
-->
This PR fixes a bug where anyone with access to the /give command could
freeze the server.
### Details
Currently, if a user has permission to spawn items with metadata, they
can freeze or completely crash the server by supplying a massive integer
for a book's page number (e.g., `/give <player> written_book 1
page2147483647:payload`).
Because there is no upper bound check in `MetaItemStack.java`, the
internal `for` loop tries to allocate an `ArrayList` with billions of
empty strings to reach that requested page index. This instantly
exhausts the JVM heap and triggers an OutOfMemoryError, hard-crashing
the server thread, or at least freezing it entirely for seconds.
This PR fixes the issue by introducing a hard limit of 100 pages for
book metadata parsing. If the requested page exceeds this limit, the
loop doesn't execute and it instead throws a newly added
`pageLimitExceeded` translatable exception.
**Environments tested:**
<!-- Type the OS you have used below. -->
OS: Windows 11 25H2 26200.7922
<!-- Type the JDK version (from java -version) you have used below. -->
Java version: Java 21 (OpenJDK 64-Bit Server VM 21.0.10+7-LTS; Eclipse
Adoptium Temurin-21.0.10+7)
<!--
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.
-->
Purpur version 1.21.11-2545
**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.
-->
Before:
<img width="1401" height="269" alt="image"
src="https://github.com/user-attachments/assets/9453a449-af43-4e77-bdfe-26e63e47b634"
/>
After:
<img width="1104" height="189" alt="image"
src="https://github.com/user-attachments/assets/f1783011-92db-4518-9a4d-a831bb847261"
/>
Co-authored-by: MD <1917406+mdcfe@users.noreply.github.com>
…ntialsX#6452) Before: - Using `/burn <player> 107374183` extinguished the player. - `/burn` accepted negative values. - Using `/more 2147483647` deleted the held item(s) entirely. After: - Using `/burn <player> 107374183` sets the player on fire for 107374183 seconds correctly. - `/burn` doesn't accept negative values. - Using `/more 2147483647` correctly increases the held item stack to 64.
…lsX#6458) Jitpack is down. Move dependencies to our own repo to remove the build-time dependency on Jitpack.
) <!-- EssentialsX bug fix 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 bug fix, please follow the following steps: 1. Fill out the template in full. This includes providing screenshots and a link to the original bug report. If there isn't an existing bug report, we recommend opening a new detailed bug report BEFORE opening your PR to fix it, else your PR may be delayed or rejected without warning. You can open a new bug report by following this link: https://github.com/EssentialsX/Essentials/issues/new/choose 2. When linking logs or config files, do not attach them to the post! Copy and paste any logs into https://gist.github.com/, then paste a link to them in the relevant parts of the template. Do not use Hastebin or Pastebin, as this can cause issues with future reviews. DO NOT drag logs directly into this text box, as we cannot read these! 3. If you are fixing a performance issue, please include a link to a Timings and/or profiler report, both before and after your PR. 4. If you are fixing a visual bug, such as in commands, please include screenshots so that we can more easily review the proposed fix. (You can drag screenshots into the bottom of the editor.) --> ### Information <!-- Replace #nnnn with the number of the original issue. If this PR fixes multiple issues, you should repeat the phrase "fixes #nnnn" for each issue. --> This PR fixes missing MiniMessage support for the enabled / disabled thunder message ### Details **Proposed fix:** <!-- Type a description of your proposed fix below this line. --> Added parsing **Environments tested:** <!-- Type the OS you have used below. --> OS: Linux <!-- Type the JDK version (from java -version) you have used below. --> Java version: 21 <!-- 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] 1.21.8 Paper version - [ ] CraftBukkit/Spigot/Paper 1.12.2 - [ ] 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. -->
…ar names (EssentialsX#6462) ### Information Workflow artifact upload steps referenced incorrect jar filenames — all addon jars are built as `EssentialsX{Addon}-*.jar` (e.g. `EssentialsXChat`, `EssentialsXProtect`) because project names in `settings.gradle.kts` are all prefixed with `EssentialsX`, and `archivesName` is set to `project.name`. The upload globs were missing the `X`, causing every per-module direct upload to fail to find its target file. ### Details **Proposed fix:** Update all per-module `archive: false` upload step paths in both `build-pr.yml` and `build-master.yml` to use the correct `EssentialsX`-prefixed names: | Before | After | |---|---| | `jars/EssentialsAntiBuild-*.jar` | `jars/EssentialsXAntiBuild-*.jar` | | `jars/EssentialsChat-*.jar` | `jars/EssentialsXChat-*.jar` | | `jars/EssentialsDiscord-*.jar` | `jars/EssentialsXDiscord-*.jar` | | `jars/EssentialsDiscordLink-*.jar` | `jars/EssentialsXDiscordLink-*.jar` | | `jars/EssentialsGeoIP-*.jar` | `jars/EssentialsXGeoIP-*.jar` | | `jars/EssentialsProtect-*.jar` | `jars/EssentialsXProtect-*.jar` | | `jars/EssentialsSpawn-*.jar` | `jars/EssentialsXSpawn-*.jar` | | `jars/EssentialsXMPP-*.jar` | `jars/EssentialsXXMPP-*.jar` | The Javadoc `cp` paths in `build-master.yml` reference filesystem directory names (which don't include `X`) and remain correct as-is. **Environments tested:** OS: N/A (CI workflow change only) Java version: N/A - ~~Most recent Paper version (1.XX.Y, git-Paper-BUILD)~~ - ~~CraftBukkit/Spigot/Paper 1.12.2~~ - ~~CraftBukkit 1.8.8~~ **Demonstration:** N/A — the incorrect globs would silently produce no artifact (or an error) for each addon module on every workflow run using `archive: false`. <!-- START COPILOT CODING AGENT SUFFIX --> <!-- START COPILOT ORIGINAL PROMPT --> <details> <summary>Original prompt</summary> > https://github.blog/changelog/2026-02-26-github-actions-now-supports-uploading-and-downloading-non-zipped-artifacts/ > > update our workflows to use this rather than zipping (still provide the zip but also individually upload </details> <!-- START COPILOT CODING AGENT TIPS --> --- ✨ Let Copilot coding agent [set things up for you](https://github.com/EssentialsX/Essentials/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot) — coding agent works faster and does higher quality work when set up for your repo. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: JRoy <10731363+JRoy@users.noreply.github.com>
<!--
EssentialsX bug fix 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 bug fix, please follow the following steps:
1. Fill out the template in full.
This includes providing screenshots and a link to the original bug
report. If there isn't an existing bug report, we recommend opening a
new
detailed bug report BEFORE opening your PR to fix it, else your PR may
be
delayed or rejected without warning.
You can open a new bug report by following this link:
https://github.com/EssentialsX/Essentials/issues/new/choose
2. When linking logs or config files, do not attach them to the post!
Copy and paste any logs into https://gist.github.com/, then paste a
link to them in the relevant parts of the template. Do not use Hastebin
or Pastebin, as this can cause issues with future reviews.
DO NOT drag logs directly into this text box, as we cannot read these!
3. If you are fixing a performance issue, please include a link to a
Timings and/or profiler report, both before and after your PR.
4. If you are fixing a visual bug, such as in commands, please include
screenshots so that we can more easily review the proposed fix.
(You can drag screenshots into the bottom of the editor.)
-->
### Information
<!--
Replace #nnnn with the number of the original issue. If this PR fixes
multiple issues, you should repeat the phrase "fixes #nnnn" for each
issue.
-->
This PR fixes EssentialsX#6450 .
### Details
**Proposed fix:**
I added a check to make sure that items are only placed into the
inventory when it successfully opens.
**Environments tested:**
<!-- Type the OS you have used below. -->
OS: Linux Mint
<!-- Type the JDK version (from java -version) you have used below. -->
Java version: 21
<!--
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)
- [ ] CraftBukkit/Spigot/Paper 1.12.2
- [ ] 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.
-->
In order to replicate the issue, I used the following code to test:
```java
@eventhandler
public void onRecipeStop(InventoryOpenEvent event) {
if (event.getPlayer().isSleeping()) {
event.setCancelled(true);
}
}
```
---------
Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
Co-authored-by: Benedikt Johannes <benedikt.johannes.hofer@gmail.com>
…EssentialsX#6467) Commit 297d0e4 migrated `emoji-java` from Jitpack (`com.github.MinnDevelopment`) to EssentialsX's own Maven repo (`net.essentialsx.deps`), but the `include(dependency(...))` in the `shadowJar` block was not updated to match, leaving the shadow JAR unable to locate and bundle the dependency. ### Details **Proposed fix:** - Updated `EssentialsDiscord/build.gradle` shadowJar include to use the correct group ID: ```groovy // Before include(dependency('com.github.MinnDevelopment:emoji-java')) // After include(dependency('net.essentialsx.deps:emoji-java')) ``` **Environments tested:** OS: Java version: - [ ] Most recent Paper version (1.XX.Y, git-Paper-BUILD) - [ ] CraftBukkit/Spigot/Paper 1.12.2 - [ ] CraftBukkit 1.8.8 **Demonstration:** <!-- START COPILOT CODING AGENT SUFFIX --> <!-- START COPILOT ORIGINAL PROMPT --> <details> <summary>Original prompt</summary> > never updated the shadow include group id here pls fix > > Reference: EssentialsX@297d0e4 </details> <!-- START COPILOT CODING AGENT TIPS --> --- 📱 Kick off Copilot coding agent tasks wherever you are with [GitHub Mobile](https://gh.io/cca-mobile-docs), available on iOS and Android. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: JRoy <10731363+JRoy@users.noreply.github.com>
ThioJoe is waiting! Re EssentialsX#6479 --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: JRoy <10731363+JRoy@users.noreply.github.com>
Fixin what u broke :)
…sentialsX#6483) Pre-release, snapshot, and RC variants should be considered lower than the base release version. Updated test assertions and comparison logic to reflect that release versions are higher than their dev variants (snapshot < pre < rc < release).
Fixes EssentialsX#6443 Fixes EssentialsX#6323 - Prevent AFK timer reset when fishing rod bobber is idle - Fix incorrect teleportOfflineUnknown message showing sender instead of target --------- Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
…6460) Fixes EssentialsX#6459. 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.
-->
I added a PreTransactionEvent for cancelling transactions between users.
### Details
**Proposed feature:**
Adding a PreTransactionEvent.
**Environments tested:**
<!-- Type the OS you have used below. -->
OS: Linux Mint
<!-- Type the JDK version (from java -version) you have used below. -->
Java version: 23
<!--
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)
- [ ] CraftBukkit/Spigot/Paper 1.12.2
- [ ] 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.
-->
```java
@eventhandler
public void onPay(PreTransactionEvent event) {
// Prevent money from being sent outside their own faction.
IUser userSource = event.getRequester().getUser();
if (userSource == null)
return;
FPlayer fplayerSource = FPlayers.getInstance().getByPlayer(userSource.getBase());
if (fplayerSource == null || fplayerSource.isAdminBypassing())
return;
Faction faction = fplayerSource.getFaction();
if (faction == null || !isFactionVoluntaryExcluded(faction.getId()))
return;
// Who are they sending it to?
FPlayer target = FPlayers.getInstance().getById(event.getTarget().getUUID().toString());
Faction factionTarget = target.getFaction();
if (faction != factionTarget) {
event.setCancelled(true);
msg(userSource.getBase(), cantPayOutsideExcludedFactionMessage);
}
}
```
This code prevents transactions between two users when two factions
can't interact.
---------
Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
Persist /fly state in userdata and re-enable allowFlight on login so flight isn’t lost after relogging on ground (upstream EssentialsX#6344). <!-- EssentialsX bug fix 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 bug fix, please follow the following steps: 1. Fill out the template in full. This includes providing screenshots and a link to the original bug report. If there isn't an existing bug report, we recommend opening a new detailed bug report BEFORE opening your PR to fix it, else your PR may be delayed or rejected without warning. You can open a new bug report by following this link: https://github.com/EssentialsX/Essentials/issues/new/choose 2. When linking logs or config files, do not attach them to the post! Copy and paste any logs into https://gist.github.com/, then paste a link to them in the relevant parts of the template. Do not use Hastebin or Pastebin, as this can cause issues with future reviews. DO NOT drag logs directly into this text box, as we cannot read these! 3. If you are fixing a performance issue, please include a link to a Timings and/or profiler report, both before and after your PR. 4. If you are fixing a visual bug, such as in commands, please include screenshots so that we can more easily review the proposed fix. (You can drag screenshots into the bottom of the editor.) --> ### Information <!-- Replace #nnnn with the number of the original issue. If this PR fixes multiple issues, you should repeat the phrase "fixes #nnnn" for each issue. --> This PR fixes EssentialsX#6344 ### Details **Proposed fix:** <!-- Type a description of your proposed fix below this line. --> Persist the /fly state to userdata and restore allowFlight on login so flight isn’t lost after relogging while on the ground. **Environments tested:** <!-- Type the OS you have used below. --> OS: Ubuntu 24.04 <!-- Type the JDK version (from java -version) you have used below. --> Java version: 21 <!-- 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] Paper 1.21.8 - [ ] CraftBukkit/Spigot/Paper 1.12.2 - [ ] CraftBukkit 1.8.8 --------- Co-authored-by: JRoy <10731363+JRoy@users.noreply.github.com>
Fixes EssentialsX#5430 stop gap for before we do EssentialsX#5267
extractUrls on the default LegacyComponentSerializer caused
legacyToMini to auto-wrap URLs in <click:open_url> tags. When
translation templates like discordCommandLink already wrapped {0}
in their own click tag, this produced nested click events that
Paper 1.21.11+ rejected.
The default serializer no longer extracts URLs. A new
legacyToMiniWithUrls method is available for cases that explicitly
need clickable URL extraction (chat, broadcast).
Fixes EssentialsX#6463
old message seems needlessly technical anyway Fixes EssentialsX#5088
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.
You need to select a pull request template!
If you're adding a new feature, copy and paste the following parameter at the end of the URL:
?template=new-feature.md
If you're fixing a bug, copy and paste the following parameter at the end of the URL:
?template=bug-fix.md
For more information about contributing to EssentialsX, see CONTRIBUTING.md:
https://github.com/EssentialsX/Essentials/blob/2.x/CONTRIBUTING.md