Skip to content

Releases: Jikoo/Regionerator

2.5.0

05 Jul 15:35
c245805
Compare
Choose a tag to compare

What's Changed

  • Add support for BentoBox game modes (Big thanks to @BONNe!)
  • Add support for PlotSquared
  • Fix a potential bug with non-standard Towny cell sizes
  • Improve performance of GriefPrevention, Towny, WorldGuard hooks slightly
  • Improve support for non-Craftbukkit-based platforms
    • Regionerator will now make a best effort to determine the location of world data rather than assuming CB world structure and never finding it.
  • Fix entity/POI data not being deleted
    • You may see inflated region deletion numbers on your first run! This is because Regionerator may have previously deleted blocks and left behind entities.
    • POI data is not the same as structure data. Regionerator still does not handle structure data due to the fact that it would require parsing and editing NBT.
  • Improve disk savings by deleting XL chunks immediately
    • Likely only affects extremely heavily-built bases or chunks affected by malicious users.
    • Regionerator previously orphaned XL chunks like any other chunk. The server would delete them when the chunk was saved next. Unlike normal chunks, which are written in the middle of region files, XL chunks are separate .mcc files and can be removed from disk without having to rewrite the entire region file. A single .mcc file usually exceeds the size of an average region, so being able to dispose of them faster is important.
  • Use NIO file API
    • This is a major performance improvement. My benchmark put deletion at around 4,270% faster on a HDD reporting 153MB/s read, 170MB/s write and 1,461% faster on a SSD reporting 411MB/s read, 529MB/s write. As we now have to delete roughly 3x as many files and I assume you all are running your servers on far better hardware than my aging enthusiast-grade PC, I anticipate an average performance increase of "only" around 200%.
      • The largest cause of slow cycle times is hooks that are not async-capable. This affects only the portion of the deletion cycle where Regionerator rewrites region files to delete chunks.

New Contributors

Additional Thanks

Full Changelog: 2.4.0...2.5.0

2.4.0

11 Feb 16:46
b58211c
Compare
Choose a tag to compare

What's Changed

  • Update to Java 17
  • Update Lands hook
    • Lands users: Please verify that Lands' protections are detected properly. As always, I do not test hooks that I do not have an environment for.
    • Requires Lands 6.26+ (or so I believe - the versioning looks like it went wonky with the update that actually included this change. There are no changelogs for the API and the commit messages are tremendously unhelpful.)
  • Flag fresh chunks async
  • Fix relying on Bukkit's softdepend system actually functioning for the hook loading process
  • Attempt to reduce likelihood of author nag about tasks on shutdown
    • If you're still seeing this, you can safely ignore it. Regionerator's deletion task does not perform any additional operations once Regionerator cancels it. You usually see this warning because it finishes shutting down a fraction of a second after the main thread disables the plugin. The "solutions" involve hanging the main thread unnecessarily while waiting for the deletion thread to die or hiding the thread from Bukkit by not using its scheduler.
  • Code health

Full Changelog: 2.3.0...2.4.0

Regionerator 2.3.0

08 Mar 15:27
4beb0d3
Compare
Choose a tag to compare

It's been so long since a release that you get categories instead of just bullet points! Exciting!

Configuration:

  • Added per-world flag durations and default setting for all non-specified worlds
    • Replaces 2 old settings - world list and flag duration.
    • Allows for setups where specific worlds do not use Regionerator but all other user-generated worlds will.
    • See Configuration#worlds
  • Added cache settings
    • These settings are mostly for advanced users with particularly large or small servers. If you don't know what you're doing, you could probably break Regionerator badly (i.e. a batch size of 1 and a batch delay of 5 minutes would cause the queue to take forever to drain, meaning flags would likely fail to save).
    • See Configuration#cache

Cache:

  • Changed queue to drain at a rate of 1 region per 0.5 seconds instead of 2.5 seconds.
  • Added minimum time between expiration checks to reduce churn
  • Added soft max cache size (cache is allowed to exceed max size between expiration checks)

Hooks:

  • Fixed Civs hook not enabling without soft dependencies (namely WG and MMOItems) being present
    • Because the hook needs to be precompiled and therefore is a huge pain to monitor and maintain, the hook is officially EoL. If the API used changes, that's it, goodbye hook.
  • Fixed WG hook causing problems without WG present
  • Fix WG hook not being declared capable of async operation
    • Using exclusively async-capable hooks provides a huge speed improvement, so this may lead to huge performance gains during cycles for some people.

