The Meaning of Life, the Universe, and Everything.
Have you ever been in a server where your diamonds keep getting stolen, you wonder where you misplaced that sword, or where your horse is after someone took it for a ride?
This will become an application (Not a mod!) to search the world files for items/entities. This software requires local access to the world files, so can only be ran by server owners (and realm admins?). If there is a lot of need for a tool like this, despite the restricted usage scenario, then I may assign more of my free time to develop on it. For now I'm putting this feeler on the forums to gauge what people think of it.
I will soon release this on Google Code (R.I.P.) SourceForge, under the GPL license.
Functionality that I already got working (sort of):
Currently all search options are hardcoded in the source file and I have to run it from the IDE.
Places to find items/entities:
Player inventories / ender chests
Chest, furnace, jukebox, etc (every block with inventory)
Minecarts with chests, horses, etc (every entity with inventory, including Saddle and HorseArmor slots)
Armor stands, Mobs, etc (every entity with equipment)
Finds a leash if an entity is leashed
Dropped items (those that disappear after 5 minutes)
All dimensions are searched
How to find items/entities:
List everything a specific player possesses
Search by id (e.g. "minecraft:diamond_pickaxe")
Search by radius from a given coordinate
Planned work for the future:
Creating a command-line tool, so it can run at least stand-alone.Command-line is the easiest (but least user-friendly) next step to use it as an executable.
Skip regions that are out of reach when using search-by-radius
Make a GUI
Create search filters
Graphical map to pinpoint found items (simiar to dynmap)
Possibily re-use already generated dynmap tiles
Generate give/spawn commands to recover murdered horse, etc.
Generate a database from a world, so multiple searches can be done faster (searching a 600MB world takes about 3 minutes here)
Places to find items/entities:
Mapping between player UUIDs (as used by the saves) and nicknames
Not all entity/tileentity types are complete and/or debugged, because, well, I haven't encountered them yet in my server.
Search for items that could have been crafted/placed using the item sought for:
e.g. finds diamond_sword when searching for diamond (craftred)
e.g. finds book when searching for bookcase (drop items)
e.g. finds painting on wall when searching for painting item (placed)
e.g. finds enchantments higher than those sought for (upgraded/combined)
e.g. airborne arrow (fired items)
Select how many levels deep
How to find items/entities
Semi-automatic mapping between numeric ID, string ID and in-game name (e.g. 351:4 vs. "minecraft:dye":4 vs. "Lapis Lazuli")
More search filters:
by stack size
by custom name (given with anvil or name tag) (or presence of a custom name)
Search by item properties:
text in signs/book
leashedness of mob
Ability to (automatically?) add items/blocks/entities from mods
Skip chested minecarts, or anything the user wishes to skip
Find a high concentration of a certain item/entity
Find everything unobtainable in survival
(currently half implemented) by comparing two world saves (newest and a backup)
it calculates the difference and finds items that exist only in the newest world. Unchanged items are ignored
also by selecting a specific entity in the backup
also by finding newly placed blocks
Screenshots (for what it's worth):
Another of my applications that I can integrate with this. You can navigate like Google Maps (but not zoom... yet)