v0.1.9.5 - View-status button fix + restart aligned with AE2 (G15)
Two-bug release.
Bug A: post-restart View Status button click did nothing
Root cause. After a restart the player would click "View Status",
the client would set the openSmartCraftStatusOnNextSync flag and
send RequestOrderStatusPacket, the server would reply with a LIST
sync packet... and the client's list-packet handler did nothing with
the flag. Only the single-order sync path (used when submitting a new
order) consumed the flag and opened the dedicated status GUI.
This bug has actually been there since v0.1.7 introduced the multi-
order list packet; pre-v0.1.9 it stayed hidden because players almost
always submit a new order before clicking View Status, which routes
through the single-order path. v0.1.9.3 persistence + v0.1.9.4 login-
sync removed that workaround for restart cases and exposed it.
Fix. ClientProxy.applySmartCraftOrderList mirrors the GUI-open
logic from openSmartCraftStatus: when the flag is set, open
GuiSmartCraftStatus using the overlay's currently-focused order
packet as the initial data.
Bug B: align restart behavior with AE2 vanilla
User-chosen direction: AE2 doesn't persist crafting jobs across
restarts; cluster state resets and intermediate items stay inside
each cluster's storage for the player to manually cancel. Smart-craft
orders should mirror that semantic: persist for history visibility
only, no auto-resume.
Implementation.
- New
SmartCraftOrder.interruptedByRestartboolean field, NBT-
persisted (true only; missing tag reads as false for backward
compatibility). SmartCraftOrderManager.resetForRestartfolds non-terminal tasks
toCANCELLEDwith a "Interrupted by server restart" banner and
marks the order itselfCANCELLED + interruptedByRestart=true.
Already-terminal orders (PAUSED / COMPLETED / etc.) keep their
status untouched.SmartCraftOrderManager.retryFailedTasksreturns empty on
interrupted orders; the player must submit a fresh order.- New
SmartCraftRuntimeCoordinator.removeOrder(orderId)API drops
an order from the manager outright + cleans session/retry state. RequestSmartCraftActionPacketCANCEL_ORDER: routes to
removeOrderfor interrupted orders ("Remove from List"
semantic) and tocancelfor normal active orders.SyncSmartCraftOrderPacketcarries the new flag, appended at
the end of the wire format with areadableBytesguard so a
v0.1.9.4 client receiving a v0.1.9.5 packet falls through with
the defaultfalse.
GUI.
- Retry button greys out on interrupted orders.
- Cancel button stays enabled but its label flips to "Remove from
List" so the player understands the click drops the historical
entry, not a live cancellation. - Status line gets a red "Interrupted by server restart (history-
only)" tag so historical orders are visually distinct.
Tests
- 5 new tests covering the new semantics: fold-to-CANCELLED, all-
terminal-no-marker, retry rejection, NBT round-trip true / false. - 125 tests total, all green.
Migration
No action needed. Drop the new jar in. Existing v0.1.9.3+ saves
load transparently. Orders that were active at the v0.1.9.5 first
boot will appear as historical entries with the new red banner;
click "Remove from List" to clean them up, then submit fresh orders
for any work you still want done.
Artefacts
| Jar | Purpose |
|---|---|
ae2intelligentscheduling-0.1.9.5.jar |
Player drop-in (notch obfuscation) |
ae2intelligentscheduling-0.1.9.5-dev.jar |
SRG mappings, for development |
ae2intelligentscheduling-0.1.9.5-sources.jar |
Source jar |