private void stageScanForTree() { theFolk.action = FolkAction.ATWORK; theFolk.isWorking = false; V3 searchXYZ = null; lumbermill = Building.getBuilding(theFolk.employedAt); V3 ts = null; try { if (lumbermill.lumbermillMarker != null) { searchXYZ = lumbermill.lumbermillMarker; // use a marker if there is one } else if (theFolk.employedAt != null) { searchXYZ = theFolk.employedAt.clone(); } else { searchXYZ = theFolk.location.clone(); } ts = searchXYZ.clone(); } catch (Exception e) { e.printStackTrace(); } V3 searchpos; if (ts != null) { searchpos = ts.clone(); } else { searchpos = theFolk.location.clone(); } try { foundWoodAt = findClosestBlockType( searchpos, Blocks.log, SimukraftReloadedConfig.configLumberArea, false); foundWoodAt.theDimension = jobWorld.provider.dimensionId; if (foundWoodAt.getDistanceTo(Building.getNearestBuilding(foundWoodAt).primaryXYZ) <= 5) {} } catch (Exception e) { e.printStackTrace(); } theStage = Stage.GOTOTREE; onRoute = false; if (foundWoodAt == null) { SimukraftReloaded.sendChat(theFolk.name + " could not find any wood in the area."); theFolk.selfFire(); return; } }
private void stageChoppingTree() { int count; Block theWood = theFolk.theEntity.worldObj.getBlock( foundWoodAt.x.intValue(), foundWoodAt.y.intValue(), foundWoodAt.z.intValue()); if (step == 1) { theFolk.statusText = "Choppy Choppy tree!"; theFolk.isWorking = true; /// find the bottom of the trunk for (int down = 0; down < 20; down++) { int x = foundWoodAt.x.intValue(); int y = foundWoodAt.y.intValue() - 0; int z = foundWoodAt.z.intValue(); if (jobWorld == null) { theFolk.selfFire(); return; } if (jobWorld.getBlock(x, y, z) != Blocks.log || jobWorld.getBlock(x, y, z) != Blocks.log2) { break; } else { foundWoodAt.y = (double) y; } } step = 2; } else if (step == 2) { if (jobWorld.getBlock( foundWoodAt.x.intValue(), foundWoodAt.y.intValue(), foundWoodAt.z.intValue()) == Blocks.log || jobWorld.getBlock( foundWoodAt.x.intValue(), foundWoodAt.y.intValue(), foundWoodAt.z.intValue()) == Blocks.log2) { Thread t = new Thread( new Runnable() { public void run() { isChopping = true; for (int d = 0; d < 12; d++) { try { mc.theWorld.playSound( theFolk.location.x, theFolk.location.y, theFolk.location.z, "step.wood", 1f, 1f, false); } catch (Exception e) { } if (theFolk.theEntity != null) { theFolk.theEntity.swingProgress = 0.3f; try { Thread.sleep(100); } catch (Exception e) { } theFolk.theEntity.swingProgress = 0.7f; try { Thread.sleep(100); } catch (Exception e) { } } } isChopping = false; } }); t.start(); step = 3; } else { // no more tree left step = 4; } } else if (step == 3) { if (isChopping) { return; } ArrayList<ItemStack> log = this.translateBlockWhenMined(jobWorld, foundWoodAt); jobWorld.setBlock( foundWoodAt.x.intValue(), foundWoodAt.y.intValue(), foundWoodAt.z.intValue(), Blocks.air, 0, 0x03); if (log != null) { for (int l = 0; l < log.size(); l++) { ItemStack isl = log.get(l); theFolk.inventory.add(isl); } } count = getInventoryCount(theFolk, Item.getItemFromBlock(Blocks.log)); theFolk.statusText = "Got " + count + " logs so far"; theFolk.stayPut = false; foundWoodAt.y = foundWoodAt.y + 1; step = 2; } else if (step == 4) { if (theFolk.isSpawned()) { count = getInventoryCount(theFolk, Item.getItemFromBlock(Blocks.sapling)); if (count > 0) { for (int i = 0; i < theFolk.inventory.size(); i++) { ItemStack fis = theFolk.inventory.get(i); if (fis != null && Block.getBlockFromItem(fis.getItem()) == Blocks.sapling) { theFolk.inventory.remove(i); plantSapling(Block.getBlockFromItem(fis.getItem())); break; } } } } else { // they're de-spawned, so are the saplings, so just plant one anyway plantSapling(Blocks.sapling); } count = getInventoryCount(theFolk, Item.getItemFromBlock(Blocks.log)); if (count < 12) { theStage = Stage.SCANFORTREE; } else { theStage = Stage.RETURNWOOD; step = 1; } } }