How can I find a thief (ideally without Bukkit)?
We're trying to catch a thief on our server. Bukkit isn't a good option since it's a hosted server, so I'm hoping for advice that doesn't requires Bukkit plugins. In the worst case I could probably move the world files somewhere that Bukkit is an option.
There are only 7 suspect players. INVEdit crashes when opening some players' inventories, presumably because we're running 1.7.4 and INVEdit hasn't been updated recently. So I used the trick of temporarily hijacking other players' [username].dat
files, but the stolen items aren't in anyone's inventory.
A note in case someone else doesn't know this technique:
- Look in the world's
/players
directory. - Back up your own
[username].dat
file. - Copy a suspected player's
[username].dat
file, renaming it to your user name. - Launch the game and check the inventory as your own.
- When you're done investigating, restore your own
[username.dat]
file.
This probably means the stolen items are in a hidden chest, since the technique above lets you inspect players' inventories and Ender chests.
Are there time-reasonable (i.e., not requiring hours of tedious work) techniques for finding thieves after the fact?
And if not after the fact, are there ways to set up a trap that will help identify thieves in the future, again without requiring hours of work? For example, I've wondered whether naming items could somehow help to track down thieves if you could search through the World data file. Unfortunately, this related question hasn't turned up a solution yet for searching world data for a specific item or item type.
Unfortunately, it appears the answer is "you can't, or at least not without spending a prohibitive amount of time on the investigation, and even then you won't be sure of anything."
If someone finds a solution that's less time-intensive, I'll happily accept it instead of my own bleak conclusion. But after a lot of research I suspect there isn't one. I've updated the question to clarify that solutions ideally won't require hours of tedious manual work or monitoring.
I appreciate the answers that have been submitted so far. Unfortunately, manually searching everywhere for a stolen item would be too time consuming, and even upon finding it you couldn't be sure who put it there; it would be easy for a thief to frame someone else. And watching a potential crime spot continually until the crime happens would take too long since there are several possible griefers, many locations that could be griefed, and thefts are often spread out in time.
So for the time being the answer seems to be:
- Use the techniques that I outlined in my question, whether using InvEdit to inspect player inventories, or else manually copying their [username].dat files to inspect inventories and Ender chests. If it's in their inventory or Ender chest, there's no question who took it.
- Or give up and install Bukkit or Spigot and an anti-griefing plugin like WorldGuard or Prism.
We switched hosts and installed Spigot and Prism, and it was 100% worth the effort. Spigot runs even faster than Vanilla Minecraft did, and Prism is awesome for tracking down offenders and reverting their evil deeds.
You can try making something really tempting to grief for the griever, but dont make it to obvious and have an admin or moderator always watch the spot invisible. So you will see who will visit that place and grief it. If you dont have that much time because of school or other stuff. get a general position of the grieving area stay afk and record your minecraft with programs such as fraps.
If the area has been grieved you can watch in the recording who did it
If you have admin rights, an option may be to make a honeypot somewhere where the thief may likely find it, and then using command blocks and a chest with a redstone comparator hooked up to it and inverted (so that when something is taken from the chest, it activates the command block).
Fill it up with something the thief would want to take (maybe throw some junk in there so it doesn't seem like a trap), and when the items are removed, if it was set up correctly the command block should activate.
The command block should have something along the lines of: /say THIEF! @p
Assuming the player closest to the command block is the thief, it'll announce to the entire server "THIEF! (reallybadguyname)", even if nobody other than the thief is on the server at the time, then it should still show up in the console logs (if available through your host)