MapLoader
Description
This plugin allows CraftBukkit server administrators to force the server to generate large portions of the world all at once so that it is not necessary for the server to load them as people explore. It was originally designed for use with Dynmap so that you could load a large portion of the world and see it on dynmap, thus allowing you to plan cities, towns, and other large constructions, as well as find the perfect spot for your castle made of spider webs. It should be noted it does not re-generate everything, only previously un-generated areas.
This plugin was originally made for my personal use when making adventure maps, but I have decided to release it.
Source: https:github.com/numenorean95/MapLoader
Current Version Info:
NOTICE: There is something weird with the current version, where it does not generate any surface elements. I will be taking a look at this as soon as I can. NOTICE NOTICE: I fixed this in the latest version (1.3.2) but it caused some potential problems with >200 radius on hyperload, so be careful.
This version has been tested and works reliably at radius 200 with 2 GB memory allocated.
WARNINGS
Please be aware this plugin is not very stable and will work better or worse depending on your system specs and the current alignment of the planets. DO NOT tell me about any errors relating to memory problems, I am aware of them.
With my new modifications it is safe for people to be on the server with up to a (tested) radius of 200. However I am not responsible for any lost items or corrupted world, although I am confident that it can do no harm other than crash the server. However, if a chunk is unloaded under a players feet...
In addition, with hyper mode activated players will be automatically kicked to take advantage of available resources.
Installation
Copy the jar into your plugins directory, restart your server.
No configs or anything, please look below for permissions.
Commands
All commands work from console or in-game
/load <world> <radius> [x-coord] [z-coord]
Aliases: /l
This will attempt to load the world from the point indicated by x and z to your radius's distance from the center (as a square). If you leave out x and z as console it will default to the spawn, if as a player, to your current location. This can take a long time, depending on how big your radius is. You must have the permission "ml.load" to use this, and I currently only have support for Bukkit permissions.
/hyperload <world> <radius> [x-coord] [z-coord]
Same as load, but much faster, and uses much more memory. Recommended for radius < 100.
/terminate
This will terminate the current running load, which will then have to be restarted to continue. Requires permission "ml.terminate"
Just a little example:
If you put in a radius of 50, you will be loading (50 * 2)^2 chunks, or 10000 chunks. Thus, a radius of 5000 would mean loading 100,000,000 chunks. USE AT YOUR OWN RISK, I have programmed in many devices to avoid cataclysmic problems, but they don't always work, and I do not check for stupid admins.
Permissions
ml.load - To use the command "/load"
ml.terminate - To use the command "/terminate"
TO DO List
- Change terminate command to /loadterminate
- Add /loadstatus command
- Investigate issues with Forge
Working under 1.8.8
@Numenorean95
lol ok
@iGamerang
Sure. Still haven't found the surface element problem, but maybe the update will accidentally fix it.
any chance on an update?
It seems to run pretty reliably except for the no surface elements but I do run this on its own dedicated server at my house
For those interested I run mine on a
2.5GHz Intel Core 2 Quad 9300
MSI Board with the Intel G41 Chipset
8GB PC1333 DDR3
150GB WD Velociraptor 10k RPM HDD
Windows Server 2008 Std. x64
@Kahanamoku78
Afraid not, yet. Thanks!
Any news on the fix for surface elements?
Awesome app btw ;)
@Numenorean95
Works great! Thanks!
@echibahn
Just use the newest version, it should work fine. If it doesn't, PM me and ill make a version for you that works.
I don't see a version listed for 1.6.4, is there one available that I can run on my modded server?
@Numosh
Im sorry, I was being really, really stupid. Ok, so lets try again:
Are you certain that you did not accidently do it on a different world? And have you tried deleting the dynmap render data before doing a full render? I doubt either are the problem, but im not entirely certain what could be the error. I will run a couple tests tonight, and see if I can reproduce your problem.
@Numosh
Did you run "/dynmap fullrender world" after it finished? Otherwise the dynmap map will not be updated.
Thank you, im glad you like it!
I only have dynmap and maploader plugins running on my server to play with a friend and it's not loading or rendering anything. I typed in dynmap fullrender and it does not load anything else, only what I have discovered so far.
I have a fair computer (8gb RAM). Executed the command /hyperload world 200, it finishes in less than 6minutes.
Lastest bukkit version with lastest Minecraft version.
Excellent plugin nevertheless, no memory problems whatsoever
@mailleweaver
Ok, ive got a fix for the memory usage, im still not sure what went wrong but ive redesigned the plugin again to be self-managing. I will try to release it today as there is just one more thing to add. As for missing terrain feature I have not been able to replicate your problem yet, so im not sure how to fix it.
@shadvalentine
Could you be more specific? How did you use it? What was the command you used? I was not able to replicate the problem myself.
@shadvalentine
there is definitely a bug, i will be home in a couple days to fix it. Sorry!
I just used this plugin and noticed something .. the surface items did not load .. like trees, snow, grass, exc..
@Numenorean95
In the console, it would periodically report how much memory was available, how much used, and how much freed after cleanup. The freed memory was never has high as the used memory, so the available memory slowly shrank as the plugin did its thing until the server didn't have enough memory left to keep running. The missing terrain features were also missing from the small (100) radius area that completed without running out of memory.
My processor is an Intel Core2 Quad 2.5 GHz. Pretty old, but it has served me well since 2008.
@mailleweaver
Thank you for testing, that is extremely helpful. My goal for this plugin is for it to be able to avoid any problems with memory, regardless of how much you have available, so I will try and fix this, especially since I test with no more than 2 GB myself and it still works. I will look into this more closely and then post a more in depth reply or a fix. And notch only knows what happened to the terrain :/
Just out of curiosity, what processor do you have?
@BillyGalbreath
Well, for one I had no idea of the existence of WorldBorder, so I don't rightly know. I will take a look at the algorithms later, but MapLoader is certainly faster by default, and may not have as many errors (again I will have to test). They probably use the exact same amount of resources since they are doing the same thing, but mine has been engineered to do exactly this, and is not limited to a single area that you define like in WorldBorder. However, it is ultimately your choice, so if feel like it just try mine.
It got stuck partway through. Kept waiting for server to catch up. Server log on pastebin. http://pastebin.com/SYUpKNfg I'm trying it again now. Using a radius of 200, 1 gig of memory allocated to the server, only me online, and this the only plugin. It got stuck again. http://pastebin.com/gJCZsiDG I'll try once more with a smaller radius to see if that helps, then I'll try allocating more memory. I'm glad the terminate command works. :) It worked with a radius of 100 and logging off of my client since it's on the same system as the server. http://pastebin.com/3BpUwCbu And it locked up again about halfway through with a radius of 200 and 2 gigs allocated to the server. http://pastebin.com/zJ7KheYt It looks to me like it just runs out of memory, which is probably minecraft's fault and not the plugin's. Thanks for the awesome tool; I just don't have the memory to handle it. I just noticed something interesting while I was exploring the chunks this generated. After I ran your plugin, I installed dynmap and ran a fullrender to map everything. The areas that I'd already been in got mapped properly, but the chunks that were loaded entirely because of maploader didn't have trees, snow, ice, cactus, desert lakes, or structures (like abandoned mineshafts, desert wells, temples, or villages) but they did have the basic terrain and caves/ravines. The missing stuff showed up (and populated dynmap) once I visited the areas that were lacking them, though. Maybe you're missing a pass or two when loading the chunks, and that stuff isn't generated until a player visits? Just something to check out.