Skip to content

build(deps): bump de.eintosti:buildsystem-api from 4.0.0 to 4.1.0 - #51

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/gradle/de.eintosti-buildsystem-api-4.1.0
Open

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/gradle/de.eintosti-buildsystem-api-4.1.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Nov 11, 2026

Copy link
Copy Markdown
Contributor

Bumps de.eintosti:buildsystem-api from 4.0.0 to 4.1.0.

Release notes

Sourced from de.eintosti:buildsystem-api's releases.

Database Storage, World Namespaces, Minecraft 26.3 & more

BuildSystem 4.1.0 can keep worlds, folders and players in a database, adds world namespaces on Paper, supports Minecraft 26.3 and reworks how backups are taken and restored. It also fixes a long list of bugs from 4.0.0, several of which lost data: the spawn, deleted folders, player settings and archive inventories. There are no API signature changes, so plugins built against 4.0.0 keep working.

Requirements

  • Java 25.
  • Minecraft 26.1 or newer, tested up to 26.3.

Back up your server before upgrading. config.yml moves to config version 7 on the first start. The migration runs automatically and keeps the previous file as config.yml.v5.bak. Upgraded servers keep their YAML files; nothing moves to a database until you choose one.

Highlights

  • Database storage: Worlds, folders and player settings can now be kept in SQLite, MySQL, MariaDB, PostgreSQL or MongoDB as well as in YAML. New installs use SQLite (storage.db in the plugin folder), and servers upgraded from 4.0 keep YAML. /buildsystem storage migrate <type> copies everything over and switches without a restart (buildsystem.storage.migrate). Run it without confirm first to see what it would copy. Changing storage.type from yaml and restarting works too: a new table is filled from the YAML files once. To move between two databases, use the command. The YAML files are kept, so switching back to yaml loads them as they were at the switch. Connections support TLS (off, prefer, require, verify), and passwords can come from BUILDSYSTEM_<TYPE>_PASSWORD. Every server needs its own table-prefix or database. World folders stay on disk, and statuses, categories, setup and spawn stay in YAML. See Data Storage.
  • World namespaces: On Paper, worlds can live in their own namespace, such as maps:lobby, stored in world/dimensions/maps/lobby. Use namespace:name when creating, importing or renaming a world and in any command that takes one. A bare name still finds a world as long as no other world has that name. When several do, the one in the default namespace wins, then the one in minecraft, and otherwise the command lists the full names. world.default-namespace (default minecraft) only decides where new worlds go. /worlds importAll now also picks up worlds from other namespaces, such as datapack dimensions. Existing worlds stay in minecraft and keep their names. Spigot refuses namespaced names. See World Namespaces.
  • Minecraft 26.3: BuildSystem is built against 26.3 and still runs on 26.1 and newer. On 26.3, creating or importing a Nether world no longer stops halfway, and /day, /night and the world editor say when a world's time is fixed.
  • Backups and restores: Restores run in the background while the world stays loaded, and the backup takes the world's place by renaming folders. If that fails, the old world and its players are put back, and a restore cut short by a server stop is undone at the next start. Local restores work again, the first S3 or SFTP backup after a start no longer fails, and remote backups are streamed from disk, so worlds over 2 GB work. Autosave is paused while a world is zipped, so archives no longer contain damaged region files. A failed backup no longer deletes an old one first.
  • One operation per world: Delete, rename, restore, unimport, backup, saving a template and download packing no longer overlap on the same world. While one runs, the others and teleports into the world are refused with worlds_world_busy. If a world cannot be unloaded, these operations now stop instead of deleting or overwriting its folder anyway.
  • Who sees whom: Join, world change and the hide-players toggle now follow one rule. A viewer with hide players on sees nobody, and nobody sees a player vanished in an archived world. BuildSystem no longer reveals players another plugin hid, and other plugins can no longer reveal a vanished player by accident.
  • Sounds and icons: Each sound belongs to one kind of action, and most are quieter. Toggles play a copper bulb, refusals the crafter's fail sound, page turns a book and teleports the enderman sound. Several world editor and game rule icons were changed so they are easier to tell apart.

Added

  • storage.s3.path sets where world downloads go inside the S3 bucket. It defaults to downloads/, the old fixed prefix.
  • Every GitHub release now has the plugin jar attached and is published to Modrinth, with pre-releases marked as beta.

