MobArena plugin for Minecraft
Go to file
Andreas Troelsen 00b59ed7c4 Add per-arena min/max spawnpoint distance settings.
Introduces two new settings for controlling how far away from or close
to a spawnpoint players must be in order for the spawnpoint to be valid
when spawning monsters.

This is a pretty big one. In ancient times, MobArena had no limit on how
close players had to be to spawnpoints for them to be valid. The result
was mobs spawning too far away from the players, frozen in place until
their target approached them or until another player attacked them. This
was clearly undesirable, so the 15-block max distance was introduced to
solve this problem. And it worked, hurray!

In the meantime, it also imposed a really cumbersome limitation on all
arena designs, since aesthetically (or strategically) placed spawnpoints
were seldom sufficient, and server owners have been needing to litter
their arena floors with spawnpoints to avoid warnings and to get their
expected monster behavior.

Modern versions of Minecraft no longer exhibit that "frozen in place"
behavior the hardcoded max distance set out to solve, and server owners
have been asking for configurability on this front for years. With this
commit, that distance is now per-arena configurable. The change has no
real impact on the performance of the plugin. It's worth noting that we
don't modify the pathfinding attribute `generic.followRange`. We might
want to revisit this in a future commit, but since it can _definitely_
affect performance, we should have some actual servers run a test build
with it before jumping on that wagon.

Having many spawnpoints might still be preferable to some, but it comes
with another problem of players standing right on top of a spawnpoint
when a monster spawns. To combat this, an additional setting to control
the _minimum_ distance that _all_ players must be from the spawnpoint
for it to be valid is introduced as well. This means it is possible to
have lots of spawnpoints for a less predictable session, but without the
risk of being instantly attacked when a new wave spawns. This change has
a theoretical performance impact on the plugin, because it's a lot more
brute force without the early returns of the old algorithm. However, if
the setting is left at 0, the old algorithm is used.

The only real downside to these changes is that it's more code and more
settings to maintain. It doesn't improve on the clusterfuck that is the
arena settings in the config-file - we're just making things worse. I do
think it's worth having, though, since the bigger revamps on the drawing
board are at best months away, and at worst, they'll never happen. When
or if the time comes, it's probably better to rethink certain aspects of
the plugin instead of trying to convert everything gracefully.

Closes #412
2024-10-06 14:42:02 +02:00
.github Add 1.21 to supported game versions. 2024-07-23 02:22:48 +02:00
gradle/wrapper Convert to Gradle. 2023-12-09 21:08:09 +01:00
scripts Add hangar format to release note script. 2023-12-31 15:14:25 +01:00
src Add per-arena min/max spawnpoint distance settings. 2024-10-06 14:42:02 +02:00
.gitignore Convert to Gradle. 2023-12-09 21:08:09 +01:00
build.gradle.kts Bump version to 0.108.1. 2024-06-24 23:30:08 +02:00
changelog.md Add per-arena min/max spawnpoint distance settings. 2024-10-06 14:42:02 +02:00
gradlew Convert to Gradle. 2023-12-09 21:08:09 +01:00
gradlew.bat Convert to Gradle. 2023-12-09 21:08:09 +01:00
LICENSE Add LICENSE 2018-04-27 16:32:02 +02:00
README.md Add Hangar link to README. 2023-11-13 12:21:40 +01:00
settings.gradle.kts Convert to Gradle. 2023-12-09 21:08:09 +01:00

MobArena Build Status

MobArena is an arena-style minigame for Spigot-based Minecraft servers

Getting Started

If you don't want to compile the plugin yourself, grab a release artifact from one of these two sites:

The wiki here on Github should have all the information you need to get started using the plugin.

Getting Help

If you run into problems or need help with something, feel free to hop on the MobArena Discord server to have a chat: Instant Invite

Remember, though, that this communication channel is idle chat, which means you likely won't get a response immediately. It could take anything from a couple of seconds to a day, but your message will be seen.

Contributing

Found a bug, got a suggestion, or want to dig into the code base? There are many ways to contribute to the project!

Get started here: Contributing