@Override public void setTree(ITree tree) { ITree oldTree = getTree(); super.setTree(tree); ITreeGenome genome = tree.getGenome(); species = genome.getPrimary(); if (oldTree != null && !tree.equals(oldTree)) { checkFruit = true; } if (tree.canBearFruit() && checkFruit && world != null && !world.isRemote) { IFruitProvider fruitProvider = genome.getFruitProvider(); if (fruitProvider.isFruitLeaf(genome, world, getPos())) { isFruitLeaf = fruitProvider.getFruitChance(genome, world, getPos()) >= world.rand.nextFloat(); } } if (isFruitLeaf) { IFruitProvider fruitProvider = genome.getFruitProvider(); if (world != null && world.isRemote) { fruitSprite = fruitProvider.getSprite(genome, world, getPos(), getRipeningTime()); } ripeningPeriod = (short) tree.getGenome().getFruitProvider().getRipeningPeriod(); } else if (world != null && world.isRemote) { fruitSprite = null; } markDirty(); }
@Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { ItemStack mainHand = player.getHeldItem(EnumHand.MAIN_HAND); ItemStack offHand = player.getHeldItem(EnumHand.OFF_HAND); if (mainHand.isEmpty() && offHand.isEmpty()) { ITree tree = getTree(world, pos); if (tree == null) { return false; } IFruitProvider fruitProvider = tree.getGenome().getFruitProvider(); NonNullList<ItemStack> products = tree.produceStacks(world, pos, fruitProvider.getRipeningPeriod()); world.setBlockState(pos, ModuleArboriculture.getBlocks().getDefaultLeaves(tree.getIdent()), 2); for (ItemStack fruit : products) { ItemHandlerHelper.giveItemToPlayer(player, fruit); } return true; } return false; }
@Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { ItemStack mainHand = player.getHeldItem(EnumHand.MAIN_HAND); ItemStack offHand = player.getHeldItem(EnumHand.OFF_HAND); if (mainHand.isEmpty() && offHand.isEmpty()) { PacketFXSignal packet = new PacketFXSignal(PacketFXSignal.VisualFXType.BLOCK_BREAK, PacketFXSignal.SoundFXType.BLOCK_BREAK, pos, state); NetworkUtil.sendNetworkPacket(packet, pos, world); ITree tree = getTree(world, pos); if (tree == null) { return false; } IFruitProvider fruitProvider = tree.getGenome().getFruitProvider(); NonNullList<ItemStack> products = tree.produceStacks(world, pos, fruitProvider.getRipeningPeriod()); world.setBlockState(pos, ModuleArboriculture.getBlocks().getDefaultLeaves(tree.getIdent()), 2); for (ItemStack fruit : products) { ItemHandlerHelper.giveItemToPlayer(player, fruit); } return true; } return false; }