Changed

  • Default game rules apply once: The game rules under world.defaults.gamerules, and the spawn of flat and void worlds, are set when a world is created or imported instead of on every load. Game rules changed in the world editor no longer reset when the world unloads.
  • Config version 7: Adds the storage settings for the new database storage. Servers that already have worlds.yml or players.yml get type: yaml.
  • Bigger jar: The jar is now about 8.6 MB, because the PostgreSQL and MongoDB drivers are bundled. Nothing is downloaded at startup.
  • Broken statuses.yml or categories.yml: BuildSystem now refuses to start, with an error that names the file. Before, it replaced the file with the built-in entries and lost every custom status or category. Fix the file, or delete it to start over with the built-ins.
  • Broken config.yml: A syntax error now stops startup instead of resetting the file to the defaults. /config reload on such a file keeps the settings in use (config_reload_invalid).
  • Config version 6: Old game rule names from 2.x and 3.x configs, such as doDaylightCycle, are folded into the current ones. Before, a 3.x config kept both, the old value won, and changing advance_time or spawn_mobs had no effect.
  • Build rules: Placing, breaking and the five block-click settings (instant signs, plant placement, slab breaking, iron doors and disabled-interaction placement) follow one set of rules. Build mode and buildsystem.admin pass. A status that turns building off needs buildsystem.bypass.archive. buildsystem.bypass.settings then skips the setting and the builder list. Before, the five settings refused admins in archived worlds and worlds where they were not builders. Admins are also no longer stopped by settings.builder.block-worldedit-non-builder.
  • Update checker: Updates are checked against GitHub releases instead of Spigot, in the background and at most once an hour. Snapshot builds are told when their version is released. update_available has a new line with a link to the release (%release_url%). An existing messages.yml keeps its two lines until you add it.
  • Rename moves the world folder instead of copying it, so it is instant on large worlds, and an unloaded world is no longer loaded first.
  • Archive worlds: Joining the server inside an archive world now applies archive mode, the same as changing into it.
  • world.unload.blacklisted-worlds ignores case, like world.deletion-blacklist.
  • /worlds setCreator, /worlds import and /worlds importAll no longer ask Mojang about a player who is online.
  • Typing cancel in a world editor chat prompt returns to the menu instead of closing it.
  • Category world lists are titled like the other menus (new category_title message).
  • worlds.yml, folders.yml and players.yml are written in a fixed key order. Values are unchanged, but the first save will reorder these files.
  • Backups no longer include session.lock, and local backups now include uid.dat. New local archives have no root folder, and 4.0 can still restore them.
  • World name tab completion is faster on servers with many worlds.
  • A stored world name with a colon is now read as namespace:name. This only affects worlds created through the 4.0 API with a colon in the name.

Fixed

  • Archive inventories: The inventory, armour and gamemode taken on entering an archive world were kept only in memory, so quitting there lost them. The archive inventory snapshot is now saved with the player data, so a crash while in an archive world no longer loses the real inventory. It is handed back on the next join. After a plugin reload, players in an archive world are put back into archive mode once their player data has loaded, so their stored inventory is not lost, and /config reload applies a changed settings.archive.vanish to players already in one. Leaving archive mode no longer leaves players invisible or removes an invisibility potion. Stopping the server while a player in archive or build mode has the layout editor open no longer replaces their real inventory with the editor's copy. While players.yml cannot be saved, players are not put into archive mode, so their items are never held only in memory.
  • Unreadable data files: If players.yml, worlds.yml, folders.yml or another data file cannot be read at startup, it is no longer overwritten on the next save. A copy is kept as <file>.broken-<timestamp>, the error names the file, and saves to it are refused until it is fixed and the server restarts. A broken worlds.yml no longer empties every folder.

... (truncated)

Commits
  • c3bb1b6 Release 4.1.0
  • aa2450a Save only the worlds and folders that changed, every five seconds (#599)
  • f6c4dfa fix: omit root metadata when copying worlds
  • fcc5507 chore: Update Gradle to v9.9.0 (#602)
  • 6bff840 chore: Update plugin com.diffplug.spotless to v8.11.0 (#601)
  • fae5e11 chore: Update dependency com.github.siom79.japicmp:japicmp to v0.27.0 (#600)
  • b12fec7 Save worlds and folders reliably and make the SQL storage queryable (#598)
  • e11bd1a chore: Update dependency org.xerial:sqlite-jdbc to v3.54.1.0 (#597)
  • 25e4f70 chore: Update dependency org.mongodb:mongodb-driver-sync to v5.14.0 (#596)
  • abe2219 chore: Update dependency com.mysql:mysql-connector-j to v26.10.0 (#594)
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [de.eintosti:buildsystem-api](https://github.com/thomasmny/BuildSystem) from 4.0.0 to 4.1.0.
- [Release notes](https://github.com/thomasmny/BuildSystem/releases)
- [Commits](thomasmny/BuildSystem@4.0.0...4.1.0)

---
updated-dependencies:
- dependency-name: de.eintosti:buildsystem-api
  dependency-version: 4.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file java Pull requests that update java code labels Nov 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file java Pull requests that update java code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants