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.
Requirements
- v6.0 and higher require Java 21
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.
@The_PC_Tech_Guy
But that doesn't stop people from using like /visit or /sethomeregion when exploring. I want it completely disabled and gone.
@mohawkguy360
Um, this was in both the commands & permissions page as well as the administration page...
@bigscary
Fixed. Thank you!
@The_PC_Tech_Guy
I've searched far and wide, and there is no command that seems to do such a thing. I really need a way to disable these region posts, though.
@mohawkguy360
You can manually open and close them, if they're near chunk 0,0 and such. I can't recall the commands to do this, but they're listed in the guide above. Once closed, the region will not re-open for new players.
Seems PopulationDensity didn't account for a plugin kicking a player during its lag-reducing process. https://gist.github.com/RoboMWM/a9ddf031f1414efb4544ae081bcdc277
Although my guess is that the player could've left and rejoined at that time as well, and Population Density didn't get to re-account for the player's "inactivity" time before it came time to find who to kick.
Hey, so I have four different region posts that are within my griefprevention spawn region. How can I disabled these completely so players are not warped to these posts? I don't want them coming on the server and trying to build in an impossible area.
@Blocktagon
I think I fixed this in 5.5.1 - please tell me if you still have this problem after you've updated.
@kemmeo
I'd rather have a plugin dedicated to do this instead of having this in Population Density. Btw, afaik redstone clocks aren't what lag your server - it's the "devices" connected to a clock that do. https://www.spigotmc.org/resources/redstone-clock-preventer-2.6678/
@bigscary:
Please consider moving the 'CustomSigns: main:' sign to the south side of the post, so that it is visible from the same viewing direction as the region name sign.
@Blocktagon
A little more on this, it seemed to only affecting teleporting away from a single region post. You could /visit it, but doing /visit /homeregion or /spawnregion to move away from it caused the error.
Destroying the post and allowing it to regenerate did not fix it, but I did start mining around the area and eventually found spots where it worked and did not work consistently. I then destroyed and re-created a decent sized part of the affected landscape and it started working again.
It may, but not necessarily is, caused by another plugin, but I don't have enough data to say for certain.
As of yesterday, this error is randomly occurring when using /homeregion:
[10:44:05] [Server thread/ERROR]: null org.bukkit.command.CommandException: Unhandled exception executing command 'homeregion' in plugin PopulationDensity v5.5 at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) [spigot.jar:git-Spigot-104c8c8-e43b278] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigot.jar:git-Spigot-104c8c8-e43b278] at org.bukkit.craftbukkit.v1_9_R1.CraftServer.dispatchCommand(CraftServer.java:645) [spigot.jar:git-Spigot-104c8c8-e43b278] at org.bukkit.Bukkit.dispatchCommand(Bukkit.java:580) [spigot.jar:git-Spigot-104c8c8-e43b278] at org.bukkit.command.FormattedCommandAlias.execute(FormattedCommandAlias.java:38) [spigot.jar:git-Spigot-104c8c8-e43b278] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigot.jar:git-Spigot-104c8c8-e43b278] at org.bukkit.craftbukkit.v1_9_R1.CraftServer.dispatchCommand(CraftServer.java:645) [spigot.jar:git-Spigot-104c8c8-e43b278] at net.minecraft.server.v1_9_R1.PlayerConnection.handleCommand(PlayerConnection.java:1350) [spigot.jar:git-Spigot-104c8c8-e43b278] at net.minecraft.server.v1_9_R1.PlayerConnection.a(PlayerConnection.java:1185) [spigot.jar:git-Spigot-104c8c8-e43b278] at net.minecraft.server.v1_9_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot.jar:git-Spigot-104c8c8-e43b278] at net.minecraft.server.v1_9_R1.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot.jar:git-Spigot-104c8c8-e43b278] at net.minecraft.server.v1_9_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot.jar:git-Spigot-104c8c8-e43b278] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [?:1.7.0_95] at java.util.concurrent.FutureTask.run(FutureTask.java:262) [?:1.7.0_95] at net.minecraft.server.v1_9_R1.SystemUtils.a(SourceFile:45) [spigot.jar:git-Spigot-104c8c8-e43b278] at net.minecraft.server.v1_9_R1.MinecraftServer.D(MinecraftServer.java:721) [spigot.jar:git-Spigot-104c8c8-e43b278] at net.minecraft.server.v1_9_R1.DedicatedServer.D(DedicatedServer.java:400) [spigot.jar:git-Spigot-104c8c8-e43b278] at net.minecraft.server.v1_9_R1.MinecraftServer.C(MinecraftServer.java:660) [spigot.jar:git-Spigot-104c8c8-e43b278] at net.minecraft.server.v1_9_R1.MinecraftServer.run(MinecraftServer.java:559) [spigot.jar:git-Spigot-104c8c8-e43b278] at java.lang.Thread.run(Thread.java:745) [?:1.7.0_95] Caused by: java.lang.NullPointerException at me.ryanhamshire.PopulationDensity.TeleportPlayerTask.run(TeleportPlayerTask.java:56) [?:?] at me.ryanhamshire.PopulationDensity.PopulationDensity.TeleportPlayer(PopulationDensity.java:1108) [?:?] at me.ryanhamshire.PopulationDensity.PopulationDensity.handleHomeCommand(PopulationDensity.java:1013) [?:?] at me.ryanhamshire.PopulationDensity.PopulationDensity.onCommand(PopulationDensity.java:675) [?:?] at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) [spigot.jar:git-Spigot-104c8c8-e43b278] ... 19 more
@kemmeo
I really have no idea how to approach this problem. If you know of another plugin which does this and publishes source code, then I will look into creating my own solution for this plugin.
@JordyvanderBolt
It still works well for 1.9 without any update (as far as I'm aware), but expect an update next week.
When will it be updatet to 1.9?
@bigscary
Sorry if you have been asked this before, but would you consider adding a feature to prevent redstone clocks? They have the potential to lag server just as much as entities, if allowed to run wild.
@NetCreator
Better to fork and plug away. I won't do any mod-specific features since there's currently no good options for running Bukkit plugins alongside client/server mods.
Hey, @bigscary, I'm looking and converting the ScanRegionTask to take config files for the minerals, wood, etc. for scoring, since I'm using a modpack and PopulationDensity together. A lot of blocks that would otherwise show up as player blocks probably shouldn't show up as player blocks. Got a branch or know of a fork that does this, or should I go ahead and fork and start plugging away?
@The_PC_Tech_Guy
Yep, already coded just gotta test and publish later. My kid is sick, so less free time than usual. Remember inactivity is based on actually interacting with the animal, since PD doesn't know who "owns" it. So to keep 20 mooshrooms the player has to at least right click them every now and then (use a bowl to get mushroom stew!).
@bigscary
Well somebody complained to me that they had 20 mooshrooms and now they only have 2 (and complained that a griefer might've done it :S), so it'd be nice to know this information just in case (and no they aren't inactive). Thanks!
@The_PC_Tech_Guy
Sure, I can put those back in. Not sure how handy they will be, since you'd have to search by coords to determine whether a specific animal was removed for inactivity.