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.
-
View User Profile
-
Send Message
Posted Feb 23, 2013@andune
Well it looks like they did finally decide to open source it, although the only reference to the source is buried deep in a comment page and isn't displayed prominently anywhere on the project, so it wasn't easy to find.
Regardless, with the source now available to me, it should be possible to add support for Prism. I don't see that they have an API, but I will poke through the source when I get time and see how easy it might be to add Prism support for Heimdall.
-
View User Profile
-
Send Message
Posted Feb 23, 2013@AKPWebDesign
If Prism takes off as a tool that has lots of community interest, I would consider it. However, at this time the author(s) have chosen to keep it closed source and I'm unlikely to try integrating with a tool that I can't view source for when I run into issues. At this point, I'm not even sure it has a published API for me to integrate with if I wanted to. Thread here:
http://forums.bukkit.org/threads/wip-prism-rollback-grief-prevention-youve-been-waiting-for.121702/
However, if it's close-sourced nature changes and like I said, the tool takes off to be a popular block logging plugin, then adding it should be a simple matter as Heimdall was made to easily plug in other block logging solutions.
-
View User Profile
-
Send Message
Posted Feb 23, 2013What are the chances that you can include support for Prism?
-
View User Profile
-
Send Message
Posted Jul 28, 2012@GamingG
Hmm, unfortunately this is not an easy "automatic" fix. Though you didn't give a stack trace, I was able to step through LogBlock code and I would guess the NPE you're seeing is in QueryParams.getTable().
LogBlock makes it's API available externally (which Heimdall uses), but it does not offer a safe way for another plugin to ask it which worlds it is logging. Thus Heimdall has no way to know that there's no logging setup for your world "world123", and LogBlock does not deal well with queries for worlds it is not logging (it blows up with said NPEs).
Seems either LogBlock should stop blowing up and simply return empty data for worlds it is not logging, or it should offer an external API mechanism for a plugin to ask whether a world is being logged by it or not.
Since neither exists, the only reasonable thing for Heimdall to do is to add some sort of 'ignoreWorlds' config that you can setup to ignore non-logged worlds and you'll just have to keep that in sync manually with any worlds you aren't logging in LogBlock. Probably not a bad feature to have anyway in case people want to disable Heimdall on certain worlds regardless of LogBlock settings.
-
View User Profile
-
Send Message
Posted Jul 28, 2012One of the worlds on my server is not logged by LogBlock. This plugin causes a large number of NPEs to be thrown any time a player breaks a block in this world.
-
View User Profile
-
Send Message
Posted Jun 16, 2012@xjomo
No, but that's a feature my mods have been asking for as well so it's on my TODO list. I suppose it's about time to get a new release out so I can add Guardian support since I imagine that's probably far enough along to be decently usable. So I'll start working on that soon and will add an admin forced-friend feature along with it. Probably about time I added some decent documentation on the wiki here as well. :)
-
View User Profile
-
Send Message
Posted Jun 16, 2012Hey is there a way for admins to "friend" two players.
I just got spammed by the plugin because the other player was not online but they built together.
-
View User Profile
-
Send Message
Posted Jun 9, 2012Disregard last message dam iPhone and multiple tabs fucked me up xD and didn't really read where I was
-
View User Profile
-
Send Message
Posted Jun 9, 2012@frony0 in your permissions plug in add a negative infront of the track permission to the ops(if you have one) if not make a group that involves this and that should fix the problem :) also if you don't have an ops file I would just reccomend making one cause it makes life easier to manage with that :)
-
View User Profile
-
Send Message
Posted May 31, 2012How do the permissions work? I'm entirely lost here.
-
View User Profile
-
Send Message
Posted May 14, 2012<<reply 685846="">>
I must say, I have been waiting for Guardian ever since the author of LogBlock announced that it was going to be replacing logblock.
And I can't wait for full (or at least some...) documentation of Heimdall, it sounds like exactly what I need.
-
View User Profile
-
Send Message
Posted May 2, 2012Well it's nice to see that Guardian is alive and well, it looked dead there for a long while. I see it was officially released about 3 weeks ago, so that's great news and I will definitely start testing it as a replacement for LogBlock.
At such a time that I switch my server, and even possibly before depending on how well-documented the Guardian API is, I will definitely add support for it into Heimdall. I designed it to be a very simple matter to plug in support for new block-history plugins to Heimdall, all that needs to be done is write an implementation that uses the Guardian API.
-
View User Profile
-
Send Message
Posted May 2, 2012OMG, this plugin is amazing!
It was spamming my chat initially but then it learns whos friends, with who, ECT :P
Or my Absolute Fav Message :P
As to prevent Spamming your chat we have Nulled (1) message, and sent you this summary instead.
Thanks for the wonderful and Funny Plugin :P Keep up the good work :P
Hasn't caught any Real Griefers yet but we have only had it for 2 days and were a small server :P
-
View User Profile
-
Send Message
Posted May 1, 2012Guardian works for me satisfying. But anyway i have time to wait, because the Hardware on my RootServer has a Problem :) So, i just wanted to know if its planned.
-
View User Profile
-
Send Message
Posted May 1, 2012@LanToaster
@LanToaster
Guardian is written by the LogBlock Author & the BigBrother Author & the Hawkeye Author
All 3 have stopped updating there plugins and only releasing updates for Guardian now. With that being said. Guardian isn't stable or reliable at the moment. So you may have to wait till Guardian gets some more updates into it before you see authors switching to Guardian.
@andune
Read above. You need to look at switching to a logger that will be updated in the future.
-
View User Profile
-
Send Message
Posted May 1, 2012Do you intend to Support Guardian as Logging tool to?
Your Plugin Concept seems cool, but sadly I dont use LogBlock anymore, because the LogBlock author doesnt come back here anymore. So i Switched to guardian.
-
View User Profile
-
Send Message
Posted Apr 30, 2012And while I'm here, I might as well comment: This plugin still works great, it's not perfect but it's about 99% accurate and I've not been motivated to finish off the "autoban" capabilities because it turns out my mods actually like following and dealing with griefers, so to them Heimdall is just like an extra mod always on and watching, pointing out possible griefing events.
Someday I may find the motivation to finish off the original intended autoban capabilities, with some sort of mod review system (so mods can review and approve/veto any autobans), but for now Heimdall is doing a great job reporting griefing activity so that my mods can focus on just having fun and trust that Heimdall will let them know if something is going on they need to look into, which turns out to be exactly what we need on our server.
-
View User Profile
-
Send Message
Posted Apr 30, 2012@ablac
I don't get that error, but I've been running a dev build with a minor few tweaks. I've gone ahead and bundled that up against the latest Bukkit-1.2.5-R1.3 and confirmed it works fine on the 1.2.5-R1.0 RB as well.
Give it a shot and if you're still getting an error, post back here the stack trace using pastebin and I'll take a closer look.
(direct link since it won't syndicate until bukkit staff waves the magic wand: v0.6.1)
-
View User Profile
-
Send Message
Posted Apr 29, 2012Im getting this when i restart my server.
-
View User Profile
-
Send Message
Posted Mar 31, 2012Cannot wait for the full version of the plugin...I saw a lot of awesome stuff in the config file when I downloaded it and attempted to get it running on a test server, but I apparently don't know enough to get it running properly...any chance you need another test server?