@@ -181,6 +181,9 @@ private void setupRefusedOrderTimer() {
181181 * Returns whether a step has been updated or not
182182 **/
183183 private boolean updateOrderStep () {
184+ if (order == null ) {
185+ return true ;
186+ }
184187 // Go from the beginning of the recipe to the final item produced
185188
186189 int newStepIdx = 0 ;
@@ -210,7 +213,16 @@ private int getItemCount(int itemId) {
210213 }
211214
212215 private void setupUI () {
213- tooltipText = "Deliver " + order .getName () + " to " + customer .getName ();
216+ if (order == null ) {
217+ if (!config .showMinigameStart ()) {
218+ customer = null ;
219+ return ;
220+ }
221+ tooltipText = "Go back to Gianne for another order" ;
222+ customer = Customer .GIANNE ;
223+ } else {
224+ tooltipText = "Deliver " + order .getName () + " to " + customer .getName ();
225+ }
214226
215227 if (config .showOverlay ()) {
216228 setupOverlay ();
@@ -246,6 +258,9 @@ private void setupOverlay() {
246258 }
247259
248260 private void setupOrderTimer () {
261+ if (order == null ) {
262+ return ;
263+ }
249264 LOGGER .debug ("Setting up order timer" );
250265 int numSecondsLeft ;
251266
@@ -383,10 +398,6 @@ private void onAluftMinigameStarted(int value) {
383398 }
384399
385400 private void onAluftCustomerChanged (int customerId ) {
386- if (customerId == 0 ) {
387- customer = null ;
388- return ;
389- }
390401 customer = Customer .forId (customerId );
391402 LOGGER .debug ("Customer is now {}" , customer );
392403 queueUpdateOrder ();
@@ -431,13 +442,21 @@ public void onItemContainerChanged(ItemContainerChanged event) {
431442 }
432443
433444 private void updateOverlayHeader () {
434- var instruction = order .getSteps ().get (stepIdx ).getInstruction ().getOverlayDirections ();
435- overlayHeader = new OverlayHeader (instruction , stepIdx + 1 , order .getSteps ().size (), customer , order );
445+ if (order == null ) {
446+ overlayHeader = new OverlayHeader (null , 0 , 0 , customer , order );
447+ } else {
448+ var instruction = order .getSteps ().get (stepIdx ).getInstruction ().getOverlayDirections ();
449+ overlayHeader = new OverlayHeader (instruction , stepIdx + 1 , order .getSteps ().size (), customer , order );
450+ }
436451 }
437452
438453 private void rebuildOverlayTables () {
439454 clearOverlayTables ();
440455
456+ if (order == null ) {
457+ return ;
458+ }
459+
441460 List <Ingredient > stepIngredients = order .getSteps ().get (stepIdx ).getIngredients ();
442461 rebuildOverlayTable (stepIngredients , stepIngredientsOverlayTable );
443462
@@ -485,6 +504,7 @@ GnomeRestaurantConfig provideConfig(ConfigManager configManager) {
485504 public static final String SHOW_HINT_ARROW = "showHintArrow" ;
486505 public static final String SHOW_WORLD_MAP_POINT = "showWorldMapPoint" ;
487506 public static final String USE_SHORTEST_PATH = "useShortestPath" ;
507+ public static final String SHOW_MINIGAME_START = "showMinigameStart" ;
488508
489509 /**
490510 * Monitor changes to plugin config and update the plugin accordingly
@@ -532,6 +552,15 @@ public void onConfigChanged(ConfigChanged event) {
532552 if (event .getNewValue ().equals ("false" )) {
533553 removeTimer ();
534554 }
555+ } else if (event .getKey ().equals (SHOW_MINIGAME_START )) {
556+ if (event .getNewValue ().equals ("false" )) {
557+ removeOverlay ();
558+ removeWorldMapPoint ();
559+ client .clearHintArrow ();
560+ removeShortestPath ();
561+ } else {
562+ queueUpdateOrder ();
563+ }
535564 }
536565 }
537566 }
0 commit comments