Miscellaneous:

  • Changed flagging to distribute load more evenly
    • Reduces likelihood of a lag spike when updating visiting flags by reducing the number of simultaneously considered players
  • Fixed completely fresh regions being deleted when fresh chunks are configured to be preserved
  • Moved some utilities to a more heavily tested library

Regionerator 2.2.1

21 Oct 09:38
fd75571
Compare
Choose a tag to compare
  • Add support for ClaimChunk
  • "Fixed" (read: reverted changes to) Residence hook with WG not present
  • Cleaned up/improved Factions handling a little

Regionerator 2.2.0

06 Oct 18:28
Compare
Choose a tag to compare
  • Removed local dependencies
    • While pretty much all of the various supported plugins are open source, anything requiring manual setup ruins the point of using a tool like Maven for dependency management. I am not going to maintain support for plugins that require me to do additional manual work and reduce the ability of others to contribute.
    • Removed Feudal support.
      • Feudal is inactive in a buggy state on 1.13, and previous versions contained a force-op.
    • Removed Kingdoms and UltimateClaims support.
      • In addition to the lack of build system support, Songoda appears to have questionable business practices. If you want support for their plugins, you can ask their staff to add their own PluginHooks to Regionerator. At worst, my old hooks are always available via version control and can be copied verbatim.
    • Removed LandLord support.
      • LandLord has not been updated since Minecraft 1.8 and does not have build system support.
    • Civs, Residence, and MassiveCraft Factions are only available via reflection as they are not available via a build system. FactionsUUID already was only supported via reflection.
  • Fixed some logic resulting in fresh chunks never being deleted under certain conditions.
  • Fixed issues with option to delete fresh chunks ignoring chunks generated with option disabled.
  • Added more debug logging.
    • Added new debug level EXTREME for tracing down hooks causing chunk loading.
  • Fixed data load failure potentially eternally protecting chunks
  • Fixed repeated data conversion (due to old data move failure) resetting values to potentially worse states
  • Fixed a few potential concurrency problems

Please note that I have not extensively tested this build. While I'm relatively confident in the changes made, you should exercise caution when using it.

Regionerator 2.1.2

19 Sep 00:58
Compare
Choose a tag to compare
  • Fix RedProtect hook optimization for 7.7.2 (still worked, just potentially much slower)
  • Fix error on shutdown while cycle was running with option remember-next-cycle-time
  • Fix error not being raised when failing to delete a file

Regionerator 2.1.1

22 Aug 15:33
Compare
Choose a tag to compare

Regionerator 2.1.0

23 Jul 17:45
Compare
Choose a tag to compare
  • Added backwards compatibility for old versions of SQLite
    • Note that due to how old SQLite works, the "last delete" information is not available - it requires over double the database interaction.
  • Added configuration option remember-next-cycle-time to not restart cycles on plugin load.
  • Removed unused configuration option minutes-per-flag-autosave
    • This setting only affected cache duration (which was capped to 5 minutes and performed effectively as 3), not auto-commit.
  • Fixed commands not functioning when no worlds were configured.
  • Fixed /regionerator reload not enabling and disabling all configured features as expected
    • Note that as of 2.0.0 reloading does not interrupt or restart active cycles; they continue on their merry way where they left off.
  • Fixed /regionerator pause not pausing active cycles
  • Moved config.yml's delete-this-to-reset-plugin to data.yml's next-cycle
  • QoL: when a world is removed from Regionerator, you no longer need to manually remove its next cycle to prevent re-adding it later starting deletion earlier than intended.
  • Removed a couple unused methods
    • Ordinarily I'd deprecate and wait for a major bump for removals, but frankly this is such a niche plugin that I don't think anyone's writing their own hooks or using the API. If you do happen to know of anyone who does, feel free to yell at me so I'm more careful in the future. The only thing I see possibly affecting anyone is Regionerator#getProtectionHooks' return type changing from a List to a Set.

Regionerator 2.0.2

19 May 15:23
Compare
Choose a tag to compare
  • Allows the plugin to enable without the ability to use triggers
    • This breaks the "last visit before delete" functionality, but allows Regionerator to run on servers using outdated software.

Regionerator 2.0.1

25 Apr 22:26
Compare
Choose a tag to compare
  • Updated Civs hook for Civs 1.6.7
  • Fixed issue checking regions that do not exist