Skip to main content

DadaProgressions beta-26.6

This is a smaller update focused on cleaning up a few things and making the current beta more reliable before moving on to bigger features.

The main fix is related to shift-click crafting. DadaProgressions now takes the space actually available in the player's inventory into account, so crafting goals should no longer count items that the player could not really receive because the inventory was almost full.

DadaProgressions beta-26.0

Beta 26.0 is the public beta package released under the DadaProgressions name.

Rename and compatibility

  • Plugin manifest renamed to DadaProgressions.
  • Release jar renamed to DadaProgressions-beta-26.0.jar.
  • Added safe copy compatibility from the old plugins/DadaAchievements data folder.
  • Kept the legacy command alias, permissions, and PlaceholderAPI identifier for older beta configurations.

Runtime and distribution

  • Added Java 8 verification for the final distribution jar.
  • Shaded and relocated DadaGUIRework, DadaPlatform 26.0, and Kyori dependencies.

Player interface

Added DadaGUIRework-rendered interfaces for:

  • the main menu;
  • goal lists;
  • goal detail views;
  • leaderboards.

YAML storage

Introduced hybrid YAML storage with:

  • migration backups;
  • quarantine for problematic data;
  • validation;
  • repair tools;
  • rebuildable indexes.

Administration

New maintenance commands included:

/dp admin validate
/dp admin backup
/dp admin repair
/dp admin rebuildindexes

Safer defaults and documentation

Default rewards were simplified to safe say commands so a fresh installation does not accidentally execute economy or permission operations.

A complete Markdown wiki was added for installation, commands, goals, GUI configuration, notifications, PlaceholderAPI, storage, and troubleshooting.

Known beta limitations at the time

  • YAML storage only.
  • Bossbar announcements used compatibility fallbacks on older servers.
  • VOTE and CUSTOM were primarily integration/API/admin-trigger oriented.
  • Large-network leaderboard scale had not been load-tested.

DadaProgressions beta-26.2

Beta 26.2 expands goal filtering, debugging, and the in-game administration workflow.

Filter groups

Global and per-criterion filter groups can use:

filter-mode: ALL

or:

filter-mode: ANY

ALL requires every filter in the group to pass. ANY requires at least one filter to pass.

New filters

The modular filter system gained:

  • biome;
  • min-y;
  • max-y;
  • min-amount;
  • max-amount.

Goal debugging

Administrators can use:

/dp admin debug <goalId> <onlinePlayer>

The command explains the next relevant event, filter checks, calculated points, prerequisite state, and cooldown result.

Hierarchical visual editor

/dp admin editor was expanded into a hierarchical editor for:

  • goals;
  • composite criteria;
  • modular filters;
  • numeric values;
  • multi-select filter values;
  • prerequisite goals.

Numeric keypads, paginated selectors, and private-chat fallback make advanced configurations editable without manually opening YAML files.

Safe editing and reloads

Invalid edits are rolled back atomically. Validation is non-destructive and rejected configurations leave the active registry untouched.

Validation covers malformed YAML, invalid or duplicate IDs, incompatible filters, missing prerequisites, missing tiers, and prerequisite cycles.

Runtime and distribution

The bundled DadaPlatform runtime was updated from 26.0 to 26.2 for the shared message API and scheduler primitives.

All Maven modules and the shaded distribution were updated to beta-26.2.

DadaProgressions beta-26.3

Beta 26.3 expands the modular point system and the administration tools used to configure and debug it.

Ordered point rules

Every ordered point rule can now define:

when-mode: ALL

or:

when-mode: ANY

ALL requires every condition in that rule to pass. ANY accepts the rule when at least one condition passes.

Visual point-rule editing

The in-game editor can manage:

  • point base values;
  • rounding;
  • ordered set rules;
  • ordered multiply rules;
  • rule values;
  • rule conditions;
  • rule order;
  • when-mode.

This reduces the amount of YAML that administrators need to edit manually for advanced point calculations.

Improved debug command

/dp admin debug now reports the winning point rule and shows the base-to-final point calculation for the next relevant event.

Debug sessions also gained configurable timeouts and can be cancelled with:

/dp admin debug cancel <onlinePlayer>

Goal YAML schema

A JSON Schema was added for goal YAML files, providing autocomplete and inline validation in compatible editors.

This is especially useful when maintaining larger goal sets outside the in-game editor.

DadaProgressions beta-26.4

Beta 26.4 is the main reliability hardening release preceding beta 26.5. It focuses on safer reward delivery, more accurate event progress, stricter configuration validation, bounded caches, and reproducible builds.

Crash-safe reward claims

Reward claims now create a durable PENDING reservation before external reward commands are executed.

This protects against automatic duplicate rewards if the server stops after a reward command is dispatched but before the final claimed state reaches disk.

Administrators can resolve a pending claim with:

/dp admin resolveclaim <goalId> <player> <tierPercent> <markclaimed|retry>

Use markclaimed when the reward was already delivered. Use retry only after confirming that the reward was not delivered.

