Deterring griefers has never been so sweet
As of Minecraft 1.21, Java 21 is required for Paper to run. Plugins can use Java 17 still and that was Honeypot's goal. However, due to certain dependencies being updated to require Java 21 (WorldGuard), I cannot develop on Java 21. Therefore, you MUST run Java 21 as well!
As noted n the previous release, Honeypot as of this version does not support Spigot. Paper is, by far, the most widely used and performant server platform. It's no surprise that it's so widely used either: Paper provides users download links, Spigot requires you to build from source which requires quite a bit of technical know-how. That alone will cause people to gravitate towards it, even if they don't realize that Paper is vastly more performant. Paper is making a hard fork at some point in the future, meaning they will be diverging from the Spigot API, and then I'd have to maintain two versions of the plugin, each with potentially differing feature sets depending on the API availability. Folia is supported currently, but the difference between Folia and Paper is very minute (For the technical people, all I had to do was write a custom Scheduler implementation that utilizes Folia's scheduler instead if the plugin detects it is running on it, otherwise it uses the default Spigot/Paper one). According to bstats, as of typing this only one server is utilizing Spigot anyway.
For these reasons, I have killed support for Spigot and moved fully over to the Paper APIs. If you want to use Honeypot and you are using Spigot, you will need to migrate to Paper. For 99% of users this will be a simple drag-n-drop of the Paper jar in-place of your Spigot jar, no other changes should be necessary. The regular changelog is below! 😄
Honeypot 3.4.0 is a MASSIVE rework of many features, internal APIs, and contains several bug fixes and feature improvements.
Additions:
/honeypot migrate
. "Fixes" #188Bug Fixes:
honeypots.yml
to not be able to trigger their commands.Changes:
Location#distance()
function within the API. To put this into perspective, SQLite and PDC both can now query a 2,000,0003 area (That's eight QUINTILLION blocks) in only a few milliseconds. Before this change, it was impossible to query anything larger than a 103 or 203 without locking up the server. Yay for optimization (And also not doing DB queries the stupid way)! Fixes #187Removals:
If you are a developer and have written plugins for Honeypot, please know that they will no longer be supported as of 3.4.0. You will need to do some minor refactoring. Specifically, a new Registry
class is available in the API to interact with the Behavior Registry and the new Storage Provider Registry. The TL;DR is: Anywhere you use Honeypot.getRegistry()
, change it to Registry.getBehaviorRegistry()
. Documentation will come for this new API, I'm working on writing it with Writerside now, and it will be published on a pretty website :)
Additions:
Changes:
Removals:
As of Minecraft 1.21, Java 21 is required for Paper to run. However, plugins can still be developed using Java 17, so Honeypot will still be built on that version to support older server software (I always develop for the latest version though, so I'd highly suggest using 1.21 with 3.3.2!).
However, with this version also comes an announcement: Honeypot, as of all future versions (3.3.3+), will no longer support Spigot. Paper is, by far, the most widely used and performant server platform. It's no surprise that it's so widely used either: Paper provides users download links, Spigot requires you to build from source which requires quite a bit of technical know-how. That alone will cause people to gravitate towards it, even if they don't realize that Paper is vastly more performant. Even though I support Spigot and develop against it, I've actually been exclusively using Paper to test when I create updates. Paper is making a hard fork at some point in the future, meaning they will be diverging from the Spigot API, and then I'd have to maintain two versions of the plugin, each with potentially differing feature sets depending on the API availability. Folia is supported currently, but the difference between Folia and Paper is very minute (For the technical people, all I had to do was write a custom Scheduler implementation that utilizes Folia's scheduler instead if the plugin detects it is running on it, otherwise it uses the default Spigot/Paper one). According to bstats, as of typing this only one server is utilizing Spigot anyway.
For these reasons, I will be killing support for Spigot and moving fully over to the Paper APIs. If you want to use Honeypot and you are using Spigot, you will need to migrate to Paper. For 99% of users this will be a simple drag-n-drop of the Paper jar in-place of your Spigot jar, no other changes should be necessary. The regular changelog is below! 😄
Version 3.3.2 brings the plugin out of its SNAPSHOT
state since testing of the 3.3.1 feature set is complete. It also adds support for Discord webhooks so you can be proactively notified if any Honeypots are triggered while you aren't online.
Additions:
config.yml
, paste your Discord Webhook URL, and state whether or not you want notifications for all block breaks (onbreak
) or just when action is taken (action
).
/spark profiler start --thread *
so I can see everything happening, not just the single server thread.Changes:
Removals:
Additions:
Changes:
Removals:
Version 3.3.0 is being re-released as 3.3.1 to fix a bug relating to /honeypot create failing in GriefPrevention areas. It also adds translations for Chinese (Simplified). Thanks, @HaHaWTH! I'm still considering this a snapshot
Please see the note at the bottom of this release!
This update brings a feature that was recommended in my Discord a while back, and is finally being released: The type
field in the history command. Previously, Honeypot only logged breaks when an action was taken, not if the break was just counted. Now, Honeypot counts each break AND will list whether or not it was a prelimBreak
or a break
. prelimBreak
indicates the block was broken but no action was taken. The block may or may not still exist based on permissions of the player or config options. It also fixes a bug regarding the /honeypot history query
command and refactors large parts of the code.
Additions:
type
field to the Honeypot History table. This allows admins to see when players attempted
to break blocks, as well as when action was actually taken.Changes:
/honeypot history query
where the command would just return random values from the table instead of the most recent values in descending order.new
ing a ton of crap every 5 seconds!Removals:
Additions:
Changes:
Removals:
The SQLite patching system I've written has been mostly tested, but I'm still not 100% about it, more like 98%. Due to this, I'm marking this a pre-release until I finish testing the weird one-off scenarios. If you want to upgrade the DB manually so you don't have to fear anything, here are the two commands you need to run in some SQLite DB explorer!
ALTER TABLE honeypot_history ADD `type` VARCHAR NOT NULL default 'prelimBreak';
PRAGMA user_version = 1;
Sorry for the delayed updates with this project. In real life I've been pretty busy with my daughter and family, as well as studying for multiple IT certificates (Genesys Cloud CX for my job, CKA, and CompTIA Security+), and my time has been stretched so thin I barely have time to think haha. That being said, this project is not dead, just...slowed. I hope you understand and still stick with it! I welcome pull requests if anyone wants to help add some features. Thanks, everyone! 😄
Updated for version 1.20.5. To support backwards compatibility, I'm planning to remove the PhysicsUtil and just check if any blocks surrounding a block break event were Honeypots and are now air. I want to test this for efficiency to ensure these checks don't bog down the server, so I'll combine some methods and work on improving efficiency (We already switched to PDC so this will really help).
This also fixes a minor, likely unnoticed, bug regarding reloading language files from the console. Finally, it adds some better debug logging for block break events, and updates some logic. This logic was complex prior to the refactor, so if anything stops working that I didn't see in testing, let me know via Discord or an issue!
Additions:
Changes:
/honeypot reload
was ran from console. This was a result of the Console's /honeypot reload
logic actually being decoupled from the plugin's /honeypot reload
subcommand. I apparently forgot to add language file reloading via console when I added translation support, and it's been like that ever since.Removals:
Additions:
Changes:
Removals:
Resolves a bug in the previous version of Honeypot where all Honeypot types in the "Create Honeypot" inventory would show as Paper. This is now configurable on the action level, meaning you can have whatever icon you want!
Additions:
Changes:
Removals:
Additions:
Changes:
Removals:
This update adds support for an experimental new storage method, PDC. Persistent Data Containers are an API in Spigot which allow you to store data within Worlds, Chunks, ItemMetas, Entities, TileStates, and Structures. This enables you to store Honeypot data directly in the world instead of the sqlite DB, meaning faster queries and less TPS lag. This is an experimental feature, and while it's been tested and is working, should still be considered experimental until the next version when I make it a standard feature. To enable it, update the plugin and restart your server, open your config, go allllllllllll the way down the bottom and change storage-method
from sqlite
to pdc
. Then, restart your server one last time.
Additions:
/honeypot debug
command, which is disabled by default and can only be enabled by a config change followed by a server restart. This command is specifically for me to use when developing Honeypot, but may come in handy for other server owners, who knows. So, it's been documented.Changes:
Removals:
Known Bugs:
Additions:
Changes:
Removals:
Known Bugs:
I gave up on MD5 checksums. I really don't feel like wasting my time generating them. So, from now on those will not be provided. If you ever don't trust a release, build from source, as each of my commits is signed and verifiable with my SSH key (Need my public ed25519 key? Get it here). It should be relatively easy, just clone the project and gradle build
😄
Full Changelog: 3.1.0...3.1.1
This one is a pretty large update! This update fixes some bugs, refactors parts of the project to be easier to maintain, adds support for Lands and Placeholder API, removes some limitations from custom Honeypots, and adds 3 new (optional) event listeners for preventing "creative" methods of griefing!
Additions:
blocks-broken-before-action-taken
in config.blocks-broken-before-action-taken
.blocks-broken-before-action-taken
in config.Changes:
Removals:
Known Bugs:
There were a few changes to the internals of Honeypot. None of these should affect you unless you are a maintainer, as you shouldn't be using these methods in your own plugins.
Additions:
Changes:
Removals:
Known Bugs:
I gave up on MD5 checksums. I really don't feel like wasting my time generating them. So, from now on those will not be provided. If you ever don't trust a release, build from source, as each of my commits is signed and verifiable with my SSH key (Need my public ed25519 key? Get it here). It should be relatively easy, just clone the project and mvn package
😄
Version 3.0.4 was pulled due to the bug it was supposed to fix not being fixed. Turns out I had made a typo which caused the problem to not be solved. During testing, another major bug was discovered that can cause the plugin to silently fail to finish loading, so this update is recommended for all Honeypot users. The changelog below is largely technical, but is here in the spirit of transparency. I apologize for any issue this caused. Luckily, 3.0.4 was only downloaded twice before the issue was caught, and I know at least one of the servers it was running on was the person who reported it.
Additions:
Changes:
Within the InventoryClickDragEventListener file, it was discovered by a member of my Discord server that the event wasn't being cancelled prior to action being taken, meaning that if a player was removed from the general vicinity of a container, they would keep items inside. See here for the action, and here for the cancellation. So, the event.setCancelled(false)
line was moved to above. However, keen eyed devs may notice the issue: #setCancelled(false)
is, obviously, false. This should be true, so the event was still not being cancelled. This has been fixed and tested thoroughly to ensure the problem has been resolved.
During testing, I threw Honeypot onto a test server (without Vault) and was extremely confused when the /honeypot command wasn't working, but was also not throwing errors. In debugging this I found I left a return;
statement inside the #onEnable()
method which returns early out of the #onEnable()
if Vault isn't found. The original vault code used to live in its own method, but I moved it inside the #onEnable()
method a while back and clearly forgot to remove the return. This caused several issues due to the early return, including:
These issues have been fixed
Removals:
Known Bugs:
Changes:
Removals:
MD5 checksums:
2192446e2626b1198ea16ae9bc34e9bb
honeypot-core-3.0.5.jarbd2b4fc33324ff0442f5056da013f0e5
honeypot-core-3.0.5-javadoc.jar5355f588e6515410e4b004115d67ed09
honeypot-core-3.0.5-sources.jarThis version fixes some bugs around the block break listener, and also changes some core behavior of the block break functionality
Additions:
Changes:
allow-player-destruction
value in config.yml now determines if action is taken at all. If allow-player-destruction is set to true, action will only be taken if A) blocks-broken-before-action-taken
is <= 1, or B) the player has reached the blocks-broken-before-action-taken
value. This allows Honeypots to be broken without triggering events, if the staff still choose. If you had blocks-broken-before-action-taken
set to 1 or less and/or had allow-player-destruction
disabled, this won't affect you. If it was set to a greater value and you had player destruction enabled anyway, then this WILL affect you, as your Honeypots will silently disappear upon breaking. Check the GitHub page to see if you're affected (Likely not!)enable-logging
in config is enabled, honeypot.log will include all debug, info, warning, and severe messages. Console will always include info, warning, and severe messages regardless.Removals:
Known Bugs:
Changes:
Removals:
MD5 checksums:
730d53cc77f90427fa5c83b5685e0e20
honeypot-core-3.0.3.jar3125da1a01b32a21cae95bdbf52463de
honeypot-core-3.0.3-javadoc.jar46d61e6ff0b3965fda8883e03c671948
honeypot-core-3.0.3-sources.jarThis version adds a new %world% placeholder for custom actions. It also removes the Vault requirement, and instead soft-depends on it, allowing you to run this in Folia servers without issue.
PLEASE NOTE Folia is an experimental server software. In order to make Honeypot run on Folia, I had to move Vault from a hard to soft dependency. This means that, without Vault, you cannot use custom actions of type permission
. This is the only caveat!
Additions:
world_nether
.Changes:
Removals:
Known Bugs:
Changes:
block
as @nullable. This was part of the original design just in case a block wasn't necessarily passed to a provider, but later I wrote the internal code to require a block to be passed before a behavior is processed. This result in this annotation not only being unnecessary, but also contextually wrong. This won't affect your builds, by the way :)Removals:
MD5 checksums:
d9bd5aa5876977856107abfd77acb2d3
honeypot-core-3.0.2.jar05654bb2f17c0f8bb764b5d57934e87e
honeypot-core-3.0.2-javadoc.jar0866d4954cbd69669d830c8bc712c52e
honeypot-core-3.0.1-sources.jarThis version fixes a few bugs, and adds preliminary support for Folia. Soon, Honeypot will natively support Spigot, Paper, and Folia, instead of using the Spigot API in its entirety. This will mean it'll perform better on Paper servers, but will still run on whatever you like!
PLEASE NOTE Folia is an experimental server software. While Honeypot does support Folia, in order to do so I had to disable Vault while testing. Vault is still a dependency, and does not support Folia yet, meaning you will not be able to load Honeypot on your server until Vault adds support. However, the good news is that once Vault does add support, Honeypot will be ready and waiting for you! 😁
Additions:
Changes:
Removals:
Known Bugs:
Changes:
Removals:
MD5 checksums:
a97fb2fc03ffb687c4001bd1afb6f9ab
honeypot-core-3.0.1.jar6587dec2e4262d51f4c646d98b58009e
honeypot-core-3.0.1.jar89f4425bd9bede390e00d7b92244c743
honeypot-core-3.0.1.jarThis version adds many new features, fixes some bugs, and ensures support for 1.20!
PLEASE NOTE this is a snapshot build, and does not include all the features promised for 3.0.0. However, it is still stable! Feel free to use it in production.
Additions:
Changes:
/honeypot history
causing console errors if ran without subcommandshoneypot-api
to honeypot-core
, nothing else will need changing because, quite frankly, I'm amazing lol (JK, the API always was shaded into the main jar anyway, so the package names were always the same regardless. That's why you had to use the API for development but the core plugin for your server, and it worked just the same).Removals:
/honeypot upgrade
command. Bstats shows that no one is using old versions anymore, so that function is obsoleteKnown Bugs:
Changes:
honeypot-core
file now, it is not a separate file.Removals:
MD5 checksums:
477c0aa8f78754d3f2ab062b07a98b70
honeypot-core-3.0.0-javadoc-SNAPSHOT-1.jar77acc322f6c6343e4ee0b1fa087ea4e0
honeypot-core-3.0.0-sources-SNAPSHOT-1.jar8b7c17a9138ac6550635dc86b8c80364
honeypot-core-3.0.0-SNAPSHOT-1.jarThis version simply ensures functionality with MC 1.19.4
Additions:
Changes:
Removals:
Known Bugs:
Additions:
Removals:
This revision of version 2.6 implements some changes that were requested, as well as adds a new command and rewrites some of the base code.
Additions:
/honeypot list
command, which will take you straight to the All Honeypots GUI inventory
/honeypot
and manually navigate to the inventory. This is just an aliasChanges:
Removals:
Known Bugs:
Additions:
Removals:
This revision of version 2.6 fixes two bugs that were previously found in 2.6.1. These are #126 and #127
Additions:
Changes:
respect-griefprevention
was set to false, it would immediately block all Honeypot creations across the entire world. Setting this to true would still block staff from building in GriefPrevention areas if they didn't have permission, but would allow them to build elsewhere. This has been fixed by first checking if there is a claim at the coordinates, and if not, immediately continuing the creation process. If there is a claim, it will then check the respect flag and finally GriefPrevention build permissions.Removals:
Known Bugs:
Additions:
Removals:
This release is a hotfix for a bug found in Honeypot which affects versions 2.5.x - 2.6.0 and is recommend for all users. This bug, if abused, allows players to teleport wherever they wanted without needing permissions. The bug works by abusing an internal command used for the Player History GUI menu. This command was not registered with the server so players were unable to see it in the tab-complete menu. However, it was used as a placeholder to bypass needing /minecraft:tp permissions for staff in order to teleport them to where a history event took place. Due to not writing the event listener responsible for handling this command properly, the command bypassed permission checks altogether.
Fix: A new permission, honeypot.teleport, was introduced to prevent abuse of this command. Please ensure if you want your staff to be able to teleport to the location of a Honeypot history item, that they have this permission. My apologies for any issues this may have caused.
The full release of version 2.6.0 is here! Sorry for anyone that tried the pre-release and found it failing miserably lol. This is definitely a version you want to download, as it fixes some major bugs and includes some sick new features.
Additions:
Changes:
config.yml
version is now 13 to accommodate new settingsuse-inventory-click
value in config. A server restart is required for change to take effect if use-inventory-click
is changed.Removals:
Known Bugs:
Additions:
Removals:
Hi everyone! This update adds a small but nice feature to close #120
Additions:
Changes:
Removals:
Known Bugs:
Changes:
Hi everyone! Small maintenance update
Additions:
Changes:
Removals:
Known Bugs:
Changes: