TDGroupe Changelog
Mit BuildUp ausgelieferte Version: 0.9.0
0.9.0 · 0.8.0 · 0.7.0 · 0.6.0 · 0.5.0 · 0.4.0 · 0.3.2 · 0.3.1 · 0.3.0 · 0.2.2 · 0.2.1 · 0.2.0 · 0.1.13 · 0.1.12 · 0.1.11 · 0.1.10 · 0.1.9 · 0.1.8 · 0.1.7 · 0.1.6 · 0.1.5 · 0.1.4 · 0.1.3 · 0.1.2 · 0.1.1 · 0.1.0
0.9.0
- Requires TDLibrary 0.19.0 or newer.
/tdgroupe configprovides list, get, set, reset, save, selected-value reload and a locked settings menu for maxGroupMembers, invitationSeconds and showGroupNameInPublicChat. Player access uses the existing operator-list/singleplayer-owner policy; console access requires level 4. Existing groups and invitation deadlines are retained.
0.8.0
- Resume received map terrain from each map's last processed contribution when returning from another dimension during the same connection. Large archives no longer replay their beginning after every dimension switch before later group terrain can arrive.
- Invalidate all map download checkpoints when group membership, group identity or the archive dataset changes, and on disconnect. Dimension switches cancel old download selections while preserving the current membership scope. Use this build on both the server and clients; protocol 6 and archive format 1 remain unchanged.
0.7.0
- Load and validate the external map archive on a dedicated startup worker instead of blocking the server thread. Large archives no longer hold server startup inside terrain decompression and validation until the watchdog terminates the process. Map synchronization waits for full validation while the server continues running.
- Keep map synchronization disabled for the current run if archive loading fails, with an explicit logged cause, rather than crashing the server or replacing unreadable data with an empty archive. Shutdown cancels pending startup work without waiting for disk access. The obsolete world map archive is never decoded and is removed only after successful external loading.
- Move upload biome validation, content hashes and client provenance-marker file operations onto bounded workers. Saturated workers defer transfers without executing expensive fallback work on game threads. Preserve provenance ordering when applying foreign terrain or restoring personal terrain, and publish worker-prepared archive entries without copying their terrain on the server thread.
- Read and parse the existing player profile cache in the background. Apply validated profiles on the server thread without overwriting names observed during newer logins; cached offline profiles become available after import completes.
- Keep each saved Xaero region's tile position when deferring its import, so retrying a partially scanned region does not restart and resend its beginning.
- Prioritize requested terrain through Xaero's native loading scheduler. Avoid ineffective reload requests for already loaded regions, and let empty highlight placeholders pass without blocking map import or reception. Existing terrain and busy writer states remain protected.
- Report deferred terrain loading as a retryable status with region/chunk states and pending-load flags instead of displaying an unrelated map-data error. Log the first server-confirmed personal tile and every 128 confirmations so ongoing synchronization is visible.
- Preserve the external map archive and protocol 6; existing archived contributions need no reset or migration.
0.6.0
- Archive personal Xaero terrain outside the world in
tdgroupe-maps, with independent dataset identities, validated per-player files and atomic durable writes. Delete the obsolete active world's map archive at startup without importing it; personal terrain is repopulated from connected clients. - Synchronize and restore a player's own map even without group membership. Keep original contribution ownership and current-member checks for shared downloads; restoring terrain does not turn it into a foreign group contribution.
- Compare content digests before uploading full terrain, avoiding retransmission of unchanged personal contributions after reconnecting. Require matching protocol 6 clients and server.
- Rediscover saved Xaero regions during a session and request missing terrain behind cached chunks during both import and received-map merging. Defer unavailable regions so they cannot indefinitely block importing other existing maps, and log import discovery and deferred reloads for multiplayer diagnosis.
- Retry shared-map uploads until the server confirms validation and storage. Temporary worker saturation no longer silently loses contributions; retries and pending terrain remain bounded, and group changes discard old transfers.
- Reject map tiles that exceed the decoded size limit before sending them, so successfully encoded tiles remain readable by the matching decoder.
- Reuse empty map-download selections while the archive, cursor, dimension and membership remain unchanged, avoiding repeated scans of unrelated contributions.
- Reuse the authoritative membership index for dashboards and resolve chat ranks once per message, reducing redundant work while preserving visibility, priorities and colors.
- Require network protocol 6 on both clients and server for confirmed map uploads and personal restoration. The independent external archive uses file format 1; group and rank SavedData remains unchanged.
0.5.0
- Unify TDGroupe and its adapted Xaero integration under All Rights Reserved by agreement with the original authors, and remove the separate MIT license from the distributed mod.
- Fix importing valid saved Xaero terrain into the shared group map when a pixel has no stored biome metadata. Use Xaero's plains fallback instead of silently discarding the entire tile, while retaining recorded biomes and leaving personal map files unchanged.
- Include known Xaero regions whose terrain has not loaded yet in the initial personal-map import, so opening or viewing regions during startup cannot leave them out of group sharing.
0.4.0
- Speed up loading large shared-map archives at server startup by validating resource identifiers without repeated regular-expression compilation and checking stored tiles without creating discarded pixel and overlay objects. Keep full tile validation, original compressed contributions and schema 1 compatibility; no map reset or migration is required.
0.3.2
- Use TDGroupe membership for Waystones' "Share for team" visibility when Waystones is installed. Share with the waystone owner's current group, including offline owners, and reevaluate membership whenever the destination list is requested. Pending invitations grant no shared destinations. Public waystones and personal activations retain their existing behavior.
0.3.1
- Remove the fixed 65,536-contribution and 128 MiB limits from the group map archive, including archive loading. Large personal-map imports and further exploration no longer stop with an archive-full warning. Preserve existing schema 1 data without migration; packet validation, transfer rates and bounded worker queues remain in place.
0.3.0
- Process map serialization, compression, decompression, block-state decoding and archive download selection on dedicated bounded client/server workers. Keep Xaero map access and merging on the owning client thread and recheck group permissions on the server thread before accepting or delivering prepared results. Discard stale work after group changes, disconnects and shutdown without waiting for workers on the game threads.
- Automatically share explored Xaero World Map terrain with current group members, including saved personal terrain, dimensions and cave layers. Gradually import each selected dimension's existing map without overwriting personal exploration.
- Retain each player's map contributions in a separate world SavedData archive so members can catch up while contributors are offline and after server restarts. Recheck current group membership for uploads and downloads; pending invitations do not grant access.
- Mark received terrain in the local Xaero map directory to exclude it from personal-map imports after group changes. Leaving a group stops further access but does not erase map knowledge already received. Locally exploring a received tile makes that tile personal terrain.
- Bound map packets, transfer rates, pending client queues and the server archive. Reject malformed map data and unsupported archive schemas without replacing an existing archive with empty data. Use stable block names and properties in saved contributions.
- Require matching TDGroupe builds on clients and server through network protocol 4. The map sync does not require either external Xaero synchronization mod.
0.2.2
- Avoid rebuilding all reader snapshots, invalidating dashboard caches and marking SavedData as changed when group settings, rank settings or rank assignments are unchanged. Keep permission and input validation on every request.
- Publish immutable group, membership, invitation and rank snapshots for concurrent readers. Each dashboard, chat decoration and invitation-action check uses one consistent revision while all changes remain on the owning server thread.
- Mark group SavedData as changed at the mutation boundary, including invitation expiry before a rejected action. Preserve schema 1 and existing group rules without a migration.
- Provide server-scoped read access without loading world data; retained access handles become unavailable when the server stops. Load known profiles in one batch and use a membership index in published snapshots.
0.2.1
- Share cached dashboard directory and membership data across viewers and avoid retransmitting unchanged views, reducing repeated server-thread work and network traffic. Keep invitation countdowns moving between updates and refresh views when online status or operator access changes.
- End dashboard update subscriptions when switching to another screen, including the notification inbox.
- Clarify that authoritative group data uses world SavedData, while retained invitation notification history requires a separate TDLibrary MariaDB archive backup.
- Fix distribution verification to resolve the TDLibrary minimum-version placeholder before comparing packaged metadata, allowing valid builds to pass the complete archive checks.
0.2.0
- Send group invitations through shared TD chat/toasts and retained notification history, with existing server-validated accept/decline actions. Add an inbox button to the group menu and route direct success/error feedback through TDLibrary; private group conversation stays separate.
- Show unread invitations in the shared inbox, acknowledge individual entries or mark all accessible entries as read, and save per-player chat, toast and sound preferences. Keep the group service authoritative for invitation actions and visibility.
- Configure retained history through TDLibrary's automatically generated
config/tdlibrary-database.toml. TDLibrary creates its MariaDB database and tables automatically when enabled and retains queued notifications across database outages; no manual SQL setup is required. - Require TDLibrary 0.1.0 for shared technical helpers; its runtime requires NeoForge 21.1.250 or newer.
- Fit long button labels to their available width with the shared LDLib2 controls, preserving right-click actions, narration and selection restoration.
- Require exactly one matching installed dependency JAR and report missing or ambiguous matches clearly.
0.1.13
- Add
/teammsg <message>as an alias for/gc, using the same private group chat delivery and rate limit.
0.1.12
- Add the verified JUnit BOM POM checksum so test compilation succeeds when Gradle resolves it through NeoForged Releases.
- Reject edits to ranks deleted by another operator instead of silently recreating them, and prevent rank creation from overwriting an existing rank. Require matching client and server builds using network protocol 3.
- Apply the dashboard read rate limit to
/tdgroupeas well as inventory shortcuts and refresh requests, preventing repeated commands from bypassing snapshot throttling. - Fix distribution verification to check both Xaero sharing mixins and their packaged classes.
0.1.11
- Show the translated group label in FTB Library's sidebar instead of a raw translation key.
0.1.10
- Move the inventory group button above the inventory's top-right edge, keeping it out of EMI and JEI item lists at larger GUI scales.
- Add the group shortcut to FTB Library's sidebar when it is installed; otherwise keep the separate inventory button.
0.1.9
- Move the inventory group icon 30 GUI pixels higher by default, so the previously configured Y offset of
-30can return to0.
0.1.8
- Replace the small inventory shortcut with a three-person group icon and attach it to the right edge of the player and creative inventories.
- Let pack creators move the inventory icon horizontally and vertically through client configuration offsets.
0.1.7
- Update the supported Xaero's Minimap and World Map versions to 26.5.0 or newer and 1.46.0 or newer.
0.1.6
- Allow every group and rank color button to cycle forward with the left mouse button and backward with the right mouse button.
- Fix group sharing from Xaero's World Map by sending Xaero's color index instead of its rendered RGB color.
0.1.5
- Add Share with group to a waypoint's right-click menu in Xaero's World Map.
0.1.4
- Prevent the group dashboard from crashing while it refreshes after a group is dissolved.
0.1.3
- Allow the singleplayer world owner to manage ranks without an operator-list entry. Multiplayer guests still need an explicit operator entry, and players without access no longer see the Ranks tab.
- Enable the group color button when creating a group and validate and save the selected color on the server. Green remains the default.
- Move the inventory Group button below the left edge of the inventory, away from EMI navigation. Use a compact 20-by-20-pixel two-person icon with a tooltip and narration, follow recipe-book shifts and leave room for the creative inventory tabs.
0.1.2
- Keep group and rank editors open until the server confirms a save. Preserve rejected drafts, show validation errors in the form and disable controls while saving. Correlate responses with individual requests and require the updated network protocol on both sides.
- Keep group names, rank lists and color-control labels readable independently of their configured chat colors. Show the rank chat preview with contrasting backgrounds for its original text colors.
- Label search fields visibly, provide placeholders and focus narration, and explain empty lists separately from unsuccessful searches with a clear-search action.
- Return member details and rank assignments to their originating lists, preserve each list's search and page, and make confirmation Back and Cancel use the same destination.
- Remove decorative dot grids from the dashboard backdrop and panels while retaining the shared dark green and gold styling.
- Keep public messages on Minecraft's player-chat delivery path while applying group and rank decoration, preserving sender identity, signatures, recipient chat settings, text filtering and vanilla spam accounting.
- Fix Xaero waypoint imports for dimension names containing underscores by including the complete destination suffix.
- Reject duplicate JSON fields, invalid JSON syntax and non-string text fields before loading saved group data. Keep the existing schema and valid saved data unchanged.
- Preserve search cursor position and text selection when dashboard lists refresh, and reset search focus when changing views.
- Remove redundant position and size tracking from the fixed-layout button and text-field adapters.
- Add regression checks for strict persistence validation, public chat mixin application, chat-decoration network serialization, Xaero destination encoding and search selection restoration using LDLib text fields.
0.1.1
- Simplify dashboard controls by removing unused compatibility methods, the custom button builder, unused tooltip handling and an unreachable window-size fallback. Keep input limits and viewport scaling unchanged.
0.1.0
- Add server-owned group state with player-selected names and colors, owner transfers, removal, leaving and confirmed dissolution, including owner-only groups.
- Add chat-confirmed invitations with live pending status and expiration in the group dashboard.
- Add an LDLib inventory dashboard styled consistently with TDEconemy, searchable player selection and viewport scaling.
- Add private
/gcchat and a configurable group-name prefix in public chat. - Add optional private sharing from Xaero's waypoint list into its local import dialog.
- Add operator-managed global chat ranks with multiple assignments, ordered tags, independent colors, previews and online/offline player selection.
- Persist UUID-based memberships, known profiles, ranks and assignments in validated SavedData without an external database.
- Add English and German translations and automated domain, chat, persistence and distribution checks.