Flynt
Flynt is a collection of information displays that output to a map the player is carrying. Information displays are tied to a specific map, display in item frames, and can be viewed by multiple players. (Just like regular maps.)
The following map utilities are currently supported:
- Slime Chunk Finder - displays slime spawning chunks near the player
- Ore Finder - shows ores and cave systems on the map
- Height Map - an elevation map optimized for normally generated maps. (Should work on anything though.)
- Biomes - Shows the regions occupied by each type of biome
- Mob Radar - shows mobs nearby the player
- Hostiles - finds blocks that mobs can spawn on. (Respects time of day; check it out at night. ;D)
- Tracks - shows minecart tracks as black lines with a white outline. Can be overlaid on vanilla maps. Useful for stations.
Any map can have utilities added to it. Some utilities support overlay mode, so the original minecraft map shows underneath. Utilities can be stacked; you can view slime chunks and nearby mobs simultaneously if it strikes your fancy. (remember to overlay stacked maps.)
Usage:
Quote:/map slimes [overlay]
/map mobs [overlay]
/map ores <list of ores to show> - valid ores are "gold", "redstone", "diamond", "lapis", "iron", "emerald", and "coal". Defaults to "all". If you pass in "none", it will only render caves.
/map height
/map biomes
/map hostiles
/map tracks [overlay]
/map reset - removes all utilities on the map
/map setscale <scale> - sets the scale value for this map. Valid scales are 0-4, with 0 being the most "zoomed in"
/map setcenter - centers the map at your current coordinates. Resets the world ID if the map was created in a different world.
Note that maps which read the game world implement the same rate limiting (radius around the player) as vanilla maps. This is by design; it prevents the server from generating a large number of chunks while the map is updating.
In Turbo mode, the entire map is sent to connected players every second. This allows the map to be more readable when the player is moving around quickly, but also chews up quite a bit more bandwidth. This can be controlled with the utilimapper.turbo permission as needed.
Quote:/turbomaps <0|1> - 1 to enable, 0 to disable. Only affects the player that runs the command.
Permissions
Flynt uses standard Bukkit permissions and should not require SuperPerms. If no permissions management plugin is installed, only ops can use commands, including all utilities. See here for a full list of permission nodes.
Known Bugs:
- Performance: Maps can be overlaid multiple times. Doing so does not remove previous identical maps, so the same map is (invisibly) drawn twice
- Performance: Scale 0 maps use somewhat more processing overhead on certain map types, due to more pixels being updated around the player.
- Radar type maps do not behave correctly when held by two players. (Display rapidly switches between them, bandwidth gets involved, the result is a jumbled mess.)
- When not in overlay mode on radar utilities, the vanilla map cursor is still displayed.
- The slime chunk finder incorrectly reports slime spawning in mushroom biomes. Only Mooshrooms will ever spawn in a mushroom biome, so this is misleading.
- Performance: When one map is modified, all maps are saved. This may cause minor lag spikes if a very large number of modified maps exist.
- Unless modified, maps are only saved to disk during the onDisable event, meaning they may not save their data if the server crashes. (They would revert to the last successful save in this case.)
Planned Features / Changes
- Additional map types
- Simple API for third-party utilities to hook into the commands system (Started! Possibly functional! Not tested yet.)
- Configuration to control map throttling / limit layers on a single map, to prevent CPU strain on busy servers
- Option for /map setcenter command to use the same chunk alignment that vanilla maps now use (since 1.3)
- Ability to remove vanilla map cursors entirely, if desired. (Useful for more utilitarian map types like the mob radar.)
Notes:
The mob radar is drawn at the player's center, and ignores the location that the map was created at. This is by design, as mobs tend to become non-interesting and/or disappear when the player moves away.
How to use this plugin????
@zeta0134
Well. The answer "yes you can" is enough for me to go test it out. Thanks and when finished I will give you a poke!
@dadaemon
Doing player centering is actually pretty easy, and can be done from your plugin. Just find the map by ID in bukkit and call setCenter on it using the X,Z coords of the player you want to follow. (You'll probably also want to send down the map immediately after you do this; Flynt's turbomaps functionality would be ideal, otherwise you get weird glitchy redraw lag.) Set that up to happen every 10 ticks or so and you're set; all the custom map layers will respect the map's ingame coordinates and update along with it. (Some of the slower drawing ones, esp. ores, may not work terribly well, but they won't crash or do anything drastic.)
As for the custom drawing, that's technically supported and a little funky. The basic process is to create a class that inherits from UtiliMap, then register that map with Flynt using the static function Flynt.registerMapType("mapname", YourMapClass.class.getName());
That should be the general gist of it; sorry if that's way confusing. I'm going to document this properly later.
From a plugin designers view I was wondering if this plugin could do the following.
We want to have a vanilla drawn map on scale 1x rendered on the map. But instead of having it on a fixed location we want to have the center to be always the position of the player that holds the map. Then I want my plugin to hook into that map and draw something on it when it's in range of the player.
Is this possible, or is this maybe a feature request!? :)
Thanks for this plugin! :)
Finally found time to update this with some needed stuff. The maps finally persist through server restarts, and I added two new utilities. The hostiles tracker is really neat and would be useful for building a mob farm or testing out whether a city is truly lit well enough to keep creepers from spawning.
I want to add some other utilities to this yet, so I'll keep chipping away at the feature list while I go. Still, this is a more or less complete, functioning version of the plugin that I believe is relatively bug free. I'm calling it version 1.0.0. Enjoy!
Presently I'm busy with some real-life things and haven't been able to update it. There are a couple of bugs that are present in the file on-site that are fixed in the Git version, like the height and caves scanners not working for blocks above 128. Otherwise, it still functions in the newest versions.
Right now I'm probably going to do bug fixes, but not a lot else. I'm sorry that I didn't get the plugin API working completely; I'll work on it more when IRL stuff isn't being such a pain.
Is this plugin still active?
@josvth I never considered that, but it's an excellent idea. I forgot that you can modify recipes serverside. ^_^
I need to update the plugin soon, as I've put it off for too long. (IRL got complicated recently, I'm changing majors and am practicing for a piano audition.) A good majority of the maps have broken with Minecraft 1.2 because of the new height map. I'll try to get at least a quick patch out this evening.
Very nice plugin zeta0134! Very useful and a very neat implementation.
Are you planning on adding recipes for the maps? For example crafting an ore finder map with a map in the center of the workbench and 8 diamond around. Just an idea!
@zeta0134
Thanks for helping me understand the issues. I really appreciate that. Thanks for all your hard work, and I look forward to seeing these issues resolved. If you like some help, I would be willing to help debug or help code.
@bladedpenguin
I'm working on permanent maps. It should be a matter of saving the overlays and then reloading them as the maps are initialized, but I'm having trouble listening to the map initialize event. I'm not sure if it's firing correctly, or perhaps I've simply missed something obvious.
The runaway CPU usage plagues me too sometimes. Certain maps (esp. the Ores map) are very CPU intensive. I tried to mitigate this by limiting it to a small area around the player and also dithering the updates by a factor of 32 (so only 1/32 of the map updates each tick) but that's clearly not enough on some servers. (Scanning every single block is still very expensive. ^_^) I'll probably make that factor variable so the CPU usage of the plugin can be adjusted on the fly based on active players and general server load.
@XxTRAINEExX Source is on Github. It needs a link somewhere on BukkitDev
Would it be possible to make these maps permanent? I'm trying to give special maps out as quest rewards, but the maps get reset to regular maps on server restart.
Also, This seems to cause runaway cpu usage. Any idea why?
zeta013, Any chance you will provide source? I'm looking for some map options and might be able to provide some assistance.
Flynt is the name mostly because I thought UtiliMapper sounded silly. I asked a few people and we settled on that.
Merry Christmas! Just wondering... why you call it Flynt now? :-)
@predawnia
It presently uses standard Bukkit permissions. I forgot to post the different nodes-- I'll do that now.
Would be very interested if it supports Superperms and have permission nodes for
1. slimes
2. mobs
3. ores
4. ability to do Turbo
5. reset, zoom
I'm really interested in seeing this mod mature.