Heimdall
Description
Heimdall anti-grief is a plugin that watches new players when they first login to your server and looks for griefing patterns. If the griefer does enough damage to go over your defined threshold, they will be automatically banned and their damage rolled back. This is accomplished through hooking a block logging plugin, the first of which will be LogBlock.
Primarily I'm writing this for myself, so I am not necessarily interested in a bunch of feature ideas (sorry). My goal with this plugin is to automate the work that my mods have to do when they follow griefers around invisible and then LogBlock verify and ban them for griefing. If I can weed out 80%+ of the griefers automatically, then this plugin has accomplished what I set out to do.
Heimdall Beta Released!
Heimdall is now in beta, you can click on the Files tab to download v0.6, when Bukkit mods finish the file approval. Here are a few notes about this beta release:
- It is available only in passive "notify-only" mode. This allows your mods to receives notifications when griefing is occuring.
- It depends upon LogBlock to be useful at all (LogBlock queries are used to establish block ownership)
- It will hook LWC (if you use it) and automatically ignore anything related to public chests
- This is beta, there is very little documentation available right now. But if you're willing to play around with it a bit or know how to open a plugin.yml to find out what commands are available, it's very usable in it's current state
Author's configuration
The author of Heimdall has been using this plugin since it was first written in early January of 2012. It has transformed the way mods deal with griefers on our server. We used to go invis and follow new players around to watch for bad behavior, which was a full time job considering 7 of 10 people who login immediately set to griefing. Now, the mods continue their normal activity and if someone starts griefing, they get Heimdall alerts and respond to it then.
Heimdall is part of my "defense-in-depth" strategy against griefers. I employ the following plugins as part of that strategy:
- LogBlock: Rollback any griefer damage. Heimdall also uses this to determine block owners.
- Honeypot: weed out griefers automatically, works amazingly well.
- LoginLimiter: I have my server setup to not allow new player logins when no mods are on. When the last mod logs out for the night, the server goes into "auto new player lockdown". Additionally, this plugin lets me limit the guest:mod ratio so a single mod doesn't get overwhelmed with too many guests.
- Heimdall: Since LoginLimiter means a mod is always on when new players are, Heimdall fills in to notify the mods of any griefing behavior by monitoring all guest activity. It additionally logs this behavior in an easy-to-access log that can be reviewed using the '/hdgl' command (Heimdall GriefLog). In the future, of course, Heimdall will be able to respond and ban automatically.
Installation
- Download Heimdall.jar, copy into your plugins directory
- Restart Bukkit or live-load using PlugMan, PluginReloader or similar
- Edit config.yml and engine configs to your liking
- Restart/reload for config changes to take effect
Performance
With plugins that deal with every block break, performance is always a consideration. I'm keenly aware every new plugin I install can slow down my server, so when writing my own, I go out of my way to make sure they have the smallest performance impact possible. For this plugin, that is achieved by using a circular buffer for block events (this means new objects don't have to be allocated every time a block is broken/placed) and then the buffer is processed asynchronously in a separate thread, meaning for anyone with at least 2 cores, this plugin will have almost zero impact on your server performance.
@andune
What plugin do you use for invisibility?
@andune
When testing this on my 1.2 bukkit dev test server It enables but shows the "Is it up to date?" error.
[SEVERE] Error occurred while enabling Heimdall v0.6 (Is it up to date?) [SEVERE] Error occurred while disabling Heimdall v0.6 (Is it up to date?) (I didn't want to clutter the comments with the full error)
The plugin will actually enable and DOES show up on the /plugins list. I have only tried the hdgl command (hdgt never works on my R4 server anyway). When using hdgl it shows me the syntax (/hdgl player). When I type in the players name it it acts as if I have never typed the name in at all and returns the same "/hdgl player" into the chat.
P.S. After using it for some time on my R4 server I have noticed that it posts a lot of errors but generally works as intended (only using hdgl). It's very useful for spotting people that are stealing crops (they think that it goes unnoticed... :D)
@OankoO
Hmm, unless I'm mistaken, it's already R5+ compatible. I know the code is written, so if you're finding v0.6 isn't R5 compatible, let me know and I'll polish up a v0.7 with the latest changes that will be compatible.
Are you still working on this for R5+?
@andune
I'll be honest, I installed this purely for its name and my strange need to try out new plugins... But I must say, I'm quite amazed at how useful this is.
On my server I tend to take a more "Fire-fighting" approach to griefing and tend to deal with it after it has happened. This usually occurs when I get a complaint that a structure has been griefed, thus allowing me to perform the logblock magic infront of their eyes.
Now, I have not gotten to grips with the full features of Heimdall just yet. I have only been using the /hdgl command I am finding it terribly useful. Once I has distinguished that the player may have griefed, I can /tppos (essentials) to the location of the block and scope out the area with the logblock tools.
Even though I have only been using a small part of Heimdall, and I have yet to see a live notification. I still believe this plugin has and will continue to be an essential part of my plugin library.
Well done!
@OankoO
The way Heimdall is configured is through engines that respond to events. The auto-ban and auto-rollback functions will just be additional engines, that you can enable or disable at your discretion.
That means, regardless of the features I add going forward, you can always choose to run Heimdall in the exact mode he is running today: as a notification & logging engine to alert your admin/mods to any griefing activity.
I do also have a mind that when I implement the autoban functionality, I will have the option to have each autoban will be flagged in such a way that when a mod logs in, they will see "You have 3 Heimdall bans to review" and a simple interface for reviewing and approving the details of each ban. It would then be easy to configure it such that the rollbacks could optionally happen in response to the approval and not the autoban itself, introducing a human element if desired.
I run a Norse themed server so the name immediately caught my eye.
I'm going to trail this plugin as it seems like a very good idea! However, I don't think I would ever trust a plugin to rollback automatically.
Public release! :D This will be amazing!
@andune would it be possible for a preview release? I would love to get my hands on playing with this plug to see how it would run on my setup.
Time for another update: I've been running and tuning/tweaking Heimdall on my server for a few weeks now. While I haven't finished coding and enabled auto-bans yet, Heimdall has already proven incredibly effective at notifying moderators of griefing behavior and really changed the way we handle griefers and how quickly we are able to respond to them.
As such, I'm working on polishing off the current work into something that can be released and I'll let you guys have at it. As I continue tuning and decrease the false positives to near-0-percent,I will eventually enable the auto-ban and auto-rollback capabilities.
And another update: I now have Heimdall up and running on my own server. Heimdall is not yet taking any action, but it's got full grief logs and is notifying online mods of grief behavior. Mods are still following invis during testing to be sure Heimdall is not missing anything, but so far he's sending them all notifications of the grief activity they're seeing invis: destroying other players blocks and stealing from their chests.
I'm gathering all the data Heimdall is collecting on banned griefers to tune the default antigrief engine. Then I need to do some cleanup, docs, etc to make Heimdall ready for the masses and then I'll get a release out for people to start playing with.
For those keeping score at home, the basic foundation has been laid for this plugin. The Github Source repository is linked under repository tab if you want to look at the code that is shaping up and my internal changelog for private test releases is being posted online here as well.
Ho-ly-crap, griefer detection by heuristics. SCHWEET! Why didn't I think of this? XD Sounds fantastic, can't wait to see the first release.
Sorry I've not made as much progress on this as I'd like, I was hoping to have at least an initial release out by now. The good news is Heimdall's sister plugin (ActivityTracker) is up and running great, so I've got some awesome logs of griefing patterns to build Heimdall's algorithms off of.
Much of the core functionality needed for Heimdall exists in ActivityTracker, so it's just a matter of sitting down to write some code and figure out how (if at all) I want the two plugins to interact with each other.
Once this is finished, I will definitely be using this on my server.
I can't wait to see this in action! I'm trying to run a server with only myself and a moderator, so this would be infinitely useful!
If you can successfully keep performance high and correctly identify grief patterns the I can't wait for this plugin :D
You have my support