SWatchdog
SWatchdog is now Abandonware, how cool is that?
Version: 1.19
Tekkit version 1.13Tekkit - Optimized for Tekkit, not recording machines.
This plugin will record all the broken and placed blocks, with their subtypes, person who broke/placed them & time and date when this happened. Also options for chest access logging as well as animal slaughter logging. There is also functionality to rollback said actions, re-place broken blocks, remove placed blocks ect. Its aimed to be lightweight, since bigbrother, while good, lagged any server I could see it used on. And while there are other block-logging plugins, most of them had sides that didn't appeal to the servers (where I work) owner. Like require the admin to setup the SQL database, the plugin connects to an external database the whole time, or the plugin is way outdated. And other problems like that, so I made SWatchdog. To keep it simple and efficient. We've been using/testing SWatchdog for some time now, and it seems to be a success. No lag whatsoever.
How to reach me
If you have any questions what so ever, have any problems with SWatchdog or want to give feedback / make a suggestion, you can either:
Send me PM here. Thats the most certain way to reach me, since I'm checking my PM's here every once in a while. (Note, a PM at BukkitDev, not a convo at Bukkit.)
Or you can try to reach me at -Server not public yet- ( - or the website ) for the most immediate and clear conversation. ( 0Given that I am online. ^_^ )
Recent changes
- Full control of what you want to record. (Though I doubt anyone would want to log only decaying leaves, even that is possible.)
- Rollback specified players, or blocks, or specified blocks placed by specified players. In the specified area after specified time. Yes, you can now be just about as specific as you want.
- Added automated log-cleaning as an option
- Added a powerful tool for checking the files integrity, option to do this automatically on server restart (and plugin reload) and to repair it (automatically)
- Entering incorrect parameters for a command now automatically shows relevant help to that command.
- Added chest access -logging as an option. Its defaulted to false, so if you want it, just enable it in the config.
- Added chest access -logging results to /sniff look and /supersniff look
- Added /wutil repairintegrity to easily make sure everything is as it should be.
- Added a method to change configs ingame. Yay!
- Added the stick. As an option. You need to enable it and give yourself the perm.
- Rolling stuff back now recognizes failed rollbacks (0 blocks) and suggests what might've gone wrong. (Like giving too specific criteria for example.)
- Added animal slaughter logging
- option to preview rollback before rolling back.
- Improved /WTrack
- Optimized single block sniffing, now faster than ever.
- Optimized WXRay
- ADDED PlayerUndo /WUndoP and PlayerClean /WCleanP to easily rollback spesific players.
- Major optimization, commands run in threads now.
Please note
- Please use uptodate permission plugin. Outdated permission plugins may be unable to handle the latest bukkit permission format. So please make sure your permission plugin is updated to latest R#. If there is no update, just notify the author of the permission plugin to update.
Video Tutorials
These awesome videos came from InstitutionAwesome. Many thanks!
Config
Features
- Everything runs in threads for improved stability
- Option to preview rollbacks.
- Rollback areas on single players
- Records broken and placed blocks on the map
- Records exploded, burned and decayed blocks on the map
- Records water and lava
- Records players accessing chests
- Records endermen breaking blocks, blocks forming and spreading naturally, trees growing, ect.
- Config options for different kinds of events to log. Log what you want!
- Aims to be as light and nonlagging as possible
- Has a powerful indexing system, so it doesn't matter if you have 200 000 or 20 000 000 blocks recorded when you do rollbacks.
- Allows you to rollback ALL the actions of a specific player, with proper security clearance.
- Has automated log-cleaning, as well as manual. Both optional.
- Allows to rollback placed/broken blocks on specified area
- Allows you to rollback specified block type, placed/broken by specified player, on specified area.
- Allows to check single blocks or multiple blocks at a time
- Allows you to track activities of a specific player
- Allows you to check entries by a blocktype
- Allows you to estimate how well it is working on your server, this may also reflect lag caused by other plugins
- Allows to check % of valuable minerals mined by a person below 30Y
- Allows to check slaughtered animals.
- Records all your worlds, commands are relative to the world you are in.
- Failsafe. If SWatchdog encounters an error while running, it will attempt to fix most of the errors. If the error is severe, and it cannot fix it, it will disable it self. (If you find an error it doesn't understand, let me know. I will add it to the list)
- Option for automated log integrity check, and further option for automated log-repair, so even if you managed to blow up your database, it should be no problem.
Enabling wand
- Do /whelp 10 ingame, then follow the instructions. And yes, you can do everything from ingame.
Planned features
- Some sort of super-rollback feature to determine what an area looked like at given point in time, and then remake it
- Make WXRay better, show example locations ect
- Give an option to sort the results of sniffing to a file, so you can go through them (enterrandomamounthere) at a time.
- Add an option to notify admins when certain blocks are being placed.
- Add a thread for warning about possible xrayers
- Dragon egg teleport logging, as an option for creative servers.
- Logging only certain worlds
- WorldEdit logging. Purely as an option, disabled by default.
- Fixing few minor bugs in 1.18
- Suggestions?
Currently working on
- Option to warn when diamonds are being mined
- Option to warn when gold blocks are being mined.
Permissions & commands
Guide to time, rollbacks and some other examples
Can now be found here.
The config file
Installation
Place SWatchod.jar in plugins folder. Enjoy!
In case of a bug-attack
If you encounter a bug, unexpected behaviour or believe something is wrong, please:
- Look at console while running a command, if it fails to run it, it should report there with possibly the reason for what happened.
- Tell the contents of /plugins/swatchdog/ to me via PM or post a message below.
- Tell the latest ID from /plugins/swatchdog/util/ lastIDbroke.world and lastIDplaced.world (or the ID's for a different world, if thats where the problem occurs.)
- Describe your world, is it the default world? Whats its name?
- Post the content of config file, in the util folder
- SWatchdog version you are using, and bukkit version you are using. I have a deep interest in solving any and all bugs you might encounter, so please, just tell about them.
Known problems
- Doors do not rollback correctly. (Only the half that was broken/placed is rolled back.)
- /sniff look is not a waterproof command, so don't use it underwater.
Requirements
Please use the (craft)bukkit version mentioned in the file.
i will use this as soon as it can handle chest thefts.
Using this on my server, and it is working great! Good job man.
@xdeathoreox
Oh, ok, thank you.
@Sanzennin
Ok, I just deleted everything and updated it. So I'm going to see if it does work now. I'll tell you by tomorrow or tonight if it works or not.
@xdeathoreox
Well, there is kinda an option like that already. Since sniff remembers the last two files, increasing the value of "spits" will also increase sniffs memory. Ofcourse, I probably should've made a better manual about that.
Wait, umm... The only thing it doesn't record is if someone copied and pasted something with WolrdEdit for example. But other than that, it should record all.
To find out the cause of the bug, could you tell me:
And please note, the height for /sniff broken|placed radius is from your feet up. So if you were flying over it, you should land... (I will make an option for downward searches/editing later, its on TODO)
@Sanzennin
Ok, I got supersniff to work but in some cases, supersniff still doesn't find the history of the place.
But other than it not 'remembering' blocks it has no bugs.
Suggestions:
Add a config option that lets you set the memory size of /sniff. Like in the config file there could be something called: sniff-remember: [num] num being a number from 1 to whatever. So if it's set at 100000, the normal /sniff will remember up to 100000 block changes. I hope that made sense.
Also, a default /sniff command. Like, let's say I'm to lazy to type radius 12 12. So instead, I can just type /sniff broken or placed and by default, it will search a 12x12 radius. If possible, an option in config file for a default value.
I hope that isn't to much to ask for.
BUG: If you aren't near the block change, it wont find the history of the place. I'm on my server now and I just logged on, and someone built something maybe 10 minutes ago. I did both /sniff and /supersniff and it didn't show the block changes.
@dunem666
Well, thats kinda the point of the plugin... And I am taking feedback to improve :)
@xdeathoreox
Oh, did you try
/supersniff broken radius 20 20
for example?
Normal /sniff will "forget" the older entries to keep it lighter...
/supersniff is the one that should remember all.
And during the last 2 months that I have been testing/using it, I haven't seen a single skip of file writing or reading. (It promps those at console.) So that should not be the case.
As of version 0.94 the files are saved slightly differently, as I fixed a bug where all the data goes into one file instead of the files its supposed to go to. The SWatchdog should automatically rename files when neccecary, but if you notice some kind of bug relating to that, please do let me know. (It should go through all the old files and rename broken>> broken.world, broken.2 to broken.world.2 ect. When I debugged it, it was working, but still, if you notice some broken files in your folder, let me know.)
Ok, now, I don't know if this is dealing with me being bad at remembering times or whatever but it seems as though it doesn't record all placed blocks, either that or it forgets them.
Here is the story. I run a build server, user can create whatever on it. I got this plugin because, well, I didn't want to question everyone as to who griefed who. So I got this. Now, I installed this, got it to work thanks to you explaining it (even though it was my stupid self). But, before I updated it, I broke a few blocks on my own. Did the /sniff command and it worked. I installed updated one. Waited a few hours, then went back to the place where I broke the blocks and it didn't show the history of that given place.
Is it because it doesn't know what the older entries are and just ignores them? Or is this something on my part, again.
PS: I can't get /supersniff to work. It just shows the list of commands and brief description.
PSS: I didn't delete the old file because I truly didn't think it would matter. If that's the problem, then forgive my stupidity.
ive read this post and like what i see.
Ill install if you can promise me a better output that the classic big brother. :@)
@Hoot215
Well, we had around a million entries in one file, that had the size of 50MB, and nobody even noticed. However, updated it a bit and the database is "archived" in smaller files, the default is 100k per file (size around 5MB.)
(That is around 50B per entry.)
I'll go throw ya a direct link to 0.93
<<reply 528311="">>
That's great then, that it's all on the TODO list. Just wondering, do you think that you could put up a direct link to a new version on DropBox or something (With a disclaimer saying that it hasn't been approved maybe) just for those of us who are really impatient. :)
EDIT: Also, just wondering, does the plugin ever become slow when there's a lot of data? It's all stored in flatfile, right? That's the reason that most logging plugins use MySQL, to avoid lag with large databases. I would assume that this plugin would become very slow after a lot of data has been collected, correct?
@Hoot215
Well, some of it does do atm, some of it does not, but thats all on my todo list. (Except for door access...)
It records explosions, and also who has placed the TNT (Easiest way to find out who made the booms.)
Ghast fireballs I haven't tested, but they are explosions, right?
Creeper explosions are explosions, it records them. (I have tested that too)
Records burning, not water/lava flow, which is on the TODO-list
Also records who extinguished the fire (broke it) but does not bring it back with rollback features. (Since usually, its just harmful)
Doesn't record enderman/dragon, treegrowth or automatically broken blocks atm, but its on the TODO-list
I was thinking of making a small program to change LogBlock/HawkEye/ect. databases into SWatchdog databases, but haven't gotten around it yet.
On a side note, it takes LONG for the bukkit dev staff to approve the updated plugin files... So, please pay attention to the "Version: 0.93" on top of description while downloading a file, there is a good chance its not the latest...
This seems like a nice lightweight equivalent to LogBlock, HawkEye, etc. But I need to know if it logs these things please:
Also, is there any way to import a database from LogBlock?
Additionally, nice job on the plugin so far. It seems really nice. Also, is there a way to ONLY log certain worlds and not others? I really don't care about what happens in the End or the Nether, etc.
@xdeathoreox
Ok, version 0.93, which I just posted and is waiting for approval, will let you type stuff like /wundo radius height hour minute, and ignore the rest of the command. It defaults to this day. It accepts 4 to 7 parameters, 4 being upto hour+minute, 7 being hour, minute, day, month, year. Ya can use anything in between. /wredo and /wclean work the same way
@Sanzennin
I know, I didn't notice that it was day then month. I'm use to month then day.
@XeonG8
Yes, there is alot of improvements to be made :)
Chest access... Tools... Well, I might make them as an option on whole seperate file, but the reason they are not there currently, is that they require relatively large amount of resources to be used for making things just slightly better. Running an if() every time someone hits/uses something just didn't feel reasonable to me. I want watchdog to keep the lag and griefers down.
It does record the person who placed the TNT, which should be found from the center of the explosion. (The people around are not always guilty, the guy who placed the explosion most likely is. Therefore, no reason to record people who just happen to be there.)
You can use /sniff placed radius around where you think the TNT was placed. If you think it was placed high up, and then fell to do the explosion, just increase the height of the radius command.
As for reading logs, yes, I am going to improve that, alot :)
Ummm... What kind of config would you need?
@xdeathoreox EDIT: Umm, no offence, but its not "watchdog not working", its you not entering correct criteria: "/wundo 2 2 22 8 2 4 2012" would be the 2nd day of 4th month. Thats pretty far into the future. No wonder it doesn't fix them... Try /wundo 2 2 22 8 4 2 2012 (Why not just look at /sniff results when you undo? Its just whole lot easier...)
Its like superlog, only updated... not as good as superlog yet though :(
chest access would be good, infact it should really be there as an option.
not much config, config file in txt.. I suppose if you add more options for users to set you'll move to .yml.
The log files are also less readable should you want to dig in, compared to superlog again
kinda missing the block, and pickaxe items to check removed and placed items without having to do commands /area .
"Now records explosions" ..what about who was nearby at the time for that one?
Edit, figured it out but it doesn't work. I let it go for 10 minutes and it doesn't work. I broke a few blocks, then typed: /sniff broken radius 2 2 It said that I broke a few blocks and I did: /wundo 2 2 22 8 2 4 2012 That was set to a minute before I broke blocks. I didn't feel like waiting to long. It says it was undoing, but nothing happened. No errors or anything.