private boolean hasWood() { for (int i = -1; i <= 1; i++) { for (int j = -1; j <= 1; j++) { Block id = worldObj.getBlock(editx + i, edity, editz + j); int meta = worldObj.getBlockMetadata(editx + i, edity, editz + j); if (id == Blocks.log || id == Blocks.log2) return true; ModWoodList wood = ModWoodList.getModWood(id, meta); // RotaryCraft.logger.debug("Retrieved wood "+wood+" from "+id+":"+meta); if (wood != null) return true; } } return false; }
private boolean isLeaf(BlockKey bk) { if (bk.blockID.getMaterial() == Material.leaves) return true; if (bk.blockID == Blocks.leaves || bk.blockID == Blocks.leaves2) return true; if (ModWoodList.isModLeaf(bk.blockID, bk.metadata)) return true; return false; }
@Override public void updateEntity(World world, int x, int y, int z, int meta) { super.updateTileEntity(); tickcount++; tree.setWorld(world); treeCopy.setWorld(world); this.getIOSides(world, x, y, z, meta); this.getPower(false); if (power < MINPOWER || torque < MINTORQUE) { return; } if (this.isJammed()) return; if (world.isRemote) return; if (tree.isEmpty() && this.hasWood()) { tree.reset(); ModWoodList wood = ModWoodList.getModWood( world.getBlock(editx, edity, editz), world.getBlockMetadata(editx, edity, editz)); ReikaTreeHelper vanilla = ReikaTreeHelper.getTree( world.getBlock(editx, edity, editz), world.getBlockMetadata(editx, edity, editz)); for (int i = -1; i <= 1; i++) { for (int j = -1; j <= 1; j++) { tree.checkAndAddDyeTree(world, editx + i, edity, editz + j); if (tree.isEmpty() || !tree.isValidTree()) tree.clear(); } } if (tree.isEmpty()) { for (int i = -1; i <= 1; i++) { for (int j = -1; j <= 1; j++) { tree.checkAndAddRainbowTree(world, editx + i, edity, editz + j); if (tree.isEmpty() || !tree.isValidTree()) tree.clear(); } } } if (tree.isEmpty()) { if (wood == ModWoodList.SEQUOIA) { for (int i = -32; i < 255; i += 16) tree.addSequoia(world, editx, edity + i, editz, RotaryCraft.logger.shouldDebug()); } else if (wood == ModWoodList.DARKWOOD) { tree.addDarkForest( world, editx, edity, editz, editx - 8, editx + 8, editz - 8, editz + 8, RotaryCraft.logger.shouldDebug()); } else if (wood == ModWoodList.IRONWOOD) { for (int i = -2; i < 128; i += 16) tree.addIronwood(world, editx, edity + i, editz, RotaryCraft.logger.shouldDebug()); } else if (wood != null) { for (int i = -1; i <= 1; i++) { for (int j = -1; j <= 1; j++) { // tree.addGenerousTree(world, editx+i, edity, editz+j, 16); tree.setTree(wood); tree.addModTree(world, editx + i, edity, editz + j); } // ReikaJavaLibrary.pConsole(tree, Side.SERVER); } } else if (vanilla != null) { for (int i = -1; i <= 1; i++) { for (int j = -1; j <= 1; j++) { // tree.addGenerousTree(world, editx+i, edity, editz+j, 16); tree.setTree(vanilla); tree.addTree(world, editx + i, edity, editz + j); } } } } this.checkAndMatchInventory(); tree.sortBlocksByHeight(); tree.reverseBlockOrder(); tree.sort(inwardsComparator); tree.sort(leafPriority); treeCopy = (TreeReader) tree.copy(); } Block b = world.getBlock(x, y + 1, z); if (b != Blocks.air) { if (b.getMaterial() == Material.wood || b.getMaterial() == Material.leaves) { ReikaItemHelper.dropItems( world, dropx, y - 0.25, dropz, this.getDrops(world, x, y + 1, z, b, world.getBlockMetadata(x, y, z))); world.setBlockToAir(x, y + 1, z); } } // RotaryCraft.logger.debug(tree); if (tree.isEmpty()) return; if (tickcount < this.getOperationTime()) return; tickcount = 0; if (!tree.isValidTree()) { tree.reset(); tree.clear(); return; } for (int i = 0; i < this.getNumberConsecutiveOperations(); i++) { Coordinate c = tree.getNextAndMoveOn(); Block drop = c.getBlock(world); int dropmeta = c.getBlockMetadata(world); if (drop != Blocks.air) { Material mat = ReikaWorldHelper.getMaterial(world, c.xCoord, c.yCoord, c.zCoord); if (ConfigRegistry.INSTACUT.getState()) { // ReikaItemHelper.dropItems(world, dropx, y-0.25, dropz, dropBlocks.getDrops(world, // c.xCoord, c.yCoord, c.zCoord, dropmeta, 0)); this.cutBlock(world, x, y, z, c, mat); if (c.yCoord == edity) { Block idbelow = world.getBlock(c.xCoord, c.yCoord - 1, c.zCoord); Block root = TwilightForestHandler.BlockEntry.ROOT.getBlock(); if (ReikaPlantHelper.SAPLING.canPlantAt(world, c.xCoord, c.yCoord, c.zCoord)) { ItemStack plant = this.getPlantedSapling(); if (plant != null) { if (inv[0] != null && !this.hasEnchantment(Enchantment.infinity)) ReikaInventoryHelper.decrStack(0, inv); ReikaWorldHelper.setBlock(world, c.xCoord, c.yCoord, c.zCoord, plant); } } else if (tree.getTreeType() == ModWoodList.TIMEWOOD && (idbelow == root || idbelow == Blocks.air)) { ItemStack plant = this.getPlantedSapling(); if (plant != null) { if (inv[0] != null && !this.hasEnchantment(Enchantment.infinity)) ReikaInventoryHelper.decrStack(0, inv); world.setBlock(c.xCoord, c.yCoord - 1, c.zCoord, Blocks.dirt); ReikaWorldHelper.setBlock(world, c.xCoord, c.yCoord, c.zCoord, plant); } } } } else { boolean fall = BlockSand.func_149831_e(world, c.xCoord, c.yCoord - 1, c.zCoord); if (fall) { EntityFallingBlock e = new EntityFallingBlock( world, c.xCoord + 0.5, c.yCoord + 0.65, c.zCoord + 0.5, drop, dropmeta); e.field_145812_b = -5000; if (!world.isRemote) { world.spawnEntityInWorld(e); } c.setBlock(world, Blocks.air); } else { this.cutBlock(world, x, y, z, c, mat); if (c.yCoord == edity) { Block idbelow = world.getBlock(c.xCoord, c.yCoord - 1, c.zCoord); Block root = TwilightForestHandler.BlockEntry.ROOT.getBlock(); if (ReikaPlantHelper.SAPLING.canPlantAt(world, c.xCoord, c.yCoord, c.zCoord)) { ItemStack plant = this.getPlantedSapling(); if (plant != null) { if (inv[0] != null && !this.hasEnchantment(Enchantment.infinity)) ReikaInventoryHelper.decrStack(0, inv); ReikaWorldHelper.setBlock(world, c.xCoord, c.yCoord, c.zCoord, plant); } } else if (tree.getTreeType() == ModWoodList.TIMEWOOD && (idbelow == root || idbelow == Blocks.air)) { ItemStack plant = this.getPlantedSapling(); if (plant != null) { if (inv[0] != null && !this.hasEnchantment(Enchantment.infinity)) ReikaInventoryHelper.decrStack(0, inv); world.setBlock(c.xCoord, c.yCoord - 1, c.zCoord, Blocks.dirt); ReikaWorldHelper.setBlock(world, c.xCoord, c.yCoord, c.zCoord, plant); } } } } } } if (tree.isEmpty()) break; } }
public boolean shouldGenerateLogType(ModWoodList tree) { return trees[tree.ordinal() + ReikaTreeHelper.treeList.length].getData(); }