private void stageReturnWood() {
    theFolk.isWorking = false;

    if (step == 1) {
      theFolk.statusText = "Delivering wood back to base";
      theFolk.gotoXYZ(theFolk.employedAt, null);
      step = 2;
    } else if (step == 2) {
      if (theFolk.gotoMethod == GotoMethod.WALK) {
        theFolk.updateLocationFromEntity();
      }

      int dist = theFolk.location.getDistanceTo(theFolk.employedAt);

      if (dist <= 1) {
        step = 3;
      } else {
        if (theFolk.destination == null && theFolk.theEntity != null) {
          // step=1;
        }
      }
    } else if (step == 3) {
      theFolk.stayPut = true;
      int count = getInventoryCount(theFolk, Item.getItemFromBlock(Blocks.log));
      millChests = inventoriesFindClosest(theFolk.employedAt, 6);
      inventoriesTransferFromFolk(
          theFolk.inventory, millChests, new ItemStack(Item.getItemFromBlock(Blocks.log)));
      pay = (float) count * 0.03f;
      SimukraftReloaded.states.credits -= pay;
      SimukraftReloaded.sendChat(
          theFolk.name + " has delivered " + count + " logs at the lumbermill");
      theStage = Stage.SCANFORTREE;
      step = 1;
    }
  }
  private void stageGotoTree() {
    theFolk.isWorking = false;

    if (!onRoute) {
      theFolk.statusText = "Going to tree...";
      theFolk.gotoXYZ(foundWoodAt, null);
      startedGoing = System.currentTimeMillis();
      onRoute = true;
    } else {
      if (theFolk.gotoMethod == GotoMethod.WALK) {
        theFolk.updateLocationFromEntity();
      }

      double dist = theFolk.location.getDistanceTo(foundWoodAt);

      if (dist < 7) {
        theStage = Stage.CHOPPINGTREE;
        theFolk.stayPut = true;
        step = 1;
      } else {
        if (theFolk.destination == null && theFolk.theEntity != null) {
          // theFolk.gotoXYZ(foundWoodAt);
        }

        if (System.currentTimeMillis() - startedGoing > 25000) {
          // f*ck it, close enough
          theStage = Stage.CHOPPINGTREE;
          theFolk.stayPut = true;
          theFolk.destination = null;
          step = 1;
        }
      }
    }
  }
  @Override
  public void onArrivedAtWork() {
    int dist = 0;
    dist = theFolk.location.getDistanceTo(theFolk.employedAt);

    if (dist <= 1) {
      theFolk.action = FolkAction.ATWORK;
      theFolk.stayPut = true;
      theFolk.statusText = "I'm a lumberjack, and I'm ok";
      theStage = Stage.ARRIVEDATMILL;
    } else {
      theFolk.gotoXYZ(theFolk.employedAt, null);
    }
  }
  public JobLumberjack(FolkData folk) {
    theFolk = folk;

    if (theStage == null) {
      theStage = Stage.IDLE;
    }

    if (theFolk == null) {
      return; // is null when first employing, this is for next day(s)
    }

    if (theFolk.destination == null) {
      theFolk.gotoXYZ(theFolk.employedAt, null);
    }
  }