** This mod works on Empire Minecraft - play.emc.gs - only. If you're playing somewhere else, you won't be interested in it. **
EMC has a great shop system, but finding specific things can still be hard. You'll get that stack of oak planks for a decent price anywhere, but when you're out shopping for a rare item, finding a shop that has it can be hard. Finding the shop that has the best price can be even harder. And when your favourite shop is sold out, where do you find replacement? What if you need 2 DC of granite, your favourite shop sells that 4 blocks at a time, and you don't want to spend two hours clicking the same shop sign over and over?
This is where the shop locator comes in to help.
While you're walking through town, this mod will find shop signs around you, read items and prices from them, and save them into its own database. Later, you can open an ingame GUI, enter the name of an item to get a list of similar items, then click one to get a list of shops selling this item, sorted by price. Clicking one entry in the list gives you a glance at the buy/sell price and amount, residence, and coordinates on that residence so you can find the shop quickly.
Now, you just need to walk to that location and buy your stuff - or sell it if there is a sell price as well, and you can decide if you like the buy/sell amount even before you walk there. To speed up getting there, you can click the server or residence links to switch to that server and visit that residence. And if you have JourneyMap, VoxelMap or Xaero Minimap installed as well, clicking the XYZ coordinates will set a waypoint there to make finding your shop sign even easier. Even if you don't have a map mod, clicking the coordinates will face you in that direction.
Install Forge and this mod. The EMC Website has a series of great tutorials about this.
After starting minecraft, walk around and visit your favourite shops to build your shop sign database. Visit some other shops as well (/v +shop and/or /v +mall) to have the mod learn about new ones. Wait a few seconds between visiting them to give the mod time to scan the area for shop signs.
When you're done, press the # key (keybinding can be changed in the controls options). The gui - see above - will pop up. Enter some text in the textbox left top, press return, and the item list to the left will be filled. Click on one of the items, and you'll see a list of shops to the right. Click one of those shops to see details.
Enchanted Items and [CHOOSE] signs
The mod doesn't know anything the players can't figure out themselves, so there's no way to know what a chest contains unless you open that chest. And when a sign says Potion-9skdfh, the mod doesn't know any more about the potion than you do. So, that potion will shop up as Potion-9skdfh in your item list, and if the shop sells different kinds of potions in a [CHOOSE] chest, the mod doesn't know anything but, well, there's a [CHOOSE] chest.
However, if you open that [CHOOSE] chest, the server will send the contents to you, and the mod will remember those contents. So, if you see a shop that sells that "I don't need that right now, but it will be useful later" item in a [CHOOSE] chest, you should click that sign once to allow the mod to update its database.
When a [CHOOSE] chest contains enchanted items, or books, the mod will remember those enchantments as well, and display them in a shorter form. For example, a diamond shovel having Efficiency V, Unbreaking III, and Mending, will be displayed as "Diamond Shovel (E5,U3,M)" in the items list.
Item renaming (1.6 feature)
Item names as shown on shop signs aren't always consistent. For example, spruce wood is called pine log, while acacia is called log, not wood. And basically players can write anything in the 4th line of the sign if they use the # mechanism, so those item names may be a bit confusing. To repair this, you can write a translation file that says "Pine Log=Spruce Wood" or similar; from then on, searching for Spruce Wood will find Pine Log as well.
An example translation file gets deployed in your config folder automatically, it's a text file that should be easy to write, and it supports java regular expressions as well to allow for more flexibility. (If you don't know what regular expressions are, just stick with sign name = item name.) Using translations does not affect server uploads/downloads, so other people's translations won't affect you.
Expired database entries
After a while, signs get old. And while the mod has code that detects when a sign doesn't exist anymore, and removes that sign from the database, versions prior to 1.6 had a bug that didn't share this deletion info with the server. so people got those old entries over and over. Because of this, there's a config option to ignore signs that haven't been seen within a certain amount of days. You may want to set this to 21 to see only signs which have been seen within the last 3 weeks. Don't set this too low - you'll miss out a lot of signs from shops that don't have a lot of customers, and as [Choose] signs only get updated when someone clicks the sign and opens the chest, most of them are several weeks old but still valid.
GUI Scale (Warning, experimental!)
The shopfinder mod needs some space to display its item list and shop list. Not being able to display everything might result in a client crash, so I put up a warning message for people who use large gui settings (or auto, which is even worse than large). Since version 1.6, there are two new options for those players:
- Try and show the gui anyway - If you're just a few pixels short, you can set this option, and the shopfinder will do its best. If you're missing too many pixels, this might crash your client, so use with caution.
- Automatically switch the gui scale to normal (or something else) when you open the shopfinder mod, and switch back when you close it. This allows you to keep your preferred scale, but still allows the mod to use the screen size it needs.
To make sure the mod doesn't slow down your minecraft, it has been optimized using jprofiler (https://www.ej-technologies.com/products/jprofiler/overview.html).