Corrected event accounting

  • Cancelled damage events no longer grant progress.
  • Zero final damage no longer grants progress.
  • Projectile damage can be attributed to the player shooter.
  • Crafting progress accounts for recipe result amount and shift-click multi-crafting.
  • Playtime uses actual elapsed online time instead of a global repeating minute tick.

API hardening

Public progress API calls made from asynchronous plugin tasks are marshalled to the Bukkit primary thread before mutating plugin state.

Progress methods now return booleans based on whether progress was actually applied, rather than merely whether the call was accepted.

Strict startup validation

Invalid goal registries no longer silently become partially active configurations.

Validation now covers areas including:

  • malformed or duplicate goal definitions;
  • invalid reset timezones;
  • invalid cooldown durations;
  • duration overflow cases;
  • incompatible configuration values.

With strict startup enabled, an invalid registry prevents the plugin from enabling instead of leaving the server in a partially configured state.

Storage and leaderboard improvements

  • Player YAML caching is bounded instead of retaining every historical player indefinitely.
  • Player and community leaderboard ordering is cached in memory.
  • Leaderboard caches are invalidated only when relevant progress changes.
  • Community contribution counters use saturating arithmetic.
  • Atomic YAML saves reduce unnecessary file-copy work while preserving backup recovery behavior.

Build and distribution

The Maven build no longer depends on developer-specific PowerShell steps or local F: drive paths.

DadaGUI and DadaPlatform dependencies are pinned to immutable commits, Linux CI verifies the full Maven reactor, and the final shaded distribution is checked for Java 8 bytecode compatibility.

Updating

A full server stop is recommended. Back up plugins/DadaProgressions/, replace the shaded plugin jar, start the server, run /dp admin validate, and test at least one progress and reward-claim flow before reopening the server.

DadaProgressions beta-26.5

Beta 26.5 is a storage and server-performance update. Existing goal files remain compatible with the current beta configuration model.

Servers upgrading from beta 26.3 or older should also read the beta-26.4 release notes, because 26.4 contains the larger reliability hardening pass.

Periodic YAML writes moved off the Bukkit tick

Periodic storage now serializes immutable YAML snapshots on the Bukkit thread and performs filesystem writes through one dedicated storage writer.

This removes routine filesystem I/O from the main server tick while keeping Bukkit configuration objects away from concurrent mutation.

Revision-safe persistence

Storage snapshots are revision ordered so an older queued snapshot cannot overwrite a newer synchronous save.

Durability-sensitive operations remain protected by synchronous barriers where required, including:

  • reward claims;
  • reloads;
  • backups;
  • plugin shutdown.

New storage settings

storage:
async-periodic-writes: true
save-interval-ticks: 600
writer-flush-timeout-seconds: 10

For normal production beta servers, keep asynchronous periodic writes enabled.

Build verification

The final shaded distribution remains Java 8-safe and is verified by CI, including regression tests for queued snapshot ordering and synchronous saves.

For an existing production beta server:

  1. run /dp admin backup;
  2. stop the server;
  3. keep the previous jar for rollback;
  4. install DadaProgressions-beta-26.5.jar;
  5. start the server and run /dp admin validate;
  6. test one PLAYER goal, one COMMUNITY goal, a leaderboard, and one reward claim;
  7. restart once and verify persistence before considering the update accepted.

See Installation and updates for the complete update checklist.

DadaProgressions modular goal engine milestone

This historical milestone introduced the modular goal-engine foundations used by the later beta-26.x releases.

Goal model

  • Added modular filters and ordered point multipliers.
  • Added nested AND/OR goals with independent criterion progress.
  • Added automatic modern/legacy ANIMAL_BREED tracking.
  • Added CURRENT/EVER prerequisite chains and cycle validation.
  • Added criterion storage, placeholders, admin targeting, and GUI detail views.

Notifications

  • Added compacted FIFO notification queues for chat, actionbar, title, and bossbar channels.
  • Added global, event, and per-goal notification overrides.
  • Added chat batching for multiple goal updates.
  • Added sliding notification debounce with idle, maximum-wait, and large-increment flush conditions.

Administration and editor

  • Added a visual admin goal editor for enabled state, scope, period, criterion targets, root AND/OR operator, and safe duplication.
  • Added hierarchical CRUD for goals, composite criteria, and modular filters.
  • Added private chat input for display names, exact targets, and include/exclude values.
  • Added guided compatible-filter selection and safe goal/criterion deletion.
  • Added GUI-first numeric keypads and paginated multi-select values.
  • Added a paginated prerequisite goal selector with ALL/ANY mode and safe removal.

Validation and distribution

  • Added non-destructive goal validation and transactional reload.
  • Added automatic file rollback for rejected GUI edits.
  • Added checks for malformed YAML, invalid goal IDs, and duplicate IDs before runtime commit.
  • Added distribution checks that fail the build when required shaded DadaGUI runtime classes are missing.

Defaults

New default community goals and clearer goal-list objective lore were added as part of the same milestone.