EssentialsX - A maintained fork of Essentials 2.x.
Go to file
pop4959 9e2b906048
Display date diff correctly (#3292)
There is an age old issue in Essentials which causes date diffs (such as those displayed in teleportation delays, mutes, and temp bans) to display incorrectly to the user when the command is run. After looking into this a bit, it looks like the reason for this is that if there is even a 1 ms time difference between parsing the date diff and displaying it, the time displayed will be truncated by an entire second. This PR fixes this problem by adding 50 ms of buffer time to the date object *only* when it is calculating the date diff string. This is not significant enough to be noticed by users, and allows Essentials code to correctly generate the date diff string as long as it does so within 50 ms of parsing it.

As a theoretical example... lets say a user is muted for 1 year. If 1 ms passed (in code prior to this PR) between parsing and displaying the date diff, then the displayed time will be 11 months, 29 days, 23 hours. This is because 1 year - 1 ms is being truncated down and then Essentials lops off time accuracy beyond the 3 most significant terms. After this PR, the date diff will be parsed normally, but when the display string is being calculated, it will use 1 year + 50 ms (and if 1 ms passed, then that would be 1 year + 49 ms), which gets truncated to 1 year.

As a practical example:
https://user-images.githubusercontent.com/17698576/82106444-d55c0700-96d5-11ea-8290-377442e4f9fe.png

Quite often (I'd say about half of the time) before this PR, the date diff will display like this, when the example command `/mute <player> 1y` is run.

https://user-images.githubusercontent.com/17698576/82106467-063c3c00-96d6-11ea-9da2-3dc1556add14.png

After this PR, the date diff displays correctly every time.

Fixes #3349.
2020-05-30 15:18:16 +01:00
.github Update funding to include Ko-fi link 2020-02-10 11:34:59 +00:00
Essentials Display date diff correctly (#3292) 2020-05-30 15:18:16 +01:00
EssentialsAntiBuild Protect Armor Stands + Item Frames (#3270) 2020-05-27 12:36:53 -07:00
EssentialsChat Player should not be able to send empty shout/question messages (#3341) 2020-05-28 11:45:05 -07:00
EssentialsGeoIP Fix zh-CN GeoIP locale issue 2020-03-05 01:08:55 -08:00
EssentialsProtect Add protect option for disabling ender crystal explosions (#3210) 2020-04-30 20:39:00 +01:00
EssentialsSpawn Bump version to 2.17.2 2020-02-22 10:05:14 +00:00
EssentialsXMPP Add a more helpful error message for xmpp module (#3247) 2020-05-09 13:21:02 +01:00
nms Clean up providers a bit (#3279) 2020-05-28 12:06:03 -07:00
scripts scripts: fix buildtools script under windows git bash (#3145) 2020-04-09 15:05:21 +01:00
.gitignore Lots of little fixes in the Essentials modules (#2337) @DoNotSpamPls 2019-01-05 18:42:09 +00:00
crowdin.yml Add Estonian alias to Crowdin config 2019-04-07 21:08:30 +01:00
LICENSE Added License info. Essentials is GPLv3 2011-05-13 19:58:30 +00:00
pom.xml Remove 1.8 NMS spawner providers (#3276) 2020-05-13 10:56:50 +01:00
README.md Mention 1.15.2 in the README (#3107) 2020-03-29 12:11:44 -07:00

EssentialsX

Jenkins

Discord

Patreon

This is a fork of Essentials called EssentialsX.

If you are using this, do NOT ask Essentials for support.

The official upstream repository is at https://github.com/Essentials/Essentials.

Why use EssentialsX?

EssentialsX is an unofficial continuation of Essentials, updated to support modern Minecraft and Spigot versions. It provides several performance enhancements and fixes that are currently not available in Essentials and Spigot-Essentials. For more details, see the wiki.

EssentialsX is almost a completely drop-in replacement for Essentials. However, it has different requirements:

  • EssentialsX requires Vault to enable chat prefix/suffixes and group support if you have a supported permissions plugin. We recommend using LuckPerms.

  • If you have an unsupported permissions plugin but still wish to use wildcards, enable use-bukkit-permissions in the configuration. Otherwise, the plugin will fall back to config-based permissions.

  • EssentialsX requires Java 8 or higher. On older versions, the plugin may not work properly.

  • EssentialsX supports Minecraft versions 1.8.8, 1.9.4, 1.10.2, 1.11.2, 1.12.2, 1.13.2, 1.14.4, and 1.15.2.

Support

Need help with using EssentialsX? Join the MOSS Discord community to ask for help and discuss EssentialsX.

If you need to report a bug or want to suggest a new feature, you can open an issue on GitHub.

Building

EssentialsX builds against the Spigot/CraftBukkit server software for legacy support.

To compile EssentialsX, you first need to run BuildTools. This only needs to be done once. There are two ways to do this:

  • Use the provided script at scripts/buildtools.sh to automatically download and run BuildTools if needed.
  • Download and run BuildTools yourself for versions 1.8 and 1.8.3.

Next, to build EssentialsX with Maven, run the following command:

mvn clean install

Each module's jar can be found in target/ inside each module's directory.

Using EssentialsX in your plugin

Writing a plugin and want to support EssentialsX? We have a Maven repository at https://ci.ender.zone/plugin/repository/everything/, and the EssentialsX artifact is net.ess3:EssentialsX:2.17.0. More information at the wiki.

Contributing

Want to help improve EssentialsX? There are numerous ways you can contribute to the project.

If you'd like to make a financial contribution to the project, you can join our Patreon. If you can't make a donation, don't worry! There's lots of other ways to contribute:

  • Do you run a server? Take a look at our "help wanted" issues, where you can find issues that need extra testing and investigation. You can also join the MOSS Discord community and provide support to others.
  • Do you speak multiple languages? If so, we always welcome contributions to our Crowdin project.
  • If you're a developer, you could look through our "open to PR" issues. We're always happy to receive bug fixes and feature additions as pull requests.