21

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].datfiles, but the stolen items aren't in anyone's inventory.

A note in case someone else doesn't know this technique:

  1. Look in the world's /players directory.
  2. Back up your own [username].dat file.
  3. Copy a suspected player's [username].dat file, renaming it to your user name.
  4. Launch the game and check the inventory as your own.
  5. 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.

12
  • 2
    Why isn't Bukkit an option? Is it a modded server? Hosted server? Something else?
    – MBraedley
    Dec 17, 2013 at 0:52
  • 2
    ender inventory is also in [username].dat so copying that over will/should allow you access to it, also he could just be tossing the items into lava Dec 17, 2013 at 1:31
  • 4
    @Assylum or trapped chest (hide the red latch) and have a command block print the closest player to log if items go missing Dec 17, 2013 at 11:32
  • 2
    @ratchetfreak: Or even just triggers a fall into lava. There shouldn't be too many people that die from swimming in lava.
    – MBraedley
    Dec 17, 2013 at 11:52
  • 4
    @MBraedley you'd be surprised how often people die in lava Dec 17, 2013 at 12:09

8 Answers 8

5

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:

  1. 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.
  2. 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.

3

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

2
  • Thanks for the suggestion. Unfortunately the thefts are not well isolated to a particular area (I suspect this is true of griefing on many servers). People tend to be on good behavior, too, when they see that others are on the server; the best thieving times are when no one else is online. I'm hoping to find a solution that doesn't require someone to constantly watch or record a particular chest, since there are so many different chests where the theft could happen. Jan 20, 2014 at 2:05
  • @FeralChimp If the thief logs on when no-one is on, you could always look at the server logs when s/he logged on and who.
    – RavenM
    Jan 28, 2014 at 19:04
3

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)

1

What I would be tempted to try would be to rename certain items, but with minor differences. It might be counteracted by the italic text, though.

2
  • Does renaming the item help to find it later? I was hoping for a solution like this, which would let me manually or automatically search for a named item after it's stolen. But once the named item is stolen, I don't know how we would find it to identify the thief. Jan 20, 2014 at 2:08
  • @Feral Chimp I'm not too sure what your asking, but if I've read it right, this is my answer: You'd have to use some good 'ole detective work, I'm afraid. If it's on the their as you find it, that makes it easier. WAIT, wouldn't you just use the same "Username.dat" method?
    – peper757
    Jan 21, 2014 at 7:01
1

I know this is a bit late, but for the people who want to know, run the following:

/testfor @a {Inventory:[{id:"minecraft:ITEM_ID",tag:{DATA_TAG}}]}

And make sure that /gamerule sendCommandFeedback is set to true.

This will tell you the names of all the people that has the item in their inventory.

1
  • Will this also tell you the location of chests that have the item in question?
    – Gigazelle
    Oct 23, 2016 at 18:20
0

You should try like the other person suggested using invisibility on them. Or stalk the suspect players without invisibility with armor just in case of attack. Keep doing this if stealing doesn't stop they're innocent, but if stealing stops for a long period of time, they are GUILTY.

0

Hey use NBTexplorer to search the player data's enderinventory. just caught a thief on my server. was using a duplication bug to hide his diamond blocks and stolen stuff.

-1

If he is robbing multiple times try setting a trap or go invisible and stalk them

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .