Repository navigation
SF_MagicExpansion 1.1.10
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.