Population Density
Automatically places new players where they can find wood, animals, ore, and space to build. Also priority-based login queue, reserved slots for admins, idle boot ONLY when nearly full, entity thinning for lag reduction, and optional limited teleportation. Never again will your players experience a marathon run, spawn room full of portals, or maze of abandoned builds. This is a zero maintenance solution for administrators, and players don't need to learn any commands!
"This is THE plugin for large servers." – Mumblerit of muttsworldmine.com
Looking for a 1.12.2 or earlier-compatible version? Check here.
Got a question, suggestion, or problem? Post it on the issue tracker.
This video explains the region post system to new players.
See below for information on administrative features.
Feature Summary
- Assigns starting points for new players so that they can ALWAYS find space to build and beginner resources nearby. Players may be spawned directly there, or you can tell them about a slash command which will take them there.
- Respawns animals, regrows grass, and replants trees in the new player area to guarantee important new player resources.
- Removes idle players ONLY when the server is nearly full.
- Login queue to ensure fairness when your server is full, can prioritize some players over others if you like.
- Reserved slots for administrators.
- Optional teleportation posts which help players socialize and trade, but aren't abuse-able to escape combat or save a lost or hungry player.
- "Thins" extremely-dense crowds of monsters and animals, preventing ridiculous levels of farming or monster grinding from lagging your server.
Overview
Server owners often underestimate the badness in starting a player in a crowded area. Sure seeing builds makes your server look legitimate, but having to explore a long time just to find space to build and beginner resources is a major turn off for players who want to start playing right away. Even when players do find a place to start playing, they're often alone because other new players wandered into different areas.
PopulationDensity is the low-maintenance, easy-for-players answer to all these problems.
It works by automatically locating a region with lots of wood and ore, and then dropping new players in that region until they collect most of the easily accessible ore, cut down most of the trees, or crowd it with builds. Then PopulationDensity finds a new resource-wealthy region for future newbies and starts dropping new players there. If you have a great spawn area built up, you can instead spawn players there, and later tell them to use /HomeRegion when they're ready to start adventuring (or another command you define in commands.yml).
Additionally, optional teleportation commands help players move around quickly to admire builds and socialize while not compromising the game's integrity - players can only teleport from automatically-placed teleportation posts, so teleportation can't be used as an "easy-out" for players who mine or adventure themselves into trouble. That way, players keep the challenge of single player without the "players are too far apart" multiplayer issue.
Finally, if you have a "my server is always full" problem, then congratulations on your successful server! :) With PopulationDensity, you may optionally boot players who are idling so more players can log in and have fun, increasing your feel-good factor (or fattening your wallet, for some). when the server IS full, a login queue guarantees fairness, and administrative slots are set aside to guarantee administrators can always get in.
You can also assign players a queue priority to help them get on the server faster during peak times, to reward them for contributing to the server monetarily or through your community.
Setup, Configuration, and Commands documentation
Metrics: Like most other plugins this plugin collects anonymous metrics to see who's actually using this plugin, and this information is used to determine popularity as well as what features matter or not in the grand scheme of things.
Got a question, suggestion, or problem? Post it on the issue tracker.
Hey guys, important change. In addition to checking resources are available, also now counting player blocks in a region when deciding whether or not to close it. I've set the max at 1000 player blocks. If you have feedback on this number, please share!
First 1.0 release! Enjoy. :)
@gyroninja
Thanks, I removed it. :)
Nice plugin. Shouldn't you take out the this is in beta thing ↑.
First non-Beta release!!
Added signs to the region posts.
Cleaned up some logging.
Nether now works from the managed world, even when it isn't the default world.
No remaining work items or known bugs.
Source is released! See repository.
@SirMonsterSlayer
I don't quite understand what you mean - it does support multiple worlds - it manages one world, and that world can be any world you choose. The /spawncity and /cityregion commands can link two worlds, which can be helpful if you have a city in one world and have population density manage a second (although you can have your city world be the managed world).
I would recommend multiworld support :)
I would test it on a second map ;)
Barring the discovery of any big bugs that need squishing, my next changes will be making the nether always work in the managed world, and adding helpful signs to the region posts giving directions and reminding players about commands.
Please comment if you have other suggestions. :) I'm running out of ideas.
@Zombiemold
Okay Zombie, I made adjustments. It's now possible to tell PopulationDensity to start managing an existing world. It does come with some caveats, so be sure to read the configuration examples to get the details.
If you decide to try this, please make a copy of your world and try a private run first, to see which region is selected for new players, and to check the existing regions to see if any of the region posts landed in a really unfortunate spot.
If you have any concerns, contact me via comment here or private message. I can come over to your server and have a look, or help you think through your configuration options, as necessary. :)
Modular control over the plugin is always a good thing. I wouldn't want you to make changes, unless you could preserve the design you have now through some config settings.
Setting up spawns manually isn't a hug deal, just figured it would be nice is all. Random placement is quite alright. If someone ends up with a totem pole in their house, that could easily be remedied with WordEdit :)
But yeah, I have my own Teleportation system with cooldowns and prices setup through another mod. There are quite a few out there, I am just partial to Essentials.
@Zombiemold
Okay Zombie, I understand your perspective. I think I can make some modifications to make it fit better for you, and I'm going to give it some thought. For example, I think turning the resource search loose on an existing map would work out, so long as we turn off the restrictions on where folks can edit (based on region anyway) and not changing their spawn or respawn locations. You mgiht also want to turn off the teleportation, since you seem to have other means already added to your world.
There's a chance that region posts will land on some houses, though... :)
Tell me if you like this idea, and I will pursue it.
Regarding the idea about manually setting spawn points... that sounds like a job for a different plugin, to me. The inspiration for this plugin is to eliminate the need to manually add spawn points and adjust them by constantly checking-in on regions in person. Locking down the spawns through configuration options would be going in a different direction entirely.
I'd love to get you some suggestions, because I haven't been able to get this to work in the best way to suit my server atm. You seem very enthusiastic, and it has really made me happy because you appear to be an excellent coder, and this plugin is top notch.
I'd love for the ability to get it to simply work on a pre-existing map, and not bothering with an alternate map at all. If resource management isn't possible like that (I have no idea how to code plugins, and I am not sure it's possible), maybe make it optionally just to monitor population instead (That sounds easier to monitor). In a perfect world, I would love to see the following scenario.
Player joins the server, gets spawned in a region. They begin building there. More players join, a little community is built. Pop Density sees the high population, and makes another region for players to spawn, the cycle moves on. All the while, people are visiting cities, and buying property there if they want to move (We have houses and plots for sale).
It would also be great to designate spawning areas manually, like set up the cities to be regions where people can spawn.
On my Server, having a single spawn point has caused some issues though. For one, the area gets saturated, and trees are completely wiped out. Secondly, towns become ghost towns, because only one town is highly populated. (We have 3 main town hubs on the server), but can only spawn them in one...
We have rail ways, and a Dynmap for the main world, so splitting up the world, even with teleports is just too cumbersome for what we need.
Hi all, I made LOTS of positive changes in the latest release (1.2 Beta). Please see the changelogs for details. I've already updated the documentation above.
If you're using this plugin at all on any server (even a test server), PLEASE contact me so that I can get your feedback and suggestions. I need to know what you want so that I can provide it. :)
I just finished a smallish study of the resource scanning code. I started a new world and let it run - the scanner actually discarded FIVE regions before finally opening one for players. I was very worried at first that something was wrong, but when I flew around and visited the regions to have a look, I saw that it was actually right on target.
I saw several regions which were almost entirely water, sand, or plains. These were passed over because they lacked near-surface ore, sufficient trees, or both. It just goes to show you that space alone isn't enough - it pays to actually measure resource availability before deciding where to start spawning new players.
I'm really excited about this. I think server owners will be very pleased if they run this plugin.
The only new problem I experienced was being disconnected because scanning regions was taking so long (because so many regions in a row were unacceptable). I don't think this is avoidable because it's not possible to multithread resource scanning. I'm considering extending the minimum time between scans from 6 to 12 hours as a result.
@Zombiemold
Hi Zombie! Yes, I found the issue and fixed it in 1.2 Beta (released - see downloads). The problem was that Bukkit gets confused if I teleport a player before Bukkit has a chance to spawn him. I worked around it by using the onPlayerMove event (which is why that tracking is no longer disablable).
No you can't make a current world the managed world, but I did design with an existing world in mind. Here's how it could work for you. If you disable "respawn in home region on death", then your current players won't be confused when you install the plugin. To them, they'll just keep playing as they always have, with the additional option of using /homeregion to start fresh in a new world. Your new players will have to know about /homeregion though, so that they can get back home after they die and respawn.
They could also use /homeregion as a way to go get resources to be used at their current build location in the main world. When they want to get back to their usual build location in the main world, they can use PopulationDensity's /spawnregion command, or other commands already available on your server (do you have /sethome and /home? those will still work!).
Also remember that even though they'll be "split up", chat reaches server-wide be default, and the provided teleportation commands will help players move around very quickly when they want to join up to play together.
Why can't I make PopulationDensity work with an existing world? The reasons are that each server has a different "reserved" spawn area (large, small, none), and also PopulationDensity has no way of knowing where current players "live" so that they can be initially assigned to the right regions. Players may discover that they can't build where they have been building before, or that the only place they're allowed to build is the spawn area, where another plugin blocks them from doing anything. It would be very confusing for players who have been previously playing on your server, and any configuration options to avoid this problem by encoding all those data in a way the plugin could understand it would be very complicated and difficult to use (and a support nightmare for me).
Sorry I didn't get back to you. Been so hectic with the merge to 1.0, updating plugins, losing some etc.
Were you able to figure out why it may have been happening?
Additionally, is there a way to get it to recognize an already existing map? I'd hate to split everyone up across multiple maps.
I'm strongly considering blocking move-ins unless a current resident invites you. Anyone could still join the newest region or any wilderness region without an invitation, but established regions would require invitations to make griefing big builds more difficult. Does anyone think this would be a bad idea? I plan to make it default to on, but possible to disable. The once per week limitation on moves would still be in effect to keep folks from "smuggling" resources from one region to another without a co-conspirator.
Besides fixing the problem Zombiemold mentions below, my next step is to update the region names, then add permissions. Here's what I'm thinking for permissions... please comment if you can think of any more you might want. All of these will default to TRUE for ops. To manage more fine-grained control over these permissions, you'll have to install a separate permissions plugin.
PopulationDensity.BuildBreakAnywhere - Edit the managed world outside of your home region and even around region posts.
PopulationDensity.TeleportFromAnywhere - Teleport from any location, including home region. Even when teleportation is disabled, anyone with this permission will still have access to teleportation.
PopulationDensity.OpenNewRegion - In case a region somehow runs out of resources or space despite the frequent scanning, I'm adding a command to override the system and open a new region at any time (could also be useful for testing). This permission would control access to that command.
If you have suggestions for region names, please submit them via comments soon!
@jckmcgraw
There aren't any pictures because there's nothing to show. :) That's kind of the point - as far as players know, there's nothing different except that there are actually resources available and people playing around them.
I guess I could upload a picture of a region post, but it's just a wooden platform with some glowstone stacked in the middle. Nothing fancy.
@Zombiemold
Sorry about that, Zombie. :( Are there any details in your server log about the internal error? I will try to reproduce the issue myself this weekend and get it fixed. Very sorry!