Skip to content

SF_MagicExpansion 1.1.10

Choose a tag to compare

@github-actions github-actions released this 13 Oct 12:14
6856c32

MagicExpansion 1.1.10 hardens Black Market purchase tracking across server restarts and reconnects.

  • Persists each player's ten generated Black Market offers, revealed slots and completed-purchase receipts within the same four-hour market cycle.
  • Uses a durable cycle marker and per-player YAML files under plugins/magicexpansion/black_market/. A cycle refresh commits the new cycle marker first so previous-cycle purchases cannot be reused.
  • Writes player state through a validated temporary file and atomic replacement. A failed write or unreadable record disables affected trades rather than silently resetting purchase limits.
  • Records each purchase before issuing the reward. If the receipt cannot be saved, the purchase is cancelled and inventory payment is refunded (overflow is dropped at the player).
  • Rejects stale purchase clicks after cycle rotation; existing costs, odds, offers, Slimefun item IDs, recipes and other shop functions are unchanged.
  • Adds MockBukkit tests for persistent item metadata, restart/rejoin replay protection, four-hour refresh, malformed data, external edits and failed disk commits.
  • Leaves the upstream logout-reset exploit closed. In addition, a complete server restart no longer rerolls a saved player's offers within the same cycle.

Upgrade note: Back up the plugin data folder before updating. The first run establishes a new four-hour cycle because earlier releases did not save Black Market session state. For a seamless migration, deploy at a scheduled Black Market refresh. Do not delete black_market/ during a cycle: this folder now contains purchase receipts.

Safety note: No Minecraft plugin can atomically commit a YAML receipt and mutate a player inventory in one filesystem transaction. A process crash between the successful receipt write and reward delivery can leave a completed receipt without a delivered reward; the order is deliberately biased against reward duplication. The storage checks are synchronous by design. If a save fails, inspect the server log and repair or restore state rather than deleting corrupted receipt files.

Install the raw SF_MagicExpansion1.1.10.jar asset after the CI build passes. Minecraft support remains 1.21.11 through 26.3 with the existing universal Java 21 bytecode baseline.