Skip to content
This repository was archived by the owner on Apr 14, 2020. It is now read-only.

Expand the custom entity configurations to allow more granular control #279

@bardicknowledge

Description

@bardicknowledge

Is your feature request related to a problem? Please describe.
I play on a multi-world server where this plugin is used. The world consists of both Skyblock and SMP worlds. To improve performance from the massive number of entities on SMP, the mods turned on mob stacking for Villagers on all worlds, which means that trading has become challenging if not impossible.

Describe the solution you'd like
The custom entity configuration can be enhanced to provide additional checks before stacking, beyond simply tagging and setting custom maximum stack sizing. The key enhancement would be adding support for stack-worlds and no-stack-worlds, so that, for example, villagers stack on SMP, but don't stack on Skyblock, where other mods already define entity limits.

Describe alternatives you've considered
Two other considerations were made from the client side to prevent mob stacking for villagers. Nametagging did not work, since nametag behavior prior to 1.14 (the server runs 1.12 for Skyblock) was inconsistent for villagers. The other option was to stagger villagers outside of the area for mob stacking, but that solution has space implications that make the solution less desirable either in situations where a villager spawner is collecting villagers for sorting, or when building a trading hall.

Additional context
I've already created a fork of the code that introduces a new class, ConfigHelper, which performs the custom entity check behind the scenes for configurations that appeared to make sense. In testing the no-stack-worlds configuration, the change didn't appear to have any significant impact on server TPS. Other configuration options that were made customizable were:
wait-to-stack.wait-time
wait-to-stack.spawn-reasons
no-ai.enabled
no-ai.use-whitelist
no-ai.type-whitelist
tag.always-visible
tag.format
tag.remove-at
stack-max
dont-stack-until

I can provide a link to the forked code, or create a branch and issue a pull request if you want to review it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions