Skip to content

Make everything which makes sense to be configured by the user configurable#393

Draft
OptimisticDeving wants to merge 17 commits intokaboomserver:masterfrom
OptimisticDeving:configurable
Draft

Make everything which makes sense to be configured by the user configurable#393
OptimisticDeving wants to merge 17 commits intokaboomserver:masterfrom
OptimisticDeving:configurable

Conversation

@OptimisticDeving
Copy link
Copy Markdown
Contributor

@OptimisticDeving OptimisticDeving commented Mar 30, 2026

I've marked this as a draft PR because I feel the amount of additions to config.yml leaves a lot to be desired. Ideally, everything related would be grouped into its own sections (i.e. entity limits and gamerule limits would be in limits.entity and limits.gamerule respectively), but that would require configuration migration if we don't want to break existing deployments which have branched off from our configuration yet still use our version of Extras.

However, I don't really want to write those migrations with Bukkit's FileConfiguration API, because it really sucks when you've been using Configurate in basically all of your Java projects. See the ObjectMapperExample.java for why I think it's much better than FileConfiguration.

Unfortunately, Configurate is not included in Paper, so it would have to be added as a dependency and I know that you don't really want that. I guess I'll have to find another way to make configuration tolerable if we can't depend on Configurate. Also, we wouldn't need to include it with shading - we can instead declare the library in plugin.yml (see the libraries section of SpigotMC.org#plugin.yml) and it'll be downloaded at runtime & cached for later use. Not too much of a big deal considering you need an Internet connection for the initial server run anyways. However, transitive dependencies (i.e. dependencies of dependencies and further down the dependency tree) might have to be manually added, although I'm not entirely sure.

Also, note that you shouldn't add the blockedInExecute to the Extras config.yml in the server repo, otherwise it will override it. Instead, don't specify it at all and it will be kept in sync with the version in the plugin.

Lots of people ask for summon to be unblocked in execute, so this commit allows them to unblock it on their own clones without needing to modify Extras.

Unfortunately, if we want to continue to use Bukkit's built in configuration system, we must keep the blockedInExecute lists synced between config.yml and ServerCommand.java. The config in the kaboomserver/server repo SHOULD NOT have the list synced though, and instead it should be absent entirely to prevent unwanted overriding of what should actually be blocked in execute.
They are very destructive, and also very loud. Current limit is set to 128, but it might need to be increased/decreased accordingly.
Considering pregenerating 500,000 blocks with Chunky probably takes a while...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant